#include<reg51.h>
#include<math.h>
#define GPIO_DIG P1
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit K1= P0^0;
unsigned char code DIG_CODE[17]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char DisplayData[8];
void DigDisplay();
void Delay10ms(unsigned int c);
void main(void)
{
unsigned int x,y;
unsigned char i,j;
j=0;
while(1)
{
if(K1==0)
{
Delay10ms(1);
if(K1==0)
{
y++;
for(j=8;j>0;j--)
{
x=y/pow(10,j-1);
DisplayData[j]=DIG_CODE[x];
y=y%pow(10,j-1);
}
DigDisplay();
while((i<50)&&(K1==0))
{
Delay10ms(1);
i++;
}
i=0;
}
}
}
}
void DigDisplay()
{
unsigned char i;
unsigned int j;
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;
}
GPIO_DIG=DisplayData[i];
j=10;
while(j--);
GPIO_DIG=0x00;
}
}
void Delay10ms(unsigned int c)
{
unsigned char a, b;
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
|