用这个keil程序运行protues里的双位数码管简易秒表计时器为什么灯会一直闪烁

#include<reg51.h>
#define uchar unsigned char
uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6f};
void delay1s();
void delay();
void xianshi (int display);
int time;
void main()
{
while(1)
{
xianshi(time);
delay1s();
if(time==61) time=0;
}
}
void delay1s()
{
int i,j;
for (i=0;i<1000;i++)
for (j=0;j<120;j++);
time++;
}
void xianshi (int display)
{
P2=0xFE;
P0=table[display/10];
P2=0xFD;
P0=table[display%10];
delay();
}
void delay()
{
unsigned int j;
for (j=0;j<250;j++);
}

img

img


左边灯在亮,但是一直在闪烁

void xianshi (int display)
{
P2=0xFE;
P0=table[display/10];
P2=0xFD;
P0=table[display%10];
delay();
}

显示第一位的时候,你没有停留,直接刷新第二位了。正常情况下,应该先给个延迟一下,然后先全黑后再切换段码和位码

void xianshi (int display)
{
P2=0xFE;
P0=table[display/10];
delay();
P0 = 0;
P2=0xFD;
P0=table[display%10];
delay();
}