电子产业一站式赋能平台

PCB联盟网

搜索
查看: 207|回复: 0
收起左侧

用3个IO口控制6个LED灯,怎么做到的?查理复用!

[复制链接]

1001

主题

1001

帖子

8805

积分

高级会员

Rank: 5Rank: 5

积分
8805
发表于 2024-11-28 07:30:00 | 显示全部楼层 |阅读模式

xfxm1fre3aj64053871900.png

xfxm1fre3aj64053871900.png
/ P! O7 y6 j6 q) x2 \: C; K
▲ 本文要分析的电路  V% m7 V! r6 A; g8 L
事情是这样开始的。买了个电动牙刷,几十块钱那种:% V1 n& I' X$ d) @

pia1iijhtk564053872000.jpg

pia1iijhtk564053872000.jpg
! x4 k  k: n5 P. o, b
收到的实物长这样:  [# v7 ?# Z" i2 ]/ |/ Z

r2x2tnwlax264053872100.jpg

r2x2tnwlax264053872100.jpg
; X3 S9 Y; e' Q
牙刷手柄上有1个按键和6个LED灯:% C& I5 U2 n; \- Z3 d3 N9 t9 H* V

3rji3drtmi364053872200.jpg

3rji3drtmi364053872200.jpg
6 Y  O$ x4 Q: C, K! D& I- q
拆开看看电路板:
6 A) Y3 X+ |$ O9 h0 U; q5 Q: Y8 z

waasgl4hnqx64053872300.jpg

waasgl4hnqx64053872300.jpg
* |7 |1 `( _: S. _2 @
可以看出,电路板上用的单片机,只有8个脚,却要控制1个按键、6个LED灯、1个震动的马达电机:
' G; A  b* B6 R4 M  \3 y

cv55b435vl564053872400.jpg

cv55b435vl564053872400.jpg
7 I" w: F+ ]: c" d$ t/ {
初看之下,GPIO应该是不够用的。单片机除去电源脚(正极)和GND脚(负极),只剩最多6个GPIO脚。那么是怎么做到够用的?原来,经过巧妙的电路设计,这款电动牙刷实现了用3个GPIO控制6个LED灯,节省了GPIO。
) F% M3 D2 v, w5 |- i  _) @! {

mqv45ci4mnf64053872500.jpg

mqv45ci4mnf64053872500.jpg
# j! O9 ?% E& J( I4 a3 V
这个巧妙的电路如下:6 Q6 [( a! i6 m" x- f" S  n4 n2 `  L

: {$ o( S, @6 o( N) }1 R( p$ W6个LED灯为相同的型号,为方便查看,用红绿两种颜色区分两种不同的方向。一、原理分析这个电路用到了单片机GPIO的三种状态:高电平低电平高阻态所谓“高阻态”,是指GPIO对外部电路表现出极大的阻抗。因阻抗很大,几乎不会吸入电流,也不会对外输出电流。各个LED灯单独亮起,分为六种情况。1、当只有LED1亮起时,单片机各GPIO的状态如下:(带箭头的红线为电流回路)
8 O4 \4 W8 m% F) X4 z3 W

2wkbum0lngm64053872600.png

2wkbum0lngm64053872600.png

% y1 a7 }' X7 P$ _2、当只有LED2亮起时,单片机各GPIO的状态如下:
% _8 T' y4 q, z; N" g" V( V

afyd3qbmlam64053872700.png

afyd3qbmlam64053872700.png

6 W0 u4 B! V  h4 o3、当只有LED3亮起时,单片机各GPIO的状态如下:
4 `  h% w! M7 u/ D/ U; Z$ j

agkdgj3wb4d64053872800.png

agkdgj3wb4d64053872800.png
4 O, q' u4 G3 H
4、当只有LED4亮起时,单片机各GPIO的状态如下:8 p( I0 a' N+ X& \) z$ ?

ybr20xi3wf064053872900.png

ybr20xi3wf064053872900.png

0 [* o1 W) \8 d" W$ w5、当只有LED5亮起时,单片机各GPIO的状态如下:
4 O) X" m: H1 b3 O

2cmlaud1xgy64053873000.png

2cmlaud1xgy64053873000.png
. f: Z) k7 k+ K% _
6、当只有LED6亮起时,单片机各GPIO的状态如下:
; Y9 w8 N7 E8 a( a# j

fk500fxwzqn64053873100.png

fk500fxwzqn64053873100.png
# S. ]% a3 K5 H# L" d8 T: ^
整理如下:7 K& P+ L# d: z, d

n12k2fnc2db64053873200.png

n12k2fnc2db64053873200.png
6 V( p! ?! Y% J
就是这么简单!二、总结提升以上其实是用了一种叫“查理复用”(Charlieplex)的方法。为什么叫查理复用?
0 I1 ]+ w+ C, h1 X6 ~: [

1qdjavaerdj64053873300.jpg

1qdjavaerdj64053873300.jpg

  E2 V; S4 z0 J9 K7 x  I9 Y# H很简单,因为这个方法来源于美信半导体公司的工程师Charlie Allen。查理复用是一种能够在驱动LED,特别是驱动大量LED时有效地节约GPIO的方法。使用该方法,n个GPIO可以驱动 n*(n-1) 个LED,所以:使用2个GPIO可以驱动2个LED。使用3个GPIO可以驱动6个LED。使用4个GPIO可以驱动12个LED。以此类推。这种方式能够实现的基础是:单片机GPIO的三个状态:高电平、低电平、高阻态。LED具有单向导电性。查理复用设计的方法:任意两个GPIO引脚之间串入两个LED,这两个LED为并联,且LED方向相反。当你想要点亮某个特定的LED时,就将其两端所连接到的GPIO引脚分别设定为高电平和低电平,其它剩余的GPIO引脚设定为高阻态。前面电动牙刷中6个LED灯的电路,就是这么设计的。下面从最简单的开始,一步一步体会查理复用的电路设计。1、使用2个GPIO时最简单:% {% q9 _* ^+ N' U

djf4cdqy1al64053873400.png

djf4cdqy1al64053873400.png
" |9 G  T* b8 u4 \' G
LED1亮起时:' Q7 `0 [  }" h( C) E3 N2 }

jncdp2o5bh164053873500.png

jncdp2o5bh164053873500.png

7 }% [0 K  b4 m6 @LED2亮起时:
& g3 ~4 I) m& O1 }8 x9 e+ m7 I

grme3jykqh364053873600.png

grme3jykqh364053873600.png

8 U( L; a' `5 F; _. X; ^, g这里只用到高电平、低电平的状态,不需要用高阻态的状态。2、使用3个GPIO时,前面已经分析过:7 {1 x. o+ e: U1 }& ]
! B3 g+ K% z/ C5 y
可以等效为下图:" a4 O, D' O$ W' z" q9 r3 ]

jza5fglazbu64053873700.png

jza5fglazbu64053873700.png
  Y6 ?) J/ x0 q  f
可以看出,确实是任意两个GPIO之间均串入了两个并联的LED,且LED方向相反。3、同样的原理,使用4个GPIO时:
+ o0 l( J3 B/ n/ r3 R

youu4312ney64053873800.png

youu4312ney64053873800.png

; f5 l- j% d2 A! n! U/ D点亮LED1时:
# M/ v$ {& x; l8 S9 P; J$ f6 ?5 V6 c, e& q6 \) p3 z: q% Z5 D( _
其他LED亮起的情况不再列举。查理复用这样的电路接法也会引发一些问题。首先,LED亮起时完全由单片机的GPIO输出电流,所以对于GPIO的电流驱动能力有一定的要求。设计电路时要注意查询自己使用的MCU的电流驱动能力,下图是STM32单片机中对GPIO电流驱动能力的说明:
& |: c- ~4 T. F- O
3 c$ _# `  |- @1 V+ S( ^7 {其次,如果出现了某个LED开路或短路的情况,电流的流向会被打乱,LED亮起来的逻辑会变得错乱。最坏的情况下,电路会对GPIO索取大电流,导致单片机损坏。下图是假设LED1短路,那么在点亮LED5时,LED3也会亮起:  s/ C9 @& i  j0 B5 `& |
# s0 i# G7 ?+ E- P2 ?7 m* d
三、继续进阶如果要同时亮起两个以上的LED,怎么办?交替点亮他们就行,只要交替切换的速度够快,由于人眼的视觉暂留效应,看起来就是同时亮起的。值得一提的是,如果要同时亮起的LED较多,比如大规模的LED点阵,那么还要注意一些新的问题,颇有门道。 声明:
( a1 t5 G+ D) D% C2 }本文转载自电路啊公众号 ,如涉及作品内容、版权和其它问题,请联系工作人员微(13237418207),我们将在第一时间和您对接删除处理!投稿/招聘/广告/课程合作/资源置换 请加微信:132374182074 V2 T/ n1 j+ z. u4 }: C
                                 
: U2 u# g$ E2 I5 \4 a$ }( u' E6 c' r8 }8 _, u
3 H2 K" p2 j- |/ s7 P. G5 c4 G

# C( {- L) O, d6 n6 d7 U                                                        / P) h+ ?: s3 F& {3 d- y: X
                                                               
7 q3 T0 T5 C! |1 T& j4 {                                                                        5 B3 f4 `* y' J& k% J% W- e; E
                                                                                ; Y0 y0 F, R6 N3 ~9 k9 f# p# j

! a' n& ^/ M! T# r                                                                               
. R; }# m2 g) h& |/ d6 n                                                                                        反激式电源为什么上电最容易烧MOS管?9 ^' t1 D/ g/ d* t4 a' s+ ^# G
                                                                                $ l: S8 R. [2 p7 L+ I3 Y: x. b
                                                                        / M7 |# p: q3 ?, H+ _
                                                                # i% j: Q( Z) H3 E: L4 t4 n2 q  A; c
                                                        * z/ Z3 q/ p* ]" J' O6 z" K" J) ]
                                                ' Q8 k# `4 J1 Z2 e$ M6 s

8 {0 T2 o6 z& m                                                        . u! j0 d; Q, ^( T+ \6 I
                                                                ! L5 o+ i) {' n( A
                                                                       
/ P4 l1 e( w/ z* K+ c                                                                                : [1 y( l: Y: y  \; K3 K
' _. Y4 _5 a' Q8 g4 O
                                                                               
: N( Q( C- U6 F1 }1 d                                                                                        电子电路中“地”的本质特性是什么?4 }9 A5 h6 V$ s- Z' R2 U1 D5 ?: ~- E
                                                                                $ K, C5 r+ I1 H2 o
                                                                        # [" q: l8 i* V
                                                               
- [3 Y3 Y$ _4 f( m5 s# h( G                                                       
( u; _* B8 Q+ C                                               
5 }- V& `; {& I" a9 b; a  v2 O2 O3 M

7 b6 Z0 H: R6 \( T: V6 c# f7 A& L扫码添加客服微信,备注“入群”拉您进凡亿教育官方专属技术微信群,与众位电子技术大神一起交流技术问题及心得~
5 V* M9 _9 M" s! r8 |# x# O分享?? 点赞?? 在看?? “三连”支持!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表