找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3672|回复: 2
收起左侧

基于51单片机倒计时闹钟设计(定时器、外部中断和外部电路)

[复制链接]
ID:808536 发表于 2020-10-15 23:57 | 显示全部楼层 |阅读模式
倒计时闹钟。(主要定时器、外部中断和外部电路)

有源蜂鸣器鸣响,4位数码管倒计时显示剩余时间。
可以直接使用shumaguan_c电路图
        要求:
1.     每2分钟蜂鸣8秒。(包含长时间定时和蜂鸣器鸣响控制)
                                 2.开机后数码管显示0200 (分钟 秒数),并开始倒计时每秒递减,
                                时间到达00 08时,鸣响8秒,直到显示0000时,鸣响停止。
由外部中断0实现按键,控制倒计时过程的暂停或继续。
                              由外部中断1实现按键,可以在鸣响期间停止鸣响,不影响计时。
3.     上述过程反复执行

一、描述和设计要求
1.1  描述
1、每2分钟蜂鸣8秒。(包含长时间定时和蜂鸣器鸣响控制)
2、开机后数码管显示02 00 (分钟 秒数),并开始倒计时每秒递减,
时间到达00 08时,鸣响8秒,直到显示00 00时,鸣响停止。
3、由外部中断0实现按键,控制倒计时过程的暂停或继续。
由外部中断1实现按键,可以在鸣响期间停止鸣响,不影响计时。
4、上述过程反复执行。
1.2  技术指标
(1)   所使用的CPU引脚,中断类型等参数;
  
数码管的段码引脚
  
数码管的位码引脚
定时器0
P0^0
P2^4
P3^4
P0^1
P2^5
定时器1
P0^2
P2^6
P3^5
P0^3
P2^7
蜂鸣器控制引脚
P0^4
外部中断0
P3^7
P0^5
P3^2


P0^6
外部中断1


P0^7
P3^3



(2)   定时器时钟周期是50毫秒,定时的周期是2分钟;
(3)其他涉及的参数
采用的是四位共阳数码管;蜂鸣器是由三极管作为开关控制。
二、实现方案和可行性分析
2.1  实现思路和可行性分析
(1) 实现思路:
第一步:显示数码管函数
voiddisplay_time(unsigned char fen,unsigned char miao)
{ unsigned char i;
  unsigned char f[4];
  f[0]=fen/10;
  f[1]=fen%10;
  f[2]=miao/10;
  f[3]=miao%10;
  for(i=0;i<4;i++)
  {
        P2=wei;
        P0=~duanma[f];
        delay_ms(1);                             
  }
}
第二步:采用定时器0倒计时
void Timer0()interrupt1
{
  TL0 = 0xB0;      
  TH0 = 0x3C;
  time++;           
  if(time>20)   
  {
   time=0;         
   miao--;
  }
        if(miao<0)   
  {
   miao=59;         
   fen--;
  }
        if(fen==0&&miao==0&&time==19)      
  {
        time=0;
        miao=0;
        fen=2;
  }
}

第三步:采用外部中断0和1
void key()   interrupt 0
{ if(key0==0)
  {delay_ms(1);
     if(key0==0)
        {     
        TR0 =!TR0;
        }
  }     
}
void key_()   interrupt 2
{
        if(key1==0)
  {delay_ms(1);
     if(key1==0)
        {     
              TR0 =1;
              n=1;
        }
  }
} (2) 可行性分析:
1、数码管显示模块:
采用的是四位共阳数码管,其数码管的段码引脚接到单片机的P0^0~P0^7;数码管的位码则是由单片机P2^4~P2^7引脚输出控制四个三极管的基极,当三极管的基极为低电平时,三极管导通从而控制数码管位码。
2、外部中断按键控制模块
采用按键按下使外部中断0/1的引脚P3^3/P3^4接地,从而使单片机执行外部中断里面的程序,即由外部中断0实现按键,控制倒计时过程的暂停或继续,
由外部中断1实现按键,可以在鸣响期间停止鸣响,不影响计时。
3、蜂鸣器模块
蜂鸣器模块是采用单片机的P3^7引脚控制三极管的基极,当三极管的基极为低电平时,三极管导通从而控制蜂鸣器的鸣叫。
2.2  流程图
file:///C:/Users/LSC/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
三、电路描述和程序实现
3.1  电路连接图
file:///C:/Users/LSC/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
3.2  程序代码
void main()
{
    Timer0Init();
    EX0_Init();
    n=1;     
    while(1)
    {
    display_time(fen,miao);
                if(key1==1)
     {
if(fen==0&&miao<9)  
                {         
                n=!n;
                delay_ms(1);
                }
      }
    }
}
四、运行结果
(1) 涉及的数值结果, 以图表的形式给出
  
初始状态
  
中间状态
关键状态
最终状态
time=0
time=0
time=0
time=0
miao=0
miao=0
miao=8
miao=0
fen=2
fen=1
fen=0
fen=0

(2) 实验板运行状态的照片, 主要涉及LED和数码管等显示环节的显示内容的变化。
开机数码管的初始状态               时间到达00 08时,鸣响8秒
file:///C:/Users/LSC/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg     file:///C:/Users/LSC/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
时间到达00 00时,鸣响停止    到计时结束后,自动回到初始状态

基于51单片机倒计时闹钟

基于51单片机倒计时闹钟

倒计时闹钟,可暂停,启动

倒计时闹钟,可暂停,启动

代码.7z

9.7 KB, 下载次数: 57, 下载积分: 黑币 -5

回复

使用道具 举报

ID:945550 发表于 2021-6-28 15:38 | 显示全部楼层
?不是倒计时么?
为什么代码是万年历的?
回复

使用道具 举报

ID:236933 发表于 2023-5-30 18:16 | 显示全部楼层
只有代码,没有仿真,验证性不足
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表