#include
unsigned char code LedChar[] = { //数码管显示数
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
unsigned char LedBuff[7] = { //数码管显示缓冲区
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,0xFF
};
unsigned char code Table[] = {
0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF
};
void DisPlay(unsigned long num);
void delay1ms(unsigned char n);
void LedScan();
void main()
{
DisPlay(53467); //数码管显示0 高位为0不显示
LedScan();
}
void DisPlay(unsigned long num)
{
signed char i;
unsigned char buf[6];
for (i=0; i<6; i++) //把长整型数转换为6位十进制的数组
{
buf = num % 10;
num = num / 10;
}
for (i=5; i>=1; i--) //从最高位起,遇到0转换为空格,遇到非0则退出循环
{
if (buf == 0)
LedBuff = 0xFF;
else
break;
}
for ( ; i>=0; i--) //剩余低位都如实转换为数码管显示字符
{
LedBuff = LedChar[buf];
}
}
void LedScan()
{
unsigned char i;
P0 = 0xFF;
for (i=0; i<6; i++)
{
P2 = Table;
P0 = LedBuff;
delay1ms(1);
}
}
void delay1ms(unsigned char n)
{
static unsigned char i;
while(n--)
for(i=0;i<125;i++);
?
|