LED数字显示电子时钟源程序代码
程序:(注 已完全经过调试,达到预期目的)
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar count=0;
sbit LED=P1^0;
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  //显示数码管0,1,3,4,5,6,7,8,9
uchar miao=0,fen=0,hour=0;
void delay(uint i)    //延迟函数
{
  uint j;
  for(;i>0;i--)
  for(j=124;j>0;j--);
}
void init()
{
  ET0=1;   
  TMOD=0x51;  //选定定时器0,1和中断0,1
  TH0=(65536-25000)/256;     
  TL0=(65536-25000)%256;  //设定时器0时间为250ms一次
  ET1=1;       
  TH1=0xff;
  TL1=0xff;    //定时器1为中断
 
  EX0=1;
  IT0=1;  //中断0
  EX1=1;
  IT1=1;  //中断1
  TR0=1;  //定时器0
  TR1=1;  //定时器1
  EA=1;  //总中断开
}
void display()  //时钟显示函数
{
    P0=tab[hour/10%10];
    P2=0xfe;
    delay(1);
    P0=tab[hour%10];
    P2=0xfd;
    delay(1);
    P0=tab[fen/10%10];
    P2=0xfb;
    delay(1);
    P0=tab[fen%10];
    P2=0xf7;
    delay(1);
    P0=tab[miao/10%10];
    P2=0xef;
    delay(1);
    P0=tab[miao%10];
    P2=0xdf;
    delay(1);
}
   
void main()  //主函数
{
    init();
    LED=0;
    while(1)
    {
      display();
    }         
}
void T0_int() interrupt 1  //定时器0函数
{
  TH0=(65536-25000)/256;
  TL0=(65536-25000)%256;
  count++;
  if(count==20)
  {
      count=0;
      miao= miao +1;
      LED=~LED;
      if(sec==60)
      {
        miao=0;
        fen= fen +1;
        if(fen ==60)
        {
            fen =0;html特效代码天气时钟
            hour=hour+1;
            if(hour==24)
            hour=0;
          }
      }
    }
}
void T1_int() interrupt 3  //定时器1函数控制秒针加1
{
  TH1=0xff;
  TL1=0xff;
  miao=miao+1;
  if(miao ==60)
  miao =0;
}
void I1_int() interrupt 2  //中断1函数控制按键分针加1
{
  EX0=0;
  fen= fen +1;
  if(fen ==60)
  fen =0;
  EX0=1;
}
void I0_int() interrupt 0  //中断函数0控制按键时针加1
  EX1=0;
  hour=hour+1;
  if(hour==24)
  hour=0;
  EX1=1;
}                   

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。