基于Charlieplexing算法(查理复用算法)的LED矩阵控制设计

目录

1、Charlieplexing 基本原理

2、Charlieplexing 注意事项

3、结论


最近发现一个非常有意思的实验:查理复用技术控制LED灯(按键)。

简单来说就是:希望能够用较少的I/O口控制较多的LED灯!按照Charlieplexing 方法,n个引脚可以有n*(n-1)个组合,也就是说,可以用n个引脚驱动n*(n-1)个LED灯!帅吧!比起我们一个引脚控制1个LED灯,多了n-1倍。使用行列式驱动,也没这个控制的多。到底多了多少呢?计算一下:

1个引脚——当然只能控制一个LED灯啦。

2个引脚——2个灯,冒失没有多呀——但是:不用共地/共电。

3个引脚——6个灯!依然不用共地什么的。

4个引脚——12个灯!(传统的控制方式需要7个引脚)。

查阅了相关资料,进行总结分享~

Charlieplexing 作为一种 LED 显示器多路复用的方法,能够使人们控制的 LED 数量大得多,在 LED 领域应用广泛。利用“行列分时复用”的思想,它能使用 N 条 I/O 线路来控制 N*(N—1)只 LED,而标准的多路复用发法控制的 LED 则少得多。

1、Charlieplexing 基本原理

当使用 Charlieplexing 方法,n 引脚可以有 n*(n—1)个组合。也就是说,它可以用 n个引脚驱动 n*(n—1)个 LED 二极管。而传统的行列复用则需要更多的引脚来驱动相同的LED 二极管,也就是说要驱动 6 个 LED,用行列式需要 5 个口,而这种方法只要 3 个。LED越多,节省的 IO 越多。比方说驱动 20 个 LED,行列式要用 9 个,而这种只要 5 个。

1、互补驱动

Charlieplexing 最简单的形式如图 1 所示,是使用 LED 的互补对称矩阵。

 矩阵横坐标是 LED 正负极性之间的电压值,纵坐标是 LED1 和 LED2。charlieplexed矩阵是这样的:通过应用一个正电压针脚 1 和接地引脚 0,LED1 会亮起。由于电流不能流过反向偏置的 LED2,发光二极管 2 将保持熄灭。如果在引脚 1 和引脚 2 的电压是反向的,发光二极管灯 LED 2 将亮而 LED1 将熄灭。

2、 三态逻辑扩展

这是一张 3 个 IO 驱动 6 只 LED 的简化版电路图,电阻在这里起限流决定性作用:

这里出现了一个问题,为了使我们能够更好的演示前面那个例子,在使用其中的两个引脚前,必须断开另外的一个引脚。这可以使用微控制器引脚的三态逻辑来解决。单片机管脚通常有三种状态,5V、0V 和高阻态。输入方式置于高阻状态,从电流上讲是从电路上断开那个引脚,意思就是非常小的电流或者没有电流流过它。这使得电路在任何时候可以使用任何数目的引脚,只需要简单的改变引脚的状态。为了驱动上面 6 个 LED 矩阵,我们所期望亮的两个 LED 相应的连接到 5V 和 0V,第三个脚设置为输入状态。这样做我们可以防止电流从第三引脚泄露出,以确保我们期望的 LED 灯是唯一一个点亮。采用三态逻辑,只要引脚可用,矩阵理论上可以扩展到任何大小。任何可以被点亮的 LED 采用 5V 和 0V 至其相应的管脚,矩阵的所有其他引脚设置成输入高阻态。 

2、Charlieplexing 注意事项

1、LED  显示频率

因为 LED 二极管是单极性的,都具有一个阳极和阴极,Charlieplexing 通过输出一个变化的频率,几乎可以同时点亮 LED 二极管。当频率确定,所有的 LED 不会同时点亮,而是一个简单的发光二极管被点亮,然后再设置,点亮另一个,周期重复。但如果频率足够快,人眼会认为 LED 是一直亮着的。为使显示为没有任何明显的闪烁,为每个 LED 的刷新速率必须大于 50Hz。基于 Charlieplexing 的方法使用 8 引脚来控制 56 个 LED,这个足够给 8 个7 段数码管显示(不包括小数点)。通常情况下 7 段数码管有一个共同的阳极,或者一个共阴极,假设它是一种常见的共阴极。所有的 8 个 7 段 LED 数码器不能同时打开通过任何Charlieplexing 的理想组合,由 8 位直接得到 56 位的信息是不可能的,相反,人眼被使用的闪烁给欺骗了。只有一个 7 段数码管显示,其它 7 个发光二极管可以在任何时候被激活。这将是该做的方法为 8 个数码管中的 8 个共阴极每一个都分配一个独特的 I / O 端口引脚。在任何时候,只有唯一一个 I/O 控制引脚被置低,因此只有它的 7 段数码管的阳极连接到正极就可以使 LED 点亮。这样就激活一个 7 段数码管,被激活的 7 段数码管显示的 7 段 LED 阳极可以在任何组合转向由其他 7 个 I/O 端口或高阻抗模式的任意组合。它们通过电阻被连接到剩下的 7 个引脚中(共阴极连接到引脚本身,不是通过一个电阻,否则电流会分流到所有打开的数码管)。但为了显示所需的数字需要使用 8 个数码管,只有 7 段数码管在同一时段被显示,因此 8 个引脚必须通过单独的循环,并在每个频率至少为 50Hz。一次显示必须刷新在 400Hz 通过全部 8 段,确保 LED 的闪关灯不低于 50 次每秒,这就要求微处理器执行中断至少 400 次每秒。

 2、峰电流

由于占空比下降,一个 Charlieplexing 电路的显示速度必须比传统的复用显示技术更快。当显示的数量变大,通过 LED 的平均电流必须(大约)大于一个维持它持续点亮的常数,这要求增加相应的电流峰值。这将导致限制了使用 Charlieplexing 显示数量的问题。LED通常有一个最大峰值电流额定值以及平均额定电流。如果微控制器代码崩溃,已点亮的 LED比传统的复用处在一个非常大的电压下,增加了一个危险故障。

3、三态要求

所有的输出端口用于驱动一个 charlieplexed 必须有三态。如果电流足够低以至于不能直接驱动微控制器的 I/O 引脚显示,这是没有问题的,但如果必须使用外部状态,每个三态一般需要两个输出线,以控制消除了一个 charlieplexed 显示优势。由于来自微控制器引脚的电流通常仅限于 20mA,因此这严重限制了一个 charlieplexed 显示的实际尺寸。但是,这是可以做到使一段数码管在一个时刻亮。

4 、正向电压的复杂性

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

如果我们仔细看看上面的设计,我们会注意到,例如我们想点亮 D1,可以令 Net1=1,Net2=0,Net3=Z,这样,D1 就亮起来了,什么问题也没有,可是如果 D1 损坏,或者没有安装时,问题就来了。当电源电压较高时(例如 5V),会形成图中箭头所示电流回路,造成 D4、D5 两只 LED 被意外点亮,而 3V 电压为什么没事呢,因为对于大部分 LED,3V 电压还没达到LED 压降的两倍,所以不会导致两只二极管串联导通(称之为二极管连锁现象)。

这仅仅是 3 个 IO 的情况,有更多 IO 的情况下将更糟糕,而且如果你使用了扩流电路,问题会非常棘手,这也是为什么 Charliplex 结构的电压必须小心选择 LED 压降和电源电压的原因,否则只要有一两个坏点就足以毁了整个屏幕的画面 。不光是 LED 屏,某些扫描键盘中也存在类似现象。 

5 、LED 故障

如果一个 LED 出现故障,无论是成为一个开路电路,或者是一个短路电路,或者是漏电路(潜在的并联电路导致电流分流),将会影响一个整体的显示,而且实际坏了的 LED很难被发现,当不只是一个 LED 而是可能潜在的一系列 LEDs 会被同时点亮,如果对电路没有详细的了解,哪一个 LED 坏了和怎么设置 LED 点亮的区分就不能很容易的建立。

如果坏了的 LED 成为一个断路,LED2 两端的电压可能会建立起来,知道找到一个路径通过两个 LEDs。有很多这样的路径,因为引脚被用来控制阵列减 2 个方向;如果在节点M 阳极和节点 N 阴极上的 LED 坏了,可能每个 LED 在节点 M 阳极,阴极是 P,随之而来的 LED 阳极是 P 并且阴极是 N,都会被点亮。

如果有 8 个 I/O 引脚控制矩阵,这意味着将会有 6 个独立的路径通过每两个 LEDs,也就是 12 个 LED 会被无意点亮,但是幸运的是这只发生在假定一个 LED 坏了,这可能只发生一小部分时间,当有故障的 LED 没有被点亮时,这不会影响整体的功能。如果问题是在节点 x 和 y 间短路,则每次任何一个 LED1 是以 x 或者 y 最为它的阳极或阴极,其他的节点z 作为他另外一个点击,假定将要被点亮(假定 LED1 的阴极连接 x),LED2 的阴极 y 和阳极 z 将也会点亮,所以任何时间任一节点 x 或 y 作为阳极或者阴极,两个 LEDs 会代替一个而点亮。在这种情况下,它只是无意的点亮一个附加的 LED,但是它的频率比较快,不
只是当坏的 LED 假定被点亮,当任何一个 LED 有一个引脚和坏了的 LED 是共用的也会假定被点亮。

这个问题变得特别困难来确定是否有两个或者两个以上的 LED 是坏的。这意味着不像大多数方法一样,其中一个 LED 损坏的原因只是被烧毁了。当使用 Charlieplexing,一个或两个烧毁的发光二极管,无论失败的模式,几乎肯定会导致意想不到的 LED 被点亮,这些仍然工作的很可能使整个设备完全无法使用,立即发生连锁反应。设备的使用寿命和破坏特征都必须要在设计时考虑。

3、结论

Charlieplexing 除了应用在 LED 二极管的输出控制上,也可以用于微处理器输入信号的复用上,一个典型应用如一个标准(4*3)12 键盘只需要使用 4 个 I/O 线,而传统的行列扫描方法需要 4+3=7 个 I/O 线,因此 Charlieplexing 节约了三个 I/O 口。虽然 Charlieplexing面临一系列问题待解决,但是其应用在 LED 控制中仍具有广泛前景。

 

  • 11
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不脱发的程序猿

亲,赏包辣条吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值