MCU連接DIP 開(kāi)關(guān) 掌握這幾個(gè)知識點(diǎn)是關(guān)鍵!
問(wèn):DIP 開(kāi)關(guān)與單片機 MCU接口的基本原理
本文引用地址:http://dyxdggzs.com/article/202401/454473.htm將單片機 (微控制器) 連接到雙列直插式封裝( DIP ) 開(kāi)關(guān)是一種常見(jiàn)的應用。俗稱(chēng) “DIP” 的開(kāi)關(guān)可用于各種設計,從適合面包板原型設計的傳統 DIP 到表面貼裝“鋼琴”型,再到易于讀取十六進(jìn)制值的旋轉開(kāi)關(guān)。
在這篇文章中,我們將仔細研究旋轉開(kāi)關(guān),并探索如何將其集成到我們的單片機設計中。本文中介紹的技術(shù)一般適用于所有單片機設計。
從規則開(kāi)始
讓我們從一個(gè)簡(jiǎn)單的規則開(kāi)始:不允許浮動(dòng)輸入 。當單片機引腳被配置為輸入,但在其他情況下未連接時(shí),就會(huì )出現浮動(dòng)輸入。這里展示了一個(gè)例子。當開(kāi)關(guān)閉合時(shí),關(guān)聯(lián)引腳被綁在正軌上。當開(kāi)關(guān)打開(kāi)時(shí),引腳是浮動(dòng)的。
這是非常不希望的,因為浮動(dòng)引腳可能被解釋為邏輯高,或者在其他時(shí)候,邏輯低。從故障排除的角度來(lái)看,單片機的響應將沒(méi)有任何韻律或原因。引腳容易受到噪聲的影響,并且通常會(huì )松散地遵循相鄰單片機引腳的值。
解決方法是增加一個(gè)下拉電阻,如下圖所示。有了這個(gè)小小的變化,當開(kāi)關(guān)閉合時(shí),單片機的引腳就會(huì )向上拉到導軌上,或者當開(kāi)關(guān)打開(kāi)時(shí),它就會(huì )向下拉到地上。暫時(shí)忽略開(kāi)關(guān)彈跳,單片機將有一個(gè)干凈的輸入。
優(yōu)化解決方案
現代單片機就是為這種類(lèi)型的接口而設計的。幾乎所有的單片機都具有 I/O 部分,其內部電阻可以向上拉或向下拉 I/O 引腳。這是可取的,因為開(kāi)關(guān)可以直接連接到單片機,從而消除了外部電阻器的需要。
技術(shù)小貼士 :
一些單片機具有上拉和下拉電阻。其他將只有一種類(lèi)型,與上拉配置更常見(jiàn)。這些外設通常被稱(chēng)為“弱上拉”,消耗數十到數百u(mài)A。這相當于連接一個(gè)值在15 kΩ到150 kΩ之間的外部拉電阻。
Arduino的一個(gè)例子是:
pinMode (SW_PIN_D0 INPUT_PULLUP);
該原理圖給出了單片機與開(kāi)關(guān)接口的一種方式。雖然本例采用旋轉 DIP 開(kāi)關(guān),但該設計適用于所有開(kāi)關(guān)。觀(guān)察:
■ 內部上拉電阻使用單片機的特殊功能寄存器啟用
■ 開(kāi)關(guān)的公共元件連接到地
技術(shù)小貼士 :
原理圖中顯示了一個(gè)可選的串聯(lián)電阻以及可選的多路復用部分。這允許 I/O 引腳執行雙重任務(wù)。例如,這個(gè)小口寬的接口可以用來(lái)讀取開(kāi)關(guān),也可以用來(lái)驅動(dòng) LCD 顯示器的 D3 到 D0。這可能是可取的,因為它有可能以犧牲電路和代碼復雜性為代價(jià)減少單片機引腳數和PCB的總體尺寸。
在我們結束之前,讓我們看一下與旋轉 DIP 開(kāi)關(guān)相關(guān)的物理開(kāi)關(guān)代碼。代表性的HEX代碼取自歐姆龍的數據手冊。觀(guān)察 A6A-16R 和 A6A-16C 型號對應的“BCD十六進(jìn)制碼” 和 “BCD十六進(jìn)制補碼” 兩個(gè)開(kāi)關(guān)配置。
回頭看單片機原理圖及其相關(guān)的上拉電阻,我們看到了一個(gè)反轉。例如,當開(kāi)關(guān)處于1位置時(shí),在位置2 + 4 + 8上會(huì )有三個(gè)正邏輯輸入。同時(shí),如果安裝了互補開(kāi)關(guān),則會(huì )有一個(gè)對應于1信號的正邏輯(有源高電平)輸入。
從編程的角度來(lái)看,這個(gè)物理開(kāi)關(guān)代碼中的這種差異是無(wú)關(guān)緊要的。一個(gè)簡(jiǎn)單的 bit 反轉指令就會(huì )使它們相等。從故障排除或教育的角度來(lái)看,互補版本可能更容易理解,因為它導致單片機引腳上存在正邏輯值。
評論