單片機(jī)驅(qū)動蜂鳴器原理與設(shè)計
ORG 0000H
AJMP START ;跳轉(zhuǎn)到初始化程序
ORG 0033H
START:
MOV SP,#60H ;SP初始化
MOV P3,#0FFH ;端口初始化
MAIN: ACALL SOUND ;蜂鳴器發(fā)聲
ACALL YS500M ;延時
AJMP MAIN
SOUND:
MOV P1,#11011011B ;點(diǎn)亮2個警示黃色發(fā)光二極管
MOV R2,#200 ;響200個周期
SND1: CLR P3.7 ;輸出低電平T1導(dǎo)通,蜂鳴器響
ACALL YS1ms ;延時
SETB P3.7 ;輸出高電平T1截止,蜂鳴器不響
ACALL YS1ms ;延時
DJNZ R2,SND1
MOV P1,#0FFH ;熄滅黃色警示燈
RET
YS1ms: ;1ms延時子程序
MOV R0,#2
YL1: MOV R1,#250 ;改變R0的數(shù)值可改變聲音頻率
DJNZ R1,$
DJNZ R0,YL1
RET
YS500M: ;500ms延時子程序
MOV R0,#6
YL2: MOV R1,#200
YL3: MOV R2,#250
DJNZ R2,$
DJNZ R1,YL3
DJNZ R0,YL2
RET
END
3、“叮咚”電子門鈴實(shí)驗程序:常見的家用電子門鈴在有客人來訪時候,如果按壓門鈴按鈕時,室內(nèi)會發(fā)出“叮咚”聲音,本實(shí)驗程序模擬電子門鈴的發(fā)音,當(dāng)我們按壓實(shí)驗板上的K1按鈕時候,蜂鳴器發(fā)出“叮咚”音樂聲,是一個比較實(shí)用的程序。
“叮咚”電子門鈴實(shí)驗ASM源程序: “叮咚”電子門鈴C語言源程序:
ORG 0000H
LJMP START ;跳轉(zhuǎn)到初始化程序
ORG 000BH
LJMP PGT0 ;跳轉(zhuǎn)到T0中斷服務(wù)程序
START:
OBUF1 EQU 30H ;初始化程序
OBUF2 EQU 31H
OBUF3 EQU 32H
OBUF4 EQU 33H
FLAGB BIT 00H
STOPB BIT 01H
K1 BIT P3.2 ;定義按鈕K1,作為門鈴按鈕
MOV TMOD,#02H ;定時器初始化
MOV TH0,#06H
MOV TL0,#06H
SETB ET0 ;啟動定時器T0
SETB EA ;啟動總中斷
MAIN: ;主程序
JB K1,MAIN ;檢測K1按鈕
LCALL YS10M ;延時去抖動
JB K1,MAIN
SETB TR0 ;按鈕有效
MOV P1,#00H ;點(diǎn)亮按鈕指示燈
MOV OBUF1,#00H
MOV OBUF2,#00H
MOV OBUF3,#00H
MOV OBUF4,#00H
CLR FLAGB
CLR STOPB
JNB STOPB,$
MOV P1,#0FFH
LJMP MAIN ;發(fā)出“叮咚”完畢,返回重新檢測按鈕
YS10M: ;10ms延時子程序
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
PGT0: ;定時器T0中斷服務(wù)程序
INC OBUF3 ;中斷服務(wù)程序中發(fā)出一聲“叮咚”響聲
MOV A,OBUF3
CJNE A,#100,NEXT
MOV OBUF3,#00H
INC OBUF4
MOV A,OBUF4
CJNE A,#20,NEXT
MOV OBUF4,#00H
JB FLAGB,PGSTP
CPL FLAGB
AJMP NEXT
PGSTP:
SETB STOPB
CLR TR0
LJMP INT0RET
NEXT: JB FLAGB,SOU2
INC OBUF2
MOV A,OBUF2
CJNE A,#03H,INT0RET
MOV OBUF2,#00H
CPL P3.7
LJMP INT0RET
SOU2: INC OBUF1
MOV A,OBUF1
CJNE A,#04H,INT0RET
MOV OBUF1,#00H
CPL P3.7
LJMP INT0RET
INT0RET:
RETI
評論