多位數(shù)碼管動態(tài)顯示中的虛影消除
在學習動態(tài)顯示時,發(fā)現(xiàn)有一個問題,數(shù)字是正常顯示了,但是好幾個數(shù)字上面,某些不應該亮的地方,有一些微微亮,導致數(shù)字顯示不是很清楚,代碼如下(說明:數(shù)碼管可以顯示8個數(shù)字,共陽,P3用于選擇亮哪一個,P0用于輸出數(shù)字):
#include
#define uchar unsigned char
//隨手抄來的,雖然我只顯示0-7
uchar code table[] = {
0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E
};
uchar i;
void main()
{
P3 = 0xFF;
P0 = 0xFF;
while(1)
{
for(i=0;i<8;i++)
{
//共陽,P3用于選擇亮哪一個,P0用于輸出數(shù)字,不同開發(fā)板不一樣
P3 = 0xFF & (~( 1 << (i%8) ));//選擇使用哪一個數(shù)碼管
P0 = table[i];//數(shù)碼管代碼
}
}
}
后來仔細看了代碼,才發(fā)現(xiàn)書上有延時的代碼,也就是設置完成后,延時1到2毫秒,本來以為沒什么用,沒想到 一加上,效果立桿見影啊,修改后如下:
#include
#define uchar unsigned char
void delay1ms()
{
uchar j;
for(j=110;j>0;j--)
;
}
//隨手抄來的,雖然我只顯示0-7
uchar code table[] = {
0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E
};
uchar i;
void main()
{
P3 = 0xFF;
P0 = 0xFF;
while(1)
{
for(i=0;i<8;i++)
{
//共陽,P3用于選擇亮哪一個,P0用于輸出數(shù)字,不同開發(fā)板不一樣
P3 = 0xFF & (~( 1 << (i%8) ));//選擇使用哪一個數(shù)碼管
P0 = table[i];//數(shù)碼管代碼
/************加上延時后,數(shù)碼管馬上變清晰了**************/
delay1ms();
delay1ms();//試了下,2毫秒效果比較好
}
}
}