微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机音乐程序

单片机音乐程序

时间:03-08 来源:互联网 点击:

HCOSPEEDN EQU 12H
CASEB2: CJNE A,#02H,CASEB3
MOV A,COSPEEDN
CJNE A,#HCOSPEEDN,KA0NEXT4
KA0NEXT4: JNC KA0NEXT5
INC COSPEEDN
KA0NEXT5: MOV SPENR,COSPEEDN
LCALL SPENSDISN
RET
CASEB3: CJNE A,#03H,CASEB4
CLR SPEEDF
LCALL SPEEDCL
RET
CASEB4: CJNE A,#04H,CASEB5
CLR TONEF
LCALL TONECL
RET
CASEB5: CJNE A,#05H,CASEB6
CPL LOCF
JNB LOCF,KA0NEXT2
MOV DISNUM0,#24H
SJMP KA0NEXT3
KA0NEXT2: MOV DISNUM0,#25H
KA0NEXT3: MOV DISNUM1,#26H
RET
CASEB6: CJNE A,#06H,KA0RET
CPL CUYFD
JNB CUYFD,KA0NEXT6
MOV DISNUM0,#24H
SJMP KA0NEXT7
KA0NEXT6: MOV DISNUM0,#25H
KA0NEXT7: MOV DISNUM1,#28H
KA0RET: RET
;22.速度数送显示寄存器
;---------SPENSDISN(22)----
SPENSDISN:MOV A,SPENR
ANL A,#0FH
MOV DISNUM0,A
MOV A,SPENR
SWAP A
ANL A,#0FH
MOV DISNUM1,A
RET
;23.速度处理
;---------SPEEDCL(23)------
HSPEED EQU 02H;
LSPEED EQU 50H;
SPEEDCL: JB SPEEDF,DNSPEED
CJNE R3,#HSPEED,SCLNEXT
SCLNEXT: JC SCLNEXT1
DEC R3
SJMP SCLNEXT1
DNSPEED:
CJNE R3,#LSPEED,SCLNEXT2
SCLNEXT2: JNC SCLNEXT1
INC R3
SCLNEXT1: LCALL CSBESTOJG
JNB CSBESTOF,SCLNEXT3
INC R0
INC R0
MOV @R0,03H
SCLNEXT3: LCALL COSPECL
MOV SPENR,R1
LCALL SPENSDISN
RET
;24.音调处理
;---------TONECL(24)---------
;LTONE EQU 00 ;C
HTONE EQU 11 ;B
TONECL: JB TONEF,DNTONE
CJNE R2,#HTONE,TCLNEXT0
TCLNEXT0: JNC TCLNEXT
INC R2
SJMP TCLNEXT
DNTONE: MOV A,R2
JZ TCLNEXT
DEC R2
TCLNEXT: LCALL CSBESTOJG
JNB CSBESTOF,TCLNEXT1
INC R0
MOV @R0,02H
TCLNEXT1: PUSH DPL
PUSH DPH
MOV DPTR,#T_TONDISC
MOV A,R2
RL A
MOVC A,@A DPTR
MOV DISNUM1,A
MOV A,R2
RL A
INC A
MOVC A,@A DPTR
MOV DISNUM0,A
POP DPH
POP DPL
RET
T_TONDISC:DW 200CH ; C
DW 210CH ;#C
DW 200DH ; D
DW 210DH ;#D
DW 200EH ; E
DW 200FH ; F
DW 210FH ;#F
DW 2022H ; G
DW 2122H ;#G
DW 200AH ; A
DW 210AH ;#A
DW 200BH ; B
;25.KALT1键处理
;---------KALT1CL(25)--------
KALT1CL: MOV A,STATU
JNZ CASE1
LCALL CSBESTOJG
JNB CSBESTOF,KA1NEXT
MOV @R0,#00H
DEC BUFF0
SJMP KA1NEXT2
KA1NEXT: CJNE R0,#7EH,KA1NEXT1
KA1NEXT1: JNC KA1NEXT2
MOV @R0,CSN
INC R0
MOV @R0,02H
INC R0
MOV @R0,03H
INC BUFF0
KA1NEXT2: LCALL CSNSDISN
SETB SECHSTOF
RET
CASE1: CJNE A,#01H,CASE2
INC RDYDSR
MOV A,RDYDSR
CJNE A,#04H,RDYDSL4
MOV RDYDSR,#00H
RDYDSL4: MOV DISNUM0,RDYDSR
MOV DISNUM1,#27H
RET
CASE2: CJNE A,#02H,CASE3
MOV A,COSPEEDN
JZ KA1NEXT5
DEC COSPEEDN
KA1NEXT5: MOV SPENR,COSPEEDN
LCALL SPENSDISN
RET
CASE3: CJNE A,#03H,CASE4
SETB SPEEDF
LCALL SPEEDCL
RET
CASE4: CJNE A,#04H,CASE5
SETB TONEF
LCALL TONECL
RET
CASE5: CJNE A,#05H,CASE6
CPL ROCF
JNB ROCF,KA1NEXT3
MOV DISNUM0,#24H
SJMP KA1NEXT4
KA1NEXT3: MOV DISNUM0,#25H
KA1NEXT4: MOV DISNUM1,#27H
RET
CASE6: CJNE A,#06H,KA1RET
MOV DISNUM0,#23H
MOV DISNUM1,#06H
KA1RET: RET
;========= 乐曲表============
;---------SONGS--------------
T_SONGS: 乐曲表表首
dw 01ffh,;song1:xiao la ba...
dw 0b05h,
dw 2504h,
dw 2604h,
dw 2506h,
dw 0002h,
dw 2504h,
dw 2604h,
dw 2506h,
dw 0002h,
dw 2504h,
dw 2604h,
dw 2504h,
dw 2304h,
dw 2204h,
dw 2104h,
dw 2206h,

DW 16FFH;SONG16:Liang Zhi Lao Hu
DW 0715H
DW 0FF21H ;REP21
DW 0FF01H ;REP01
DW 2102H
DW 2202H
DW 2302H
DW 2102H
DW 0FF02H ;REP02
DW 0FF03H ;REP03
DW 2302H
DW 2402H
DW 2504H
DW 2302H
DW 2402H
DW 2504H
DW 0FF11H ;REP11
DW 2501H
DW 2601H
DW 2501H
DW 2401H
DW 2302H
DW 2102H
DW 0FF12H ;REP12
DW 0FF13H ;REP13
DW 2202H
DW 1502H
DW 2104H
DW 2202H
DW 1502H
DW 2104H
DW 0FF22H ;REP22
DW 0FF23H ;REP23

DW 0000H ;乐曲表表尾
END
;=========END================
注:设计者手头有近40首曲子的音乐数据(花了大量时间对简谱进行手工转换!),而每块
AT89C51的4KROM种除指令外剩下空间只可放14首左右。
这里给出第一曲和第16曲《两只老虎》作一示例。

1. 单片机的基本发音实验

我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。

例如,要产生200HZ的音频信号,按图1接入喇叭(若属临时实验,也可将喇叭直接接在P1口线上),实验程序

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top