找回密码
 立即注册

QQ登录

只需一步,快速开始

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

一个定时器实现3个两位数码管倒数计时

[复制链接]
跳转到指定楼层
楼主
ID:97948 发表于 2016-7-8 14:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>
#define uchar unsigned char
uchar code Table[]=  {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  
uchar num3,num4,ge1,shi1,num1,num2,ge,shi,num5,num6,ge2,shi2;
void delay()
{
     uchar i,j;
    for(i=40;i>0;i--)
    for(j=110;j>0;j--);
    }
void T0_time() interrupt 1
{
    TH0=(65535-45872)/256;
    TL0=(65535-45872)%256;

    num1++;
        num3++;   
        num5++;

if(num1==20)
    {
    num1=0;
    num2--;
   
    if(num2==0)
      num2=45;     
   
    }   
     
if(num3==20)
    {
    num3=0;
    num4--;
    if(num4==0)
      num4=65;     
        
    }
if(num5==20)
    {
    num5=0;
    num6--;
    if(num6==0)
      num6=76;     
        
    }        
}
void display(uchar ge,uchar shi )
    {
         shi=num2/10;
         ge=num2%10;
        P2=0xfd;   

        P0=Table[ge];   delay();
        P2=0xfe;
        P0=Table[shi];  delay();
         }


void display1(uchar ge1,uchar shi1)
        {
        shi1=num4/10;
         ge1=num4%10;

        P2=0xf7;   
        P0=Table[ge1];   delay();
        P2=0xfb;
        P0=Table[shi1];  delay();   
        }

void display2(uchar ge2,uchar shi2)
        {
        shi2=num6/10;
        ge2=num6%10;

        P2=0xdf;   
        P0=Table[ge2];   delay();
        P2=0xef;
        P0=Table[shi2];  delay();
      }

void main()
{
    TMOD=0x01;
    TH0=(65535-45872)/256;
    TL0=(65535-45872)%256;
    EA=1;
    ET0=1;
    TR0=1;
    num1=0;num2=45;
     num3=0;    num4=65;
    num5=0;num6=76;

    while(1)
    {
     display(ge,shi);   
    display1(ge1,shi1);
     display2(ge2,shi2);
   
  }
  }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:36359 发表于 2016-7-15 22:26 | 只看该作者
老大呀 原理图怎么没有啊?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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