目录
最初认识:
当用定时器定时刷新数码管时,为保证有一定的亮度,所以是不会使用延时函数。动态刷新数码管利用的是人的视觉暂留,人的视觉暂留是0.1-0.4s左右,而我在数码管动态定时刷新一般是设置成1ms或者是2ms刷新一次,由于我试过了5ms去刷新,结果效果非常不好。
分析:
为什么会存在“鬼影”?
我的解决启发来源于
6.5 单片机数码管显示消隐_seven-soft的博客-CSDN博客_数码管显示消隐
再结合这块蓝桥杯单片机的开发板来分析并解决:
先说鬼影的表现形式:
如果是先开段选后开位选,就会在显示的数字之前存在被显示数字的影子。
如果是先开位选后开段选,就会在显示的数字之后存在被显示数字的影子。
以先开段选信号再开位选信号为例:
你开了段选,再开位选,你段选的信号被送进来了,由于是动态刷新,位选信息还是上一根数码管的位选,而位选的某一个位从0变为1还是从1变为0,存在一个瞬态,段选信号来了,而位选信号还保留之前的状态(方便理解,可以认为是脉冲的上升沿或者是下降沿被滞后了,延迟了一段时间,在波形仿真中就可以看到),尽管时间短暂,但也是存在这短时间,而正是由于存在这极其短暂的时间使得存在“鬼影”(暗却存在),如果是白天你是看不到的,但是当你用手去遮着光就可以看到了,晚上就更加明显了,故称为“鬼影”。
同理,先开位选再开段选在被显示数字之后存在影子就明晰了,附上图片:
解决方法:
既然存在一个瞬态,那就屏蔽这个瞬态,(让这个瞬态对我不产生任何影响),在先开段选后开位选之前,让上一个位选信号对我没有影响(不选中任何数码管),所以就应该是先
位选不选择任何数码管(消除影子)->再段选->再位选
或者是
先段选不选中数码管的任何段->再位选->再段选