文档详情

基于单片机的播放音乐课程设计.doc

发布:2017-02-10约1.13万字共12页下载文档
文本预览下载声明
单片机原理及应用 课程设计 题 目:基于单片机的音乐播放器 班 级:电科1121 姓 名:蔡汉轰 学 号:201211911101 指导老师:王淑青 设计要求: 通过晶振复位电路,重新播放歌曲 通过中断暂停播放歌曲 做出仿真图以及实物 掌握单片机播放音乐的编写程序的方法 所需元件: 电阻1个、有极性电容一个、无极性电容2个、喇叭一个、button2个以及导线若干 设计原理: 单片机播放音乐的原理: 音乐是许多不同的音符组成的,而每个音符对应着不同的频率,这样我们利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来说,产生不同的频率非常方便。我们可以利用单片机的定时器/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系设置正确即可。 若要产生音频脉冲,只要算出某一音频的周期(1/频率),再将此周期除以2,即为半周期的时间。利用定时器计时半周期时间,每当计时终止后就将I/O口反相,然后重复计时再反相。就可以在该I/O口引脚上得到频率的脉冲。 STC89C52RC单片机的一个计数周期需要12个时钟周期,采用12MHz晶振,一个计数周期即1us。利用单片机内部的定时器,使其工作计数器模式下,改变计数值TH0及TL0以产生不同频率的方法产生不同音阶。例如,中音DO频率为523Hz,其周期T=1/523=1912us,因此只要令计数器计时956us/1us=956,每计数956次将I/O口反相,就可得到中音DO。 计数脉冲值与频率的关系式是: N=fi÷2÷fr 式中,N是计数值;fi是机器频率(晶振为12MHz时,其频率为1MHz);fr是想要产生的频率。 其计数初值T的求法如下: T=65536-N=65536-fi÷2÷fr 单片机12MHz晶振,高中低音符与计数值对照如表 3 1所示。 表 3 1 C大调各音符频率与计数值对照表 音符 频率Hz 周期(T值) 音符 频率Hz 周期(T值) 低音区 低音DO 262 63628 中音区 #FA 740 0676 #DO 277 63731 中SO 784 0638 低RE 294 63836 #SO 831 0602 #RE 311 63928 中LA 880 0568 低M 330 64020 #LA 932 0536 低FA 349 64103 中SI 988 0506 #FA 370 64186 高音区 高DO 1046 0478 低SO 392 64260 #DO 1109 0451 #SO 415 64331 高RE 1175 0426 低LA 440 64400 #RE 1245 0402 #LA 466 64464 高M 1318 0372 低SI 494 64524 高FA 1397 0358 中音区 中DO 523 64580 #FA 1480 0338 #DO 554 64633 高SO 1568 0319 中RE 578 64694 #SO 1661 0292 #RE 622 64732 高LA 1760 0284 中M 659 64777 #LA 1865 0268 中FA 698 64820 高SI 1976 0253 注:#代表该音符升半调。 我们要为这些音符建立一个表格,让单片机通过查表的方法来获得音符的计数值。 unsigned int code note_value[][14]={ {0,63628,63835,64021,64103,64260,64400,64524,63731,63928,0,64185,64331,64463}, //低音1,2,3,4,5,6,7,#1,#2,0(#3在此程序中无需设),#4,#5,#6 相对应的定时器初值 {0,64580,64684,64777,64820,64898,64968,65030,64633,64732,0,64860,64934,64994}, //中音1,2,3,4,5,6,7,#1,#2,0(#3在此程序中无需设),#4,#5,#6 相对应的定时器初值 {0,65058,65110,65157,65178,65217,65252,65283,65085,65134,0,65198,65235,65268} //高音1,2,3,4,5,6,7,#1,#2,0(#3在此程序中无需设),#4,#5,#6 相对应的定时器初值 }; 音乐的节拍,一个节拍为一个单位。如表 3 2所示。 表 3 2 曲调值表 曲调值 延时(ms) 曲调值 延时(ms) 调4/4 125 调4/4 62 调3/4 187 调3/4 94 调2/4 250 调2/4 125
显示全部
相似文档