51單片機控制數位管時,出現以下問題:
1、不用的位隐約顯示資料
2、不用的段隐約有亮度
3、本位顯示上一位資料
經驗證,增加以下注釋處代碼可明顯改進
void display(uchar g, uchar s)
{
P1 = 0xff;//送位選資料前關閉所有顯示,防止打開位選鎖存時原來段資料通過位選鎖存器造成混亂
wela = 1;
P1 = 0xfe;
wela = 0;
P1 = 0x00;//送段選資料前關閉數位管各段,防止打開段選鎖存時原來位資料通過段選鎖存器
dula = 1;
P1 = table[s];
dula = 0;
delay1(11);
P1 = 0x00;//在下一位顯示前給段選鎖存器存入0x00,防止下一位數位
dula = 1;//管打開段選時上一位段資料給下一位造成影響
dula = 0;//同上
P1 = 0xff;
wela = 1;
P1 = 0xfd;
wela = 0;
P1 = 0x00;
dula = 1;
P1 = table[g];
dula = 0;
delay1(11);
P1 = 0x00;//在下一位顯示前給段選鎖存器存入0x00,防止下一位數位
dula = 1;//管打開段選時上一位段資料給下一位造成影響
dula = 0;//同上
}