找回密码
 立即注册

QQ登录

只需一步,快速开始

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

数码管15秒倒计时程序

[复制链接]
跳转到指定楼层
楼主
ID:73463 发表于 2016-12-24 08:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
    sbit ADDR0=P1^0;
    sbit ADDR1=P1^1;
    sbit ADDR2=P1^2;
    sbit ADDR3=P1^3;
    sbit ENLED=P1^4;
    unsigned char LedChar[]={
    0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
    0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
    };
    unsigned char LedBuff[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};   
    unsigned char flag1s=0;
    unsigned int  cnt=0;
    unsigned char i=0;
    void main()
{        unsigned long sec=0xF;
          ADDR3=1;
    ENLED=0;
          EA=1;
       ET0=1;
    TMOD=0x01;
    TH0=0xFC;
    TL0=0x67;
    TR0=1;
    while(1)
   {      if(flag1s==1)
    {  flag1s=0;
          if(sec>0)
       {sec--;
    }
    else
    {sec=0x00;
    }
    LedBuff[0]=LedChar[sec%10];
    LedBuff[1]=LedChar[sec/10%10];
    LedBuff[2]=LedChar[sec/100%10];
    LedBuff[3]=LedChar[sec/1000%10];
    LedBuff[4]=LedChar[sec/10000%10];
    LedBuff[5]=LedChar[sec/100000%10];
       }
}
  }
         void InterruptTimer0() interrupt 1
  {   TH0=0xFC;
      TL0=0x67;
   cnt++;   
   if(cnt>=1000)
   { cnt=0;
     flag1s=1;
   }
   P0=0xFF; //消隐//
   switch (i)
   {case 0:ADDR2=0;ADDR1=0;ADDR0=0;i++;P0=LedBuff[0];break;
    case 1:ADDR2=0;ADDR1=0;ADDR0=1;i++;P0=LedBuff[1];break;
    case 2:ADDR2=0;ADDR1=1;ADDR0=0;i++;P0=LedBuff[2];break;
    case 3:ADDR2=0;ADDR1=1;ADDR0=1;i++;P0=LedBuff[3];break;
    case 4:ADDR2=1;ADDR1=0;ADDR0=0;i++;P0=LedBuff[4];break;
    case 5:ADDR2=1;ADDR1=0;ADDR0=1;i=0;P0=LedBuff[5];break;
    default:break;
   }
  }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:157873 发表于 2016-12-27 20:19 | 只看该作者
厉害啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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