1、 5.1 收获与体会.14 5.2 遇到的问题与解决方法.15 5.3 教程建议.15 6. 参考文献.15 7. 附录.16 1. 引言 1.1 设计的目的 本设计的主要目的是掌握单片机系统的开发应用,掌握prteus和keil C51软件的应用,巩固和加深已学过的知识,提高动手能力及解决实际问题的能力,同时培养团队合作精神。 1.2. 设计内容与要求 (1)本设计以AT89C52单片机为核心控制元件设计一个电子琴,与键盘、扬声 器等模块组成核心主控制模块,在主控模块上设有16个弹奏按键、1个播 放按键和扬声器,并且按下时按键发声,松开延时一段时间停止,中间再 按别的键则发另一音调的声音。1
2、6个按键设置成4x4矩阵键盘,能弹奏出 16个音,添加歌曲程序同时能够播放出歌曲。(2)利用软件 keil C51进行程序的调试。(3)利用proteus软件画电路图,并在单片机加载程序进行仿真。(4)根据电路图运用proteus软件的布局和布线功能绘制PCB图并输出显 示电路的3D图。(5)根据电路图、PCB图和3D图快速地焊接电路。(6)下载程序代码,调试(Easy 51Pro) 。2. 方案总体设计 2.1. 音乐产生设计原理 一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便
3、,我们可以利用单片机的定时/计数器T0来产生这 样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即反相,P1.0每当计时终止后就将利用定时器计时半周期时间,为半周期的时间。然后重复计时再反相。就可在P1.0引脚上得到此频率的脉冲。 利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T1/5231912s,因此只要令计数器计时956s/1s956,每计数956次时将I/O反相,就可得到中音DO(523H
4、z)。 计数脉冲值与频率的关系式是: N=fi2fr 式中N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。 其计数初值T的求法如下: T65536N65536fi例如:设K65536,fi1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。T65536N65536fifr655361000000fr65536500000/fr 低音DO的T65536500000/26263627 中音DO的T65536500000/52364580 高音DO的T65536500000/104665059 单片机12MHZ
5、晶振,高中低音符与计数T0相关的计数值如表1所示:HZ) 简谱码(T值) HZ) 简谱码(值) 音符频率(1 DO 63628 64860 低262 # 4 FA# 740 DO# #1 63731 277 5 SO 中64898 784 2 低RE 3 M 294 63835 63928 64021 # 5 SO# 6 LA 64934 831 64968 64994 #2 RE# 311 中880 330 # 6 932 T 4 FA 有键按下否 是 延时去抖动 给定时器T0赋值 开始计 取该音符的节拍码 Y STOP A=0 N Y 休止符 返回键盘扫描 A=0FFH 64103 工作停
6、止T0CPL3.0 7 SI 停止65030 工作T1349 988 # 4 FA# 370 64185 退出中断 1 DO 高 65058 1046 低 5 SO 6 LA 64260 392 64331 64400 延时# 1 DO# 2 RE 65085 1109 65110 65134 # 5 SO# 415 高1175 440 # 2 RE# 1245 64463 3 M 65157 466 1318 7 SI 64524 4 FA 65178 494 1397 1 DO 64580 自动播放音乐程序弹奏子程序65198 523 1480 64633 开始开中断并允许中断设定A 0,
7、DPTR 5 SO 歌谱地址65217 # 1 DO# 554 1568 2 RE 中587 64684 T0初始化并开中断允许定时器工作方式# 5 SO# 中断T0 65235 1661 # 2 RE# 3 M 4 FA 622 64732 64777 64820 T1初始化并开中断允许键盘扫描程序根据键值查音律开中断,设定定时器取简谱码高 6 LA 7 SI 中断T1 工作模式T1 65252 1760 65268 65283 取键值659 1865 698 1967 表1 音符频率表 我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据。 低音019之间,中音在2039之间
8、,高音在4059之间。TABLE: DW 0,63628,63835,64021,64103,64260,64400,64524,0,0 DW 0,63731,63928,0,64185,64331,64463,0,0,0 DW 0,64580,64684,64777,64820,64898,64968,65030,0,0 DW 0,64633,64732,0,64860,64934,64994,0,0,0 DW 0,65058,65110,65157,65178,65217,65252,65283,0,0 DW 0,65085,65134,0,65198,65235,65268,0,0,0 DW 0 在这个程序中,弹奏音乐的程序是用定时/计数器T0来完成的,播放音乐程序则是用定时/计数器T1来完成的。2.2. 设计流程 (1)键盘扫描程序: 检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;无键按下,则返回键盘扫描程序继续检测。 (2)功能转移程序: 对检测到得按键值
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1