关于数码管显示闪烁问题
CAN总线接收数据通过数码管显示出来,可是数码管显示闪烁。求大神解答。
下面是数码管显示程序:
void delay(unsigned char count) //delay
{
unsigned char i;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
void display18B20(unsigned char temp,unsigned char temp2)
{
unsigned char A1,A2;
//ser=temp/10; //分离出三位要显示的数字
SBUF=temp;
A1=temp/10;
A2=temp%10;
if(temp<10){low=20;} //设置温度显示下限
if(temp>35){high=28;} //设置温度显示上限
display[3]=A1;
display[2]=A2&0x7f;
display[1]=temp2;
display[0]=12;
P1=table[A1]; //显示百位
P2_0=1;//选通第一位数码管的阳极位选端,即给数码管的共阳极供电
P2_1=1;//选通第二位数码管的阳极位选端,即给数码管的共阳极供电
P2_2=1;//选通第一位数码管的阳极位选端,即给数码管的共阳极供电
P2_3=0;//选通第二位数码管的阳极位选端,即给数码管的共阳极供电
delay(1);
P1=table[A2]&0x7f; //显示十位 带小数点的
P2_0=1;//选通第一位数码管的阳极位选端,即给数码管的共阳极供电
P2_1=1;//选通第二位数码管的阳极位选端,即给数码管的共阳极供电
P2_2=0;//选通第三位数码管的阳极位选端,即给数码管的共阳极供电
P2_3=1;//选通第四位数码管的阳极位选端,即给数码管的共阳极供电
delay(1);
P1=table[temp2]; //显示十位 带小数点的
P2_0=1;
P2_1=0;
P2_2=1;
P2_3=1;
delay(1);
P1=table[12]; //c
P2_0=0;
P2_1=1;
P2_2=1;
P2_3=1;
delay(1);
}