数码管动态显示程序,本就应该用for循环语句写,那些一位一位地显示的程序,太不规范啦,程序显得很长,很乱的。
如下的仿真图,是8位数码管,就得用for循环语句写,程序很简单,很简洁。
程序如下
#include<reg52.h>
#include<intrins.h>
unsigned char code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0x77,0x7c,0x39,0x5e,0x79,0x71};//共阴数码管段码表
unsigned char buffer[]={1,2,3,4,5,6,7,8};
void delay()
{
unsigned int j;
for(j=400;j>0;j--);
}
void display()
{
unsigned char i,ledbit=0xfe;
for(i=0;i<8;i++)
{
P2=ledbit; //先输出位码
P0=ledtab[buffer[i]];//后输出段码
ledbit=_crol_(ledbit,1);
delay();
}
}
void main()
{
while(1)
{
display();
}
}