世纪电源网社区logo
社区
Datasheet
标题
返回顶部
讨论

基于Charlieplexing算法的LED矩阵控制设计

[复制链接]
查看: 123 |回复: 0
1
世界和平
  • 积分:458
  • |
  • 主题:22
  • |
  • 帖子:30
积分:458
LV6
高级工程师
  • 2019-11-21 14:56:55
基于 Charlieplexing 算法的 LED 矩阵控制

设计

沈中泽,张卫东,踪晓志

(中·国矿业大学信息与电气工程学院,江苏 徐州 221008)

摘要Charlieplexing 作为一种 LED 显示器多路复用的方法,能够使人们控制的 LED 数量大得多,在 LED 领域应用广泛。利用“行列分时复用”的思想,它能使用 N 条 I/O 线路来控制 N*(N — 1) 只 LED , 而 标 准 的 多 路 复 用 发 法 控 制 的 LED 则 少 得 多 。 文 中 对 使 用Charlieplexing 的方法原理设计电路进行了详细分析,并对其控制 LED 二极管时可能出现的问题经行了探讨,通过分析研究给出切实合理的解决方法
关键词: Charlieplexing;多路复用;三态
中图分类号: TN 710
LED Matrix Control Design Based on Charlieplexing

Shen Zhongze, Zhang Weidong, Zong Xiaozhi

(China University of Mining and Technology,JiangSu Xuzhou 221008)

Abstract: Charlieplexing as a method of multiplexing LED displays, LED can be controlled by thenumber of people much larger, widely used in the LED field. Use "the ranks of time divisionmultiplexing" thinking, it shall use the N I / O lines to control N * (N-1) only the LED, while thestandard method of controlling the LED multiplexer made much less. Paper on the use of the methodCharlieplexing principle design circuits Le Xiangxifenxi, and its control LED diodes Kenengchuxian ofthe problem was has held study, by analyzing the research reasonably practicable solution is given.Keywords: Charlieplexing;Multiplexer;Tri-State
0 引言
显示复用与数据传输中复用有非常大的区别,尽管它们具有相同的基本原则。在显示复用中,显示器的数据线是并行在一个微控制器的通用总线上。当打开显示器时,显示的数据与地址命令是分开的。这样就可以允许使用更少的 I/O 引脚,比通常采取的方法来直接驱动同样数量的 LED 显示。 Charlieplexing 是由查理艾伦在 1995 年初提出的,利用微控制器相对较少的 I/O 引脚复用的技术,在显示驱动中来驱动一个 LED 阵列。该方法利用了微控制器三态逻辑能力,以获得比传统复用的效率。虽然这是更有效的运用它的 I/O,但是在大屏显示中会导致出现更复杂的设计。但是对于较少的 LED,其 I/O 的使用效率则明显提高。
1 Charlieplexing 基本原理
当使用 Charlieplexing 方法, n 引脚可以有 n*(n—1)个组合。也就是说,它可以用 n个引脚驱动 n*(n—1)个 LED 二极管。而传统的行列复用则需要更多的引脚来驱动相同的LED 二极管,也就是说要驱动 6 个 LED,用行列式需要 5 个口,而这种方法只要 3 个。 LED越多,节省的 IO 越多。比方说驱动 20 个 LED,行列式要用 9 个,而这种只要 5 个。  

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

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



微信图片_20191121144113.png

图 1 Charlieplexing 最小结构

对于多个 I/O 端口,如图 2 为 4 个 I/O 口组合结构,通过组合算法如下:


微信图片_20191121143723.png

图 2 4 个 I/O 口组合架构

由图形可以计算得到 4 线: 3+2+1=6,由于 LED 的两个方向, 6*2LED=12LED,同时可以使用更简单的数学解释方式: 4 选 2 的排列,即 A(2,4)=6。

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



微信图片_20191121143745.png

图 3 3 个 I/O 驱动 LED 电路图

这里出现了一个问题,为了使我们能够更好的演示前面那个例子,在使用其中的两个引脚前,必须断开另外的一个引脚。这可以使用微控制器引脚的三态逻辑来解决。单片机管脚通常有三种状态, 5V、 0V 和高阻态。输入方式置于高阻状态,从电流上讲是从电路上断开那个引脚,意思就是非常小的电流或者没有电流流过它。这使得电路在任何时候可以使用任何数目的引脚,只需要简单的改变引脚的状态。为了驱动上面 6 个 LED 矩阵,我们所期望亮的两个 LED 相应的连接到 5V 和 0V,第三个脚设置为输入状态。这样做我们可以防止电流从第三引脚泄露出,以确保我们期望的 LED 灯是唯一一个点亮。采用三态逻辑,只要引脚可用,矩阵理论上可以扩展到任何大小。任何可以被点亮的 LED 采用 5V 和 0V 至其相应的管脚,矩阵的所有其他引脚设置成输入高阻态。
2 Charlieplexing 注意事项
2.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.2 峰电流
由于占空比下降,一个 Charlieplexing 电路的显示速度必须比传统的复用显示技术更快。当显示的数量变大,通过 LED 的平均电流必须(大约)大于一个维持它持续点亮的常数, 这要求增加相应的电流峰值。这将导致限制了使用 Charlieplexing 显示数量的问题。LED通常有一个最大峰值电流额定值以及平均额定电流。 如果微控制器代码崩溃, 已点亮的 LED比传统的复用处在一个非常大的电压下,增加了一个危险故障。
2.3 三态要求
所有的输出端口用于驱动一个 charlieplexed 必须有三态。如果电流足够低以至于不能直接驱动微控制器的 I/O 引脚显示,这是没有问题的,但如果必须使用外部状态,每个三态
一般需要两个输出线,以控制消除了一个 charlieplexed 显示优势。由于来自微控制器引脚的电流通常仅限于 20mA,因此这严重限制了一个 charlieplexed 显示的实际尺寸。但是,这是可以做到使一段数码管在一个时刻亮。
2.4 正向电压的复杂性
Charlieplex 矩阵比传统的复合矩阵明显更加复杂,无论是在所需的 PCB 板布局和微控制器编程, 这增加了设计时间。 当使用不同正向的电压的 LEDs, 不如使用不同的彩色 LEDs,可能存在的问题就是我们不期望亮的 LED 会亮起。如果我们仔细看看上面的设计,我们会注意到,例如我们想点亮 D1,可以令 Net1=1,Net2=0,Net3=Z,这样,D1 就亮起来了,什么问题也没有,可是如果 D1 损坏,或者没有安装时,问题就来了。当电源电压较高时(例如 5V),会形成图中箭头所示电流回路,造成 D4、D5 两只 LED 被意外点亮,而 3V 电压为什么没事呢,因为对于大部分 LED,3V 电压还没达到LED 压降的两倍,所以不会导致两只二极管串联导通(称之为二极管连锁现象)。



微信图片_20191121143748.png

图 4 I/O 端口电压故障

这仅仅是 3 个 IO 的情况,有更多 IO 的情况下将更糟糕,而且如果你使用了扩流电路,问题会非常棘手,这也是为什么 Charliplex 结构的电压必须小心选择 LED 压降和电源电压的原因,否则只要有一两个坏点就足以毁了整个屏幕的画面 。不光是 LED 屏,某些扫描键盘中也存在类似现象。
2.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 控制中仍具有广泛前景。
参考文献
[1] “Charlieplexing: Reduced Pin-Count LED Display Multiplexing,” Application Note 1880, Maxim, 2003-2-10.
[2] Saruabh Gupta, Dhananjay V Gadre.多路复用方法带来引脚数量更少的 LD 显示器[J].2009.3
[3] http://nl.wikipedia.org/wiki/Charlieplexing
[4] http://www.ourdev.cn

热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦5层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)28285637 /(13823562357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报

Copyright 2008-2019 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348