表6 不同音符对应P0及P1口状态
音符 按键
序号 P1口
(键盘) P0口
(LED) 音符 按键
序号 P1口
(键盘) P0口(LED)
中1 DO 0 0X11 0xfe 中 5 SO 4 0X12 0xef
中2 RE 1 0X21 0xfd 中 6 LA 5 0X22 0xdf
中3 M 2 0X41 0xfb 中 7 SI 6 0X42 0xbf
中4 FA 3 0X81 0xf7 高 1 DO 7 0X82 0x7f
3.4 程序流程图
3.4.1 整体程序流程图
图12 系统程序流程图
3.4.2 弹奏子程序流程图
图13 弹奏子程序流程图
4.调试与仿真
4.1 系统调试
在这次设计中主要采用Proteus与Keil软件对所设计的电路原理进行调试与仿真。Proteus是一款电路分析实物仿真软件,能够对模拟电路、数字电路、单片机以及很多外围电路系统等进行仿真。它的元器件库非常丰富,使用方便,对于单片机系统的仿真非常适合,主要仿真51、AVR、PIC,功能非常强大[12]。
对单片机进行电路仿真往往需要对单片机进行软件编程,通过软件编程控制单片机执行相应的功能。常用的软件编程语言一种是手工汇编,还有一种是机器汇编。因为手工汇编容易出错,且工作量大,现在关于手工汇编已经很少使用,主要就是进行机器汇编。
常用的有机器汇编有汇编语言和C语言,对于这两种语言Keil软件都兼容,而且操作特别方便,在这里主要使用C语言。Keil软件提供有宏编译器、C编译器、库管理和功能强大的仿真调试器等完整的开发环境。在这种集成环境下,可以方便高效的进行仿真调试[13]。
整个仿真调试的过程具体如下:
(1) 打开Keil软件,建立工程之后,新建窗口编写程序。
(2) 编译程序,生成Hex文件。如图14所示。
图14 编程并生成Hex文件
(3) 打开Proteus软件,设计硬件电路图并保存,如图15所示。
图15 原理图中添加Hex文件
(4) 打开proteus原理图,左键双击AT89C51,添加.Hex文件。
图16 原理图中添加Hex文件
4.2 测试结果
所有的工作做完之后就可以弹奏了,按下不同的按键,扬声器会发出不同的音调,同时伴有对应的LED灯亮。
以弹奏“DO 中音1”为例,中音1对应按键K0,即第一个按键。运行开始,系统初始化后很快进入工作状态,当按键K0按下后,第一个LED灯亮,并且能听到蜂鸣器发出清脆的中音1的音调。仿真结果如图17所示。 51单片机八音阶电子琴设计+流程图+程序代码(7):http://www.751com.cn/zidonghua/lunwen_566.html