/这是定时器方式写的,0~9999每秒加1
#include
unsigned char g,s,b,q,;
unsigned char code duan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9共阳
void display();
void time()
{for(n=0;n<500;n++);}
init()
{
g=s=b=q=0;
TMOD=0X01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
EA=1;
TR0=1;
ET0=1;
}
void main()
{
init();
while(1)
{display();}
}
void time0() interrupt 1
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
t++;
if(t==20){t=0;g++;}
if(g==10){g=0;s++;}
if(s==10){s=0;b++;}
if(b==10){b=0;q++;}
}
void display()
{
/*个位*/
P3=1;
P0=duan[g];
duan=0;
time();
/*十位*/
P3=2;
P0=ld[s];
time();
/*百位*/
P3=4;
P0=duan[b];
time();
/*千位*/
P3=8;
P0=duan[q];
time();
}
最后,提醒你,共阳数码管,纯51单片机驱动几乎亮不起来,你需要加上位驱动。
如果是共阴的,会不够亮,但能亮。
你会用定时器就会写这程序了,好好学吧,大家都很忙