電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 33|回復: 0
收起左側(cè)

用3個IO口控制6個LED燈,怎么做到的?查理復用!

[復制鏈接]

660

主題

660

帖子

4567

積分

四級會員

Rank: 4

積分
4567
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-11-28 07:30:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
2 u( d0 D) G' T- ]# W: k: s
▲ 本文要分析的電路
! ~, y* X9 J2 B2 K6 @事情是這樣開始的。買了個電動牙刷,幾十塊錢那種:7 _- y$ x& Q! O6 F
6 d% K. m* E0 P5 W! l8 h! z0 V8 n5 R
收到的實物長這樣:
) \, W. j# t* j* z& e# j1 O
' k8 c! Y: C9 |3 b. A牙刷手柄上有1個按鍵和6個LED燈:
* l' f+ N! }/ y1 _8 {( L) o
) t9 X! s& K8 s4 ^' p% {拆開看看電路板:! V% W5 u/ w6 }/ j+ T* Q
. Z+ q" @- e/ m
可以看出,電路板上用的單片機,只有8個腳,卻要控制1個按鍵、6個LED燈、1個震動的馬達電機:
+ K' X, D5 k3 P% J( E0 ~3 | 6 r$ f& q9 q5 l
初看之下,GPIO應該是不夠用的。單片機除去電源腳(正極)和GND腳(負極),只剩最多6個GPIO腳。那么是怎么做到夠用的?原來,經(jīng)過巧妙的電路設(shè)計,這款電動牙刷實現(xiàn)了用3個GPIO控制6個LED燈,節(jié)省了GPIO。
5 \" ]' O* G7 T8 k; Y, A7 w" s- j 9 Q  S; ^2 X  b
這個巧妙的電路如下:
/ ^0 o& ?/ P4 ?* o4 C3 l  [1 L% S  O
( D8 Q9 D( C# n1 h* s" q1 {6個LED燈為相同的型號,為方便查看,用紅綠兩種顏色區(qū)分兩種不同的方向。一、原理分析這個電路用到了單片機GPIO的三種狀態(tài):高電平低電平高阻態(tài)所謂“高阻態(tài)”,是指GPIO對外部電路表現(xiàn)出極大的阻抗。因阻抗很大,幾乎不會吸入電流,也不會對外輸出電流。各個LED燈單獨亮起,分為六種情況。1、當只有LED1亮起時,單片機各GPIO的狀態(tài)如下:(帶箭頭的紅線為電流回路)
' R% Z& a) `8 s7 X6 t8 \
2 G0 X0 F1 g, a2、當只有LED2亮起時,單片機各GPIO的狀態(tài)如下:
. y6 y) V# b$ c8 R4 S
3 A! }* q4 t1 F3、當只有LED3亮起時,單片機各GPIO的狀態(tài)如下:
$ C2 ?8 h- Q$ w" x
' P# f1 y- d2 H4、當只有LED4亮起時,單片機各GPIO的狀態(tài)如下:' w5 H( r) F, p) @; s

; @# u  d+ k) R2 d, _5、當只有LED5亮起時,單片機各GPIO的狀態(tài)如下:, G1 p; i3 h- O' J
& ~0 K( B7 f# U8 X) L9 }/ J
6、當只有LED6亮起時,單片機各GPIO的狀態(tài)如下:* ~, d1 X$ C6 N2 P0 t4 n+ ~6 ]
! d+ T4 h  j0 \
整理如下:
* v! M1 i) o6 g" @& ?  |' B- g4 ~. N
6 h7 c4 g, I3 r# J就是這么簡單!二、總結(jié)提升以上其實是用了一種叫“查理復用”(Charlieplex)的方法。為什么叫查理復用?1 \$ d& q& J9 I$ k& ?+ ?
4 W0 @' d( {. z, w+ L/ s
很簡單,因為這個方法來源于美信半導體公司的工程師Charlie Allen。查理復用是一種能夠在驅(qū)動LED,特別是驅(qū)動大量LED時有效地節(jié)約GPIO的方法。使用該方法,n個GPIO可以驅(qū)動 n*(n-1) 個LED,所以:使用2個GPIO可以驅(qū)動2個LED。使用3個GPIO可以驅(qū)動6個LED。使用4個GPIO可以驅(qū)動12個LED。以此類推。這種方式能夠?qū)崿F(xiàn)的基礎(chǔ)是:單片機GPIO的三個狀態(tài):高電平、低電平、高阻態(tài)。LED具有單向?qū)щ娦浴?/u>查理復用設(shè)計的方法:任意兩個GPIO引腳之間串入兩個LED,這兩個LED為并聯(lián),且LED方向相反。當你想要點亮某個特定的LED時,就將其兩端所連接到的GPIO引腳分別設(shè)定為高電平和低電平,其它剩余的GPIO引腳設(shè)定為高阻態(tài)。前面電動牙刷中6個LED燈的電路,就是這么設(shè)計的。下面從最簡單的開始,一步一步體會查理復用的電路設(shè)計。1、使用2個GPIO時最簡單:
# m4 z, [2 z, D! N! c/ M6 W' F5 R# E
, ~* V& @' q) j  B" U6 K* c7 O+ E* dLED1亮起時:
+ s5 e. z+ c3 c6 R3 a$ ]  C9 G4 v# E 3 A2 C. Y6 V6 h* j) b- D$ ^
LED2亮起時:
  [* a( \9 r6 f) l3 T7 X
" o3 k0 A( D; {# c1 |這里只用到高電平、低電平的狀態(tài),不需要用高阻態(tài)的狀態(tài)。2、使用3個GPIO時,前面已經(jīng)分析過:
, k6 s/ ?$ G5 T5 l
7 z/ E$ B7 d0 _( v: G可以等效為下圖:) I& ~) ~# H0 z6 Z1 Q$ W

1 @, d* o4 E7 v, b# s, p可以看出,確實是任意兩個GPIO之間均串入了兩個并聯(lián)的LED,且LED方向相反。3、同樣的原理,使用4個GPIO時:  Z" C" G$ `7 C- z' [  T) e
: H/ |) H, ?$ {8 |1 @4 a6 Y
點亮LED1時:% O9 ^7 b# {  C* D  t$ [8 S! p

" y/ q% K; z1 p$ I9 P. c其他LED亮起的情況不再列舉。查理復用這樣的電路接法也會引發(fā)一些問題。首先,LED亮起時完全由單片機的GPIO輸出電流,所以對于GPIO的電流驅(qū)動能力有一定的要求。設(shè)計電路時要注意查詢自己使用的MCU的電流驅(qū)動能力,下圖是STM32單片機中對GPIO電流驅(qū)動能力的說明:6 A# u) a/ V5 T; n$ c% w
! ~; t( x* M/ i
其次,如果出現(xiàn)了某個LED開路或短路的情況,電流的流向會被打亂,LED亮起來的邏輯會變得錯亂。最壞的情況下,電路會對GPIO索取大電流,導致單片機損壞。下圖是假設(shè)LED1短路,那么在點亮LED5時,LED3也會亮起:' q* k( i: W) Z$ z
6 p  Z5 |5 Y. `* N# d7 x9 m# @
三、繼續(xù)進階如果要同時亮起兩個以上的LED,怎么辦?交替點亮他們就行,只要交替切換的速度夠快,由于人眼的視覺暫留效應,看起來就是同時亮起的。值得一提的是,如果要同時亮起的LED較多,比如大規(guī)模的LED點陣,那么還要注意一些新的問題,頗有門道。 聲明:
' t' M5 A* U, P本文轉(zhuǎn)載自電路啊公眾號 ,如涉及作品內(nèi)容、版權(quán)和其它問題,請聯(lián)系工作人員微(13237418207),我們將在第一時間和您對接刪除處理!投稿/招聘/廣告/課程合作/資源置換 請加微信:13237418207
4 p6 [% g" I/ ^( S% ~                                 
: L2 R4 l& x9 |7 [3 U" ]
, `8 G. C0 u5 }" i1 p8 v
1 P' A5 i9 Z" V: H7 U% d
2 l0 p0 r3 j1 ?3 X9 y. }$ D- k) ?                                                        ' _& d" [- g* h5 q! L
                                                               
6 \4 C; Q% L1 E/ A' G                                                                       
! \& y) O/ m# M. @8 J                                                                               
% o' F5 ?5 |9 s- z! A* G! h* Y0 q( s' B
0 |" ~; K6 j( B' @% C% B                                                                               
! j3 K/ H7 D$ m& x3 y                                                                                        反激式電源為什么上電最容易燒MOS管?
1 M& W) X" T' W# f: y5 I                                                                                , i, l& {4 m" i  l. Q! y6 `4 U) f
                                                                        + U( f4 E: l& ?+ \3 ^
                                                                4 O6 k0 R" Z! K, ^( |" J; n4 ?" L
                                                        : U9 q( H; ]" x' U
                                               
: |8 ~; m) H2 J& q% ]- T7 P/ l- v/ ~$ V$ r3 d$ c9 n
                                                       
/ o0 b# _$ a  K' n                                                               
: U+ S/ X) e0 t! `5 t5 P                                                                       
# ?' J* n# u: s: e/ K! j$ `                                                                               
; f' s; w# S4 c) g0 d8 Y6 j; f) j0 n. w. |" \
                                                                               
. u6 r' X! Z( L, y1 m- d3 z                                                                                        電子電路中“地”的本質(zhì)特性是什么?! z5 }; r7 ]: P$ B
                                                                                / i& T+ i" l8 p4 D, j) k8 q
                                                                        # ?: s( h$ F) `
                                                               
8 F% E2 ~5 @. n, {, n: l2 z                                                        . l. ]" E) p" n: y9 |; E/ Y# v
                                               
, c& N! [# V$ f% u
% V# n. I9 ?( G/ }/ e8 E
! {# _% I$ B9 c' a, s# z掃碼添加客服微信,備注“入群”拉您進凡億教育官方專屬技術(shù)微信群,與眾位電子技術(shù)大神一起交流技術(shù)問題及心得~
% {$ Y7 ^  o/ h" v分享?? 點贊?? 在看?? “三連”支持!
回復

使用道具 舉報

發(fā)表回復

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表