#include <at89x51.h>
sbit led1 =P2^4;
sbit led2 =P2^5;
sbit led3 =P2^6;
sbit led4 =P2^7;
int a=0;
unsigned char now_bit=0;
unsigned char code LEDData1[ ] = { //5641共阴
0xfc,//0:1111 1100
0x60,//1:0110 0000
0xda,//2:1101 1010
0xf2,//3:1111 0010
0x66,//4:0110 0110
0xb6,//5:1011 0110
0xbe,//6:1011 1110
0xe0,//7:1110 0000
0xfe,//8:1111 1110
0xf6//9:1111 0110
};
unsigned char code COM_BIT[]={
0xef,
0xdf,
0xbf,
0x7f
};
unsigned char display_bit[4]=0;
void Delay(int num)//延时函数
{
while(num--) ;
}
void display()
{
P2=P2|0xf0; //先关闭段选
P0=LEDData1[display_bit[now_bit]]; //再打开位选
P2=P2&COM_BIT[now_bit]; //最后打开段选,顺序不能错!!!
now_bit++;
if(now_bit>3)
now_bit=0;
}
/******************************************************************************/
void delay_1s()
{
int i=0;
for(i=0;i<10000;i++)
display();
}
/******************************************************************************/
void main(void)
{
while(1)
{
delay_1s();
display_bit[0]=a/1000;
display_bit[1]=a/100%10;
display_bit[2]=a/10%10;
display_bit[3]=a%10;
a++;
if(a>9999)
a=0;
}
}