AT89C51单片机60.00到00.00倒计时程序 4位数码管显示 C语...

如题所述

  AT89C51单片机60.00到00.00倒计时程序 4位数码管显示 C语...
  ncludereg52.h>
  #define uchar unsigned char
  #define uint unsigned int
  uchar num,t;
  sbit dula=P2^6; //段选跟位选
  sbit wela=P2^7;
  uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴数码管
  void display(uchar b,uchar a);
  void delay1ms();
  void main()
  {
  TMOD=0x01; //初始化
  TH0=(65536-50000)/256; //计时50ms中断
  TL0=(65535-50000)%256;
  EA=1; //打开中断
  ET0=1;
  TR0=1;
  num=60; //初始显示的值
  display(6,0); //显示60
  while(1)
  {
  if(t==20) //每1s减1
  {
  t=0;
  num--;
  b=num/10;
  a=num%10;
  if(num==0)
  num=60;
  }
  display(b,a); //显示
  }
  }
  void timer0()interrupt 1
  {
  TH0=(65536-50000)/256;
  TL0=(65535-50000)%256;
  t++;
  }
  void delay1ms() //1ms延时
  {
  uint x,y;
  for(x=0;x10;x++)
  for(y=0;y50;y++);
  }
  void display(uchar b,uchar a) //动态显示部分
  {
  dula=1;
  P0=table[b];
  dula=0;
  wela=1;
  P0=0xfe;
  wela=0;
  P0=0xff;
  delay1ms();

  dula=1;
  P0=table[a];
  dula=0;
  wela=1;
  P0=0xfd;
  wela=0;
  P0=0xff;
  delay1ms();
  }

  程序比较简单,主要的地方都有注释,我原来回答的是60秒,小数点自己解决吧,简单!

  祝你好运!!!
  参考资料:......一帆风顺年年好 万事如意步步高 吉星高照
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-27
AT89C51单片机60.00到00.00倒计时程序 4位数码管显示 C语...
黄莺鸣翠柳 紫燕剪春风 莺歌燕舞 一年四季春常在 万紫千红永开花 喜迎新春