多位數(shù)碼管動(dòng)態(tài)顯示中的虛影消除
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在學(xué)習(xí)動(dòng)態(tài)顯示時(shí),發(fā)現(xiàn)有一個(gè)問(wèn)題,數(shù)字是正常顯示了,但是好幾個(gè)數(shù)字上面,某些不應(yīng)該亮的地方,有一些微微亮,導(dǎo)致數(shù)字顯示不是很清楚,代碼如下(說(shuō)明:數(shù)碼管可以顯示8個(gè)數(shù)字,共陽(yáng),P3用于選擇亮哪一個(gè),P0用于輸出數(shù)字):
#include
#define uchar unsigned char
//隨手抄來(lái)的,雖然我只顯示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++)
{
//共陽(yáng),P3用于選擇亮哪一個(gè),P0用于輸出數(shù)字,不同開發(fā)板不一樣
P3 = 0xFF & (~( 1 << (i%8) ));//選擇使用哪一個(gè)數(shù)碼管
P0 = table[i];//數(shù)碼管代碼
}
}
}
后來(lái)仔細(xì)看了代碼,才發(fā)現(xiàn)書上有延時(shí)的代碼,也就是設(shè)置完成后,延時(shí)1到2毫秒,本來(lái)以為沒什么用,沒想到 一加上,效果立桿見影啊,修改后如下:
#include
#define uchar unsigned char
void delay1ms()
{
uchar j;
for(j=110;j>0;j--)
;
}
//隨手抄來(lái)的,雖然我只顯示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++)
{
//共陽(yáng),P3用于選擇亮哪一個(gè),P0用于輸出數(shù)字,不同開發(fā)板不一樣
P3 = 0xFF & (~( 1 << (i%8) ));//選擇使用哪一個(gè)數(shù)碼管
P0 = table[i];//數(shù)碼管代碼
/************加上延時(shí)后,數(shù)碼管馬上變清晰了**************/
delay1ms();
delay1ms();//試了下,2毫秒效果比較好
}
}
}