接上回,说到静态显示,段码的复用问题,就是同一个数码管,尽管位码是分开的,但是段码的针脚是一个,所以同时输出数据时,就会造成数据无法正常显示,因为一根线上既有高电位,又有低电位, 只有低电位会留下来,但这样就不再是原来所要展示的数据了,为了让两个数码管显示各自的信息,只有让一个显示的时候,把另一个关掉。
就是让针脚1和2不同时的电。我们改一下程序,看看效果。
我只是对之前的代码做了较为简单的更改,让奇数显示到了 个数码管,偶数显示到了第二个数码管,这样就可以做到分别点亮两个数码管了。
这是开机时的状态,所有端口都是高电位。数码管无显示。
当我按下按键,此时k=0,可以计算出0跟2的余数是0,所以就把1置零关闭,2置一打开,数据送过来之后,因为只有2是高电位,于是就只有2显示。就有了偶数显示到第二个数码管。
当再次按下按键,k=1,然后1对2取余,余数是1,所以就把2置零关掉了,1置一打开,然后送出的数据就显示到了数码管1中,就有了奇数显示到 个数码中。
可以测试其他数据,多次按下按键,可以看到此时显示的是d,d在16进制中是13,13对2取余是1,所以是奇数,就显示到了数码管1中。两个数码管就可以分开显示了,互不干扰。
但是却又有一个问题,怎么才能让两个数码管同时显示呢?
这个说来也是不难,之前我写过一篇文章,说的是在制作流水灯的时候,如果流水灯闪烁的频率过高,就会导致看不到流水效果,好像所有的灯是一直亮的,在说到按键开关的检测时,为了说明扫描的方法,我通过一些LED灯的组合,说到了LED矩阵,在LED矩阵中,如果要显示不同排的LED,例如对角的LED,就需要较短的刷新时间,先让一个显示,然后再让另一个显示,利用人眼的暂留效应,就看到了好似两个LED同时点亮的效果。虽然程序中是分步输出,但是对于人眼来说,却是同时亮起的。人眼的最短识别时间是0.4秒,但是要想做到完全的无法看到闪烁,就需要我们的刷新时间达到更短,目前认为Hz就很好了,也就是说10ms之内,人眼是看不出闪烁的。于是,我们就可以这么来操作。
让数码管1显示2ms,然后迅速切换到数码管2,让数码管2再显示2ms。如此往复。
这个显示过程,我们可以理解为不断的刷新数码管1和数码管2,当1断开,由于人眼还在暂留影像,此时数码管2点亮,就好似1、2是同时点亮的。
或者我们可以把两个数码管比作两个灯。我们频繁地进行切换,就好似灯是同时点亮的,这个让不同的数码管同时点亮的操作,我们称之为动态显示。有了动态显示,就可以完成更多的更加绚丽的显示效果了。
转载请注明地址:http://www.abmjc.com/zcmbhl/1575.html