|
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P2^3;
uint aa=0;
uchar code num[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void display(uint);
void main()
{
EA=1;
EX0=1;
IT0=1;
aa=0;
while(1)
{
display(aa);
if(aa>65535) aa=0;
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void exter0() interrupt 0
{
aa++;
d1=0;
delay(5);
d1=1;
}
void display(uint aa) //数码管动态扫描程序
{
uchar b,c,d,e,f;
b=aa/10000;
c=aa%10000/1000;
d=aa%1000/100;
e=aa%100/10;
f=aa%10;
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=num[0];
dula=0;
delay(2); //第一个数码管
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=num[b];
dula=0;
delay(2); //第二个数码管
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=num[c];
dula=0;
delay(2); //第三个数码管
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=num[d];
dula=0;
delay(2); //第四个数码管
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=num[e];
dula=0;
delay(2); //第五个数码管
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=num[f];
dula=0;
delay(2); //第六个数码管
}