在做消費類電子產品設計時,常因單片機的IO不夠驅動LED而發愁,有一種電路利用了單機IO正反推驅動LED,其查理復用算法可讓相同針腳數量的IO口點亮更多LED燈。理論上能達到N個I0口可以驅動 N*(N-1)個LED燈。
今天分享下,只需要5個IO就能驅動188數碼管。其實現原理,利用IO口三態控制及程序編寫控制正反推驅動LED,為了更方便理解后面電路工作原理,咱們由淺入深一步步來,先從簡單的2個IO來說其工作原理吧。
圖一,兩個LED反并聯連接,紅色LED的陽極連接到綠色LED的陰極。

當IO1變為高電平,IO2 變為低電平時,則紅色LED點亮,
當IO1變為低電平,IO2 變為高電平時,則綠色LED點亮。
這個明白后,咱們再加一個IO就能實現3個IO控制4個LED如下圖二。

這個也好理解,如果再升級一下呢,如下圖,MCU僅通過3個端口即可單獨控制6個LED。那么其和IO1、IO2、IO3 都會接入各2個燈。那么如何工作呢?

1.IO1=高電平,IO2=低電平,IO3=高阻態;那么上述中 IO1->LED1->IO2和 IO1->(LED6+LED4)->IO2能各形成一個回路,由于兩路形成并聯,(LED6+LED4)和 LED1是并聯,所以當電壓被鉗位到LED1的點亮電壓(例如2.8v),那么此時就只有 LED1點亮。LED6+LED4無法點亮。

2.IO1=高電平,IO2=高阻態(輸入模式),IO3=0V;IO1->LED6->IO3同理LED6點亮;LED1+LED3 由于并聯;LED6原因電壓被鉗位到比如2.4V,電壓太低不足以點亮(LED1+LED3)2個燈。

3.IO1=高阻態(輸入模式),IO2=高電平,IOP3=低電平;同理LED3點亮。(LED2+LED6)電壓太低不足以點亮2個燈。以此類推,LED4,LED2,LED5點亮同理論。

上面如果你明白了,下面就好理解了,我們知道驅動一個1個8字數碼管需要7個LED如下圖,





對于使用了“查理復用算法”的LED控制電路,程序開發基本思路步驟:
1.初始化所有端口為高阻態:
2.初始化指定LED燈對應的兩個針腳為推挽輸出:
3.設置兩個針腳的高低電平變化:
如是重復 1、2、3步驟即可:
1、LED 顯示頻率
“查理復用” 技術的原理就是每次點亮一個發光二極管,然后再設置點亮另一個,周期重復。(LED二極管是單極性的)但如果頻率足夠快,人眼會認為LED是一直亮著的。每個LED的刷新速率必須大于50HZ。
2、峰電流
“查理復用”當顯示的數量變大,通過LED的平均電流必須(大約)大于一個維持它持續點亮的常數(不是每個MCU都適用),這要求增加相應的電流峰值,這將導致限制了使用“查理復用”顯示數量的問題。如果MCU代碼崩潰,已點亮的LED比傳統的復用處在一個非常大的電壓下,增加了一個危險故障隱患。

3、三態要求.
“查理復用” 要求單片機的IO必須有三態。如果電流足夠低以至于不能直接驅動微控制器的 I/O引腳顯示,但如果必須使用外部狀態,每個三態一般需要兩個輸出線,以控制消除了一個“查理復用”顯示優勢。由于來自微控制器引腳的電流通常僅限于20mA,因此這嚴重限制了一個 “查理復用”顯示的實際功耗。
4、正向電壓的復雜性
“查理復用”矩陣比傳統的復合矩陣明顯更加復雜,無論是在所需的PCB板布局和微控制器編程,這增加了設計時間。當使用不同正向的電壓的顏色LED,可能存在的問題就是我們不期望亮的LED會亮起。原因如下:
紅色 LED:通常是 1.8V->2.2V。黃色 LED:通常是 2.0V->2.4V。
綠色 LED:大概在 2.2V->2.8V。白/藍色 LED:通常是 2.8V->3.5V。

例如我們想點亮 LED1,可以讓IO1=高,IO2=低,IO3=高阻(輸入模式),這樣LED1就亮起來了,但是如果LED1損壞時呢?當電源電壓較高時(例如5V),會形成圖中箭頭所示電流回路,造成LED4+LED5兩只LED被意外點亮,然而用3V電壓為什么沒事呢?因為3V電壓還沒達到大部分LED壓降的兩倍,所以不會導致兩只二極管串聯導通(稱之為二極管連鎖現象)。同時所需的PCB板布局布線更繞。

硬件設計方面:
限流電阻:每個LED或段需串聯電阻,防止過流(通常220Ω~1kΩ)。
二極管特性:LED反向耐壓較低,避免反向電壓(可并聯反向保護二極管)。
引腳電流限制:確保單引腳電流不超過MCU額定值(如20mA/引腳)。
軟件優化方面:
掃描頻率:建議>60Hz(每幀≤16ms),避免閃爍。
消隱處理:防止“鬼影”,切換數碼管時短暫關閉所有段。
低功耗優化:其他空閑時引腳設為高阻態,減少靜態功耗。
常見問題
交叉干擾:因高阻態漏電導致相鄰LED微亮,可通過降低掃描間隔或優化PCB布局加大距離解決。
亮度不均:掃描占空比不一致時,需調整每位數碼管的顯示時間。
驅動能力不足:對于大尺寸數碼管,需增加晶體管或專用驅動芯片(如74HC595)。
Type-c接口PCB設計工程師必看的8個細節
一鍵開機,MOS管軟啟動-解決啟動大電流