打印
[51单片机]

浅谈动态扫描数码管“消抖”、“消影”问题

[复制链接]
5324|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
streetkid|  楼主 | 2013-8-29 18:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近工作的需要,又涉及到了数码管的动态扫描问题。在此把其中需要注意的地方记录一下,总结一下,也和爱好电子朋友们分享一下,由其是当代的大学生们,及那些刚刚踏入这一领域的新手们。虽然简单,但也值的注意。以下所述为无锁存,三极管驱动的共阳四位一体的数码管。
问题1:动态扫描时,有抖动。
对这个问题,相信很多人会说,有抖动那就说明你扫描的太慢了呗,增加扫描的频率不就可以了吗?那此时,请问一下自己,扫描的频率是多少才合适呢?在网上看到一些“大牛”谈到不能低于每秒24次的频率,对于4位数码管来说,也就是10.4ms/位。按照这个频率我试了一下,发现显示有抖动,没办法,可能是程序上有些臃肿吧(有高手的话,还请指点下),只好再往高调些。想到以前那种大头显示器的,显示频率为65Hz以上,对于4位数码管来说,可以折算成3.4ms/位。当然人家显示器比数码管复杂多了,这个拿这儿来肯定是嫌快了,10.4ms/位的咱做不到,5ms/位的咱还做不到吗?经过试验5ms/位的显示效果还是相当不错的,不管是从数码管的亮度还是抖动方面来说,都是没问题的。而5ms的中断对大多数程序来说也是有足够空间的,一般也不会出现什么中断冲突的情况。
问题2:动态扫描时,不显示的段有暗红。
对于这个问题,很多人会说,你扫描的太快了呗,不知道有余辉啊,不知道人有眼睛有视觉暂留效应啊?其实不然,这里关键的一点在于“消影”,这一点对于大学生来说,可能会很陌生,因为教科书上根本不会提,大部分资料上也不写,只是在程序中有这样的代码。所谓的“消影”,其实就是要你在显示下一位前,把上一位关断。因为单片机的IO口,在高低电平转换时,是需要时间的。而我们要做的,就是避开这一边沿时间。
说完技术上的,也写点自己的感想。其实对于大多数的学生来说,大家都做过数码管的动态扫描程序。大家可能是因为,当时实验环境中有寄存器,也可能是对自己没有太高的要求,出结果就行,因而忽略了很多的细节问题。像在扫描频率的这个问题,大家在学校时,可能都会选择1ms的中断来进行扫描,因为大部分书上都是用的这个扫描的频率。但当时的环境是,你程序单—,不会出什么问题。而在实际应用当中,不会是只有一个数码管的动态扫描程序的,你会有很多的其它函数,会有不只一个的中断。这时,你的问题就会来了。所以说,除了特殊情况外,定时器中断时,初值越小越好,中断服务程序越短越好,这样就不太会影响到其它程序的执行,定时误差也会减小。而像在“消影”这方面的问题上,很多学生们就更加的不注意了。因为没有实践过的老师他不讲,教科书上也没有,资料上也很少提。要看资料的话最好看那种,工程师编写的,像郭天祥,周立功等。最后希望大学生们,能多看不同的书,多做实验不要小视任何的细节问题。而且对程序对硬件来说,也没有小问题,因为这些小问题都是不定时的炸*。

相关帖子

沙发
ayb_ice| | 2013-8-29 19:18 | 只看该作者
最好用定时器中断处理扫描

更新显示前关闭显示器,数据送好后再开显示就可以了

使用特权

评论回复
板凳
opal11| | 2013-8-29 22:18 | 只看该作者
顶一下。

使用特权

评论回复
地板
streetkid|  楼主 | 2013-8-30 07:42 | 只看该作者
ayb_ice 发表于 2013-8-29 19:18
最好用定时器中断处理扫描

更新显示前关闭显示器,数据送好后再开显示就可以了 ...

同意二楼,这样不容易被其它程序影响!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

228

帖子

2

粉丝