#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar num,temp;
uint disnum,disnum2,disnum3,disnum5,disnum4,i;
sbit dula=P2^6;
sbit wela=P2^7;
sbit KEY1=P3^4;
sbit KEY2=P3^5;
uchar code table_du[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90};
display1(uint);
display2(uint);
display3(uint);
display4(uint);
display5(uint);
display6(uint);
delay(uchar);
void scan();
void light();
display(uint);
displayy(uint disnum);
void main()
{
scan();
}
void light()
{disnum2=disnum;
//disnum3=disnum;
disnum4=disnum;
disnum5=disnum;
EA=1;
ET0=1;
TMOD=0X01;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0=1;
while(1)
{
if(num==20)
{
num=0;
if(disnum==3)
{
break;}
disnum--;
}
display1(disnum);
}
while(1)
{
if(num==20)
{
num=0;
if(disnum==0)
{disnum=disnum2;
break;}
disnum--;
}
display3(disnum);
}
while(1)
{
if(num==20)
{
num=0;
if(disnum==3)
{
break;}
disnum--;
}
display5(disnum);
}
while(1)
{
if(num==20)
{
num=0;
if(disnum==0)
{disnum=disnum3;
break;}
disnum--;
}
display3(disnum);
}
while(1)
{
if(num==20)
{
num=0;
if(disnum==3)
{
break;}
disnum--;
}
display2(disnum);
}
while(1)
{
if(num==20)
{
num=0;
if(disnum==0)
{disnum=disnum3;
break;}
disnum--;
}
display4(disnum);
}
while(1)
{
if(num==20)
{
num=0;
if(disnum==3)
{
break;}
disnum--;
}
display6(disnum);
}
while(1)
{
if(num==20)
{
num=0;
if(disnum==0)
{disnum=disnum5;
break;}
disnum--;
}
display4(disnum);
}
}
void time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
display1(uint disnum)//01000001
{ uint dis;
P1=0x41;
dis=disnum-3;
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis/10];
dula=1;
dula=0;
wela=0;
P0=0x10;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis%10];
dula=1;
dula=0;
wela=0;
P0=0x20;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x01;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x02;
wela=1;
wela=0;
delay(10);
}
display2(uint disnum)//00010100
{ uint dis;
dis=disnum-3;
P1=0x14;
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x10;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x20;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis/10];
dula=1;
dula=0;
wela=0;
P0=0x01;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis%10];
dula=1;
dula=0;
wela=0;
P0=0x02;
wela=1;
wela=0;
delay(10);
}
display3(uint disnum)//01000010
{
P1=0x42;
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x10;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x20;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x01;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x02;
wela=1;
wela=0;
delay(10);
}
display4(uint disnum)//00100100
{
P1=0x24;
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x10;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x20;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x01;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x02;
wela=1;
wela=0;
delay(10);
}
display5(uint disnum)//01001000
{ uint dis;
P1=0x48;
dis=disnum-3;
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis/10];
dula=1;
dula=0;
wela=0;
P0=0x10;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis%10];
dula=1;
dula=0;
wela=0;
P0=0x20;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x01;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x02;
wela=1;
wela=0;
delay(10);
}
display6(uint disnum)//10000100
{ uint dis;
P1=0x84;
dis=disnum-3;
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum/10];
dula=1;
dula=0;
wela=0;
P0=0x10;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[disnum%10];
dula=1;
dula=0;
wela=0;
P0=0x20;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis/10];
dula=1;
dula=0;
wela=0;
P0=0x01;
wela=1;
wela=0;
delay(10);
P0=0X00;
delay(10);
wela=1;
delay(10);
wela=0;
dula=0;
P0=table_du[dis%10];
dula=1;
dula=0;
wela=0;
P0=0x02;
wela=1;
wela=0;
delay(10);
}
display(uint disnum)
{
P0=table_du[disnum/10];
dula=1;
dula=0;
P0=0x01;
wela=1;
wela=0;
delay(1000);
P0=table_du[disnum%10];
dula=1;
dula=0;
P0=0x02;
wela=1;
wela=0;
delay(1000);
}
displayy(uint disnum3)
{ P0=table_du[disnum3/10];
dula=1;
dula=0;
P0=0x10;
wela=1;
wela=0;
delay(1000);
P0=table_du[disnum3%10];
dula=1;
dula=0;
P0=0x20;
wela=1;
wela=0;
delay(1000);}
delay(uchar x)
{
uchar a,b;
for(a=x;a>0;a--)
for(b=200;b>0;b--);
}
void scan()
{
while(1)
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(50);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: delay(50);disnum++;delay(200);{display(disnum);delay(2000);
break;
case 0xd0: while(1){ light();};
break;
case 0xb0: delay(50);disnum3++;delay(200);{displayy(disnum3);delay(2000);
break;
}
}
}
}
}
}}