本文將介紹兩個(gè)利用通用輸入/輸出(GPIO)引腳復(fù)用來(lái)減少項(xiàng)目引腳使用的示 例。第一個(gè)示例使用了“查理復(fù)用算法”技術(shù),第二個(gè)示例使用了定時(shí)外設(shè)和中 斷來(lái)快速切換引腳輸入狀態(tài)和輸出狀態(tài),以在驅(qū)動(dòng) LED 的同時(shí)讀取按鍵。
通用輸入/輸出(GPIO)引腳是單片機(jī)設(shè)計(jì)時(shí)的重要考量之一。您需要足夠的引 腳將單片機(jī)連接到設(shè)計(jì)中的所有其他組件;但是,超過(guò)所需的引腳可能會(huì)導(dǎo)致設(shè)計(jì) 成本增加,并且占用電路板上更多空間。此外,減少設(shè)計(jì)中的所需引腳數(shù)量可能就 可以選擇另一種不同的封裝。如果有一種方法可以從較小的封裝中擠出更多的 I/O 引腳就好了!幸運(yùn)的是,我們確實(shí)有方法可以在這種情況下釋放引腳。
下面是 Microchip 應(yīng)用團(tuán)隊(duì)使用 AVR DD 系列單片機(jī)創(chuàng)建的兩個(gè)示例。首先, 我們將探討通過(guò)一種稱為“查理復(fù)用算法”的技術(shù)復(fù)用 GPIO 引腳來(lái)控制 LED。接 下來(lái),我們將看一下如何使用單個(gè)引腳同時(shí)運(yùn)行獨(dú)立的按鍵和 LED。
查理復(fù)用算法的核心思想是利用單片機(jī)引腳可以處于的三種狀態(tài):數(shù)字高電平、 數(shù)字低電平和高阻抗數(shù)字輸入狀態(tài)(也稱為高阻態(tài)或三態(tài))。通過(guò)使用這三種狀態(tài) 而不僅僅是典型的高電平和低電平,用戶可以使用 n 個(gè)引腳驅(qū)動(dòng)最多(n2 -n)個(gè)獨(dú)立的 LED。在此示例中,三個(gè)指定的引腳可以驅(qū)動(dòng)六個(gè)獨(dú)立的 LED。
那么查理復(fù)用算法的工作原理到底是什么呢?為了理解這一點(diǎn),我們需要看一 個(gè)示例。
這里我們用三個(gè) I/O 引腳驅(qū)動(dòng)六個(gè) LED。
如果我們只想導(dǎo)通 LED1,則需要將 PA2 設(shè)為高電平,PA3 設(shè)為低電平,PA4 設(shè)為高阻態(tài)。電流將流過(guò) LED1 并使其導(dǎo)通,同時(shí)使所有其他 LED 保持關(guān)斷狀態(tài)。
這里的三態(tài)十分重要,因?yàn)槿绻?PA4 為“低電平”,它也會(huì)意外導(dǎo)通 LED5。 如下面所示:
高阻抗邏輯狀態(tài)確保電流只流過(guò) LED1。利用 I/O 引腳狀態(tài)的相應(yīng)組合(要獲得 預(yù)期行為,用戶必須將一個(gè)引腳設(shè)為高電平、一個(gè)引腳設(shè)為低電平,其余引腳設(shè)為 高阻抗),可以為電路中的任何 LED 重復(fù)此過(guò)程。
雖然在任意給定時(shí)刻這種方法只會(huì)點(diǎn)亮一個(gè) LED,但是快速改變 I/O 狀態(tài)可創(chuàng) 造出點(diǎn)亮多個(gè) LED 的錯(cuò)覺(jué)。(LED 調(diào)光的工作原理是通過(guò)在單個(gè) LED 上使用脈沖 寬度調(diào)制,原理與此非常相似)。可以在下面看到:(點(diǎn)擊圖片查看動(dòng)態(tài)效果)
第二個(gè)示例涉及到在單個(gè)引腳上改動(dòng)一個(gè) LED 和一個(gè)按鍵。
從有利的角度看,可利用中斷和定時(shí)器來(lái)實(shí)現(xiàn)此目的。單片機(jī)引腳大部分時(shí)間 都在驅(qū)動(dòng) LED。然而,一個(gè)定時(shí)外設(shè)會(huì)定期在單片機(jī)內(nèi)部觸發(fā)中斷,將引腳從輸出 快速切換為輸入,然后檢查按鍵的狀態(tài)。雖然這會(huì)暫時(shí)停止驅(qū)動(dòng) LED,但如果這個(gè) 過(guò)程可以做得足夠快,那么在檢查按鈕狀態(tài)的時(shí)候,對(duì) LED 造成的影響幾乎不可見(jiàn)。 我們?cè)谙旅娴氖纠惺褂昧诉@種方法。單片機(jī)不停地驅(qū)動(dòng)一個(gè)閃爍的 LED,同 時(shí)定期檢查按鍵,如果按鍵被按下,就會(huì)點(diǎn)亮一個(gè)單獨(dú)的 LED。
盡管本文章只涵蓋了這兩種技術(shù)的基礎(chǔ)知識(shí),但我們的 Microchip 應(yīng)用團(tuán)隊(duì)發(fā)布 的相應(yīng) GitHub 頁(yè)面包含了圖表、示例代碼和更詳細(xì)的說(shuō)明。請(qǐng)?jiān)L問(wèn)該頁(yè)面或我們 的 AVR DD 產(chǎn)品系列頁(yè)面來(lái)了解更多信息。
來(lái)源: Microchip微芯
審核編輯:湯梓紅
-
led
+關(guān)注
關(guān)注
242文章
23786瀏覽量
672489 -
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44961瀏覽量
648878 -
引腳
+關(guān)注
關(guān)注
16文章
1663瀏覽量
52609 -
GPIO
+關(guān)注
關(guān)注
16文章
1279瀏覽量
53822
發(fā)布評(píng)論請(qǐng)先 登錄
單片機(jī)引腳共用問(wèn)題
8個(gè)引腳的51內(nèi)核單片機(jī)
介紹51系列單片機(jī)的引腳功能
at89s52單片機(jī)引腳圖,at89s52引腳說(shuō)明

at89c52單片機(jī)引腳說(shuō)明,AT89C52高性能8位單片機(jī)

單片機(jī)引腳,單片機(jī)引腳是什么意思

8位51單片機(jī)系列引腳功能說(shuō)明

單片機(jī)的引腳圖及引腳功能_單片機(jī)簡(jiǎn)易編程

8位單片機(jī)和32位單片機(jī)的應(yīng)用
stm32單片機(jī)引腳介紹及功能
詳解51系列單片機(jī)引腳及功能

評(píng)論