单片机音乐程序

单片机音乐程序
单片机音乐程序

单片机音乐程序

利用单片机(或单板机)奏乐大概是无线电爱好者感兴趣的问题之一。本文从单片机的基本发间实验出发,

谈谈音乐程序的设计原理,并给出具体实例,以供参考。下面提供2个列子,大家根据需要自行选择

单片机最小系统,两位LED数码管由串口输出接两个164驱动,Lout,Rout为左右声道输出,SET, ALT0,ALT1为三个按键,也可自己在开始的I/O定义改成你想

用的I/O口;12M晶振若用89C51则只可装下约14首歌曲,用89C52则可装下近40曲

源程序; Electronic Music; Version 4.50; Copyright (c) XAJ

2001;============================LOUT BIT P1.0 ;

左声道输出ROUT BIT P1.2 ;右声道输出SET BIT

P3.3 ;SET按键ALT0 BIT P3.6 ;ALT0按键ALT1 BIT

P3.7 ;ALT1按键

;REPNUM EQU 09H重复段编号STATU EQU 0AH;状态寄存器LDYDSR EQU 0BH;左低音度数RDYDSR EQU 0CH;右低音度数LDYAR EQU 0DH;左低音协助RDYAR EQU 0EH;右低音协助JPCLK EQU 0FH;节拍时钟GENCLK EQU 10H;通用时钟SNSDCLK EQU 11H;搜、存显示时钟GEN16T0 EQU 12H;

通用16位时钟GEN16T1 EQU 13H; SETST0 EQU 14H;设置状态SETST1 EQU 15H; 定时时钟DISNUM0 EQU 16H;显示数值DISNUM1 EQU 17H;寄存器(2位)CSN EQU 18H;当前曲曲号REP0L EQU 19H;0号重复段地址REP0H EQU 1AH;REP1L EQU 1BH;1号重复段地址REP1H EQU 1CH;REP2L EQU 1DH;2号重复段地址REP2H EQU 1EHREP3L EQU 1FH;3号重复段地址REP3H EQU 23H;COSPEEDN EQU 24H;SPENR EQU 25H; LOCF BIT 00H;左声道开关标志ROCF BIT 01H;右声道开关标志SECHSTOF BIT 02H;搜索、存储标志NEXTSF BIT 03H;下一曲标志CSBESTOF BIT 04H;当前曲锁存/释放CUYFD BIT 05H;当前音符显示KSETF BIT 06H;SET键按下标志KALT0F BIT 07H;ALT0键按下标志KALT1F BIT

08H;ALT1键按下标志SPEEDF BIT 09H;速度增/减标志TONEF BIT 0AH;音调增/减标志YPBIT BIT 0BH;音频逻辑输出KBDISF BIT 0CH;键盘显示标志REP0F BIT 0DH;0号重复段控制REP1F BIT 0EH;1号重复段控制REP2F BIT

0FH;2号重复段控制REP3F BIT 10H;3号重复段控制

SBOTM EQU 25H;堆栈区(栈底)BUFF0 EQU 43H;锁存曲数BUFF EQU 44H;锁存曲缓冲

区;============================

;=========BEGIN==============ORG 0000HLJMP MAIN;---------T0INT--------------ORG 000BHLJMP

T0INT

;---------T1INT--------------ORG 001BHLJMP

T1INT;1.音频发生

器;---------YPFSQ(01)----------ORG 0030HT0INT: MOV TL0,R4MOV TH0,R5PUSH PSWPUSH ACCPUSH 01HJB LOCF,ROPERMOV R1,#00HMOV A,LDYART0LLOP: RRC AMOV YPBIT,CXCH A,R1CJNE A,LDYDSR,T0LNEXTMOV C,YPBITMOV LOUT,CINC LDYAR; INC P0 SJMP ROPERT0LNEXT: XCH A,R1INC R1SJMP T0LLOPROPER: JB ROCF,T0RETIMOV

R1,#00HMOV A,RDYART0RLOP: RRC AMOV YPBIT,CXCH

A,R1CJNE A,RDYDSR,T0RNEXTMOV C,YPBITMOV ROUT,CINC RDYAR; INC P2SJMP T0RETIT0RNEXT: XCH A,R1INC R1SJMP T0RLOPT0RETI: POP 01HPOP ACCPOP PSWRETI;2.通用时钟;---------CLOCK(02)----------T1INT: MOV

TL1,#0F0HMOV TH1,#0D8HPUSH PSWPUSH ACCINC JPCLKINC GENCLKINC SNSDCLKMOV A,SNSDCLKCJNE

A,#0FFH,T1NEXTCLR SECHSTOFT1NEXT: INC GEN16T0MOV A,GEN16T0CJNE A,#100,T1NEXT0MOV GEN16T0,#00HINC GEN16T1T1NEXT0: INC SETST0MOV A,SETST0CJNE

A,#100,T1RETIMOV SETST0,#00HINC SETST1MOV

A,SETST1CJNE A,#20,T1RETIMOV SETST1,#00HMOV STATU,#00HT1RETI: POP ACCPOP PSWRETI;3.显示子程

序;---------DISPLAY(03)--------DISPLAY: PUSH ACCPUSH DPLPUSH DPHMOV DPTR,#T_FIGCODEMOV

A,DISNUM0MOVC A,@A DPTRMOV SBUF,AJNB TI,$CLR TIMOV A,DISNUM1MOVC A,@A DPTRMOV SBUF,AJNB TI,$CLR TIPOP DPHPOP DPLPOP ACCRETT_FIGCODE:DB

088H,0EBH,04CH,049H; 0 1 2 3DB 02BH,019H,018H,0CBH;

4 5 6 7DB 008H,009H,00AH,038H; 8 9 A BDB

09CH,068H,01CH,01EH; C D E FDB 080H,0E3H,044H,041H;

0. 1. 2. 3.DB 023H,011H,010H,0C3H; 4. 5. 6. 7.DB 000H,001H,002H,030H; 8. 9. A. B.DB

094H,060H,014H,016H; C. D. E. F.DB

0FFH,02FH,098H,07FH; 熄灭 # G -DB

07CH,078H,0BCH,00AH; c o L RDB 029H; Y;4.主程序MAIN;---------MAIN(04)-----------MAIN: MOV

R0,#01HCLR ACLRAM: MOV @R0,AINC R0CJNE

R0,#80H,CLRAMMOV R0,AMOV SP,#SBOTMMOV

08H,#BUFF;MOV 09H,#BUFFMOV SCON,#00HMOV

TMOD,#11HMOV TL1,#0F0HMOV TH1,#0D8HSETB EASETB

ET0SETB ET1SETB TR1

START: MOV DPTR,#T_SONGSRYF: LCALL RYFSUPMOV A,R7JZ STARTCJNE R7,#0FFH,SYFJBC NEXTSF,NEXTSCLMOV A,STATUJNZ GONSBQMOV A,BUFF0JNZ MPSQCLLCALL

PAQSCLSJMP MQNFDMPSQCL: LCALL PSQSCLMQNFD: LCALL QNFDSUPMOVPJRYF: INC DPTRINC DPTRSJMP RYFNEXTSCL: LCALL CSBESTOJGJB CSBESTOF,CALLPSCLLCALL PAQSCLSJMP MOVPJRYFCALLPSCL: LCALL PSQSCLSJMP MOVPJRYFGONSBQ: LCALL CSDPTRINC DPTRINC DPTRSJMP MOVPJRYFSYF: CJNE R6,#0FFH,CALLPLAYLCALL REPCLSUPSJMP MOVPJRYFCALLPLAY: LCALL YFDSUPLCALL PLAYSJMP MOVPJRYF;5.读音符子程

序;---------RYFSUP(05)--------RYFSUP: CLR AMOVC A,@A DPTRMOV R6,AMOV A,#01HMOVC A,@A DPTRMOV R7,ARET;

6.统唱曲首处理;---------PAQSCL(06)--------PAQSCL: MOV CSN,R6INC DPTRINC DPTRLCALL RYFSUPMOV 02H,R6MOV 03H,R7RET;

7.存唱曲首处

理;---------PSQSCL(07)--------PSQSCL: PUSH PSWSETB RS0CLR RS1PSQC7E: CJNE R0,#7EH,PSQNEXTPSQNEXT: JC PSQNEXT1MOV R0,#BUFFSJMP PSQC7EPSQNEXT1: MOV

A,@R0JNZ PSQNEXT2INC R0INC R0INC R0SJMP

PSQC7EPSQNEXT2: MOV CSN,@R0INC R0MOV 02H,@R0INC

R0MOV 03H,@R0INC R0POP PSWLCALL CSDPTRINC DPTRINC DPTRRET;8.曲号闪显子程

序;---------QNFDSUP(08)-------QNFDSUP: PUSH ACCMOV GEN16T0,#00HMOV GEN16T1,#00HQNGON: LCALL

CSNSDISNLCALL DISPLAYMOV GENCLK,#00HQNWAIT: MOV A,GENCLKCJNE A,#35,QNWAITMOV DISNUM0,#20HMOV DISNUM1,#20HLCALL DISPLAYMOV GENCLK,#00HQNWAIT1: MOV A,GENCLKCJNE A,#15,QNWAIT1MOV A,GEN16T1CJNE A,#02,QNGONPOP ACCRET;9.曲号送显示寄存

器;---------CSNSDISN(09)------CSNSDISN: MOV

A,CSNANL A,#0FHLCALL CSBESTOJGJNB CSBESTOF,NADPADD A,#10HNADP: MOV DISNUM0,AMOV A,CSNSWAP AANL

A,#0FHMOV DISNUM1,ARET;10.当前曲是否被存储判

断;---------CSBESTOJG(10)-----CSBESTOJG:PUSH ACCPUSH PSWMOV A,BUFF0JZ CLRCSTOFMOV

R0,#BUFFCSBCMPCSN:MOV A,@R0CJNE A,CSN,CSBGSCANSETB CSBESTOFSJMP CSBRETCSBGSCAN: INC R0INC R0INC R0CJNE R0,#7EH,CSBNEXTCSBNEXT: JC CSBCMPCSNCLRCSTOF: CLR CSBESTOFMOV R0,#BUFFCSBCMP0: MOV A,@R0JZ CSBRETINC R0INC R0INC R0CJNE R0,#7EH,CSBNEXT1CSBNEXT1: JC CSBCMP0CSBRET: POP PSWPOP ACCRET;11.找当前曲首址;---------CSDPTR(11)--------CSDPTR: MOV DPTR,#T_SONGSCSDSCAN: LCALL RYFSUPCJNE

R7,#0FFH,CSDNEXTMOV A,R6CJNE A,CSN,CSDNEXTSJMP CSDRETCSDNEXT: INC DPTRINC DPTRSJMP CSDSCANCSDRET: RET;12.重复段处理子程

序;---------REPCLSUP(12)------REPCLSUP: MOV

A,R7ANL A,#0FHCJNE A,#02H,CMPA3MOV A,R7SWAP AANL A,#0FHJNZ H4CMP1JNB REP0F,REPRET0CLR REP0FMOV DPL,REP0LMOV DPH,REP0HREPRET0: RETH4CMP1: CJNE A,#01H,H4CMP2JNB REP1F,REPRETCLR REP1FMOV

DPL,REP1LMOV DPH,REP1HRETH4CMP2: CJNE

A,#02H,H4CMP3JNB REP2F,REPRETCLR REP2FMOV

DPL,REP2LMOV DPH,REP2HRETH4CMP3: CJNE

A,#03H,REPRETJNB REP3F,REPRETCLR REP3FMOV

DPL,REP3LMOV DPH,REP3HRETCMPA3: CJNE

A,#03H,REPRETMOV A,R7SWAP AANL A,#0FHJNZ H4VS1SETB REP0FMOV REP0L,DPLMOV REP0H,DPHSJMP SREPHADH4VS1: CJNE A,#01H,H4VS2SETB REP1FMOV REP1L,DPLMOV

REP1H,DPHSJMP SREPHADH4VS2: CJNE A,#02H,H4VS3SETB REP2FMOV REP2L,DPLMOV REP2H,DPHSJMP SREPHADH4VS3: CJNE A,#03H,REPRETSETB REP3FMOV REP3L,DPLMOV

REP3H,DPHSREPHAD: MOV 09H,ALCALL CSDPTRREPGON: INC DPTRINC DPTRLCALL RYFSUPCJNE R6,#0FFH,REPGONMOV A,R7SWAP AANL A,#0FHCJNE A,09H,REPGONREPRET: RET;

13.音符显示子程

序;---------YFDSUP(13)--------YFDSUP: MOV

A,STATUJNZ YFDRETJB SECHSTOF,YFDRETJNB

CUYFD,YFSLEDXZFCLD: MOV DISNUM0,#20HMOV

DISNUM1,#20HSJMP YFDSPLAYYFSLED: MOV A,R6JZ XZFCLDANL A,#0FHPUSH DPLPUSH DPHMOV

DPTR,#T_YFDCODMOVC A,@A DPTRMOV DISNUM0,APOP DPHPOP DPLMOV A,R6SWAP AANL A,#0FHMOV DISNUM1,AYFDSPLAY: LCALL DISPLAYYFDRET: RETT_YFDCOD: DB 20H ;--DB 01H ; 1DB 02H ; 2DB 03H ; 3 DB 04H ; 4DB 05H ; 5DB 06H ; 6DB 07H ; 7DB 11H ;#1DB 12H ;#2DB 14H ;#4DB 15H ;#5DB 16H ;#6;14.唱音符子程

序;---------PLAY(14)----------PLAY: MOV A,R6JZ PCOSPECLPUSH DPLPUSH DPHMOV DPTR,#T_SDANL

A,#0FHMOVC A,@A DPTRXCH A,R6SWAP AANL A,#0FHMOV B,#12MUL ABADD A,R6ADD A,R2RL AMOV R6,AMOV DPTR,#T_RANMOVC A,@A DPTRMOV TH0,AMOV R5,AMOV

A,R6INC AMOVC A,@A DPTRMOV TL0,AMOV R4,APOP DPHPOP DPLSETB TR0PCOSPECL: LCALL COSPECLPJPWAIT: MOV JPCLK,#00HPDELAY: LCALL KCXCLJB NEXTSF,PRETMOV A,JPCLKCJNE A,01H,PNEXTPNEXT: JC PDELAYDJNZ

R7,PJPWAITPRET: CLR

TR0RET;---------TABSD-------------T_SD: DB

01h ;uselessDB 01HDB 03HDB 05HDB 06HDB 08H DB 0AHDB 0CHDB 02H DB 04H DB 07H DB 09H DB

0bH;---------TABRAN------------T_RAN: DW

0F111H ;uselessdw 0f111h ; area 0dw 0f1e8h dw 0f2b2h dw 0f373h dw 0f426h dw 0f4eeh dw 0f571h dw 0f609h dw 0f699h dw 0f71fh dw 0f79fh dw 0f817h dw 0f889h ; area 1dw 0f8f4h dw 0f95ah dw 0f9b9h dw 0fa13h dw 0fa68h dw 0fab9h dw 0fb04h dw 0fb4ch dw 0fb90h dw 0fbcfh dw 0fc0ch dw 0fc45h ;area 2dw 0fc7ah dw 0fcadh dw 0fcdch dw 0fd0ah dw 0fd34h dw 0fd5ch dw 0fd82h dw 0fda6h dw 0fdc8h dw 0fde8h dw 0fe06h dw 0fe22h ; area 3dw 0fe3dh dw 0fe56h dw 0fe6eh dw 0fe85h dw 0fe9ah dw 0feaeh dw 0fec1h dw 0fed3h dw 0fee3h dw 0fef4h dw 0ff02h dw 0ff11h ;area 4dw 0ff1fh dw 0ff2bh dw 0ff37h dw 0ff42h dw 0ff4dh dw 0ff57h dw 0ff60h dw 0ff6ah dw 0ff72h dw 0ff7ah dw 0ff81h dw 0ff89h ; 5;15.共速处

理;---------COSPECL(15)-------COSPECL: MOV

R1,03HMOV A,COSPEEDNJZ COSPRETPUSH COSPEEDNMOV A,R1COSPEGON: MOV B,#08HMUL ABCLR CSUBB A,R1JNC COSPNEXTDEC BCOSPNEXT: MOV R6,#03HDIV8: CLR CXCH A,BRRC AXCH A,BRRC ADJNZ R6,DIV8MOV R1,ADJNZ COSPEEDN,COSPEGONPOP COSPEEDNMOV A,R1JNZ COSPRETMOV R1,#01HCOSPRET: RET;16.键盘查询处

理;---------KCXCL(16)---------KCXCL: LCALL

KSETLCALL KALT0LCALL KALT1JNB KSETF,KNEXT0LCALL KSETCLKSETSTC: MOV SETST0,#00HMOV SETST1,#00HSETB KBDISFSJMP KDISKNEXT0: JNB KALT0F,KNEXT1LCALL KALT0CLSJMP KSETSTCKNEXT1: JNB KALT1F,KDISLCALL KALT1CLSJMP KSETSTCKDIS: MOV A,STATUJNZ KSSNSDJNB SECHSTOF,KRETKSSNSD: JNB KBDISF,KRETCLR KBDISFLCALL DISPLAYKRET: RET;17.KSET键是否按下查询;---------KSET(17)----------KSET: SETB SETJB SET,CSETRETMOV GENCLK,#00HSETLOP: MOV A,GENCLKCJNE A,#02,SETLOPSETB SETJB SET,CSETRETCLR TR0SETWAIT: SETB SETJNB SET,SETWAITMOV GENCLK,#00HSETLOP1: MOV A,GENCLKCJNE A,#02,SETLOP1SETB TR0SETB KSETFRETCSETRET: CLR KSETFRET;18.KALT0键是否按下查询;---------KALT0(18)---------KALT0: SETB ALT0JB ALT0,CALT0RETMOV GENCLK,#00HALT0LOP: MOV

A,GENCLKCJNE A,#02,ALT0LOPSETB ALT0JB

ALT0,CALT0RETCLR TR0ALT0WAIT: SETB ALT0JNB

ALT0,ALT0WAITMOV GENCLK,#00HALT0LOP1: MOV

A,GENCLKCJNE A,#02,ALT0LOP1SETB TR0SETB

KALT0FRETCALT0RET: CLR KALT0FRET;19.KALT1键是否按下查询;---------KALT1(19)---------KALT1: SETB ALT1JB ALT1,CALT1RETMOV GENCLK,#00HALT1LOP: MOV

A,GENCLKCJNE A,#02,ALT1LOPSETB ALT1JB

ALT1,CALT1RETCLR TR0ALT1WAIT: SETB ALT1JNB

ALT1,ALT1WAITMOV GENCLK,#00HALT1LOP1: MOV

A,GENCLKCJNE A,#02,ALT1LOP1SETB TR0SETB

KALT1FRETCALT1RET: CLR KALT1FRET;20.SET键处

理;---------KSETCL(20)--------KSETCL: INC STATUMOV A,STATUCJNE A,#07H,STATUDISMOV STATU,#00HSTATUDIS: MOV DISNUM0,#23HMOV DISNUM1,STATURET;21.KALT0键处理;---------KALT0CL(21)-------KALT0CL: MOV

A,STATUJNZ CASEB1KA0S0GO: INC DPTRINC DPTRLCALL RYFSUPMOV A,R7JNZ EQUFFMOV DPTR,#T_SONGSSJMP

KA0NEXTEQUFF: INC AJNZ KA0S0GOKA0NEXT: LCALL RYFSUPMOV CSN,R6LCALL CSNSDISNMOV A,DPLCLR CSUBB A,#02HJNC KA0NEXT1DEC DPHKA0NEXT1: MOV DPL,ACLR REP0FCLR REP1FCLR REP2FCLR REP3FSETB NEXTSFSETB SECHSTOFRETCASEB1: CJNE A,#01H,CASEB2INC LDYDSRMOV A,LDYDSRCJNE A,#04H,LDYDSL4MOV LDYDSR,#00HLDYDSL4: MOV DISNUM0,LDYDSRMOV DISNUM1,#26HRET

HCOSPEEDN EQU 12HCASEB2: CJNE A,#02H,CASEB3MOV A,COSPEEDNCJNE A,#HCOSPEEDN,KA0NEXT4KA0NEXT4: JNC KA0NEXT5INC COSPEEDNKA0NEXT5: MOV

SPENR,COSPEEDNLCALL SPENSDISNRETCASEB3: CJNE

A,#03H,CASEB4CLR SPEEDFLCALL SPEEDCLRETCASEB4: CJNE A,#04H,CASEB5CLR TONEFLCALL TONECLRETCASEB5: CJNE A,#05H,CASEB6CPL LOCFJNB LOCF,KA0NEXT2MOV DISNUM0,#24HSJMP KA0NEXT3KA0NEXT2: MOV

DISNUM0,#25HKA0NEXT3: MOV DISNUM1,#26HRETCASEB6: CJNE A,#06H,KA0RETCPL CUYFDJNB CUYFD,KA0NEXT6MOV DISNUM0,#24HSJMP KA0NEXT7KA0NEXT6: MOV

DISNUM0,#25HKA0NEXT7: MOV DISNUM1,#28HKA0RET: RET;

22.速度数送显示寄存

器;---------SPENSDISN(22)----SPENSDISN:MOV

A,SPENRANL A,#0FHMOV DISNUM0,AMOV A,SPENRSWAP AANL A,#0FHMOV DISNUM1,ARET;23.速度处

理;---------SPEEDCL(23)------HSPEED EQU 02H; LSPEED EQU 50H; SPEEDCL: JB SPEEDF,DNSPEEDCJNE

R3,#HSPEED,SCLNEXTSCLNEXT: JC SCLNEXT1DEC R3SJMP SCLNEXT1DNSPEED: CJNE R3,#LSPEED,SCLNEXT2SCLNEXT2: JNC SCLNEXT1INC R3SCLNEXT1: LCALL CSBESTOJGJNB CSBESTOF,SCLNEXT3INC R0INC R0MOV @R0,03HSCLNEXT3: LCALL COSPECLMOV SPENR,R1LCALL SPENSDISNRET;24.

音调处理;---------TONECL(24)---------;LTONE EQU

00 ;CHTONE EQU 11 ;BTONECL: JB TONEF,DNTONECJNE

R2,#HTONE,TCLNEXT0TCLNEXT0: JNC TCLNEXTINC R2SJMP

TCLNEXTDNTONE: MOV A,R2JZ TCLNEXTDEC R2TCLNEXT: LCALL CSBESTOJGJNB CSBESTOF,TCLNEXT1INC R0MOV

@R0,02HTCLNEXT1: PUSH DPLPUSH DPHMOV

DPTR,#T_TONDISCMOV A,R2RL AMOVC A,@A DPTRMOV DISNUM1,AMOV A,R2RL AINC AMOVC A,@A DPTRMOV DISNUM0,APOP DPHPOP DPLRETT_TONDISC:DW 200CH ; CDW 210CH ;#CDW 200DH ; DDW 210DH ;#DDW 200EH ; EDW 200FH ; FDW 210FH ;#FDW 2022H ; GDW 2122H ;#GDW 200AH ; ADW 210AH ;#ADW 200BH ; B;25.KALT1键处

理;---------KALT1CL(25)--------KALT1CL: MOV

A,STATUJNZ CASE1LCALL CSBESTOJGJNB

CSBESTOF,KA1NEXTMOV @R0,#00HDEC BUFF0SJMP

KA1NEXT2KA1NEXT: CJNE R0,#7EH,KA1NEXT1KA1NEXT1: JNC KA1NEXT2MOV @R0,CSNINC R0MOV @R0,02HINC R0MOV @R0,03HINC BUFF0KA1NEXT2: LCALL CSNSDISNSETB SECHSTOFRETCASE1: CJNE A,#01H,CASE2INC RDYDSRMOV A,RDYDSRCJNE A,#04H,RDYDSL4MOV RDYDSR,#00HRDYDSL4: MOV DISNUM0,RDYDSRMOV DISNUM1,#27HRETCASE2: CJNE A,#02H,CASE3MOV A,COSPEEDNJZ KA1NEXT5DEC COSPEEDNKA1NEXT5: MOV SPENR,COSPEEDNLCALL SPENSDISNRETCASE3: CJNE A,#03H,CASE4SETB SPEEDFLCALL SPEEDCLRETCASE4: CJNE A,#04H,CASE5SETB

TONEFLCALL TONECLRETCASE5: CJNE A,#05H,CASE6CPL ROCFJNB ROCF,KA1NEXT3MOV DISNUM0,#24HSJMP

KA1NEXT4KA1NEXT3: MOV DISNUM0,#25HKA1NEXT4: MOV DISNUM1,#27HRETCASE6: CJNE A,#06H,KA1RETMOV DISNUM0,#23HMOV DISNUM1,#06HKA1RET: 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 HuDW 0715HDW

0FF21H ;REP21DW 0FF01H ;REP01DW 2102HDW 2202HDW 2302HDW 2102HDW 0FF02H ;REP02DW 0FF03H ;REP03DW 2302HDW 2402HDW 2504HDW 2302HDW 2402HDW 2504HDW

0FF11H ;REP11DW 2501HDW 2601HDW 2501HDW 2401HDW 2302HDW 2102HDW 0FF12H ;REP12DW 0FF13H ;REP13DW 2202HDW 1502HDW 2104HDW 2202HDW 1502HDW 2104HDW

0FF22H ;REP22DW 0FF23H ;REP23

DW 0000H ;乐曲表表尾

END;=========END================注:设计者手头有近40首曲子的音乐数据(花了大量时间对简谱进行手工

转换!),而每块AT89C51的4KROM种除指令外剩下空间只可放14首左右。这里给出第一曲和第16曲《两只老虎》作一示例。

1.

单片机的基本发音实验

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

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

其中子程序DEL为延时子程序,当R3为1时,延时时间约为20us,R3中存放延时常数,对200HZ音频,其周期为1/200秒,即5ms。这样,当P1.4的高电平或低电平的持续时间为2.5ms,即R3的时间常数取

2500/20=125(7DH)时,就能发出200HZ的音调。将上述程序键入学习机,并不断修改R3的常数可以感到音调的变化。

乐曲中,每一音符对应着确定的频率,表1给出C

调时各音符频率及其相应的时间常数。

读者可以根据表1所提供的常数,将其16进制代码送入R3,反复练习体会。根据表1可以奏出音符。仅这还

不够,要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。

音符的节拍我们可以用定时器T0来控制,送入不同

的初值,就可以产生不同的定时时间。便如某歌曲的节

奏为每分钟94拍,即一拍为0.64秒。其它节拍与时间的对应关系见表2。

但时,由于T0的最大定时时间只能为131毫秒,因此不可能直接用改变T0的时间初值来实现不同节拍。我们可以用T0来产生10毫秒的时间基准,然后设置一个中断计数器,通过判别中断计数器的值来控制节拍时间的长短。表2中也给出了各种节拍所对应的时间常数。例如

对1/4拍音符,定时时间为0.16秒,相应的时间常数为16(即10H);对3拍音符,定时时间为1.92秒,相应

时间长数为192(即C0H)。

我们将每一音符的时间常数和其相应的节拍常数作为一组,按顺序将乐曲中的所有常数排列成一个表,然后

由查表程序依次取出,产生音符并控制节奏,就可以实

现演奏效果。

此外,结束符和体止符可以分别用代码00H和FFH来表示,若查表结果为00H,则表示曲子终了;若查表结果为FFH,则产生相应的停顿效果。

为了产生手弹的节奏感,在某些音符(例如两个相同音符)音插入一个时间单位的频率略有不同的音符。

程序框图如图2所示。

下面给出程序序请单,可直接在TD-III型学习机上演奏,对其它不同型号的学习机,只需相应地改变一下地址即可。本程序演奏的是民歌“八月桂花遍地开”,C 调,节奏为94拍/分。读者也可以自行找出一首歌,按表1和表2给定的常数,将乐曲翻译成码表输入机器,而程序不变。本实验方法简便,即使不懂音乐的人,将一首陌生的曲子翻译成代码也是易事,和着机器的演奏学唱一首歌曲,其趣味无穷。

程序清单(略,请参看源程序的说明)。

《无线电》1992年第3期。

下载两个音乐文件的源代码和HEX代码。

硬件连接说明:

随便找一个仿真机或者什么单片机实验板,只要能工作的就行,将程序输入,运行,然后找个音箱(你计算机旁边应当就有一对吧)拨出插头,插头的前端接在P1。0

上,后面部分找根线接单片机的地,就应当有声了,然后怎么改进硬件连接就是你的事了。。。。

(完整版)基于51单片机的电子八音盒详细设计步骤

一、设计目的 利用8052单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。 二、设计要求 其基本功能为:1,使用LED显示器来显示目前演奏的歌曲编号;2,具有8个按键操作来选择演奏哪一首歌曲;3,内建8首歌曲旋律,按下单键可以演奏歌曲。 三、设计器材 T89C52单片机、晶振、八个按键、二位一体共阳极数码管、电阻电容若干、导线。 四、设计方案及分析 设计思路: (1)选择8052单片机,通过T0定时中断,并配合P2.0引脚输出音频频率。 (2)P2.0引脚输出接蜂鸣器。 (3)通过P0口接LED。 (4)P1口接键盘,输入歌曲号。 音符产生方法: 不同的音调有不同的频率。频率不同,音调也就不同。 利用定时器,使其工作在模式1,定时中断,然后控制P2.0引脚的输出每次取反,就可以在P2.0的引脚输出相应的方波频率。改变计数初值,就改变了频率。定时器的定时时间等于半个周期,定时时间到就输出脉冲取反,重复此过程,就可在P2.0引脚得到一音频的脉冲。 如:中音1的频率=523HZ,周期T=1/523=1912us; 定时器的定时时间为:T/2=1912/2us=956us; 计算得TH0,TL0的计数初值THTL=64580 下面是个音符计数初值

节拍产生方法: 音乐中的节拍用延时时间产生。假设1/4拍执行一次延时程序,这1/2拍就执行两次延时程序,所以只要求出1/4延时时间,其余的节拍就是他的倍数。为方便记谱,将节拍数也进行编码,如下: 建立曲谱编码表: 编谱用8位编码,高4位代表音符,低4位代表节拍。如5 6中音5,中音6,都是1/2拍,则编码为:82H 92H 程序清单: #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit SPEAK = P2^0;//接蜂鸣器管脚 uchar th0_f; uchar tl0_f;

基于51单片机的音乐播放器设计

题目:音乐播放器 课程设计(论文)任务书

摘要 随着电子技术的发展和计算机越来越普遍的使用,单片机作为这两项技术的有机结合也得到了广泛的应用,在某些领域具有不可替代的作用。音乐播放功能随处都会用到,如,在开发儿童智力的玩具中,等等。目前,基于单片机实现音乐播放,其体积小、价格低、编程灵活等特点在这一领域独领风骚。 单片机的英文名称为single chip microcomputer,最早出现在20世纪70年代,国际上现在已逐渐被微控制器(Microcontroller Unit 或MCU)一词所取代。它体积小,集成度高,运算速度快,运行可靠,功耗低,价格廉,因此在数据采集、智能化仪表、通讯设备等方面得到了广泛应用。而8051单片机在小到中型应用场合很常见,已成为单片机领域的实际标准。随着硬件的发展,8051单片机系列的软件工具也有了C级编译器和实时多任务操作系统RTOS,为单片机编程使用C语言提供了便利的条件;并针对单片机常用的接口芯片编制通用的驱动函数,可针对常用的功能模块,算法等编制相应的函数;C语言模块化程序结构特点,可以使程序模块大家共享,不断丰富,这样就使得单片机的的程序设计更简单可靠,实时性强,效率高。作为测控技术与仪器的学生,掌握8051单片机硬件基础及其相关软件操作,将其应用于现代电子产品中是必要而且重要的,这次课程设计我们的题目是用单片机实验箱系统制作音乐播放器。 本次课程设计主要内容是通过单片机C51语言进行编程,以产生乐曲音符和节拍,把乐谱翻译成计算机语言(音符转换诚成相对应的方波频率即定时器装载初值,节拍转换成相对应的延长时间),并将其预先存储到单片机里,然后根据按键调用再由单片机进行信息处理,在经过信号放大,由喇叭放出乐曲声,实现音乐播放的功能。其主要表现在可以播放十首歌曲,可以用十个数字键控制播放的歌曲,并且能在LCD液晶屏显

基于单片机STC89C52的数字音乐盒设计

基于单片机STC89C52的数字音乐盒设计 一、引言 1.1设计的目的 通过课程设计,让学生熟悉单片机微机应用系统开发、研制的过程,软硬 件设计的工作方法、工作内容、工作步骤。对学生进行基本技能训练,例如: 组成系统、编程、调试、查阅资料、焊接电路板等。使学生理论联系实际,提 高动手能力和分析问题、解决问题的能力。 1.2 设计的基本要求 (1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏不同的乐曲(至少3首歌曲); (2)采用七段数码管显示当前播放的歌曲序号; (3)可通过功能键选择乐曲,暂停,播放,上一首,下一首; 扩展功能:利用一个循环跟每一个音调同步,每改变一个音调就变换一下彩灯,从而实现音乐控制彩灯的功能。 二、总体设计 2.1基本工作原理 1、播放音乐的原理 发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低 频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初 步的了解。 音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0, 使其工作在模式1,定时中断,只要算出某一音频的周期(1/频率),然后将 此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计

时到后就将输出脉冲的I/O 反相,然后重复计时此半周期时间再对I/O 反相,就可在I/O 脚上得到此频率的脉冲。 2、音符频率的产生 音符及定时器的初值: 例如:中音1(DO )的音频=523HZ,周期T=1/523s=1912s μ 定时器/计数器0的定时时间为:T/2=1912/2s μ=956s μ 定时器956s μ的计数值=定时时间/机器周期=956s μ/1s μ=956(时钟频率=12MHZ) 计算得到定时器0的初值为65536-956=64580,将初值装入T0的寄存器里,启动T0后,每计数956次后就溢出中断,进入中断服务程序后,只要将I/O 口的输出值取反,就可以得到中音1(DO )的音符音频。只要改变计数初值,就能得到不同频率的音符。表(1)是C 调各音符频率与计数初值的对照表:

基于51单片机音乐盒程序设计

基于51单片机音乐盒程序设计基于51单片机音乐盒程序设计一、功能设计说明 1、电路设计 实物图 矩阵键盘部分电路图 2、运行流程图 程序开始 播放小苹果歌曲

否 判断任意按键是否按下继续播放小苹果歌曲是 否播放完成 进入电子琴模式 判断K16按键是否按下 是 3、电子琴模式按键对应发音设计 按键发音按键发音 低 1 中 2 K1 K9 低 2 中 3 K2 K10 低 3 中 4 K3 K11 低 4 中 5 K4 K12 低 5 中 6 K5 K13 按键发音按键发音 低 6 中 7 K6 K14 低 7 高 1 K7 K15 中 1 重新播放小苹果 K8 K16 二、硬件电路说明

1、程序下载电路 音乐盒电路图 ISP下载接口 本设计采用的单片机为AT89S52单片机,需使用ISP下载器进行下载程序,程序下载电路图如图中ISP1接口. 2、音乐发音电路 IO口P10发出不同频率的脉冲,则BUZZER产生各种不同的声音,本设计采用12MHZ 晶振,系统频率1MHZ,定时器计数一个1us,其对应关系如下表所示: 频率简谱码(T音符音符频率(HZ) 简谱码(T值) (HZ) 值) 低 1 DO 262 63628 # 4 FA# 740 64860 # 1 DO# 277 63731 中 5 SO 784 64898 低 2 RE 294 63853 # 5 SO# 831 64934 # 2 RE# 311 63928 中 6 LA 880

64968 低 3 M 330 64021 # 6 932 64994 低 4 FA 349 64103 中 7 SI 988 65030 # 4 FA# 370 64185 高 1 DO 1046 65058 低 5 SO 392 64260 # 1 DO# 1109 65085 # 5 SO# 415 64331 高 2 RE 1175 65110 低 6 LA 440 64400 # 2 RE# 1245 65134 # 6 466 64463 高 3 M 1318 65157 低 7 SI 494 64524 高 4 FA 1397 65178 中1 DO 523 64580 # 4 FA# 1480 65198 # 1 DO# 554 64633 高 5 SO 1568 65217 中 2 RE 587 64684 # 5 SO# 1661 65235 # 2 RE# 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 # 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65282 计算方法: 例如产生262HZ频率(发音DO), 周期T=1/262=3816 us,由于定时器中断使IO不停取反,故周期 T=3816/2=1908 us 定时器初值N=65536-1908=63628 TH0=63628/256 TL0=65536%256 三、程序代码说明 1 、脉冲产生 采用定时器0溢出中断产生脉冲,定时器初始化如下: TMOD = 0x01; //定时器0工作方式1 ,即十六位计数器计数 TR0 = 1; //启动定时器 ET0 = 1; //定时器0溢出中断使能

基于51单片机数字音乐盒的设计

单片机实物设计 题目: 单片机音乐盒设计 班级: K0312416-17 姓名:湛俊朱斌杨裕庆 学号:K031241705 K031241632 K031241737

摘要 本设计是一个基于STC89C51RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。本音乐盒共有四首歌曲,用4个按键控制。播放歌曲时,蜂鸣器发出某个音调。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS 仿真软件对硬件进行仿真调试,节约了设计时间。 【关键词】STC89C51RC 按键蜂鸣器 LCD1602液晶

目录 前言 ................................................................................................................................. 第一章工作原理 .............................................................................................................. 1.1设计目标 ............................................................................................................... 第二章软件设计与分析................................................................................................... 2.1 软件设计的组成................................................................................................... 2.2 各部分软件分析 ................................................................................................. 2.2.1 延时165MS,即十六分音符子函数 .......................................................... 2.2.2 延时1MS子函数...................................................................................... 2.2.3 定时器0中断子函数 .............................................................................. 2.2.4 播放音乐子函数...................................................................................... 2.5 定时器1中断子函数.................................................................................. 2.6 按键扫描子函数 ......................................................................................... 2.2.7 主函数..................................................................................................... 2.3 总源程序 ............................................................................................................ 第三章软件仿真 .............................................................................................................. 3.仿真图...................................................................................................................... 3.1 元件清单 ............................................................................................................... 总结 ..................................................................................................................................... 参考文献..............................................................................................................................

基于单片机的数字音乐盒

山东建筑大学 课程设计说明书 题目:基于单片机的数字音乐盒 课程:单片机原理及应用B课程设计院(部):信息与电气工程学院 专业:电子信息工程 班级: 学生姓名: 学号: 指导教师:高焕兵张君捧 完成日期: 2013年6月

目录 摘要 .................................................................... I 1 设计目的 (2) 2 设计要求 (2) 3 设计内容 (3) 3.1 设计原理 (3) 3.2 方案设计 (3) 3.3 电路各模块说明 (4) 3.4 器件选择 (6) 3.5.系统设计 (8) 3.6 软件设计 (8) 3.7 仿真调试及操作说明 (9) 总结与致谢 (10) 参考文献 (11) 附录 (12) 附录一:基于单片机的数字音乐盒总电路图 (12) 附录二:音乐程序 (12)

山东建筑大学信息与电气工程学院学院课程设计说明书 摘要 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,基于单片机制作的电子式音乐盒,控制功能强大,可根据需要选歌,使用方便。所放歌曲的节奏可以根据需要进行设置,根据存储容量的大小,可以尽可能多的存储歌曲。 本设计由由单片机AT80C51芯片和LCD显示器为核心,辅以必要的电路,构成的一个单片机电子数字音乐盒。本设计采用4*4键盘,用Protel99来画系统硬件图,采用C语言进行编程,编程后利用KEIL C51来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能得以正常实现。 关键词:单片机;音乐盒;电路;播放

基于单片机的八音盒电路原理图和完整程序源代码

51单片机课程设计报告(八音盒) 2010-12-13 22:28:24| 分类:电子、课程设计类| 标签:51单片机八音盒程序|字号大中小订阅 摘要 本文设计了一种基于51单片机(AT89C52)的八音盒,利用蜂鸣器和K20—K27制作了一个八音盒,内置八首乐曲,当按下不同的按键时,奏出不同的乐曲。并且把其他按键当作琴键,可以用它弹奏乐曲。本设计充分利用51单片机定时器的功能,根据do、re、mi等音调的频率,利用其产生不同的音调,从而演奏乐曲。在设计需考虑到歌曲曲谱的解析,令单片机能够解读其含义并工作,并根据演奏出乐曲的效果 不断调整程序,进行优化。 关键词:51单片机、八音盒、定时器 Abstract This article introduces a design based on 51 SCM (AT89C52), using the buzzer and buttons as K20 - K27 made a her bed-room, with built-in eight songs。When pressing different button, it goes out different pieces of music. And taking the other buttons as keys, we can use it to play music. This design make full use of 51 single-chip microcomputer timer function, according to do, re, mi tones of frequency, we use it to produce different tone, thus playing music. In the design song analysis should be considered, so the songs can be understood by SCM and make it work, and according to play music effect constantly adjust procedure, making optimization. Keywords:51 SCM、her bed-room、timer

基于单片机的音乐盒设计_毕业设计

毕业设计 基于单片机的音乐盒设计 【摘要】本设计是一个基于A T89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计3种。播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。 【关键字】音乐盒;A T89C51单片机;KEIL;PROTEUS;音调

Design Of Music Box Based On SCM Li Kun (Grade06,Class1, Major Computer Science and Technology, Computer Science and Technology Dept,Shaanxi University Of Technology,Hanzhong 723003,Shaanxi) Tutor: FENG Yong-Zheng Abstract:This design is a series based on A T89C51 microcontroller Music Box, based on principles of SCM technology, through the production of hardware and software compilation, designed a multi-function music box. Mainly by the keys of the music box circuit, reset circuit, clock circuit and the buzzer composition. Using two buttons control music box, one to switch songs, and the other is used to switch the 8 LED pattern changes, the music box has two songs, a total of three kinds of pattern light pattern. Play a song, the buzzer sounded a tone, corresponding LED lights up. This design using KEIL programming software to program the music box and debug source code, with the PROTEUS simulation software to simulate hardware, debugging, saving design time. Key Words: Music Box ;A T89C51 SCM; KEIL; PROTEUS; TONE

单片机数字音乐盒程序设计

《单片机原理及应用》课程设计报告 题目数字音乐盒 学号1295054 姓名邢安超张凯旋罗杰 年级专业2012级自动化 指导教师黄云飞 完成日期2014 年 6 月7 日 安徽师范大学物理与电子信息学院 College of Physics and Electronic Information, Anhui Normal University

目录 摘要 (1) 引言 (2) 1 课程设计目的 (2) 2 课程设计任务及要求 (2) 4 设计原理 (3) 5 系统总体方案介绍 (4) 5.1 系统组成框图 (4) 5.2 音乐盒的功能 (4) 6 硬件设计 (4) 6.1 总体设计框图 (4) 6.2各部分硬件设计及其原理 (5) 6.3 硬件电路图及功能 (7) 7 软件设计 (8) 7.1 软件程序设计 (8) 8 调试 (9) 8.1 检查硬件连接 (9) 8.2 检查软件系统 (9) 8.3 测试结果 (9) 课程设计体会 (10) 参考文献 (10) 附录 (1)

数字音乐盒 邢安超张凯旋罗杰,皖江学院 摘要: 本设计是采用单片机为核心设计的数字音乐盒。它可以实现音乐的播放,可以通过功能键来选择乐曲,播放或暂停,并且可以通过LCD屏幕显示正在播放的歌曲的序号,及乐曲播放时间,开机时有英文欢迎提示字符,本音乐盒可以播放三首音乐。 主控芯片采用AT89C51,采用汇编语言进行编程,编程后利用KEIL C51来进行编译,再生成的HEX文件装入芯片中,采用proteus软件来仿真,检验功能得以正常实现。 本系统功能键有一个2×4的键盘组成,其中1号到3号键是歌曲序列号键,可以直接选择音乐;4号键选择当前播放音乐的上一首音乐,5号键选择当前播放音乐的下一首音乐,6号键使音乐暂停播放,7号键显示开机画面。 键盘采用动态扫描方式。每次扫描一行键盘,送此行低电平,读输入口的状态值,判断有没有键按下。若有键按下,根据读入口的值选择显示值并送至显示值寄存单元,判断键值,启动计数器T0,根据次值为偏移地址找到要选择的音乐的代码的首地址,根据代码产生一定频率的脉冲,驱动蜂鸣器,放出音。同时启动定时器T1,计算音乐的播放的时间,并且启动LCD,在LCD上显示序号和播放时间。在制作过程中,我发现将音乐代码的首地址送出很难实现。因为其首地址是十六位的,而单片机中我们能用的十六位的寄存器只有DPTR,但是DPTR在下面必须要用到,所以不能用。把十六位地址拆成俩个八位的地址分高低位去送,用直接地址#high(4000h)去送,编译成功。 关键词:AT89C51,数字音乐盒, 2×4键盘,LCD,时钟震荡电路

基于单片机的音乐盒设计-毕业设计

基于单片机的音乐盒设计 学生:XXX指导老师:XXX 内容摘要:本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能数字音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计3种。播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。本设计利用KEIL 编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。 关键词:音乐盒 AT89C51 KEIL PROTEUS 音调

Design for AT89C51 digit music box Abstract:The digest this text has introduced the basic AT89C51 digit music box,According to AT89C51 principle,take it by hardware circuit and software compile to made a multifunction digit music box.this box main form button circuit rest circuit clock circuit and https://www.360docs.net/doc/e82837556.html,e two button to control it,the one use to change music ,and the other one made the LED change the kind of light.this box had two songs,and LED had three kind of light.then the music has playing,the buzzer will take among of tone,meanwhile LED will give out light.the design on the basic of KEIL to compile and debugging this music box,at the same times match up PROTEUS to hardware going to simulation debugging,So save a lot of times. Keywords:music box AT89C51 KEIL PROTEUS Tone

基于AT89C51单片机的带彩灯外观音乐盒设计

基于AT89C51单片机的带彩灯外观音乐盒设计

基于AT89C51单片机的带彩灯外观音乐盒设计 摘要 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以AT89C51单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏音乐,功能多,外观效果多彩,配有彩灯,使用方便,本音乐盒有三个按键,key1控制彩灯,key2控制音乐,key3为总开关,可同时关闭音乐与彩灯。具有一定的商业价值。 关键字:AT89C51;音乐盒;按键;彩灯

Abstract Along with the development of human society, people of vision, hearing things put forward higher request. Small music box can bring good memories and improve people's spiritual culture. Traditional music box is heavy mechanical type, size, pronunciation and drab, cannot achieve batch production. Music box designed in this paper based on AT89C51 microcontroller as the core element of electronic music box, small size, light weight, can play music, multi-function, appearance and colorful, with a lantern,easy to use. The music box with three buttons , The key1 control Lantern, key2 control music, key3 total switch can turn off the music and lanterns. Have some commercial value. Keywords: AT89C51, music boxes, buttons, Lantern

电子音乐盒(单片机课程设计)

^ 电子音乐盒 1、设计任务和要求 (1) 2、总体设计 (1) 3、硬件设计 (2) 硬件电路 (2) 原理说明 (2) 4、软件设计 (3) 5、仿真、安装和调试 (3) 【 6、收获与体会 (4) 参考文献 (5) 附件1:元件清单 (6) 附件2: 总电路图 (7) 附件3:音乐程序 (8) ,

音乐盒设计 1、设计任务和要求 (1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而 演乐曲(内存两首乐曲)。 (2)采用七段数码管显示当前播放的歌曲序号。 (3)可通过功能键选择乐曲,暂停,播放,上一曲,下一曲。 2、总体设计 (1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲 (2)利用8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。 记数脉冲值与频率的关系公式如下: N=Fi/2/Fr N:记数值 Fi:内部计时一次为1微秒.故其频率为1MHZ Fr;要产生的频率 (3):起记数值的求法如下: T=65536-N=65536-Fi/2/Fr 例如:设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。 T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr

基于51单片机数字音乐盒的设计毕业设计

单片机实物设计题目: 单片机音乐盒设计

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

单片机 音乐盒程序

单片机能播放三首音乐的音乐盒程序C语言 #include #define uchar unsigned char #define uint unsigned int char a; sbit BEEP=P2^0; sbit BEEP1=P2^1; sbit BEEP2=P2^2; sbit P27=P2^7; sbit P26=P2^6; sbit P25=P2^5; uchar note; uchar *music_p; uchar code scales[]= { 0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC, 0xFD,0x09,0xFD,0x34,0xFD,0x82,0xFD,0xFD,0xC8,0xFE,0x06, 0xFE,0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85 }; uchar code XinXinXiangYing[]= { 0x24,0x14,0x24,0xc4,0x54,0x54,0x48,0x04,0x54,0x44, 0x34,0x22,0x14,0xb2,0xc8,0x04,0x12,0xc2,0x16,0x12, 0x76,0x52,0x46,0x12,0x3f,0x04,0xb4,0xd4,0xc4,0x14, 0x28,0xc4,0x14,0x12,0x32,0x16,0xc2,0x54,0x78,0x34, 0x4c,0x42,0x52,0x86,0x74,0x76,0x52,0x74,0x28,0x44, 0x52,0x46,0x11,0x26,0x12,0xcf,0x04,0x24,0x14,0xc4, 0x56,0x52,0x48,0x04,0x54,0x44,0x34,0x22,0x14,0xb2, 0x74,0x52,0x34,0x3f,0xff }; uchar code QiDao[]= { 0xc4,0x14,0x32,0x44,0x44,0x52,0x52,0x44,0x32,0x32, 0x14,0x14,0x12,0x12,0x32,0x42,0x54,0x54,0x4f,0xc4, 0x12,0x32,0x44,0x42,0x72,0x58,0x42,0x32,0x34,0x14, 0x12,0x01,0x01,0x01,0x1f,0xff };

基于AT89C51单片机的音乐盒的设计

1 前 言 乐曲演奏广泛用于自动答录装置、手机铃声、集团电话、及智 能仪器仪表设备。实现方法有许多种,在众多的实现方法中,以纯硬件完成乐曲演奏,随着FPGA 集成度的提高,价格下降,EDA 设计工具更新换代,功能日益普及与流行,使这种方案的应用越来越多。如今的数字逻辑设计者面临日益缩短的上市时间的压力,不得不进行上万门的设计,同时设计者不允许以牺牲硅的效率达到保持结构的独特性。使用现今的EDA 软件工具来应付这些问题,并不是一件简单的事情。FPGA 预装了很多已构造好的参数化库单元LPM 器件。通过EDA 软件工具,设计者可以设计出结构独立而且硅片的使用效率非常高的产品。 本文介绍在EDA 开发平台上利用单片机及汇编语言设计音乐硬件演奏电路,并定制单片机存储音乐数据,以十首乐曲为例,将音乐数据存储到单片机,就达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改单片机所存储的音乐数据,将其换成其他乐曲的音乐数据,再重新连接到程序中就可以实现其它乐曲的演奏。

目录 摘要 (4) 第1章概述 (5) 第2章音乐盒的发音原理 (6) 2.1 播放音乐的原理 (6) 2.2 音符频率的产生 (6) 2.3 节拍频率的产生 (8) 第3章硬件电路设计 (9) 3.1 硬件电路 (9) 3.2 整体硬件电路 (10) 3.3 原理说明 (11) 2 2.4 键盘按键 (11) 第4章软件设计 (12) 4.1 程序设计流程 (12) 4.2 设计源程序代码 (12)

第5章仿真及调试 (13) 5.1 调试 (13) 5.2 仿真 (13) 5.3 程序调试中出现的问题及解决的办法 (15) 第6章设计小结及建议 (17) 致谢 (18) 参考文献 (19) 附录一元器件清单 (20) 附录二部分源程序代码 (21) 3

基于51单片机的音乐程序

基于51单片机的按键切换播放音乐 原理图: 引脚说明:共5个按键,分别接51单片机的P0~P4引脚,前4个按键控制播放设置好的四首音乐,第5个按键用来关闭音乐。按键采用中断方式,任意时刻按下任意按键则立即进入所按按键的功能;蜂鸣器接单片机的P3.6口。 仿真说明:使用proteus仿真,晶振:12MHZ。 程序代码如下: /*12Mhz晶振工作*/ #include #define uint unsigned int #define uchar unsigned char sbit voice=P3^6; uchar code sound1[]={0xff, 0x40,0x80,0x30,0x40,0x2b,0x40,0x26,0x80,0x24,0x10,0x26,0x40,0x30,0x40, 0x2b,0x80,0x30,0x40,0x39,0x40,0x30,0xc0,0x40,0x80,0x30,0x40,0x2b,0x40, 0x26,0x40,0x26,0x20,0x24,0x20,0x20,0x40,0x30,0x40,0x24,0x80,0x26,0x10,

0x20,0x40,0x19,0x40,0x19,0x80,0x1c,0x10,0x1c,0x80,0x20,0x40,0x20,0x20, 0x1c,0x20,0x19,0x40,0x1c,0x20,0x20,0x20,0x26,0xc0,0x24,0x80,0x24,0x10, 0x20,0x40,0x1c,0x40,0x20,0x40,0x24,0x20,0x26,0x20,0x2b,0x80,0x33,0x40, 0x33,0x20,0x39,0x20,0x40,0x40,0x39,0x40,0x30,0xc0,0x18,0x80,0x1c,0x80, 0x24,0x80,0x20,0x10,0x1c,0x80,0x19,0x40,0x19,0x20,0x19,0x20,0x19,0x40, 0x1c,0x20,0x20,0x20,0x26,0xc0,0x18,0x80,0x1c,0x80,0x24,0x80,0x20,0x10, 0x1c,0x80,0x1c,0x40,0x1c,0x20,0x1c,0x20,0x1c,0x40,0x24,0x20,0x26,0x20, 0xff,0x20,0x00};//同一首歌*/ uchar code sound2[]={0xff, 0x18,0x40,0x1c,0x20,0x18,0x20,0x13,0x40,0x13,0x20,0x15,0x20,0x13,0x20, 0x15,0x20,0x13,0x20,0x15,0x20,0x18,0x20,0x19,0x20,0x1c,0x20,0x20,0x20, 0x1c,0x40,0x19,0x20,0x18,0x20,0x15,0x40,0x10,0x80, 0x13,0x10,0x10,0x40,0x15,0x10,0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10, 0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10,0x13,0x10,0x18,0x10,0x1c,0x10, 0x26,0x10,0x13,0x10,0x18,0x10,0x1c,0x10,0x26,0x10,0x15,0x10,0x19,0x10, 0x20,0x10,0x2b,0x10,0x15,0x10,0x19,0x10,0x20,0x10,0x2b,0x10,0x15,0x10, 0x19,0x10,0x20,0x10,0x2b,0x10,0x15,0x10,0x19,0x10,0x20,0x10,0x2b,0x10, 0x18,0x10,0x1c,0x10,0x24,0x10,0x30,0x10,0x18,0x10,0x1c,0x10,0x24,0x10, 0x30,0x10,0x19,0x10,0x20,0x10,0x2b,0x10,0x19,0x10,0x19,0x10,0x20,0x10, 0x2b,0x10,0x19,0x10,0x18,0xc0,0xff,0x40,0x40,0x10,0x39,0x20,0x30,0x20, 0x2b,0x20,0x30,0x20,0x2b,0x20,0x26,0x20,0x26,0x20,0x26,0x20,0x26,0x20, 0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x20,0x26,0x20,0x26,0x20,0x26,0x20, 0x26,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x40,0x30,0x10,0x30,0x20, 0x39,0x20,0x30,0x40,0x2b,0x10,0x2b,0x20,0x26,0x20,0x26,0x80,0x40,0x10, 0x39,0x20,0x30,0x20,0x2b,0x20,0x30,0x20,0x2b,0x20,0x30,0x20,0x30,0x20, 0x20,0x20,0x20,0x20,0x26,0x20,0x2b,0x20,0x26,0x20,0x2b,0x20,0x30,0x20, 0x30,0x20,0x26,0x20,0x26,0x20,0x26,0x20,0x2b,0x20,0x30,0x20,0x2b,0x40, 0x2b,0x10,0x2b,0x20,0x2b,0x20,0x2b,0x40,0x30,0x10,0x30,0x20,0x39,0x20,

相关文档
最新文档