在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 用3個(gè)IO口控制6個(gè)LED燈,怎么做到的?

            用3個(gè)IO口控制6個(gè)LED燈,怎么做到的?

            作者: 時(shí)間:2024-10-21 來(lái)源:硬件筆記本 收藏

            ▲ 本文要分析的電路


            事情是這樣開始的。

            買了個(gè)電動(dòng)牙刷,幾十塊錢那種:


            收到的實(shí)物長(zhǎng)這樣:


            牙刷手柄上有1個(gè)按鍵和6個(gè)燈:


            拆開看看電路板:


            可以看出,電路板上用的單片機(jī),只有8個(gè)腳,卻要控制1個(gè)按鍵、6個(gè)燈、1個(gè)震動(dòng)的馬達(dá)電機(jī):


            初看之下,GPIO應(yīng)該是不夠用的。

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

            那么是怎么做到夠用的?

            原來(lái),經(jīng)過(guò)巧妙的,這款電動(dòng)牙刷實(shí)現(xiàn)了用3個(gè)GPIO控制6個(gè)燈,節(jié)省了GPIO。


            這個(gè)巧妙的電路如下:


            6個(gè)LED燈為相同的型號(hào),為方便查看,用紅綠兩種顏色區(qū)分兩種不同的方向。


            一、原理分析

            這個(gè)電路用到了單片機(jī)GPIO的三種狀態(tài):

            • 高電平

            • 低電平

            • 高阻態(tài)

            所謂“高阻態(tài)”,是指GPIO對(duì)外部電路表現(xiàn)出極大的阻抗。因阻抗很大,幾乎不會(huì)吸入電流,也不會(huì)對(duì)外輸出電流。

            各個(gè)LED燈單獨(dú)亮起,分為六種情況。

            1、當(dāng)只有LED1亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:(帶箭頭的紅線為電流回路)


            2、當(dāng)只有LED2亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:


            3、當(dāng)只有LED3亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:


            4、當(dāng)只有LED4亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:


            5、當(dāng)只有LED5亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:


            6、當(dāng)只有LED6亮起時(shí),單片機(jī)各GPIO的狀態(tài)如下:


            整理如下:


            就是這么簡(jiǎn)單!


            二、總結(jié)提升

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

            為什么叫查理復(fù)用?


            很簡(jiǎn)單,因?yàn)檫@個(gè)方法來(lái)源于美信半導(dǎo)體公司的工程師Charlie Allen。


            查理復(fù)用是一種能夠在驅(qū)動(dòng)LED,特別是驅(qū)動(dòng)大量LED時(shí)有效地節(jié)約GPIO的方法。

            使用該方法,n個(gè)GPIO可以驅(qū)動(dòng) n*(n-1) 個(gè)LED,所以:

            • 使用2個(gè)GPIO可以驅(qū)動(dòng)2個(gè)LED。

            • 使用3個(gè)GPIO可以驅(qū)動(dòng)6個(gè)LED。

            • 使用4個(gè)GPIO可以驅(qū)動(dòng)12個(gè)LED。

            • 以此類推。

            這種方式能夠?qū)崿F(xiàn)的基礎(chǔ)是:

            • 單片機(jī)GPIO的三個(gè)狀態(tài):高電平、低電平、高阻態(tài)。

            • LED具有單向?qū)щ娦浴?/p>

            查理復(fù)用設(shè)計(jì)的方法:

            • 任意兩個(gè)GPIO引腳之間串入兩個(gè)LED,這兩個(gè)LED為并聯(lián),且LED方向相反。

            • 當(dāng)你想要點(diǎn)亮某個(gè)特定的LED時(shí),就將其兩端所連接到的GPIO引腳分別設(shè)定為高電平和低電平,其它剩余的GPIO引腳設(shè)定為高阻態(tài)。

            • 前面電動(dòng)牙刷中6個(gè)LED燈的電路,就是這么設(shè)計(jì)的。

            下面從最簡(jiǎn)單的開始,一步一步體會(huì)查理復(fù)用的。

            1、使用2個(gè)GPIO時(shí)最簡(jiǎn)單:


            LED1亮起時(shí):


            LED2亮起時(shí):


            這里只用到高電平、低電平的狀態(tài),不需要用高阻態(tài)的狀態(tài)。

            2、使用3個(gè)GPIO時(shí),前面已經(jīng)分析過(guò):


            可以等效為下圖:


            可以看出,確實(shí)是任意兩個(gè)GPIO之間均串入了兩個(gè)并聯(lián)的LED,且LED方向相反。

            3、同樣的原理,使用4個(gè)GPIO時(shí):


            點(diǎn)亮LED1時(shí):


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

            查理復(fù)用這樣的電路接法也會(huì)引發(fā)一些問(wèn)題。

            首先,LED亮起時(shí)完全由單片機(jī)的GPIO輸出電流,所以對(duì)于GPIO的電流驅(qū)動(dòng)能力有一定的要求。設(shè)計(jì)電路時(shí)要注意查詢自己使用的MCU的電流驅(qū)動(dòng)能力,下圖是STM32單片機(jī)中對(duì)GPIO電流驅(qū)動(dòng)能力的說(shuō)明:


            其次,如果出現(xiàn)了某個(gè)LED開路或短路的情況,電流的流向會(huì)被打亂,LED亮起來(lái)的邏輯會(huì)變得錯(cuò)亂。最壞的情況下,電路會(huì)對(duì)GPIO索取大電流,導(dǎo)致單片機(jī)損壞。下圖是假設(shè)LED1短路,那么在點(diǎn)亮LED5時(shí),LED3也會(huì)亮起:


            三、繼續(xù)進(jìn)階

            如果要同時(shí)亮起兩個(gè)以上的LED,怎么辦?

            交替點(diǎn)亮他們就行,只要交替切換的速度夠快,由于人眼的視覺(jué)暫留效應(yīng),看起來(lái)就是同時(shí)亮起的。

            值得一提的是,如果要同時(shí)亮起的LED較多,比如大規(guī)模的LED點(diǎn)陣,那么還要注意一些新的問(wèn)題,頗有門道。




            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉