单片机音乐播放系统.doc
《单片机音乐播放系统.doc》由会员分享,可在线阅读,更多相关《单片机音乐播放系统.doc(30页珍藏版)》请在三一办公上搜索。
1、摘 要利用单片机演奏音乐大概是单片机爱好者感兴趣的问题之一。利用单片机控制音乐播放也多不胜举.音乐芯片也相当之多,而利用单片机存储音乐,控制播放最为广泛。它有功能多价格优外围电路简单的特点,备受音乐爱好者及音乐芯片制造商的青昧。本章中,用89S51单电机及少数外围电路控制MUSIC播放,产生十首不同的歌曲。对于单电机产生音乐,关键是控制频率的输出。我们知道,不同的声音对应不同的频率,产生有规律的频率输出就可以得到相应规律的声音。音乐中,有8个基本音符:doremifasolaxido,八个不同的音符对应着不同的频率。只要我们对照音符输出相对应的频率,就可以产生美妙的音乐了。.本章中采用了T0中
2、断的方法产生不同频率,采用INT0产生中断进行歌曲选播,复位键进行重新开始,也可以通过选择键来选择。关键词 单片机,中断,编程,音乐,音调,节拍目 录1 方案比较与选择1.1 设计思想1.2 方案比较 2 电路仿真与分析2.1 电路仿真2.2 电路分析3电路板焊接、调试3.1 电路板焊接3.2 电路板调试4讨论及进一步研究建议5课程设计心得6单片机音乐播放器源程序Abstract参考文献1方案比较与选择1.1设计思想将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,选择需要的声响时间,即可完成一个音符的
3、播放。该音符唱完后,接着取出下一个音符的相关参数,如此直到播放完毕最后一个音符。中间可根据需要将音符和音符之间插入时间延时,以产生需要的节拍,用01H或02H、03H等等,具体根据歌曲的实际需要设置。根据需要也可循环不停地播放整个乐曲。利用INTO在中断中是属于最高优先级的特点,外部端口P3.2接中断0即可完成中断造成的歌曲选择下一首的播放。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。声音输出接一个三极管,利用通断放大声音。原理图如图1.1.1图1.1.1本次实验主要是音调与节拍两个要素,知道了一个
4、音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272s由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136s这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,
5、其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:t = 12 *(TALL THL)/ f0式中TALL = 216 = 65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:TH = THL / 256 = ( TALL t* f0/12) / 256TL = THL % 256 = ( TALL t* f0/12) %256将t=1136s代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为 :TH4
6、40Hz = (65536 1136 * 12/12) /256 = FBHTL440Hz = (65536 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。1.2 方案比较1.2.1方案一一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,利用不同的频率的组合,即可构成所想要的音乐,对于单片机来产生不同的频率非常方便,可以利用单片机的定时/计数器T0或者T1来产生这样方波频率信号,因此,只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示 :音符频
7、率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628# 4 FA#74064860#1DO#27763731中 5 SO78464898低2RE29463835# 5 SO#83164934#2 RE#31163928中 6 LA88064968低 3 M33064021# 693264994低 4 FA34964103中 7 SI98865030# 4 FA#37064185高 1 DO104665058低 5 SO39264260# 1 DO#110965085# 5 SO#41564331高 2 RE117565110低 6 LA44064400# 2 RE#1
8、24565134# 646664463高 3 M131865157低 7 SI49464524高 4 FA139765178中 1 DO52364580# 4 FA#148065198# 1 DO#55464633高 5 SO156865217中 2 RE58764684# 5 SO#166165235# 2 RE#62264732高 6 LA176065252中 3 M65964777# 6186565268中 4 FA69864820高 7 SI196765283表1.2.1.1另外,音乐的音拍,一个节拍为单位(C调),节拍与对应应延时的秒数关系如下表曲调值DELAY曲调值DELAY调4/
9、4125ms调4/462ms调3/4187ms调3/494ms调2/4250ms调2/4125ms表1.2.1.2不同的音乐不同的调,在单片机内调用不同的方波频率来显示声调,可以达到效果。ORG 00hJMP MAINORG 000BHJMP INTT0ORG 0100HMAIN: MOV SP,#60H MOV TMOD,#01H SETB ET0 SETB EA SETB TR0START0: SETB P0.0 MOV 30H,#00HNEXT: MOV A,30H MOV DPTR,#TABLE MOVC A,A+DPTR MOV R2,A JZ ENDD ANL A,#0FH MOV
10、 R5,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR0 JMP D1SING: DEC A MOV 22H,A RL A MOV DPTR,#TABELl MOVC A,A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A MOVC A,A+DPTR MOV TL0,A MOV 20H,A SETB TR0D1: CALL DELAY INC 30H JMP NEXTENDD: CLR TR0 JMP START0INTT0: PUSH PSW PUSH ACC MOV TL0,20H MOV TH0,21H
11、 CPL P0.0 POP ACC POP PSW RETIDELAY: MOV R7,#02DELAY0: MOV R4,#187DELAY1: MOV R3,#248 DJNZ R3,$ DJNZ R4,DELAY1 DJNZ R7,DELAY0 DJNZ R5,DELAY RETTABLE: DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,
12、04H DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00HTABELl: DW 64260,64400,64524,64580,64684,64777,64820,64898 DW 64968,65030,65058,65110,65157,65178,65217end 1.2.2方案二我们知道,声音的频谱范围约在几十到几千赫兹,若能
13、利用程序来控制单处机某个口线的 “ 高 ” 电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制 “ 高 ”“ 低 ” 电平的持续时间,就能改变输出频率,从而改变音调。 例如,要产生 200HZ 的音频信号,按图 1 接入喇叭(也可将喇叭直接接在 P1 口线上),实验程序为:;本程序演奏的是民歌 “ 八月桂花遍地开 ” , C 调,节奏为 94 拍 / 分。;标题 八月桂花香发声程序 汇编部分ORG 00HJMP STARTORG 0BHINC 20H ;中断服务,中断计数器加1MOV TH0,#0D8HMOV TL0,#0EFH ;12M晶
14、振,形成10毫秒中断RETISTART: MOV SP,#50HMOV TH0,#0D8HMOV TL0,#0EFHMOV TMOD,#01HMOV IE,#82HMUSIC0:NOPMOV DPTR,#DAT ;表头地址送DPTRMOV 20H,#00H ;中断计数器清0MUSIC1:NOPCLR A ;A清零MOVC A,A+DPTR ;查表取代码JZ END0 ;是00H,则结束CJNE A,#0FFH,MUSIC5 ;如果是休止符,往下执行JMP MUSIC3MUSIC5:NOPMOV R6,A ;R6=18H音符的频率INC DPTR ;DPTR加一MOV A,#0MOVC A,A+
15、DPTR ;取节拍代码送R7MOV R7,A ;R7=30H音符发音的时间SETB TR0 ;启动计数 MUSIC2:NOPCPL P2.0 ;P2.0是音乐输出引脚MOV A,R6MOV R3,A ;R3=R6=18HCALL DELMOV A,R7CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否?;不等,则继续循环MOV 20H,#00H ;等于,则取下一代码INC DPTRJMP MUSIC1MUSIC3:NOP ;休止100毫秒CLR TR0 MOV R2,#0DH ;R2=13MUSIC4:NOPMOV R3,#0FFH ;R3=255CALL DELDJNZ R2
16、,MUSIC4INC DPTRJMP MUSIC1END0:NOPMOV R2,#0FFH ;歌曲结束,延时1秒后继续MUSIC6:MOV R3,#00HCALL DELDJNZ R2,MUSIC6JMP MUSIC0DEL:NOPDEL3: MOV R4,#02HDEL4: NOPDJNZ R4,DEL4NOPDJNZ R3,DEL3RETNOPDAT: DB 18H, 30H, 1CH, 10H, 20H, 40H, 1CH, 10H DB 18H, 10H, 20H, 10H, 1CH, 10H, 18H, 40HDB 1CH, 20H, 20H, 20H, 1CH, 20H, 18H,
17、 20H DB 20H, 80H, 0FFH, 20H, 30H, 1CH, 10H, 18H DB 20H, 15H, 20H , 1CH, 20H, 20H, 20H, 26H DB 40H, 20H, 20H , 2BH, 20H, 26H, 20H, 20H DB 20H, 30H, 80H , 0FFH, 20H, 20H, 1CH, 10HDB 18H, 10H, 20H , 20H, 26H, 20H, 2BH, 20HDB 30H, 20H, 2BH , 40H, 20H, 20H, 1CH, 10HDB 18H, 10H, 20H, 20H, 26H, 20H, 2BH, 2
18、0HDB 30H, 20H, 2BH , 40H, 20H, 30H, 1CH, 10HDB 18H, 20H, 15H , 20H, 1CH, 20H, 20H, 20HDB 26H, 40H, 20H , 20H, 2BH, 20H, 26H, 20HDB 20H, 20H, 30H , 80H, 20H, 30H, 1CH, 10HDB 20H, 10H, 1CH , 10H, 20H, 20H, 26H, 20HDB 2BH, 20H, 30H , 20H, 2BH, 40H, 20H, 15HDB 1FH, 05H, 20H , 10H, 1CH, 10H, 20H, 20HDB 2
19、6H, 20H, 2BH , 20H, 30H, 20H, 2BH, 40HDB 20H, 30H, 1CH , 10H, 18H, 20H, 15H, 20HDB 1CH, 20H, 20H , 20H, 26H, 40H, 20H, 20HDB 2BH, 20H, 26H , 20H, 20H, 20H, 30H, 30H DB 20H, 30H, 1CH, 10H, 18H, 40H, 1CH, 20HDB 20H, 20H, 26H, 40H, 13H, 60H, 18H, 20HDB 15H, 40H, 13H , 40H, 18H, 80H, 00Hend其中子程序 DEL 为延时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 音乐 播放 系统
链接地址:https://www.31ppt.com/p-4152890.html