数码管delay函数为什么是200us?
时间不合理会造成数码管闪烁或亮度低的问题。应多动手实验。
时间长了,单个数码管的显示时间增加,会造成闪烁,时间短了,单个数码管的显示时间短了,会降低亮度。另外应该和数码管的数量也有关系,具体情况,具体调整就好了
人眼残影问题
数码管动态显示刷新频率要大于50HZ,也就是20ms,如果分摊到8个数码管,每个数码管只能显示2.5ms,但还是能感觉微闪烁,根据经验每个数码管显示1ms为宜,也就是刷新周期小于10ms,速度过快亮度下降明显甚至有鬼影。为了保证显示效果,程序中不宜使用大于1ms的软件延时,否则按键消抖等操作都会影响数码管显示效果,我习惯放在中断里处理。示例:
void T0_time() interrupt 1
{
TL0 = 0x18; //设置定时初值1ms
TH0 = 0xFC; //设置定时初值1ms
cnt++;
if(cnt>=6)
cnt=0;
switch(cnt)
{
case 0:
du=0;
P0=table[b_qian]; //显示第6位
du=1;
du=0;
we=0;
P0=0x7e;
we=1;
we=0;
break;
case 1:
du=0;
P0=table[s_qian]; //显示第5位
du=1;
du=0;
we=0;
P0=0x7d;
we=1;
we=0;
break;
case 2:
du=0;
P0=table[qian]; //显示第4位
du=1;
du=0;
we=0;
P0=0x7b;
we=1;
we=0;
break;
case 3:
du=0;
P0=table[bai]; //显示第3位
du=1;
du=0;
we=0;
P0=0x77;
we=1;
we=0;
break;
case 4:
du=0;
P0=table[shi]; //显示第2位
du=1;
du=0;
we=0;
P0=0xef;
we=1;
we=0;
break;
case 5:
du=0;
P0=table[ge]; //显示第1位
du=1;
du=0;
we=0;
P0=0xdf;
we=1;
we=0;
break;
}
}
没有经验这么一说,多调试看看
嗯嗯,受教了,确实应该多实践,一定改正
好的,答案简单明了,这么久才回复十分抱歉
嗯嗯,谢谢回复
哈哈,看到这么详细的解释令我高兴。谢谢解答,也抱歉搁置这么久才回复
好的,一定改正