很多電子產(chǎn)品有狀態(tài)指示燈,比如電視機:
- 待機狀態(tài)亮紅燈
- 開機狀態(tài)亮綠燈
實現(xiàn)起來很簡單,微控制器MCU的兩個GPIO分別控制就行:
不過資源總是緊張的,有時候會碰到GPIO不夠用的情況。
如果只用1個GPIO,可不可以實現(xiàn)控制兩個LED燈呢?
要實現(xiàn)4種狀態(tài):
- 紅燈亮,綠燈滅
- 紅燈滅,綠燈亮
- 都滅
- 都亮
直接上電路:
一、電路分析
1、紅燈亮,綠燈滅時,GPIO1輸出5V高電平:
2、紅燈滅,綠燈亮時,GPIO1輸出0V低電平:
3、紅燈和綠燈都滅時,GPIO1設為浮空高阻態(tài)。此時由于兩個LED燈總的導通壓降要求大于5V,所以兩個LED燈都不導通。
注意該狀態(tài)可能會出現(xiàn)兩個LED燈因存在漏電流而導致微亮的情況,使用該狀態(tài)務必要做好充分驗證。
也可以將5V供電改為3.3V供電,降低供電電壓后不會出現(xiàn)微亮的情況。此時GPIO的高電平電壓要同步變?yōu)?.3V,LED燈的限流電阻R1、R2也要適當調整大小。
具體的實驗分析請閱讀文章:《用實驗講解:巧用1個GPIO控制2個LED顯示4種狀態(tài)》(點擊閱讀)
4、紅燈和綠燈都亮時,GPIO1交替輸出高低電平。只要高低電平切換的頻率夠高,由于視覺暫留效應,人眼看到的就是兩個燈都常亮。
二、注意事項
使用這個電路時,要注意MCU的GPIO的電流驅動能力。
GPIO能承受的電流要大于LED燈流過的電流。
以下截圖出自STM32芯片的數(shù)據(jù)手冊,它的GPIO可以驅動或吸入8mA的電流。
眼尖的讀者可能會發(fā)現(xiàn),截圖的這個芯片本身不能用5V供電。
這里只是用來示例說明MCU的GPIO有特定的電流驅動能力,要注意查看具體是多大。在外圍電路設計時,注意不要超出MCU的GPIO驅動能力范圍。
至于電壓大小,讀者在理解了上述電路的設計思路后,可以自行改為別的供電電壓,比如3.3V的。
三、總結
“1個GPIO控制2個LED燈顯示4種狀態(tài)”,電路的實現(xiàn)本身很妙。
“1個GPIO控制2個LED燈顯示4種狀態(tài)”,不知下面這位大神是否可以出個絕妙的下聯(lián)。
關于電路的學習,希望大家,enjoy!