微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 数码管显示时钟已写好,求大神加个独立按键控制启动暂停

数码管显示时钟已写好,求大神加个独立按键控制启动暂停

时间:10-02 整理:3721RD 点击:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned long int
uint num;
uchar cunt;        //全局变量
uchar tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//高电平有效
uchar code tab2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//低电平有效
void display(uint num);
void delay();
void init()           //中断
        {                                                                  
                TMOD=0x01;
                TH0=(65535-50000)/256;
                TL0=(65535-50000)%256;
                EA=1;          //开总中断
                ET0=1;          //开定时器
                TR0=1;          //启动定时器,计数
                cunt=0;          //中断初始化
                num=0;          //计数初始化
                        }
void main()
        {
                init();           //函数初始化
                while(1)
                {
                        if(cunt==20)
                        {
                                cunt=0;
                                num++;
                        }
                        if(num>86400)           //计时24小时清零
                                num=0;
                        display(num);      //时分秒显示
                }
        }                               
void timer()  interrupt 1           //中断
{
        TH0=(65535-50000)/256;
        TL0=(65535-50000)%256;
        cunt++;
}
void display(uint num)          
        {
                uchar hou1,hou2,min1,min2,sec1,sec2;
                sec1=num%10;
                sec2=num%60/10;
                min1=num%600/60%10;
                min2=num%3600/600%10;
                hou1=num/3600%10;
                hou2=num/36000;
                P0=tab1[sec1]; //段选
                P2=tab2[7];           //位选
                delay();
                P2=0xff;
                P0=tab1[sec2];
                P2=tab2[6];       
                delay();
                P2=0xff;
                P0=tab1[min1];
                P2=tab2[4];
                delay();
                P2=0xff;
                P0=tab1[min2];
                P2=tab2[3];
                delay();
                P2=0xff;
                P0=tab1[hou1];
                P2=tab2[1];
                delay();
                P2=0xff;
                P0=tab1[hou2];
                P2=tab2[0];
                delay();
                P2=0xff;
}
void delay()
        {
                uchar i,j;
                for(i=100;i>0;i--)                 //延时1MS
                        for(j=10;j>0;j--);
        }

viod qz()
{
   if(按键==0)
     {
          if(按键==0)
                 {
                   延时5毫秒;
               while(等待按键释放);
                  flg=1;   //标志位 在中断函数中也放个flg=1;但flg=1时中断启动
                              //相反弄个按键 但fig=0时  停止中断就行了
      }
}

自己加啊,学到知识是自己的!

按下去以后 设置一个变量 然后开关定时器

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top