×
单片机 > 单片机程序设计 > 详情

如何实现数码管3位计数器

发布时间:2020-05-30 发布时间:
|
利用两个定时器 来实现 3位数码管 同时显示计时器, 即从0- 999范围的计时
 
#include
//共阴极数码管编码范围
unsigned char code table[10]={0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x7,0x7f,0xef };
unsigned char first=0;
unsigned char second=0;
unsigned char third=0;
unsigned int  number=0;
unsigned char t=0;
 
void Delay()
{
   unsigned char j;
   unsigned char i;
   for(i=10; i>0; i--)
     for(j=110; j>0; j--);
}
 
void main()
{
   TMOD=0x11; //设置两个定时器T0,T1的工作方式: 使用16位寄存器的方式1
   EA=1; //打开 全局中断
   ET0=1; // 打开定时器T0的中断
   ET1=1; 
   TR0=1; // 启动定时器T0
   TR1=1;
 
   TH0=(65536-50000)%256; 
   TL0=(65536-50000)%256; 
 
   TH1=(65536-50000)%256; 
   TL1=(65536-50000)%256; 
 
   while(1)
   {
       if(t==20)
       {
          t=0;
          number++;
          first=number/100;
          second=(number-first*100)/10;
          third=(number-first*100)%10;
       } 
   }
}
 
void TimerLED0() interrupt 1 using 1
{
   TH0=(65536-50000)%256; 
   TL0=(65536-50000)%256; 
   
   t++;
}
 
void TimerLED1() interrupt 3 using 2
{
    TH1=(65536-10000)%256; 
    TL1=(65536-10000)%256; 
 
P2=0xfe;
P0=table[first];
Delay();
 
P2=0xfd;
P0=table[second];
Delay();
 
P2=0xfb;
P0=table[third];
Delay();
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析