實(shí)驗(yàn)報(bào)告 課程設(shè)計(jì)名稱:數(shù)字音樂(lè)盒 課程設(shè)計(jì)單位:自動(dòng)化031班 課設(shè)小組成員:杜斐斐 王薄 單片機(jī)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告 課程設(shè)計(jì)題目:數(shù)字音樂(lè)盒 課程設(shè)計(jì)要求:1.利用I/O口產(chǎn)生一定頻率的方波,驅(qū)動(dòng)蜂鳴器,發(fā)出不同的音調(diào),從而演奏樂(lè)曲(最少三首樂(lè)曲,每首不少于30秒) 2.采用LCD顯示信息 3.開機(jī)時(shí)有英文歡迎提示字符,播放時(shí)顯示歌曲序號(hào)(或名稱) 4.可通過(guò)功能鍵選擇樂(lè)曲,暫停,播放。 5.選作內(nèi)容:顯示樂(lè)曲播放時(shí)間或剩余時(shí)間 硬件電路:本設(shè)計(jì)中用到了98C51單片機(jī),4*4鍵盤,蜂鳴器,16*2 LCD,七段 顯示數(shù)碼管LED。(硬件電路原理圖附于后頁(yè)) 原理說(shuō)明:當(dāng)鍵盤有鍵按下時(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口控制蜂鳴器(J2,J4斷開,J3短接)。 (5) 電路為12MHZ晶振頻率工作,起振電路中C1,C2均為30pf。 軟件設(shè)計(jì):本程序可以實(shí)現(xiàn)課程設(shè)計(jì)的基本要求和附加功能,并可以通過(guò)按鍵播放七首歌曲。實(shí)驗(yàn)程序如下:
;****************************************** 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;寫數(shù)據(jù) CALL WRITE1
RET ;*********************************************寫指令 ENABLE: CLR RS CLR RW CLR E LCALL DELAY SETB E RET ;**********************************************寫數(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: DB 'WELCOM HERE',0FEH
TABLE2: DB 'DFF 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
|
|