注意:
在以扫描的方式显示多位数码管时,在切换到下一位数码管的显示之前,要做清屏操作,即让数码管熄灭。否则刚刚被被显示的图样会在下一位数码管上被短暂显示。导致显示不正常。
以下面的代码为例,在切换位之间的P1=0x00实现清屏操作。
void Display()
{
P1=dispbitcode[dispbuf[3]];
dis1=0;
dis2=1;
dis3=1;
dis4=1;
Delay(10);
// P1=0x00;
P1=dispbitcode[dispbuf[2]];
P17=1;
dis1=1;
dis2=0;
dis3=1;
dis4=1;
Delay(10);
// P1=0x00;
P1=dispbitcode[dispbuf[1]];
dis1=1;
dis2=1;
dis3=0;
dis4=1;
Delay(10);
// P1=0x00;
P1=dispbitcode[dispbuf[0]];
dis1=1;
dis2=1;
dis3=1;
dis4=0;
Delay(10);
// P1=0x00;
}
假使P1=0x00被注释,则在proteus中的仿真现象如图所示。
但如果消除注释加上清屏操作后,仿真结果便恢复正常。