数码管程序

来源:互联网 发布:单片机比stc好 编辑:程序博客网 时间:2024/05/22 05:25

 #include<reg52.h>
#include<intrins.h>
#define uchar unsigned char;
#define uint unsigned int;
sbit dula=P3^5;
sbit wela=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar temp,t0,t1,bai,shi,ge,flag,flag1,aa,bb,cc;
uint shu;
void delay(int z)
{
  int x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);
 }

void init();

void display(uchar aa,uchar bb,uchar cc,uchar bai,uchar shi,uchar ge)
{
 dula=1;
 P0=table[aa];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfe;
 wela=0;
 delay(1);

 dula=1;
 P0=table[bb];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfe;
 wela=0;
 delay(1);

 dula=1;
 P0=table[cc];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfe;
 wela=0;
 delay(1);

 dula=1;
 P0=table[bai];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfe;
 wela=0;
 delay(1);

 dula=1;
 P0=table[shi];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfe;
 wela=0;
 delay(1);

 dula=1;
 P0=table[ge];
 dula=0;
 P0=0xff;
 wela=1;
 P0=0xfe;
 wela=0;
 delay(1);
}

 


void init()

{
 shu=432;
 temp=0xfe;
 P1=temp;
 TMOD=0x11;
 TH0=(65535-5000)/256;
 TH0=(65535-5000)%256;
 TH1=(65535-5000)/256;
 TH1=(65535-5000)%256;
 EA=1;
 ET0=1;
 ET1=1;
 TR0=1;
 TR1=1;
}

void main()
{
 init();
 
 
 while(1)
  {
   if(flag1!=1)
    display(7,6,5,bai,shi,ge);
   else
    display(16,17,18,19,20);
  }

}


void timer0() interrupt 1
{
  TH0=(65535-5000)/256;
  TH0=(65535-5000)%256;
  t0++;
  if(flag!=1)
   {
    if(t0==10)
    {
     t0=1;
     temp=_crol_(temp,1);
     P1=temp;

     }
   }

  else
  {
   if(t0%4==0)
    P1=~P1;
   if(t0==60)
   {
    TR0=0;
    P1=0xff;
    flag1=1;

   }
   
  }
}

void timer1() interrupt 3
{
  
 TH1=(65535-5000)/256;
 TH1=(65535-5000)%256;
 t1++;
 if(t1==2)
  {
  t1=0;
  shu--;
  bai=shu/100;
  shi=shu%100/10;
  ge=shu%100%10;
  if(shu==398)
   {
    TR0=0;
     TH0=(65535-5000)/256; 
          TL0=(65535-5000)%256;
     TR0=1;
     flag=1;
     t0=0;
     P1=0xff;
     TR1=0;
    
   }
  }
}