找回密码
 请使用中文注册
查看: 6|回复: 0

神奇的查理复用-驱动LED数码管

[复制链接]
阅读字号:

1476

主题

55

回帖

2万

积分

超级版主

积分
29721
发表于 3 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?请使用中文注册

×

在做消费类电子产品设计时,常因单片机的IO不够驱动LED而发愁,有一种电路利用了单机IO正反推驱动LED,其查理复用算法可让相同针脚数量的IO口点亮更多LED灯。理论上能达到N个I0口可以驱动 N*(N-1)个LED灯。

今天分享下,只需要5个IO就能驱动188数码管。其实现原理,利用IO口三态控制及程序编写控制正反推驱动LED,为了更方便理解后面电路工作原理,咱们由浅入深一步步来,先从简单的2个IO来说其工作原理吧。

图一,两个LED反并联连接,红色LED的阳极连接到绿色LED的阴极。


964c76cb8a01a66b700910ed3ea430fe.png
当IO1变为高电平,IO2 变为低电平时,则红色LED点亮,
当IO1变为低电平,IO2 变为高电平时,则绿色LED点亮。
这个明白后,咱们再加一个IO就能实现3个IO控制4个LED如下图二。

9604a6f7b770e9fd2510dc03917223a5.png
这个也好理解,如果再升级一下呢,如下图,MCU仅通过3个端口即可单独控制6个LED。那么其和IO1、IO2、IO3 都会接入各2个灯。那么如何工作呢?

df681871d67a6ceb6c0e031855c9b49a.png

1.IO1=高电平,IO2=低电平,IO3=高阻态;那么上述中 IO1->LED1->IO2和 IO1->(LED6+LED4)->IO2能各形成一个回路,由于两路形成并联,(LED6+LED4)和 LED1是并联,所以当电压被钳位到LED1的点亮电压(例如2.8v),那么此时就只有 LED1点亮。LED6+LED4无法点亮。


5cd1d24bac270aa3f131ec83ed17c4e4.png

2.IO1=高电平,IO2=高阻态(输入模式),IO3=0V;IO1->LED6->IO3同理LED6点亮;LED1+LED3 由于并联;LED6原因电压被钳位到比如2.4V,电压太低不足以点亮(LED1+LED3)2个灯。


5f1f7c3274d002d4f7c5c259c01d36ee.png

3.IO1=高阻态(输入模式),IO2=高电平,IOP3=低电平;同理LED3点亮。(LED2+LED6)电压太低不足以点亮2个灯。以此类推,LED4,LED2,LED5点亮同理论。


2ce68b89f804407eec7992ba17f65d29.png

上面如果你明白了,下面就好理解了,我们知道驱动一个1个8字数码管需要7个LED如下图,


42ce531d5029b9c515548a7f75e041a8.png 那么我们用5个IO就能控制188型的数码管
b21a1441c2cb158733865769f097cd18.png A;为了更好的让layout画PCB,原理图还可以这样示意。
a592d787ff8b4fdd1b5458c849b0b538.png B;为了更好理让软件更好的编写程序原理图还可以这样,如第一个8字数码管示意。
5649aec909e3018ba64e6f96d2a3e206.png 第二个8字数码管示意。
81508147e3e643f1ed92b6b358f22c40.png 硬件部分讲完了,咱们再讲解下软件部分--程序的编写思路

对于使用了“查理复用算法”的LED控制电路,程序开发基本思路步骤:

1.初始化所有端口为高阻态:

2.初始化指定LED灯对应的两个针脚为推挽输出:

3.设置两个针脚的高低电平变化:

如是重复 1、2、3步骤即可:


上面说了电路的优点(省IO),下面咱们再聊下这种电路的4个缺点。

1、LED 显示频率

“查理复用” 技术的原理就是每次点亮一个发光二极管,然后再设置点亮另一个,周期重复。(LED二极管是单极性的)但如果频率足够快,人眼会认为LED是一直亮着的。每个LED的刷新速率必须大于50HZ。

2、峰电流

“查理复用”当显示的数量变大,通过LED的平均电流必须(大约)大于一个维持它持续点亮的常数(不是每个MCU都适用),这要求增加相应的电流峰值,这将导致限制了使用“查理复用”显示数量的问题。如果MCU代码崩溃,已点亮的LED比传统的复用处在一个非常大的电压下,增加了一个危险故障隐患。


76a30e8eb605dba9d94bfb518fa65c75.png

3、三态要求.

“查理复用” 要求单片机的IO必须有三态。如果电流足够低以至于不能直接驱动微控制器的 I/O引脚显示,但如果必须使用外部状态,每个三态一般需要两个输出线,以控制消除了一个“查理复用”显示优势。由于来自微控制器引脚的电流通常仅限于20mA,因此这严重限制了一个 “查理复用”显示的实际功耗。

4、正向电压的复杂性

“查理复用”矩阵比传统的复合矩阵明显更加复杂,无论是在所需的PCB板布局和微控制器编程,这增加了设计时间。当使用不同正向的电压的颜色LED,可能存在的问题就是我们不期望亮的LED会亮起。原因如下:

红色 LED:通常是 1.8V->2.2V。黄色 LED:通常是 2.0V->2.4V。

绿色 LED:大概在 2.2V->2.8V。白/蓝色 LED:通常是 2.8V->3.5V。


61e2f0d9bca4a3cac026b94d930bcff8.png
例如我们想点亮 LED1,可以让IO1=高,IO2=低,IO3=高阻(输入模式),这样LED1就亮起来了,但是如果LED1损坏时呢?当电源电压较高时(例如5V),会形成图中箭头所示电流回路,造成LED4+LED5两只LED被意外点亮,然而用3V电压为什么没事呢?因为3V电压还没达到大部分LED压降的两倍,所以不会导致两只二极管串联导通(称之为二极管连锁现象)。同时所需的PCB板布局布线更绕。

2d963fbfda58071b7cdab0e4aeb2f1bb.png 最后是一些经验

硬件设计方面:

  • 限流电阻:每个LED或段需串联电阻,防止过流(通常220Ω~1kΩ)。

  • 二极管特性:LED反向耐压较低,避免反向电压(可并联反向保护二极管)。

  • 引脚电流限制:确保单引脚电流不超过MCU额定值(如20mA/引脚)。

    软件优化方面:

  • 扫描频率:建议>60Hz(每帧≤16ms),避免闪烁。

  • 消隐处理:防止“鬼影”,切换数码管时短暂关闭所有段。

  • 低功耗优化:其他空闲时引脚设为高阻态,减少静态功耗。

    常见问题

  • 交叉干扰:因高阻态漏电导致相邻LED微亮,可通过降低扫描间隔或优化PCB布局加大距离解决。

  • 亮度不均:扫描占空比不一致时,需调整每位数码管的显示时间。

  • 驱动能力不足:对于大尺寸数码管,需增加晶体管或专用驱动芯片(如74HC595)。

  • Type-c接口PCB设计工程师必看的8个细节

  • 一键开机,MOS管软启动-解决启动大电流


高速GMSL信号转换MIPI信号设计自激升压+倍压整流电路工作原理  可控硅-交流调压器--电路分析过压保护--电路分析  运算组成恒流源电路--分析分立元件件过流保护--电路分析  RJ45接口PCB设计避坑大全HDMI接口PCB工程师必看的8个核心细节485电路设计指南:从原理到实战!硬件DFM避坑指南:从设计到量产的关键细节MIPI信号-PCB设计注意事项轻松读懂开关电源(快充)工作原理。PCB设计布线技巧的总结布局规划技巧。



您需要登录后才可以回帖 登录 | 请使用中文注册

本版积分规则

QQ|Archiver|手机版|家电维修论坛 ( 蜀ICP备19011473号-4 川公网安备51102502000164号 )

GMT+8, 2025-9-1 12:40 , Processed in 0.316738 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表