<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 使用引腳復用減少8位單片機的引腳使用

使用引腳復用減少8位單片機的引腳使用

作者: 時(shí)間:2023-09-19 來(lái)源:Microchip 收藏

本文將介紹兩個(gè)利用通用輸入/輸出(GPIO)引腳復用來(lái)減少項目引腳使用的示例。第一個(gè)示例使用了“查理復用算法”技術(shù),第二個(gè)示例使用了定時(shí)外設和中斷來(lái)快速切換引腳輸入狀態(tài)和輸出狀態(tài),以在驅動(dòng) LED 的同時(shí)讀取按鍵。

本文引用地址:http://dyxdggzs.com/article/202309/450682.htm

本文將介紹兩個(gè)利用通用輸入/輸出(GPIO)引腳復用來(lái)減少項目引腳使用的示例。第一個(gè)示例使用了“查理復用算法”技術(shù),第二個(gè)示例使用了定時(shí)外設和中斷來(lái)快速切換引腳輸入狀態(tài)和輸出狀態(tài),以在驅動(dòng) LED 的同時(shí)讀取按鍵。
PIC?和 AVR?單片機上的引腳復用
通用輸入/輸出(GPIO)引腳是單片機設計時(shí)的重要考量之一。您需要足夠的引腳將單片機連接到設計中的所有其他組件;但是,超過(guò)所需的引腳可能會(huì )導致設計成本增加,并且占用電路板上更多空間。此外,減少設計中的所需引腳數量可能就可以選擇另一種不同的封裝。如果有一種方法可以從較小的封裝中擠出更多的 I/O引腳就好了!幸運的是,我們確實(shí)有方法可以在這種情況下釋放引腳。
下面是 應用團隊使用 AVR DD 系列單片機創(chuàng )建的兩個(gè)示例。首先,我們將探討通過(guò)一種稱(chēng)為“查理復用算法”的技術(shù)復用 GPIO 引腳來(lái)控制 LED。接下來(lái),我們將看一下如何使用單個(gè)引腳同時(shí)運行獨立的按鍵和 LED。
查理復用算法的核心思想是利用單片機引腳可以處于的三種狀態(tài):數字高電平、數字低電平和高阻抗數字輸入狀態(tài)(也稱(chēng)為高阻態(tài)或三態(tài))。通過(guò)使用這三種狀態(tài)而不僅僅是典型的高電平和低電平,用戶(hù)可以使用 n 個(gè)引腳驅動(dòng)最多(n2-n)個(gè)獨立的LED。在此示例中,三個(gè)指定的引腳可以驅動(dòng)六個(gè)獨立的 LED。
那么查理復用算法的工作原理到底是什么呢?為了理解這一點(diǎn),我們需要看一個(gè)示例。

使用引腳復用減少8位單片機的引腳使用

這里我們用三個(gè) I/O 引腳驅動(dòng)六個(gè) LED。
如果我們只想導通 LED1,則需要將 PA2 設為高電平,PA3 設為低電平,PA4設為高阻態(tài)。電流將流過(guò) LED1 并使其導通,同時(shí)使所有其他 LED 保持關(guān)斷狀態(tài)。

使用引腳復用減少8位單片機的引腳使用

這里的三態(tài)十分重要,因為如果 PA4 為“低電平”,它也會(huì )意外導通 LED5。如下面所示:

使用引腳復用減少8位單片機的引腳使用

高阻抗邏輯狀態(tài)確保電流只流過(guò) LED1。利用 I/O 引腳狀態(tài)的相應組合(要獲得預期行為,用戶(hù)必須將一個(gè)引腳設為高電平、一個(gè)引腳設為低電平,其余引腳設為高阻抗),可以為電路中的任何 LED 重復此過(guò)程。
雖然在任意給定時(shí)刻這種方法只會(huì )點(diǎn)亮一個(gè) LED,但是快速改變 I/O 狀態(tài)可創(chuàng )造出點(diǎn)亮多個(gè) LED 的錯覺(jué)。(LED 調光的工作原理是通過(guò)在單個(gè) LED 上使用脈沖寬度調制,原理與此非常相似)??梢栽谙旅婵吹剑?點(diǎn)擊圖片查看動(dòng)態(tài)效果)

使用引腳復用減少8位單片機的引腳使用

第二個(gè)示例涉及到在單個(gè)引腳上改動(dòng)一個(gè) LED 和一個(gè)按鍵。
從有利的角度看,可利用中斷和定時(shí)器來(lái)實(shí)現此目的。單片機引腳大部分時(shí)間都在驅動(dòng) LED。然而,一個(gè)定時(shí)外設會(huì )定期在單片機內部觸發(fā)中斷,將引腳從輸出快速切換為輸入,然后檢查按鍵的狀態(tài)。雖然這會(huì )暫時(shí)停止驅動(dòng) LED,但如果這個(gè)過(guò)程可以做得足夠快,那么在檢查按鈕狀態(tài)的時(shí)候,對 LED 造成的影響幾乎不可見(jiàn)。
我們在下面的示例中使用了這種方法。單片機不停地驅動(dòng)一個(gè)閃爍的 LED,同時(shí)定期檢查按鍵,如果按鍵被按下,就會(huì )點(diǎn)亮一個(gè)單獨的 LED。(點(diǎn)擊圖片查看動(dòng)態(tài)效果)

使用引腳復用減少8位單片機的引腳使用

盡管本文章只涵蓋了這兩種技術(shù)的基礎知識,但我們的 應用團隊發(fā)布的相應 GitHub 頁(yè)面包含了圖表、示例代碼和更詳細的說(shuō)明。請訪(fǎng)問(wèn)該頁(yè)面或我們的 AVR DD 產(chǎn)品系列頁(yè)面來(lái)了解更多信息。

(作者:Nate Thompson 和 Alexandru Sabiuta)



關(guān)鍵詞: Microchip 8位單片機

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>