蜂鳴器驅(qū)動實驗
一. 實驗?zāi)康?br>利用單片機(jī)的P1 口作IO 口,使用戶學(xué)會蜂鳴器的使用。
二. 實驗設(shè)備及器件
IBM PC 機(jī) 一臺
DP-51PROC 單片機(jī)綜合仿真實驗儀 一臺
頻率計 一臺
三. 實驗內(nèi)容
1. 編寫一段程序,用P1.3 口控制(輸出3K 到4K 頻率的方波),使B5 區(qū)的蜂鳴器發(fā)出嘹亮的響聲。
2. 按照例程輸入一段程序,用P1.3 口控制,使B5 區(qū)的蜂鳴器發(fā)出“生日快樂”的音樂。
圖3.3 蜂鳴器原理圖
四. 實驗步驟
1. 使用導(dǎo)線把A2 區(qū)的P13 與B5 區(qū)的 BUZZ 接線柱相連。
2. 先編寫一個延時程序(120~200us)。
3. 再編寫一個循環(huán)程序,改變P1.3 腳的電平,然后延時。這樣,這個循環(huán)就使P1.3
口輸出一個頻率為2.5KHz-4KHz 的方波。在DP-51PROC 單片機(jī)綜合仿真實驗
儀上運行該程序時,B5 區(qū)的蜂鳴器將發(fā)出嘹亮的響聲
4. 按以下例程輸入,然后運行,蜂鳴器發(fā)出“生日快樂”的音樂。
五. 實驗參考程序
ORG 8000H
JMP MAIN
ORG 800BH
JMP INTT0
ORG 8100H
MAIN:
MOV SP,#60H
MOV TMOD,#01H ;初始化定時器及器中斷
SETB ET0 ;開定時器0 中斷
SETB EA
SETB TR0 ;啟動定時器0
START0:
SETB P1.3
MOV 30H,#00H
NEXT:
MOV A,30H
MOV DPTR,#TABLE ;從TABLE 中讀取數(shù)據(jù)――聲響時間
MOVC A,@A+DPTR
MOV R2,A
JZ ENDD
ANL A,#0FH
MOV R5,A
MOV A,R2
SWAP A
ANL A,#0FH
JNZ SING
CLR TR0
JMP D1
SING:
DEC A
MOV 22H,A
RL A
MOV DPTR,#TABLE1 ;從TALBE1 中讀取數(shù)據(jù)――聲調(diào)
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
D1:
CALL DELAY ;聲音延時
INC 30H
JMP NEXT
ENDD:
CLR TR0
JMP START0
INTT0: ;定時器0 中斷服務(wù)程序
PUSH PSW
PUSH ACC
MOV TL0,20H
MOV TH0,21H
CPL P1.3
POP ACC
POP PSW
RETI
DELAY: ;R5的值就是聲響持續(xù)時間
MOV R7,#02
DELAY0:
MOV R4,#187
DELAY1:
MOV R3,#248
DJNZ R3,$
DJNZ R4,DELAY1
DJNZ R7,DELAY0
DJNZ R5,DELAY
RET
TABLE:
DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H
DB 82H,01H,81H,94H,84H,0B4H,0A4H,04H
DB 82H,01H,81H,94H,84H,0C4H,0B4H,04H
DB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94H
DB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04H,00H
TABLE1:
DW 64260,64400,64524,64580,64684,64777,64820,64898
DW 64968,65030,65058,65110,65157,65178,65217;
END
六. 實驗思考題
(1) 請用戶思考一下,如何通過程序來編寫出音樂。
評論
查看更多