/*数码管动态显示*/
#include<reg51.h>
unsigned char code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //定义共阴极段码表0~9
void delay(int TimeMS);
void display();
void main()
{
P0 = 0x00; //P0口清零
P2 = 0xff; //4个数码管均不亮
while(1)
{
display();
delay(20); //字符显示20ms
}
}
/*延时函数*/
void delay(int TimeMS)
{
int i;
unsigned char j;
for(i = 0;i < TimeMS;i++)
for(j = 0;j < 161;j++);
}
/*显示子程序*/
void display()
{
unsigned char i,Slc;
Slc = 0xef; //选第一个数码管
for(i = 0;i < 4;i ++)
{
P0 = Table[i+1]; //选择第一个数码管
P2 = Slc; //选通数码管
delay(5);
Slc = Slc << 1; //移位选通下一个数码管
P2 = 0xff; //消影
}
return;
}