标题: 数码管15秒倒计时程序 [打印本页]

作者: ztflove51    时间: 2016-12-24 08:26
标题: 数码管15秒倒计时程序
#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;
   }
  }

作者: 一路上    时间: 2016-12-27 20:19
厉害啦




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1