专业:电子信息工程 姓名:李昌明 学号:093411128
《死了都要爱》代码实现如下: SONG2: DB 02H DB 04H,94H DB
0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H
DB 0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H DB 04H,0C2H,0C2H,0D4H,0C2H,0D2H,0D8H,0D4H,0D2H,92H DB
0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02H
DB 0A4H,0A2H,0B2H,0B4H,0C4H,0E8H,0D8H DB 0C8H,0C8H,08H,08H,78H,28H,38H,34H,24H DB
24H,64H,64H,24H,64H,72H,72H,78H,58H,54H,44H,38H,34H,14H,34H,84H,74H,74H,62H,62H,0D8H,78H,28H,38H,34H,24H DB
24H,64H,64H,24H,64H,72H,72H,72H,94H,92H,94H,0A4H,58H,58H,54H,44H ;#音不准 DB
58H,58H,58H,58H,0A8H,0A8H,0A4H,0B4H,0A4H,84H,0A4H,94H,98H,98H,08H DB
84H,82H,82H,82H,82H,94H,0A2H,94H,92H,82H,74H,72H,74H,72H,72H,72H,72H,92H,91H,91H,94H,54H,74H,94H
;;************************************************* DB
0A8H,0A4H,0A2H,0B2H,0C4H,0B4H,0A4H,0A4H,0A4H,92H,92H,98H,82H,72H,78H,04H,0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H DB 04H,0C4H,0D4H,0C4H,0C8H,04H,94H DB
0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02 DB
11
;1=C 4/4 死了都要爱
专业:电子信息工程 姓名:李昌明 学号:093411128
0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H DB
0E8H,0E4H,0E4H,0E8H,0E4H,0F4H,0D4H,0C4H,0B4H,84H,84H,92H,92H,94H,92H,02 DB
0A4H,0A2H,0B2H,0B4H,0C4H,84H,82H,92H,94H,0A4H,04H,0C2H,0C2H,0D4H,0D8H,0D4H,0D2H,92H ;*************
DB 0A4H,0A2H,0B2H,0B3H,0C4H,0E8H,0D8H DB 0C8H,0C8H,0C8H,08H DB 00H
《中华人民共和国国歌》代码实现如下:
ONG3: DB 03H ;G=2/4 中华人民共和国国歌 DB
04H,04H,0C2H,14H,12H,12H,12H,11H,11H,0C2H,0D1H,0E1H,14H,14H,02H,32H,12H,21H,31H,52H,51H,51H,54H DB
32H,31H,31H,12H,11H,31H,52H,51H,31H,24H,24H,24H,64H,54H,24H,34H,52H,34H,52H,32H,21H,31H,12H,11H,21H,34H,04H DB
52H,51H,0D1H,12H,12H,32H,31H,31H,52H,51H,51H,22H,22H,22H,0D2H,0D1H,0D1H,24H,22H,0C2H,14H,12H,12H,34H,32H,32H,54H,54H,54H,54H DB
12H,11H,31H,52H,51H,51H,64H,54H,32H,31H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H DB
0A2H,0A1H,11H,52H,52H,52H,32H,02H,12H,02H,0C4H,14H,0C4H,14H,0C4H,14H,14H,04H
DB 04H,04H,04H,04H DB 00H END;
3.5键控子程序
12
专业:电子信息工程 姓名:李昌明 学号:093411128
键控子程序主要由播放/暂停子程序、上一曲子程序、下一曲子程序组成,分别由一个计数器中断和两个外部中断实现。 3.5.1播放/暂停子程序
播放/暂停在程序利用内部中断T0口。将T0口设为计数中断并工作在方式2下。标识符初值赋值为R1=00H,计数初值设为TH0=0FFH,TL0=0FFH。当按键第一次产生中断信号时,播放/暂停子程序改变标志符R1,将其赋值为01H。此时播放器由暂停状态进入播放状态。当按键第二次产生中断信号时,播放/暂停子程序判断R1是否为02H后,将R1再次赋值为00H。此时,播放器由播放状态进入暂停状态。
开始标志符R0=00H是暂停R0是否为00H否播放播放/暂停否将R0赋值为01H将R0赋值为00HR0是否为02H是 图9 播放/暂停子程序流程图
代码实现如下: POP DPL
;恢复现场
POP DPH POP ACC
SETB EA
RETI ;中断返回
START_PAUSE:CPL F0 ;开始/暂停中断处理程序,将标置位取反 JB F0,RETURN
;为1返回
SETB TR0 ;为0则播放
13
专业:电子信息工程 姓名:李昌明 学号:093411128
RETURN: RETI ;中断返回 DELAY: MOV 27H,26H ;音符演奏时间控制 D2: MOV 28H,#125 D3: MOV 29H,#248 DJNZ 29H,$ DJNZ 28H,D3 DJNZ 27H,D2 DJNZ R2,DELAY RET 3.5.2曲目选择子程序
曲目选择子程序分为上一曲子程序和下一曲子程序。上一曲和下一曲功能实现方式类似,分别由外部中断INT0和外部中断INT1。下面以实现上一曲功能为例:首先设置标识符R7初始值为00H。当按键产生中断信号,上一曲中断子程序改变标识符R7的值为01H并改变曲目R0的值。播放子程序判断出标识符R7改变后,先将R7赋值为00H,然后跳转到曲目识别子程序。
开始标识符R7=00H上一曲、下一曲查询歌曲曲目改变曲目R0的值将R7赋值为00H将R7赋值为01HR7是否为01H是否播放音乐 图10 曲目选择子程序流程图
代码实现如下: POP DPL
14
;恢复现场
专业:电子信息工程 姓名:李昌明 学号:093411128
POP DPH POP ACC SETB EA
;中断返回
RETI
LAST_SONG: PUSH ACC ;上一曲中断程序处理开始,保护现场 PUSH DPH
PUSH DPL CLR EA ;关中断 MOV A,22H ;曲目数送A
CJNE A,#1,QQ
;是否是第一首
MOV 22H,#N ;是第一首歌曲
MOV B,#4 ;将R7指向最后一首歌曲
MOV A,#N-1 MUL AB MOV R7,A
AJMP BACK2 ;处理结束
QQ: DEC 22H MOV A,R7
SUBB A,#4 MOV R7,A
;R7减4
BACK2: MOV R4,#00H MOV A,22H
MOV DPTR,#OUT_TAB MOVC A,@A+DPTR MOV OUT_NUM,A
;数码管显视相应歌曲的编号
4.电路仿真调试
4.1仿真平台
仿真平台为Proteus软件。Proteus软件是世界上著名的EDA工具,能完成原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好
15