单片机课程设计电子琴 汇编语言Word文档下载推荐.docx
《单片机课程设计电子琴 汇编语言Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机课程设计电子琴 汇编语言Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
![单片机课程设计电子琴 汇编语言Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/27/8f357bad-dfd8-47ad-a320-8647122876aa/8f357bad-dfd8-47ad-a320-8647122876aa1.gif)
5.1收获与体会.........................................14
5.2遇到的问题与解决方法...............................15
5.3教程建议...........................................15
6.参考文献..............................................15
7.附录..................................................16
1.引言
1.1设计的目的
本设计的主要目的是掌握单片机系统的开发应用,掌握prteus和keilC51软件的应用,巩固和加深已学过的知识,提高动手能力及解决实际问题的能力,同时培养团队合作精神。
1.2.设计内容与要求
(1)本设计以AT89C52单片机为核心控制元件设计一个电子琴,与键盘、扬声
器等模块组成核心主控制模块,在主控模块上设有16个弹奏按键、1个播
放按键和扬声器,并且按下时按键发声,松开延时一段时间停止,中间再
按别的键则发另一音调的声音。
16个按键设置成4x4矩阵键盘,能弹奏出
16个音,添加歌曲程序同时能够播放出歌曲。
(2)利用软件keilC51进行程序的调试。
(3)利用proteus软件画电路图,并在单片机加载程序进行仿真。
(4)根据电路图运用proteus软件的布局和布线功能绘制PCB图并输出显
示电路的3D图。
(5)根据电路图、PCB图和3D图快速地焊接电路。
(6)下载程序代码,调试(Easy51Pro)。
2.方案总体设计
2.1.音乐产生设计原理
一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这
样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系正确即可。
若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即反相,P1.0每当计时终止后就将利用定时器计时半周期时间,为半周期的时间。
.
然后重复计时再反相。
就可在P1.0引脚上得到此频率的脉冲。
利用AT89C51的内部定时器使其工作计数器模式(MODE1)下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶,例如,频率为523Hz,其周期T=1/523=1912μs,因此只要令计数器计时956μs/1μs=956,每计数956次时将I/O反相,就可得到中音DO(523Hz)。
计数脉冲值与频率的关系式是:
N=fi÷
2÷
fr
式中N是计数值;
fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);
fr是想要产生的频率。
其计数初值T的求法如下:
T=65536-N=65536-fi÷
例如:
设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N=65536-fi÷
fr=65536-1000000÷
fr=65536-500000/fr
低音DO的T=65536-500000/262=63627
中音DO的T=65536-500000/523=64580
高音DO的T=65536-500000/1046=65059
单片机12MHZ晶振,高中低音符与计数T0相关的计数值如表1所示:
HZ)简谱码(T值)
HZ)简谱码(值)
音符
频率(
1DO
63628
64860
低
262
#4FA#
740
DO##1
63731277
5SO中
64898784
2低RE3M
294638356392864021
#5SO#6LA
64934831
6496864994
#2RE#
311
中
880
330
#6
932
T
4FA有键按下否是延时去抖动给定时器T0赋值开始计取该音符的节拍码
YSTOPA=0NY
休止符返回键盘扫描A=0FFH
64103工作停止T0CPL3.0
7SI停止
65030工作T1
349
988
#4FA#
37064185退出中断
1DO高
650581046
低5SO6LA
642603926433164400延时
#1DO#2RE
650851109
6511065134
#5SO#
415
高
1175
440
#2RE#
1245
64463
3M
65157
466
1318
7SI
64524
4FA
65178
494
1397
1DO
64580
自动播放音乐程序
弹奏子程序
65198
523
1480
64633开始开中断并允许中断设定A<
<
0,DPTR<
5SO歌谱地址
65217
#1DO#
554
1568
2RE中
58764684T0初始化并开中断允许定时器工作方式
#5SO#中断T0
652351661
#2RE#3M4FA
622647326477764820T1初始化并开中断允许键盘扫描程序根据键值查音律开中断,设定定时器取简谱码
高6LA7SI中断T1工作模式T1
6525217606526865283
取键值
659
1865
698
1967
表1音符频率表
我们要为这个音符建立一个表格,单片机通过查表的方式来获得相应的数据。
低音0-19之间,中音在20-39之间,高音在40-59之间。
TABLE:
DW0,63628,63835,64021,64103,64260,64400,64524,0,0
DW0,63731,63928,0,64185,64331,64463,0,0,0
DW0,64580,64684,64777,64820,64898,64968,65030,0,0
DW0,64633,64732,0,64860,64934,64994,0,0,0
DW0,65058,65110,65157,65178,65217,65252,65283,0,0
DW0,65085,65134,0,65198,65235,65268,0,0,0
DW0
在这个程序中,弹奏音乐的程序是用定时/计数器T0来完成的,播放音乐程序则是用定时/计数器T1来完成的。
2.2.设计流程
(1)键盘扫描程序:
检测是否有键按下,有键按下则记录按下键的键值,并跳转至功能转移程序;
无键按下,则返回键盘扫描程序继续检测。
(2)功能转移程序:
对检测到得按键值