找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1765|回复: 4
打印 上一主题 下一主题
收起左侧

单片机时分秒的暂停和加

[复制链接]
跳转到指定楼层
楼主
ID:477243 发表于 2019-2-16 20:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit S1=P2^2;
sbit S2=P2^3;
sbit S3=P2^4;
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c};
void delayms(uint);
uchar num,num1,num2,num3,shi,ge,shi1,ge1,shi2,ge2;                  
void delayms(uint xms)
{
        uint i,j;
                for(i=xms;i>0;i--)
                   for(j=110;j>0;j--);
}

void display(uchar num1s,uchar num2s,uchar num3s )
{           shi2=num3s/10;
           ge2=num3s%10;
           shi1=num2s/10;
           ge1=num2s%10;
           shi=num1s/10;
           ge=num1s%10;

      S1=0;                  
          S2=0;
          S3=0;
          P0=table[ge];
          delayms(2);
          P0=0;
           
          S1=1;
          S2=0;
          S3=0;
          P0=table[shi];
          delayms(2);
          P0=0;

          S1=0;
          S2=1;
          S3=0;
          P0=0x40;
          delayms(2);
          P0=0;

          S1=1;
          S2=1;
          S3=0;
          P0=table[ge1];
          delayms(2);
          P0=0;

      S1=0;
          S2=0;
          S3=1;
          P0=table[shi1];
          delayms(2);
          P0=0;

          S1=1;
          S2=0;
          S3=1;
          P0=0x40;
          delayms(2);
          P0=0;

          S1=0;
          S2=1;
          S3=1;
          P0=table[ge2];
          delayms(2);
          P0=0;

          S1=1;
          S2=1;
          S3=1;
          P0=table[shi2];
          delayms(2);
          P0=0;
}
void init()
{
  TMOD=0x11;
        TH0=(65536-45872)/256;
        TL0=(65536-45872)/256;
        TH1=(65536-45872)/256;
        TH1=(65536-45872)/256;
    EA=1;
        ET0=1;
        TR0=1;
}
void keyscan()
{
      if(key1==0)
          {
          delayms(2);
          if(key1==0)
          {
          num1++;
          if(num1==60)
          {
          num1=0;
          }
          while(!key1);
          }
          }
          if(key2==0)
          {
          delayms(2);
          if(key2==0)
          {
          num2++;
          if(num2==60)
          {
          num2=0;
          }
          while(!key2);
          }
          }
          if(key3==0)
          {
          delayms(2);
          if(key3==0)
          {
          num3++;
          if(num3==24)
          {
          num3=0;
          }
          while(!key3);
          }
          }        
          if(key4==0)
          {
           delayms(2);
           if(key4==0)
           {
           while(!key4);
           TR0=~TR0;
           }
           }
          }
void main()
{
           init();
        while(1)
        {
           
                 keyscan();
            display(num1,num2,num3);
        }
}
void T0_time()interrupt 1
{
    TH0=(65536-45872)/256;
        TL0=(65536-45872)/256;
        num++;
        if(num==20)
        {
           num=0;
           num1++;
           if(num1==60)
           {
              num1=0;
                  num2++;
                  if(num2==60)
                  {
                     num2=0;
                         num3++;
                         if(num3==24)
                         {
                         num3=0;        
                 }
           }
           }
           }
         
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:303383 发表于 2019-2-17 09:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

板凳
ID:164602 发表于 2019-2-17 14:55 | 只看该作者
应该不是有问题,而是成功的一个例子。呵呵
K1——秒加,K2——分加,K3——时加,K4——暂停和启动
不过嘛,我倒是有点问题:
1、不暂停也是可以加的,暂停有什么用呢?
2、按键消抖——我一直按着,就没显示啦——需要容错
3、定时器中断中的语句太多,定时不太准——这个有点“吹毛求疵”
回复

使用道具 举报

地板
ID:158375 发表于 2019-2-18 09:14 | 只看该作者
起码,楼主还不知道软件的结构。
回复

使用道具 举报

5#
ID:474677 发表于 2019-2-18 11:43 | 只看该作者
HC6800-ES-V2.0 发表于 2019-2-17 14:55
应该不是有问题,而是成功的一个例子。呵呵
K1——秒加,K2——分加,K3——时加,K4——暂停和启动
不过 ...

我觉得他这个应该是准备做定时器应用的,而不是做时钟用,否则秒加是没有多大意义的,K4暂停启动是为停止和启动定时器而准备,这段代码还属于初级功能验证阶段
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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