Proteus仿真单片机实验

发布时间 : 星期一 文章Proteus仿真单片机实验更新完毕开始阅读

一首音乐是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的音乐了,当然对于单片机来产生不同的频率非常方便,我们可以利用单片机的定时/计数器T0来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可。现在以单片机12MHZ晶振为例,例出高中低音符与单片机计数T0相关的计数值如下表所示

音符 低1 DO #1 DO# 低2 RE #2 RE# 低 3 M 低 4 FA # 4 FA# 低 5 SO # 5 SO# 低 6 LA # 6

低 7 SI 中 1 DO # 1 DO# 中 2 RE # 2 RE# 中 3 M 中 4 FA

频率(HZ) 262 277 294 311 330 349 370 392 415 440 466 494 523 554 587 622 659 698 简谱码(T值) 63628 63731 63835 63928 64021 64103 64185 64260 64331 64400 64463 64524 64580 64633 64684 64732 64777 64820 音符 # 4 FA# 中 5 SO # 5 SO# 中 6 LA # 6 中 7 SI 高 1 DO # 1 DO# 高 2 RE # 2 RE# 高 3 M 高 4 FA # 4 FA# 高 5 SO # 5 SO# 高 6 LA # 6 高 7 SI 频率(HZ) 740 784 831 880 932 988 1046 1109 1175 1245 1318 1397 1480 1568 1661 1760 1865 1967 简谱码(T值) 64860 64898 64934 64968 64994 65030 65058 65085 65110 65134 65157 65178 65198 65217 65235 65252 65268 65283

下面我们要为这个音符建立一个表格,有助于单片机通过查表的方式来获得相应的数低音0-19之间,中音在20-39之间,高音在40-59之间 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

2、音乐的音拍,一个节拍为单位(C调)

曲调值 调4/4 调3/4 调2/4 DELAY 125ms 187ms 250ms 曲调值 调4/4 调3/4 调2/4 DELAY 62ms 94ms 125ms

对于不同的曲调我们也可以用单片机的另外一个定时/计数器来完成。

下面就用AT89S51单片机产生一首“生日快乐”歌曲来说明单片机如何产生的。

在这个程序中用到了两个定时/计数器来完成的。其中T0用来产生音符频率,T1用来产生音拍。

精选

5. 程序框图

6. 汇编源程序

KEYBUF EQU 30H STH0 EQU 31H STL0 EQU 32H TEMP EQU 33H ORG 00H LJMP START ORG 0BH LJMP INT_T0

START: MOV TMOD,#01H SETB ET0 SETB EA WAIT:

MOV P3,#0FFH CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1

LCALL DELY10MS MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH

CJNE A,#0EH,NK1 MOV KEYBUF,#0

精选

LJMP DK1

NK1: CJNE A,#0DH,NK2 MOV KEYBUF,#1 LJMP DK1

NK2: CJNE A,#0BH,NK3 MOV KEYBUF,#2 LJMP DK1

NK3: CJNE A,#07H,NK4 MOV KEYBUF,#3 LJMP DK1 NK4: NOP DK1:

MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A

MOV A,KEYBUF MOV B,#2 MUL AB

MOV TEMP,A

MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP

MOVC A,@A+DPTR MOV STL0,A MOV TL0,A SETB TR0

DK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1A CLR TR0 NOKEY1:

MOV P3,#0FFH CLR P3.5 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2

LCALL DELY10MS

精选

MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2 MOV A,P3 ANL A,#0FH

CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2

NK5: CJNE A,#0DH,NK6 MOV KEYBUF,#5 LJMP DK2

NK6: CJNE A,#0BH,NK7 MOV KEYBUF,#6 LJMP DK2

NK7: CJNE A,#07H,NK8 MOV KEYBUF,#7 LJMP DK2 NK8: NOP DK2:

MOV A,KEYBUF MOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,A

MOV A,KEYBUF MOV B,#2 MUL AB

MOV TEMP,A

MOV DPTR,#TABLE1 MOVC A,@A+DPTR MOV STH0,A MOV TH0,A INC TEMP MOV A,TEMP

MOVC A,@A+DPTR MOV STL0,A MOV TL0,A SETB TR0

DK2A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK2A CLR TR0

精选

联系合同范文客服:xxxxx#qq.com(#替换为@)