設(shè)計要求:
1:上電后二位數(shù)碼管顯示88
2:單擊按鈕,倒計時開始從20秒開始,到0時喇叭發(fā)聲。
3:雙擊按鈕開關(guān):倒計時從0開始正常記時,到20秒后發(fā)聲。
4:記數(shù)結(jié)束從開始狀態(tài)重新開始下一輪.
基本器件和管腳:
1)數(shù)碼管:
2)74譯碼器 SN 74LS47
將BCD 碼轉(zhuǎn)換成數(shù)碼管顯示的數(shù).
程序代碼: 本次晶振12MHZ
SW EQU P1.0; 按鈕開關(guān)指定為P1.0位
BUZZER EQU P3.7; 喇叭指定為P3.7位
ORG 00H; 程序起始地址00H開始
START:
CLR BUZZER ;清零喇叭位為低電平(關(guān)閉喇叭)
MOV P0,#88H ; 給2個74譯碼器都發(fā)送88,,88為BCD碼
NOP
NOP
JB SW,$ ;判斷按鈕是否按下,當SW==1時,程序一直跳到$這里T原地不動,當按鍵按下時,SW==0則進入下面
NOP
NOP
NOP ; 稍微延時
JNB SW,$ ; 判斷按鍵是否松開
MOV R3,#10 ; 在一秒內(nèi)判斷是否雙擊
D1:
MOV R4,#200
D2:
MOV R5,#250
DJNZ R5,$
JNB SW,TIMER ; 如果按鍵按下,則進入另外一直記時狀態(tài)
DJNZ R4,D2
DJNZ R3,D1
MOV R1,#21 ; 倒計時初始值21
COUNTDOWN:
DEC R1 ; R1自減1
MOV A,R1 ; R1復值給累加器A
MOV B,#10 ; 寄存器B賦值10
DIV AB ; 累加器A除以寄存器B,商存A,余存B
SWAP A ; A的高低4位互換 ,目的用于譯碼器顯示,有2個譯碼器,所以要區(qū)分R1中的高位和低位
ORL A,B ; A=A+B做或操作
MOV P0,A ; 輸出到譯碼器從而顯示到數(shù)碼管
CALL DELAY ; 延時1秒
CJNE A,#00H,COUNTDOWN ;如果累加器A不等于00H則跳轉(zhuǎn)到COUNTDOWN,即一直倒計時直到A減到0
SETB BUZZER ; 計數(shù)到0喇叭發(fā)聲
CALL DELAY
JMP START ;跳到開始處從頭開始
TIMER:
MOV A,#00H
LOOP:
MOV P0,A ;數(shù)碼管顯示數(shù)A
CALL DELAY
ADD A,#1 ;累加器加1操作
DA A ; 十進制調(diào)整
CJNE A,#21H,LOOP; 判斷是否計時到21
SETB BUZZER
CALL DELAY
JMP START
DELAY: 延時1秒子程序
MOV R3,#10
D3:
MOV R4,#200
D4:
MOV R5,#250
DJNZ R5,$
DJNZ R4,D4
DJNZ R3,D3
RET ; 子程序結(jié)束標志
END
-
接口電路
+關(guān)注
關(guān)注
8文章
468瀏覽量
57462 -
51單片機
+關(guān)注
關(guān)注
277文章
5707瀏覽量
126067 -
數(shù)碼管
+關(guān)注
關(guān)注
32文章
1888瀏覽量
92105
原文標題:51單片機倒計時發(fā)聲器
文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
51單片機的倒計時器程序
51單片機如何實現(xiàn)數(shù)碼管99秒倒計時
基于51單片機的倒計時溫度檢測報警器 精選資料分享
51小制作帶倒計時鬧鐘
使用單片機設(shè)計10秒倒計時的炸彈程序免費下載

使用51單片機設(shè)計一個99分鐘倒計時數(shù)碼管顯示的程序免費下載

使用51單片機進行循環(huán)倒計時的程序免費下載

使用51單片機設(shè)計LED點陣9到0倒計時的程序免費下載

使用51單片機設(shè)計的70秒倒計時C語言程序免費下載

使用51單片機設(shè)計99到00倒計時的秒表電路圖和程序免費下載

單片機課設(shè)-60秒倒計時器

19-基于51單片機的倒計時系統(tǒng)

評論