用查理复用法驱动LED
种方式能够实现的基础来源于单片机IO口的三个状态:高电平、低电平和高阻态。所谓“高阻态”,指的是引脚对外表现出极大的阻抗状态,对于后级电路的影响很小,在后级电路看来,就如同引脚悬空一样。而另一方面,发光二极管和普通的二极管一样拥有单向导通的特点,只有在电流以某种方式流动的时候,LED才能发光。利用以上两点,我们就能够设计出查理复用拓扑的基本电路了。首先来看有两根LED组成的电路,在这个电路中,两个LED的接法相反,由于两个IO口间的电压不足以反向击穿LED,因此在两个IO口的状态相反时,两个LED将分别点亮。在使用两个LED的时候,这个电路既没有使用高阻态,也没有体现出查理复用的优点,但这种电路说明了查理复用的基本原理,即使用LED的单向导电性,确定一个LED两端的电压极性来使得LED按需求点亮。使用3个IO口驱动6个LED的电路是查理复用的最经典情景。在这个电路中,首次使用了高阻态状态。当你想要点亮某个特定的LED时,就将其两端所连接到的引脚分别设定为高低电平,而另一个引脚设定为高阻态。这样,对应的LED就会被点亮,而其他的LED保持不变。至于位于同一路径上的其他LED(如P2.2脚为高、P2.0脚为低时,LED2、LED6和LED4这两条路径),由于单个LED路径上的电流要大于多个LED的路径,只有单个LED路径上的LED会被点亮。在这种方法中,n个引脚最多可以驱动n^2-n个LED。当然这样的接法也会引发一些问题,首先,以这种方式驱动的电路完全由单片机取得电流,所以对于IO口的驱动能力有一定的要求;其次,在这种驱动逻辑中,如果出现了某个LED开路或短路的情况下,整个电流的流向将被打乱,LED亮起来的顺序也会发生变化,最坏的情况下,高电流会损坏单片机。因此在设计电路的时候,要注意LED的压降和电源电压、单片机的驱动能力等问题。至于高阻态,部分单片机可以将引脚配置成“输入”状态以设定为高阻态在实际应用中,查理复用的I/O引脚数目可以更多,比如三个I/O引脚和多个LED,依然可以利用I/O引脚的不同组合状态来控制更多的LED。 查理复用法是一种用于控制多个LED的技术 这种方法通过合理设置微控制器引脚的输出状态,使得电流能够按照特定的路径流动,从而点亮相应的LED
将LED的连接方式构建成矩阵形式,行和列分别连接到微控制器的不同引脚上。通过对行和列引脚的输出状态进行组合控制,可以实现对单个或多个LED的点亮、熄灭等操作
将LED的阳极和阴极分别连接到微控制器的不同引脚上,形成矩阵连接。确保连接正确,避免短路等问题
在程序开始时,需要对微控制器的引脚模式进行初始化设置。根据具体的应用需求,将部分引脚设置为输出模式,用于控制LED的亮灭;将其他引脚设置为输入模式,作为高阻态引脚,以实现对特定LED的单独控制。
由于人眼的视觉暂留特性,通过快速地循环切换不同LED的组合状态,可以实现各种动态的显示效果
单片机使用查理复用法(Charlieplexing)驱动LED是一种高效的IO资源利用方法,特别适用于需要控制大量LED但IO端口有限的场景。 因为同一时间只能点亮部分 LED,所以每个 LED 的点亮时间相对较短,可能会导致整体亮度不如传统驱动方式。 在消费电子产品中很常见,因为成本扣得很细,能节省一个IO算一个。 由于需要通过软件来精确控制引脚的电平状态和切换时间,编程难度相对较大。 相比于其他复杂的 LED 驱动电路,查理复用法的硬件连接相对简单,只需要将 LED 按照一定规则连接到单片机的引脚上即可。 传统驱动多个 LED 通常需要每个 LED 至少对应一个引脚,而查理复用法通过利用引脚的不同电平组合(高电平、低电平、高阻态),以分时复用的方式来驱动多个 LED。 查理复用法依赖于快速的时序控制 有3个I/O引脚(A、B、C),可以驱动6个LED。每个LED连接在两个引脚之间,如下图所示:
A ----|>|---- B (LED1)
A ----|>|---- C (LED2)
B ----|>|---- A (LED3)
B ----|>|---- C (LED4)
C ----|>|---- A (LED5)
C ----|>|---- B (LED6) 假设你有n个I/O引脚,理论上你可以控制n(n-1)个LED。这是因为每一对引脚可以用来点亮两个方向相反的LED(一个引脚设为输出低,另一个设为输出高时点亮一个LED;反之则点亮另一个)。然而,在任意时刻,只有一个LED会被点亮。为了给人眼造成所有LED都在同时亮的错觉,你需要快速循环遍历并点亮每个LED,这个过程称为扫描。 如果出现LED开路或短路的情况,电流的流向会被打乱,导致LED的点亮逻辑混乱。在极端情况下,电路可能要求GPIO提供过大的电流,从而可能损坏单片机。 这种电路设计在一定条件下确实能省BOM 每个LED需串联限流电阻(建议220Ω~1kΩ,根据LED额定电流调整)。
单片机的GPIO需设置为推挽输出模式(Push-Pull)。