課程設(shè)計(jì)題目:數(shù)字音樂(lè)盒 課程設(shè)計(jì)要求:1.利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂(lè)曲(最少三首樂(lè)曲,每首不少于30秒) 2.采用LCD顯示信息 3.開(kāi)機(jī)時(shí)有英文歡迎提示字符,播放時(shí)顯示歌曲序號(hào)(或名稱(chēng)) 4.可通過(guò)功能鍵選擇樂(lè)曲,暫停,播放。 5.選作內(nèi)容:顯示樂(lè)曲播放時(shí)間或剩余時(shí)間 硬件電路:本設(shè)計(jì)中用到了89C51單片機(jī),4*4鍵盤(pán),蜂鳴器,16*2 LCD,七段 顯示數(shù)碼管LED。 原理說(shuō)明:當(dāng)鍵盤(pán)有鍵按下時(shí),判斷鍵值,啟動(dòng)計(jì)數(shù)器T0,產(chǎn)生一定頻率的脈沖,驅(qū)動(dòng)蜂鳴器,放出樂(lè)曲。同時(shí)啟動(dòng)定時(shí)器T1,顯示樂(lè)曲播放的時(shí)間,并驅(qū)動(dòng)LCD,顯示歌曲號(hào)及播放時(shí)間。也可在LED顯示歌曲號(hào)。 (1) 硬件電路中用P1.0~P1.7控制按鍵,其中P1.0~P1.3掃描行,P1.4~P1.7掃描列。 (2) 用P0.0~P0.7,P2.0~P2.7控制LED,其中P0.0~P0.7控制七段碼a,b,c,d,e,f,g,用P2.0~P2.7為數(shù)碼管位選信號(hào)。 (3) 用,P2.0~P2.2作為L(zhǎng)CD的RS,R/W,E的控制信號(hào)。用P0.0~P0.7作為L(zhǎng)CD的D0~D7的控制信號(hào)。 (4) 用P3.7口控制蜂鳴器。 (5) 電路為12MHZ晶振頻率工作,起振電路中C1,C2均為30pf。

電路圖:
【試驗(yàn)時(shí)請(qǐng)仔細(xì)閱讀后文說(shuō)明!此圖僅為我站制作,并不代表原作者意愿;若您制作成功,望在網(wǎng)絡(luò)推廣!
實(shí)驗(yàn)控制流程圖如下:

鍵盤(pán)如下:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
實(shí)驗(yàn)程序如下:
RS BIT P2.0 ;定義液晶顯示端口標(biāo)號(hào) RW BIT P2.1 E BIT P2.2 ;******************************************** L50MS EQU 60H L1MS EQU 61H L250MS EQU 62H SEC EQU 65H MIN EQU 64H HOU EQU 63H ;******************************************* org 0000h ljmp main ORG 000BH LJMP TT0 ORG 001BH LJMP T1INT org 1000h main: ;-----------------------;液晶初始化 MOV SP,#70H MOV P0,#01H ;清屏 CALL ENABLE MOV P0,#38H ;8位,2行顯示 lCALL ENABLE MOV P0,#0FH ;屏顯on,光標(biāo)on,閃爍on lCALL ENABLE MOV P0,#06H ;計(jì)數(shù)地址加1,顯示幕on lCALL ENABLE ;-------------------------------內(nèi)存初始化 lcall initil ;------------------------------- key1: lcall key lcall modd ljmp key1 ;---------------------鍵盤(pán)掃描 key: nop nop lcall ks jnz k1 ;有按鍵轉(zhuǎn)到K1 lcall kaiji lcall SOP xn: ljmp key k1: lcall modd lcall modd lcall ks jnz k2 ljmp key k2: mov R2,#0feh ;讀鍵盤(pán) mov R4,#00h k3: mov A,R2 mov P1,A mov A,P1 JB ACC.4,L1 ;為1跳轉(zhuǎn),第一行無(wú)按鍵 mov a,#00h ljmp lk L1: jb acc.5,L2 mov a,#04h ljmp lk L2: jb acc.6,L3 mov a,#08h ljmp lk L3: jb acc.7,next1 mov a,#0ch ;------------------------------------------------------- lk: add a,R4 push acc k4: lcall delay1 ;若同時(shí)有其他按鍵,則等待 lcall ks jnz k4 ;-------------------------------------------------------- mov r3,#07h clr a mov r0,#30h mov r1,#31h mm1: mov a,@r1 mov @r0,a inc r0 inc r1 djnz r3,mm1 pop acc mov @r0,a RET ;------------------------------------------------------ next1: inc R4 ;------列掃描 mov a,R2 JNB acc.3,n2 ljmp n1 n2: ljmp key n1: rl a mov R2,a ljmp k3 ;---------------------------------------------- ks: mov a,#0f0h ;判斷P1口 mov P1,a nop nop mov a,P1 cpl a anl a,#0f0h RET ;-------------------------------------------------- DELAY1: SETB RS0 dl: mov R5,#0ah dl2: mov R6,#63 dl3: nop nop djnz R6,dl3 djnz R5,dl2 CLR RS0 RET ;--------------------------------------------------- ;30H-37H初值為零 ;---------------------------------------------------- initil: mov r3,#08h mov r0,#30h m1: mov @r0,#00h inc r0 djnz r3,m1 RET ;---------------------------------------------------- ;顯示 ;--------------------------------------------------- modd: MOV P0,#8EH lCALL ENABLE mov A,37H mov DPTR,#TABLE3 MOVC A,@A+DPTR lCALL WRITE2 RET ;-------------------------------------------------- ;開(kāi)機(jī)提示字 ;------------------------------------------------- kaiji: mov a,37h cjne a,#0fh,DFF MOV P0,#80H ;設(shè)光標(biāo)地址 lCALL ENABLE MOV DPTR,#TABLE1;寫(xiě)數(shù)據(jù) lCALL WRITE1 DFF: RET ;---------------------------------------------- ;按鍵值播放歌曲 ;---------------------------------------------- SOP: mov a,37h cjne a,#01h,A11 LCALL MODD MOV 52H,#HIGH TABLE10 MOV 53H,#LOW TABLE10 LCALL INITILE2 lcall MAIN0 A11: CJNE A,#02H,A22 LCALL MODD MOV 52H,#HIGH TABLE20 MOV 53H,#LOW TABLE20 LCALL INITILE2 lcall MAIN0 A22: CJNE A,#03H,A33 LCALL MODD MOV 52H,#HIGH TABLE30 MOV 53H,#LOW TABLE30 LCALL INITILE2 lcall MAIN0 A33: CJNE A,#04H,A44 LCALL MODD MOV 52H,#HIGH TABLE40 MOV 53H,#LOW TABLE40 LCALL INITILE2 lcall MAIN0 A44: CJNE A,#05H,A55 LCALL MODD MOV 52H,#HIGH TABLE50 MOV 53H,#LOW TABLE50 LCALL INITILE2 lcall MAIN0 A55: CJNE A,#06H,A66 LCALL MODD MOV 52H,#HIGH TABLE60 MOV 53H,#LOW TABLE60 LCALL INITILE2 lcall MAIN0 A66: CJNE A,#07H,A77 LCALL MODD MOV 52H,#HIGH TABLE70 MOV 53H,#LOW TABLE70 LCALL INITILE2 lcall MAIN0 A77: CJNE A,#08H,A88 LCALL MODD MOV 52H,#HIGH TABLE80 MOV 53H,#LOW TABLE80 LCALL INITILE2 lcall MAIN0 A88: CJNE A,#09H,A99 LCALL MODD MOV 52H,#HIGH TABLE90 MOV 53H,#LOW TABLE90 LCALL INITILE2 lcall MAIN0 A99: CJNE A,#0AH,AAA LCALL MODD MOV 52H,#HIGH TABLE100 MOV 53H,#LOW TABLE100 LCALL INITILE2 lcall MAIN0 AAA:RET ;****************************************** INITILE2: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00H MOV A,HOU MOV B,#10 DIV AB ADD A,#30H ;將BCD嗎轉(zhuǎn)化為ASIIC碼 MOV P0,#0C8H ;顯示小時(shí)十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0C9H ;顯示小時(shí)個(gè)位 CALL ENABLE CALL WRITE2 MOV A,#3AH MOV P0,#0DH ;顯示冒號(hào) CALL ENABLE CALL WRITE2 MOV A,MIN MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CBH ;顯示分十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CCH ;顯示分個(gè)位 CALL ENABLE CALL WRITE2 MOV A,#3AH MOV P0,#0CDH ;顯示冒號(hào) CALL ENABLE CALL WRITE2 MOV A,SEC MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CEH ;顯示秒十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CFH ;顯示秒個(gè)位 CALL ENABLE CALL WRITE2 MOV P0,#0C0H ;設(shè)光標(biāo)地址 CALL ENABLE MOV DPTR,#TABLE2;寫(xiě)數(shù)據(jù) CALL WRITE1 RET ;*********************************************寫(xiě)指令 ENABLE: CLR RS CLR RW CLR E LCALL DELAY SETB E RET ;**********************************************寫(xiě)數(shù)據(jù) WRITE1: MOV R1,#00H A1: MOV A,R1 MOVC A,@A+DPTR CALL WRITE2 INC R1 CJNE A,#0FEH,A1 ;未到字符串末尾繼續(xù) RET WRITE2: MOV P0,A SETB RS CLR RW CLR E CALL DELAY SETB E RET ;********************************************** DELAY: MOV R4,#05 D1: MOV R5,#0FFH DJNZ R5,$ DJNZ R4,D1 RET ;---------------------------------------------- TAB: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h db 80h,90h,88h,83h,0c6h,0a1h,86h,8eh TAB1:db 89h,86h,0c7h,0c7h,0c0h TAB2:db 0c6h,88h,0c0h TABLE1:DBWELCOM HERE,0FEH TABLE2:DBDFF WB ,0FEH TABLE4:DB CAU,0FEH TABLE3:DB 30H,31H,32H,33h DB 34H,35H,36H,37H DB 38h,39H,41H,42H DB 43H,44H,45H,46H ;-------------------------------------------------------------------- ;播放歌曲程序 ;-------------------------------------------------------------------- MAIN0: MOV TMOD,#11H MOV IE,#8aH ;MOV TH1,#3cH ;MOV TL1,#0b0H lcall ks jnz TTM12 MOV 40H,#00H ;--------------------------------------------------------- NEXT20: MOV A,40H MOV DPH,52H MOV DPL,53H MOVC A,@A+DPTR MOV R2,A JZ STOP ANL A,#0FH MOV R1,A MOV A,R2 SWAP A ANL A,#0FH JNZ SING CLR TR0 JMP W1 ;---------------------------------------------------------- SING: DEC A MOV 22H,A RL A MOV DPTR,#TABLE00 MOVC A,@A+DPTR MOV TH0,A MOV 21H,A MOV A,22H RL A INC A MOVC A,@A+DPTR MOV TL0,A MOV 20H,A SETB TR0 SETB TR1 W1: LCALL DELAY30 INC 40H LCALL KS ;------有鍵跳出 JNZ STOP LJMP NEXT20 ;----------------------------------------------------------- STOP: CLR TR0 CLR TR1 LJMP MAIN0 ;---------------------------------------------------------- TTM12: LCALL K2 MOV A,37H CJNE A,#0EH,TTM13 CLR TR1 LCALL DELAY1 TTM120: LCALL KS LCALL DELAY1 JZ TTM120 LCALL K2 MOV A,37H CJNE A,#0EH,TTM120 SETB TR1 LJMP NEXT20 TTM13: CJNE A,#0CH,TTM14 MOV A,52H INC A MOV 52H,A MOV A,53H INC A MOV 53H,A MOV A,36H INC A MOV 37H,A LJMP TTM2 TTM14: CJNE A,#0DH,TTM2 MOV A,52H DEC A MOV 52H,A MOV A,53H DEC A MOV 53H,A MOV A,36H DEC A MOV 37H,A ;------------------------------------------------------ TTM2: RET ;*************************************************** ;定時(shí)器中斷子程序0 ;*************************************************** TT0: PUSH ACC PUSH PSW MOV TL0,20H MOV TH0,21H CPL P3.7 POP PSW POP ACC RETI ;*************************************************** ;定時(shí)器中斷子程序1 ;*************************************************** T1INT: MOV TH1, #3cH MOV TL1, #0b0H DJNZ L50MS,X4 MOV L50MS,#20 ;****************---每秒種時(shí)鐘刷新秒顯示一次 SECSET: MOV A,SEC MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CEH ;顯示秒十位 lCALL ENABLE lCALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CFH ;顯示秒個(gè)位 lCALL ENABLE lCALL WRITE2 MOV A,SEC INC A MOV SEC,A XRL A,#60 X4: JNZ OUT MINSET: MOV SEC,#00H ;*************************************每分鐘刷新分顯示一次 MOV A,MIN INC A MOV MIN,A MOV B,#10 DIV AB ADD A,#30H MOV P0,#0CBH ;顯示分十位 lCALL ENABLE lCALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0CCH ;顯示分個(gè)位 lCALL ENABLE lCALL WRITE2 MOV A,MIN MOV B,#3 MUL AB MOV B,#100 DIV AB MOV R2,A MOV A,#10 XCH A,B DIV AB MOV A,MIN XRL A,#60 JNZ OUT HOUSET: MOV MIN,#00H ;**************************************每小時(shí)刷新小時(shí)顯示一次 MOV A,HOU MOV B,#10 DIV AB ADD A,#30H ;將BCD嗎轉(zhuǎn)化為ASIIC碼 MOV P0,#0C8H ;顯示小時(shí)十位 CALL ENABLE CALL WRITE2 MOV A,B ADD A,#30H MOV P0,#0C9H ;顯示小時(shí)個(gè)位 CALL ENABLE CALL WRITE2 MOV A,HOU INC A MOV HOU,A XRL A,#10 JNZ OUT SJMP OVERFLOW OUT: RETI ;*************************************溢出處理 OVERFLOW: MOV L50MS,#20 MOV L1MS,#00H MOV L250MS,#00H MOV SEC,#00H MOV MIN,#00H MOV HOU,#00H RETI ;-------------------------------------------------------------------- DELAY30: MOV R7,#2 W2: MOV R4,#125 W3: MOV R3,#248 DJNZ R3,$ DJNZ R4,W3 DJNZ R7,W2 DJNZ R1,DELAY30 RET ;-------------------------------------------------------------------- TABLE00: DW 64580,64684,64777,64820 DW 64898,64968,65030,64260 DW 64400,64524,65058,63835,64021 ;------------------------------------------------------------------- ;第一首《精忠報(bào)國(guó)》 ;-------------------------------------------------------------------- TABLE10: DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98H DB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22H DB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38H DB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32H DB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52H DB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38H DB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52H DB 52H,62H,7FH,74H,04H,58H,6FH DB 00 ;-------------------------------------------------------------------- ;第二首《月亮代表我的心》 ;-------------------------------------------------------------------- TABLE20: DB 02H,82H DB 16H,32H,54H,02H,52H DB 0A6H,32H,54H,02H,52H DB 64H,74H,0B6H,64H DB 52H,5CH,32H,22H DB 16H,12H,14H,32H,22H DB 16H,12H,14H,22H,32H DB 26H,12H,94H,22H,32H DB 2CH DB 32H,52H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 96H,0A2H,96H,82H DB 3CH,54H DB 36H,22H,14H,54H DB 0ACH,92H,0A2H DB 16H,12H,14H,22H,32H DB 2CH,02H,82H DB 16H,32H,56H,12H DB 0A6H,32H,56H,52H DB 66H,72H,0B6H,62H DB 62H,52H,58H,32H,22H DB 16H,12H,14H,32H,22H DB 16H,12H,14H,22H,32H DB 26H,92H,0A4H,12H,22H DB 1CH DB 00 ;------------------------------------------------------------------- ;第三首《看我七十二變》 ;------------------------------------------------------------------- TABLE30: DB 0d4H,84H,94H,82H,92H DB 12H,22H,82H,92H,02H,92H,82H,0d2H DB 82H,92H,14H,84H,02H,0d1H,0d1H DB 0c2H,0d2H,84H,0d2H,0d2H,82H,82H DB 84H,82H,82H,94H,82H,0d2H DB 82H,82H,82H,92H,02H,82H,82H,0d2H DB 0c4H,84H,0d4H,92H,0d2H DB 82H,0d2H,82H,92H,98H DB 04H,94H,88H DB 04H,94H,88H DB 04H,94H,88H DB 04H,94H,88H,04H DB 32H,32H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,22H DB 54H,44H,34H,12H,22H DB 34H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,92H DB 32H,32H,22H,12H,02H,92H,12H,22H DB 54H,44H,32H,22H,12H,92H DB 00 ;-------------------------------------------------------------------- ;第四首《同一首歌》 ;-------------------------------------------------------------------- TABLE40: DB 88h,14h,24h,36H,42H,34H,14H,28H,14H,94H DB 1fH,88H,14H,24H,34H,32H,42H,54H,14H DB 46H,32H,54H,22H,32H,32H,22H,2CH,38H,54H,74H DB 76H,62H,68H,54H,52H,62H,74H,62H,52H,3fH DB 46H,42H,54H,64H,54H,42H,32H,28H,0a4H,0a2H DB 92H,84H,94H,1fH,0b8H,68H,46H,52H,68H DB 74H,72H,72H,74H,62H,52H,3fH,0b8H,68H DB 46H,52H,68H,64H,62H,62H,64H,42H,32H,2fH DB 58H,14H,24H,36H,42H,34H,12H,12H,26H,22H,24H,22H,12H DB 94H,9cH,0a8H,0a6H,92H,84H,64H,54H,22H,22H,46H,42H,44H,32H,22H,5fH DB 00 ;-------------------------------------------------------------------- ;第五首《大海》 ;-------------------------------------------------------------------- TABLE50: DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H DB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H DB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,94H,1cH DB 82H,92H,12H,14H,12H,14H,92H,82H,12H,14H,22H,14H,92H,12H,22H,24H DB 22H,24H,12H,92H,22H,24H,32H,24H,32H,52H,62H,54H,52H,64H,52H,32H DB 22H,32H,22H,12H,94H,82H,92H,12H,14H,12H,14H,22H,12H,1cH,32H,52H DB 62H,64H,62H,64H,0b2H,62H,52H,54H,62H,54H,32H,22H DB 12H,14H,12H,14H,24H,3cH,32H,22H,12H,14H,12H,14H,0b2H,62H,52H,54H,62H,54H,32H,52H DB 66H,0b2H,0b4H,62H,52H,5cH,32H,52H,62H,64H,62H,64H,0b2H,62H,52H,54H DB 62H,54H,32H,22H,12H,14H,12H,14H,54H,3cH,32H,22H,12H,14H,12H,14H,22H,32H DB 52H,54H,32H,54H,32H,52H,6fH,04H,02H,92H,32H,24H,12H,1fH DB 00 ;-------------------------------------------------------------------- ;第六首《兩只蝴蝶》 ;-------------------------------------------------------------------- TABLE60: DB 32H,22H,38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,92H,88H,04H,32H,22H DB 38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,21H,92H,12H,28H,04H,32H,22H DB 38H,02H,22H,32H,22H,18H,04H,92H,12H,24H,22H,32H,22H,12H,92H,91H,11H,88H DB 04H,32H,52H,58H,02H,52H,62H,52H,38H,04H,22H,22H,24H,22H,32H,22H,12H,92H,92H DB 12H,12H,1cH,08H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22H DB 38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4H,72H DB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,32H,22H,32H DB 58H,02H,52H,52H,62H,0b2H,72H,72H,62H,32H,22H,22H,22H DB 38H,02H,32H,32H,52H,64H,64H,02H,92H,32H,22H,28H,04H,32H,52H,52H,32H,54H,02H,0b4H,72H DB 62H,72H,34H,02H,62H,62H,72H,62H,52H,32H,22H,02H,84H,92H,1cH DB 00 ;-------------------------------------------------------------------- ;第七首<<世上只有媽媽好>> ;-------------------------------------------------------------------- TABLE70: DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH DB 66H,52H,34H,54H,0B4H,62H,52H,68H,34H,52H,62H,54H,34H,12H,92H,52H,32H,28H DB 26H,32H,54H,52H,62H,34H,24H,18H,56H,32H,22H,12H,92H,12H,8FH DB 00 ;-------------------------------------------------------------------- ;第八首歌《彩云追月》 ;-------------------------------------------------------------------- TABLE80: DB 86H,92H,12H,22H,32H,52H,68H,63H,52H,34H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54H DB 62H,0B2H,0B2H,62H,52H,32H,52H,52H,51H,61H,51H,31H,34H,52H,62H,74H,32H,52H,52H,32H,21H,31H,21H,11H,24H DB 32H,52H,52H,32H,22H,12H,24H,32H,52H,52H,32H,62H,52H,61H,51H,31H,21H,21H,31H,21H,11H,1CH DB 21H,31H,22H,23H,31H,21H,18H,02H,0B2H,0BCH,0B4H,72H,61H,51H,72H,61H,71H,61H,51H,61H,71H,61H,6FH DB 86H,94H,12H,22H,32H,52H,64H,62H,51H,31H,52H,21H,31H,21H,33H,62H,0B2H,0B2H,62H,51H,61H,51H,31H,54H DB 62H,0B2H,72H,61H,51H,51H,61H,51H,31H,54H,61H,0B2H,72H,61H,51H,51H,61H,51H,31H,32H,21H,11H,32H,51H,61H,54H DB 02H,32H,24H,32H,52H,52H,32H,22H,31H,21H,11H,24H,32H,52H,62H,0B2H,72H,61H,51H,61H,51H,31H,32H,52H,52H,32H,62H DB 51H,31H,31H,21H,11H,91H,23H,31H,21H,1CH,12H,24H,32H,62H,51H,31H,34H,0B4H,72H,61H,51H,63H,71H,64H DB 0B2H,54H,72H,62H,71H,61H,54H,61H,51H,31H,21H,34H,73H,61H,54H,22H,32H,52H,22H,36H,52H,62H,61H,31H,32H,21H,11H,21H,11H,91H,81H DB 94H,52H,62H,52H,42H,32H,22H,32H,52H,0B4H,74H,64H,52H,61H,51H,41H,5CH,02H,52H,0B4H,74H,63H,51H,61H,51H,31H,21H DB 00 ;-------------------------------------------------------------------- ;第九首<<十年>> ;-------------------------------------------------------------------- TABLE90: DB 02H,11H,21H,32H,32H,22H,32H,21H,11H,0A1H,91H,92H,0D1H,91H,83H,91H,0A2H,91H,81H,94H,11H,0A1H,91H,0A1H,98H,03H,81H,0A1H,0A1H,91H,0A1H DB 98H,04H,02H,11H,21H,32H,32H,22H,32H,21H,31H,51H,11H,13H,31H,22H,22H,21H,11H,0A1H,11H,13H,11H,11H,0A1H,91H,0A1H DB 11H,93H,94H,03H,81H,11H,0A1H,91H,81H,92H,0A1H,91H,94H,08H,03H,81H,32H,21H,11H,22H,31H,21H,21H,83H DB 01H,11H,91H,0A1H,11H,61H,51H,11H,34H,01H,31H,21H,31H,48H,23H,31H,32H,42H,38H,03H,11H,21H,52H,31H DB 33H,31H,31H,41H,51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H,0A1H,91H DB 0A1H,31H,31H,22H,0A1H,11H,14H,01H,11H,21H,31H,63H,31H,42H,51H,31H,31H,22H,11H,21H,52H,31H,33H,31H,31H,41H DB 51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11H,0A1H,11H,91H,92H,91H,11H,0A1H,91H DB 0A2H,41H,31H,22H,31H,21H,12H,12H,11H,11H,21H,31H,63H,51H,32H,11H,21H,26H,11H,0A1H,18H DB 00 ;-------------------------------------------------------------------- ;第十首<<你的愛(ài)給了誰(shuí)>> ;-------------------------------------------------------------------- TABLE100: DB 02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0A1H,11H,0A1H DB 9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92H DB 02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1H DB 72H,62H,68H,02H,61H,51H,66H,62H,58H,0CH,02H,51H,41H,5FH DB 02H,91H,0A1H,16H,21H,11H,0A6H,81H,0A1H,9CH,02H,91H,0A1H,16H,21H,31H,24H,21H,0A1H,11H,0A1H DB 9CH,02H,11H,21H,36H,32H,24H,21H,0A1H,11H,0A1H,9CH,02H,91H,0A1H,14H,11H,11H,21H,11H,0A4H,04H,04H,02H,0A1H,11H,0A1H,93H,92H DB 02H,61H,71H,0B4H,0B2H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,61H,71H,0B6H,0B1H,0B1H,76H,0B1H,71H,6CH,02H,51H,61H,56H,61H,51H,54H,51H,0B1H,71H,0B1H DB 66H,62H,54H,0B2H,71H,61H,6CH DB 00 END
按鍵功能說(shuō)明: 1~A:十首歌曲 C:上一首歌曲 D:下一首歌曲 E:歌曲暫停 F:開(kāi)機(jī)畫(huà)面 程序調(diào)試中出現(xiàn)的問(wèn)題及解決的辦法: 1. 有時(shí)會(huì)出現(xiàn)程序一點(diǎn)錯(cuò)誤也沒(méi)有,但就是不能正常運(yùn)行的現(xiàn)象,最后我們發(fā)行是因?yàn)槌绦蛑杏械闹噶顣?shū)寫(xiě)得不規(guī)范導(dǎo)致的,例如有的RET返回指令一定要按正確格式書(shū)寫(xiě)或在兩行指令間最好不要留空行。 2. 程序中的跳轉(zhuǎn)指令的運(yùn)用很重要,為保險(xiǎn)起見(jiàn),都用LJMP,我們就遇到過(guò)跳轉(zhuǎn)指令用錯(cuò)程序無(wú)法正常運(yùn)行的現(xiàn)象。當(dāng)用JNZ指令時(shí),跳轉(zhuǎn)范圍比較少,這時(shí)要用一個(gè)標(biāo)號(hào)中轉(zhuǎn)。 3. 編程時(shí)要注意,在程序開(kāi)始時(shí),要寫(xiě)入各定時(shí)器中斷的入口地址。 4. 編程過(guò)程中要注意加注釋或分割線,否則,在程序過(guò)長(zhǎng)時(shí)容易變得很亂,不便于查找或更改。 5. 程序的結(jié)構(gòu)要設(shè)計(jì)的合理,避免上下亂調(diào)用的現(xiàn)象,這樣會(huì)使程序更加清晰化。 6. 編程前要加流程圖,這樣會(huì)使思路清晰,例如數(shù)字音樂(lè)盒的設(shè)計(jì)思路完全可以按著MP3的工作方式列寫(xiě)流程圖。 7. LCD計(jì)時(shí)正常顯示的解決辦法: a. 兩個(gè)定時(shí)器同時(shí)工作,存在中斷時(shí)序問(wèn)題,剛開(kāi)始時(shí)我們把定時(shí)器1設(shè)定在方式3,計(jì)250us,由于定時(shí)中斷過(guò)于頻繁,使CPU負(fù)載過(guò)大,導(dǎo)致音樂(lè)不能正常播放,時(shí)間不能正常顯示。解決辦法:將定時(shí)器1設(shè)定在工作方式1,16位計(jì)數(shù),計(jì)50ms,效果有很大改觀。但還有問(wèn)題。 b. 當(dāng)音樂(lè)為全4拍起始時(shí),此時(shí)音樂(lè)節(jié)奏與定時(shí)器T1中斷頻率錯(cuò)開(kāi),LCD顯示和音樂(lè)播放都會(huì)好一些。 c. 另外,在歌曲中,當(dāng)遇到一個(gè)音符發(fā)音為4拍,在編曲中為*CH,托因時(shí)間較長(zhǎng),當(dāng)定時(shí)器T1此時(shí)來(lái)中斷時(shí),就會(huì)對(duì)歌曲播放產(chǎn)生影響,若改為發(fā)音一拍,中斷對(duì)歌曲播放影響減弱,但音樂(lè)效果變差。 d. 改進(jìn)方案:若采用可以定時(shí)時(shí)間更長(zhǎng)的單片機(jī),可以避免所有問(wèn)題。 收獲,體會(huì)與建議: 1. 本學(xué)期學(xué)習(xí)單片機(jī)的時(shí)間只有8周時(shí)間,對(duì)單片機(jī)的硬件設(shè)計(jì),軟件設(shè)計(jì)掌握的深度不夠,但通過(guò)此次課程設(shè)計(jì),卻改變了很多,首先對(duì)于硬件電路的工作原理有了進(jìn)一步的學(xué)習(xí),同樣就有了進(jìn)一步的認(rèn)識(shí);其次軟件方面,在程序的設(shè)計(jì),程序的調(diào)試方面都學(xué)到了很多東西,這是第一次編寫(xiě)單片機(jī)的大程序,很有成就感。 2. 在一個(gè)好的氛圍里才能踏下心來(lái)做東西,在這幾天課設(shè)的時(shí)間里,實(shí)驗(yàn)室的氛圍對(duì)我們的影響很大,大家一起努力,這也是我們能完成課設(shè)的動(dòng)力。另外在編程中出現(xiàn)問(wèn)題時(shí),一定要戒驕戒躁,腳踏實(shí)地,認(rèn)真看書(shū),仔細(xì)分析,仔細(xì)調(diào)試,就一定會(huì)發(fā)現(xiàn)錯(cuò)誤,克服困難,我們也是這么做的,這在課設(shè)中十分重要。 3. 最后要提一點(diǎn)建議,希望下一次課程設(shè)計(jì)中,每個(gè)人都能有一塊實(shí)驗(yàn)開(kāi)發(fā)板,這樣能使每個(gè)人都能得到充分的鍛煉! |