打印

此事难解——闪烁的消除

[复制链接]
1832|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
天雨粟|  楼主 | 2010-3-31 20:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
此事难解 ——闪烁的消除


用共阴极数码管进行动态显示的例程较多,但我认为实用价值不大,原因是共阴管需要从段上提供驱动能量,这使得我们很难找到合适的驱动块。不是有同向驱动器7407等类吗?事实上,用7407作段驱动是最为人诟病的,7407OC型驱动方式,需要某段点亮时,固然可以让7407的某一路OC,可需要该段灭时,却须使该路导通,则电源通过限流电阻、7407通入GND——即某段点亮时固然耗电,而该段灭更大量耗电,这对系统的使用寿命是很不利的,且不利于节能。

      补救之道是采用共阳极数码管,用9012提供驱动能量(位选择),用OC型驱动器作为段驱动,这样可以做到该亮的段消耗能量,该灭的段不耗能,显然这种驱动方式更为经济合理。
      为了探讨这一驱动方式的用法,我用了16只共阳数码管(其中4只作为符号位,实际上是13只。按许多书上的介绍,字位法动态显示最多只能驱动12只管,现用13只,看看为什么上限是12只?13只行不行呢?20只管以前试过,确认是不可行的)。

P0
P2口通过9012提供位驱动,P1口提供段信号。P0口未加上拉。板子采用万用线路板,用导线焊接而成。程序在Keil下调试通过后,烧入芯片上电试验,结果显示,P0口控制的6只管明显闪烁,P2口控制的6只管无闪烁现象,符号位也无闪烁现象。分析试验结果,一、程序无问题,二、12只并不是绝对的上限,13只也是可以的。


P0
口对应管明显闪烁是何原因呢?从程序上看,对P0P2的编程是毫无二致的,不应是程序问题!难道越过了12这个上限,好像也不对,如属越限,则16只管应同样闪烁?可见越限不是问题!

      是否P0口无上拉的问题呢?理论上无须上拉。由于驱动的是9012,要求低有效,高及高阻态均无效,所以无须上拉电阻。但加上上拉试试呢?结果显示乱,可见上拉不是问题。
      是否电源干扰呢?我用的稳压源价值不菲,其各项指标经检定完全合格,当不是干扰问题,但不妨在电源、芯片处按书上介绍的,加上一些电容试试,结果是毫无效果。
      是否布线不当引起分布电容问题呢?考虑动态显示,加上机子本身也工作在几个兆,布线当是有所讲究的,于是把线拆了重新焊接,使线尽量短,尽量紧凑,尽量无裸露现象。重新上电,一样!
      我实在解决不了,准备放弃了,最后尝试了一下:用手指作为电容在各元件上试触,发现,当用手捏住芯片及驱动块时,闪烁现象消除,但电容如何跨接也是问题,反复试触,最终发现,只要是P0口控制的9012,用手捏住其e~c两端,均可消除闪烁现象,跨接一个10uF电容一试,闪烁消除!
      但问题并未解决,问题如下:
1、为什么P0口对应的数码管有闪烁现象?理论上如何解释?
2、为何用手捏住芯片及驱动块可以消除闪烁?
3、为何在P0口控制的9012上跨接电容可以消除闪烁?


4、如果项目开发中碰到类似问题如何解决?仍然摸着石头过河,然后逮到老鼠就是好猫?大家碰到类似问题是如何解决的?
5、字位法动态显示,12只管是否上限?
烦各位大侠给予指点!

相关帖子

沙发
xuyaqi| | 2010-3-31 20:27 | 只看该作者
最好有个图

使用特权

评论回复
板凳
ShakaLeo| | 2010-3-31 20:37 | 只看该作者
51单片机的P0口在不加上拉并且不用做地址总线时,输出1其实是开漏输出,也就是一个高阻状态。所以输出1关闭9012时,其实9012的Vbe是一个不确定的电压,电路中的一点干扰就有可能使9012有很短时间的打开,所以会看到闪烁。
在9012上跨接电容应该是在9012的CE极之间跨接吧,当控制9012的P0口输出1使三极管关闭时,虽然有短暂的打开,但大多数时间应该还是关闭的,在关闭的时候,10uF电容会被充电,电容两端会有一定电压差,这时如果三极管短暂地打开一下,这个电容会通过三极管的CE回路放电,那么在放电的一段时间内,就不会有电流流过数码管了,闪烁现象就没有了。

使用特权

评论回复
地板
天雨粟|  楼主 | 2010-3-31 22:31 | 只看该作者
回二楼:暂无条件上图,惭愧!
回三楼:感谢您的解答。由于P0置1时的浮空,使9012基极易受干扰,由此形成闪烁,我认为
这是P0口对应的管子闪烁的真正原因。现在CE间跨接电容后,9012关断时,电容充电,使得
基极有明确的高电平,以助其关断,防止其因干扰而瞬时打开,造成跳闪。
但P0口对应8个9012,我只在其中一个上跨电容就消除了闪烁,用上面的理论还不能完全解释
这种现象,仍然期待!

使用特权

评论回复
5
天雨粟|  楼主 | 2010-4-1 20:38 | 只看该作者
4楼的说法未尽妥当.
CE间跨接电容的作用:
      当P0口的9012导通时,其抗干扰能力很强;
      其关断时,由于端口浮空,易受干扰,或瞬时导通,因而闪烁;
           倘此时CE间有电容,由于放完电后,LED才能点亮,
                 若是高频干扰,由于频率较高,则电未放完而干扰已过,
                      所以干扰不影响显示;

上说成立,则8个9012皆应跨接电容,
      但何以只并一个电容即可消除闪烁?
期待.......

使用特权

评论回复
6
ShakaLeo| | 2010-4-1 21:29 | 只看该作者
楼主画个示意图吧

使用特权

评论回复
7
天雨粟|  楼主 | 2010-4-1 22:14 | 只看该作者
草图已画,不会传.
P0.X--2k电阻--9012基极
    9012的e极接5V,c极接共阳管的com端;
P1口--ULN2803--100欧电阻--共阳管的笔划端.

硬件结构就是如此!烦看看!

使用特权

评论回复
8
cfly| | 2010-4-2 11:56 | 只看该作者
首先在ce之间跨接电容是不可靠的,当9012打开的时候,直接将电容短路放电。这是不推荐的。

应该是电源的问题,p2控制led开关的时候,如果电源设计得不好,很容易让电源浮动超过0.7v,造成be电压超过0.7v而打开9012。

试试在电源上面加几个大电容。也试试控制p0 和 p2的顺序调个头。

使用特权

评论回复
9
天雨粟|  楼主 | 2010-4-5 17:37 | 只看该作者
回8楼:
电源问题似可排除.我用的是稳压电源,其源效应 负载效应 纹波系数等指标完全合格;
另,在电源处加大电容也试过,未能解决问题.

把软件的控制顺序改改这一思路很好,我试了之后再报告情况.
感谢您的帮助!

使用特权

评论回复
10
SULJE| | 2010-4-6 10:40 | 只看该作者
学习了

使用特权

评论回复
11
天雨粟|  楼主 | 2010-4-7 19:40 | 只看该作者
修改了扫描顺序,未起作用。
用万用板焊接,导线密如蛛网,器件凌乱不堪,与实际情况有很大差异。
如果印制板出了类似问题,才有讨论价值。
感谢大家的帮助!

使用特权

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

本版积分规则

16

主题

168

帖子

0

粉丝