#include<reg52.h>
#include<intrins.h>
#define SEGLED P0
sbit LSA = P2^2;
sbit LSB = P2^3;
sbit LSC = P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
u8 code SEG_Content[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u8 SEG_Buff[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
void Delay1ms();
void Scan_SEG();
void DP_Number(u32 dat);
void main()
{
u32 sec = 99999900;
while(1)
{
DP_Number(sec);
sec++;
Scan_SEG();
if(sec>99999999)
sec = 0;
}
}
void Scan_SEG()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0; break;
case(1):
LSA=1;LSB=0;LSC=0; break;
case(2):
LSA=0;LSB=1;LSC=0; break;
case(3):
LSA=1;LSB=1;LSC=0; break;
case(4):
LSA=0;LSB=0;LSC=1; break;
case(5):
LSA=1;LSB=0;LSC=1; break;
case(6):
LSA=0;LSB=1;LSC=1; break;
case(7):
LSA=1;LSB=1;LSC=1; break;
}
SEGLED = SEG_Buff[i];
Delay1ms();
SEGLED = 0x00;
}
}
void Delay1ms()
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
void DP_Number(u32 dat)
{
int i;
u8 buf[8];
for(i=0;i<8;i++)
{
buf[i] = dat % 10;
dat /= 10;
}
for(i=7;i>0;i--)
{
if(buf[i] == 0)
SEG_Buff[i] = 0x00;
else
break;
}
for(;i>=0;i--)
{
SEG_Buff[i] = SEG_Content[buf[i]];
}
}