1、 多位数码管显示 1位的数码管显示只要控制段码就可以显示出想要的图案,属于静态显示; 多位的数码管一位段码控制端是共用的,每一位有一个公共端,这时候要想显示多位的图案,就必须使用动态刷新的原理,利用人眼视觉暂留的原理,让多位同时显示。其实同一时刻只有其中的一位上在通电导通,其他位是不通电的,但是因为人眼看到的东西不会立马消失,有一小段时间是停留在视觉当中的,所以我们如果能适当的控制每一位从熄灭到再次点亮的时间,这样我们眼睛就能够看清所有位的团了。 2、 多位数码管显示的控制方式 多位数码管的每一位显示必须有两个控制:一个是控制显示图案的段码,另一个就是它 的位码。让多位轮流显示,如果轮流显示的时间间隔不太长的话,这样我们就能看到多位数码管显示的内容了。 显示次序: 以四位数码管同时显示为例 图10.1 图10.1所示的只是个基本的编程思路,但是实际上会有个缺点就是每一位的显示会特别的暗,因为程序指令的时间太快了,而数码管中的LED还没来得及达到最亮的状态就更改了,所以在眼中残留的亮度是特别弱的。鉴于此,我们需要在每一位数码管段码位码设置完以后,延时一小段时间,让LED能够达到其最亮的状态后再执行改变,程序设计如图10.2所示: 图10.2 每一位的位码后要跟一个短延时,以保证亮起的数码管能充分点亮在视觉中形成暂留影像。这时看似挺完美的了,但是还会出现如下图(图10.3)所示的情况: 图10.3 图10.3显示的情况是程序在段码2的时刻,位码却还是位码1,等到下个指令才会变为位码2,虽然一条指令的时间挺短的,但是硬件执行的速度却快于指令的执行时间,导致位1的位置上会有位2显示的内容,造成通常所说的“鬼影”。为了避免次现象发生,我们初步的想法应该就是在执行段码之前先将所有的位码“清除”,清除的意思就是对于高电平驱动位码来说就是让所有的位码都为低电平,低电平驱动位码的让所有的位码都为高电平,这样下一位的段码虽然执行了,但是因为位码一个都没驱动,位1上就不会出现位2的内容了。程序设计流程如图10.4所示: 图10.4 分析到这,感觉已经挺完美的了吧,理论上是完美的,但是还需要考虑实际的情况,那就是清除位码后硬件上它也是需要时间来反应的,因为所有的硬件构造难免都会有等效电容的存在,因为存在电容,电容的特性就是两端电压不能突变,需要听过至少3-5个时间常数后才能达到更改后的状态。因此还需要完善一下图10.4所示的流程,如图10.5所示: 图10.5 图10.5所示的程序设计流程是经过实践验证过可用的设计,不会出现如图10.4所示那样,清除了位码,但是还是有“鬼影”存在的现象了。有兴趣的可以按照图10.1-5那样试验一下,试验的时候设计成让数码管隔一个亮一个的方法,避免“鬼影”不明显的现象。
|