罗卫星
(山西电力职业技术学院,山西 太原 030021)
单片机音乐播放器设计
罗卫星
(山西电力职业技术学院,山西 太原 030021)
利用单片机播放音乐大概是单片机爱好者感兴趣的问题之一。文章从单片机的基本发音出发,谈单片机音乐播放器的设计原理,并给出具体实例,以供参考。
单片机;音乐;程序设计
单片机是芯片级计算机系统,它可以嵌入到任何对象体系中去,实现智能化控制。独具魅力的单片机能使你体会到电脑的真谛,你可以用单片机亲自动手设计播放简单音乐程序等。利用单片机播放音乐大概是单片机爱好者感兴趣的问题之一。本文从单片机的基本发音原理出发,谈谈单片机音乐播放器的设计原理,并给出具体实例,以供参考。
声音是由物体振动产生的,振动的频率不同,发出的声音也就不同,有规律的振动发出的声音称为“音乐”。一首音乐是由多个音符构成的。每个音符都对应着一个确定的频率。例如C调中的“1”对应的振动频率是524 Hz。因此,可以利用不同频率的组合,构成人们想要的音乐。
乐曲中不同的音符,实质就是不同频率的声音。可以通过单片机定时器计数的方式产生不同频率的脉冲信号,再利用延时来控制发音的长短,即可控制音调中的节拍,经过放大电路,用P1口的P1.0输出驱动扬声器,就产生了美妙和谐的乐曲。人们将乐曲中每一个音符所对应的频率换算成相应的计数初值。然后,将这首乐曲中所有音符的计数初值编成一个表,并且每一个音符的计数初值对应一个确定的数字码(简谱码)见表1。
表1 简谱对应的频率、简谱码和计数初值
一首乐曲的每一个音符除了频率之外,还有不同的节拍,即该音符发音的持续时间。只要设定延时时间就可以求得节拍的时间。例如:假设1/4拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求出1/4拍的1DELAY时间,其余的节拍就是它的倍数。
表2 各调1/4节拍的时间设定和各调1/8节拍的时间设定
乐曲《梁祝》的程序:
ORG 0000H
SJMP MAIN
ORG 000BH
AJMP ZD
ORG 0050H 主程序
MAIN:MOV TMOD,#01H
MOV IE,#82H
LOOP:MOV R0,#00;取简谱码指针
NEXT:MOV A,R0
MOV DPTR,#TAB
MOVC A,@A+DPTR;查表取音调和节拍
MOV R2,A
JZ TZ;为零,不进行处理
ANL A,#0FH;不是,则取低4位(节拍码)
MOV R5,A;将节拍码存入R5
MOV A,R2;将取到的简谱码再载入A
SWAP A
ANL A,#0FH;取低4位(音符码)
JNZ LOOP1;根据音调决定是否演奏.
CLR TR0
SJMP DELAY
LOOP1:DEC A;取到的音符码减 1(不含 0)
MOV 25H,A
RL A
MOV DPTR,#TAB1;至TABLE1取相对的高位字节计数值
MOVC A,@A+DPTR
MOV TH0,A;取到的高位字节存入TH0
MOV 21H,A;取到的高位字节存入(21H)
MOV A,22H;在载入取到的音符码
RL A
INC A
MOVC A,@A+DPTR;至TAB1取相对的低位字节计数值
MOV TL0,A;取到的低位字节存入TL0
MOV 20H,A;取到的低位字节存入(20H)
SETB TR0
D0:LCALL DELAY;其本单位时间1/4拍187毫秒
INC R0;取简谱码指针加1
JMP NEXT;取下一个简谱码TZ:CLR TR0
JMP LOOP;重复循环
ORG 0200H;定时器中断服务程序ZD:PUSH ACC
PUSH PSW
MOV TL0,20H
MOV TH0,21H
CPL P1.0;将P1.0位反相,控制蜂鸣器发声
POP PSW
POP ACC
RETI
DELAY:MOV R7,#02;延时子程序
D2:MOV R4,#187
D3:MOV R3,#248
DJNZ R3,$
DJNZ R4,D3
DJNZ R7,D2
RET
TAB1:决定节拍
DW 64 260,64 400,64 521,64 580
DW 64 684,64 777,64 820,64 898
DW 64 968,65 030,65 058,65 110
DW 65 157,65 178,65 217
TAB:乐曲名称《梁祝》
DB 02H,82H,62H,52H,48H,02H,52H,32H,22H,18H
DB 83H,91H,72H,62H,51H,61H,71H,61H,83H,61H
DB 81H,51H,61H,71H,61H,51H,46H,82H,32H,52H
DB 22H,42H,16H,21H,41H,18H,0E4H,13H,21H,43H
DB 51H,21H,41H,12H,83H,81H,61H,81H,58H,53H
DB 61H,31H,22H,13H,21H,42H,52H,0E2H,42H,21H
DB 11H,91H,41H,18H,63H,81H,32H,52H,21H,41H,
DB 16H,0E4H,11H,21H,31H,51H,26H,11H,21H,43H
DB 51H,82H,62H,52H,61H,51H,42H,21H,11H,0E4H
DB 44H,21H,41H,21H,11H,0E1H,11H,21H,41H,18H
DB 61H,81H,51H,61H,51H,41H,32H,21H,41H,18H
DB 08H,0H,04H;曲子最后静音5拍长的时间
DB 00H;乐曲结束
END
[1] 肖婧,《单片机入门与趣味实验设计》,北京航空航天大学出版社,2008-4,142-144.
Music Player Mono-chip Computers Design
Luo Weixing
The use of Mono-chip Computersr music player is probably the single chip lovers interested in one of the issues.In this paper,the basic pronunciation of Mono-chip Computers,Mono-chip Computers music player to talk about the design principles,and gives concrete examples for reference.
Single Microchip Computer;Music;Programming
TN 912
A
1000-8136(2010)32-0137-02