锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

51单片机倒计时发声器

时间:2024-05-07 14:07:09

设计要求: 1:上电后二位显示88
2:单击按钮,倒计时开始从20秒开始,到0时喇叭发声。
3:双击按钮开关:倒计时从0开始正常记时,到20秒后发声。
4:记数结束从开始状态重新开始下一轮.


基本器件和管脚:

1)数码管:


2)74译码器 SN 74LS47



将BCD 码转换成数码管显示的数.

单片机及其电路:



程序代码: 本次晶振12MHZ

SW EQU P1.0; 按钮开关指定为P1.0位
BUZZER EQU P3.7; 喇叭指定为P3.7位
ORG 00H; 程序起始地址00H开始

ART:
CLR BUZZER ;清零喇叭位为低电平(关闭喇叭)
MOV P0,#88H ; 给2个74译码器都发送88,,88为BCD码
NOP
NOP
JB SW,$ ;判断按钮是否按下,当SW==1时,程序一直跳到$这里T原地不动,当按键按下时,SW==0则进入下面
NOP
NOP
NOP ; 稍微延时
JNB SW,$ ; 判断按键是否松开

MOV R3,#10 ; 在一秒内判断是否双击
D1:
MOV R4,#200
D2:
MOV R5,#250
DJNZ R5,$
JNB SW,MER ; 如果按键按下,则进入另外一直记时状态
DJNZ R4,D2
DJNZ R3,D1

MOV R1,#21 ; 倒计时初始值21

COUN:
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个译码器,所以要区分R1中的高位和低位
ORL A,B ; A=A+B做或操作
MOV P0,A ; 输出到译码器从而显示到数码管
CALL DELAY ; 延时1秒
CJNE A,#00H,COUNTDOWN ;如果累加器A不等于00H则跳转到COUNTDOWN,即一直倒计时直到A减到0
SETB BUZZER ; 计数到0喇叭发声
CALL DELAY
JMP START ;跳到开始处从头开始

TIMER:
MOV A,#00H
LOOP:
MOV P0,A ;数码管显示数A
CALL DELAY
ADD A,#1 ;累加器加1操作
DA A ; 十进制调整
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 ; 子程序结束标志

END


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章