日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用3个IO口控制6个LED灯,怎么做到的?查理复用! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

▲?本文要分析的電路

事情是這樣開始的。

買了個電動牙刷,幾十塊錢那種:

收到的實物長這樣:

牙刷手柄上有1個按鍵和6個LED燈:

拆開看看電路板:

可以看出,電路板上用的單片機,只有8個腳,卻要控制1個按鍵、6個LED燈、1個震動的馬達電機:

初看之下,GPIO應該是不夠用的。

單片機除去電源腳(正極)和GND腳(負極),只剩最多6個GPIO腳。

那么是怎么做到夠用的?

原來,經過巧妙的電路設計,這款電動牙刷實現了用3個GPIO控制6個LED燈,節省了GPIO。

這個巧妙的電路如下:

6個LED燈為相同的型號,為方便查看,用紅綠兩種顏色區分兩種不同的方向。

一、原理分析

這個電路用到了單片機GPIO的三種狀態:

  • 高電平

  • 低電平

  • 高阻態

所謂“高阻態”,是指GPIO對外部電路表現出極大的阻抗。因阻抗很大,幾乎不會吸入電流,也不會對外輸出電流。

各個LED燈單獨亮起,分為六種情況。

1、當只有LED1亮起時,單片機各GPIO的狀態如下:(帶箭頭的紅線為電流回路)

2、當只有LED2亮起時,單片機各GPIO的狀態如下:

3、當只有LED3亮起時,單片機各GPIO的狀態如下:

4、當只有LED4亮起時,單片機各GPIO的狀態如下:

5、當只有LED5亮起時,單片機各GPIO的狀態如下:

6、當只有LED6亮起時,單片機各GPIO的狀態如下:

整理如下:

就是這么簡單!

二、總結提升

以上其實是用了一種叫“查理復用”(Charlieplex)的方法。

為什么叫查理復用?

很簡單,因為這個方法來源于美信半導體公司的工程師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時最簡單:

LED1亮起時:

LED2亮起時:

這里只用到高電平、低電平的狀態,不需要用高阻態的狀態。

2、使用3個GPIO時,前面已經分析過:

可以等效為下圖:

可以看出,確實是任意兩個GPIO之間均串入了兩個并聯的LED,且LED方向相反。

3、同樣的原理,使用4個GPIO時:

點亮LED1時:

其他LED亮起的情況不再列舉。

查理復用這樣的電路接法也會引發一些問題。

首先,LED亮起時完全由單片機的GPIO輸出電流,所以對于GPIO的電流驅動能力有一定的要求。設計電路時要注意查詢自己使用的MCU的電流驅動能力,下圖是STM32單片機中對GPIO電流驅動能力的說明:

其次,如果出現了某個LED開路或短路的情況,電流的流向會被打亂,LED亮起來的邏輯會變得錯亂。最壞的情況下,電路會對GPIO索取大電流,導致單片機損壞。下圖是假設LED1短路,那么在點亮LED5時,LED3也會亮起:

三、繼續進階

如果要同時亮起兩個以上的LED,怎么辦?

交替點亮他們就行,只要交替切換的速度夠快,由于人眼的視覺暫留效應,看起來就是同時亮起的。

值得一提的是,如果要同時亮起的LED較多,比如大規模的LED點陣,那么還要注意一些新的問題,頗有門道。

本文不再展開,感興趣的讀者可以自行查詢修煉,繼續進階。

四、最后

要感謝這款電動牙刷,讓我有機會寫“查理復用”。

只是最近更新又變慢了,畢竟寫公眾號不掙錢,還是努力上班,爭取買個貴的電動牙刷呀!

轉了嗎贊了嗎在看嗎 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的用3个IO口控制6个LED灯,怎么做到的?查理复用!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。