對(duì)于只需要不到鍵盤或數(shù)字鍵盤的應(yīng)用,這個(gè)簡(jiǎn)單的電路使用單個(gè)多通道1-Wire可尋址開(kāi)關(guān)(DS2408)和幾個(gè)外部元件來(lái)監(jiān)視多個(gè)按鈕開(kāi)關(guān)。
鍵盤和數(shù)字小鍵盤通常為電子設(shè)備提供用戶界面,但許多應(yīng)用只需要少量按鈕。對(duì)于這些,您可以通過(guò)一對(duì)電線監(jiān)控多個(gè)按鈕(圖1)。
圖1.該電路連接到微控制器,僅使用兩根電線即可監(jiān)控8個(gè)按鈕。
多通道、1-Wire可尋址開(kāi)關(guān)(U1、DS2408)提供輸入/輸出端口P0–P7,在本應(yīng)用中用作輸入。高值電阻器(R帕金森)將這些端口接地以確保定義的邏輯狀態(tài)(0),D1–C1形成本地電源,從1-Wire通信線路竊取能量。當(dāng)您按下按鈕時(shí),它將相應(yīng)的端口連接到本地電源電壓,相當(dāng)于邏輯1。這種狀態(tài)變化設(shè)置端口的活動(dòng)鎖存器(參見(jiàn)數(shù)據(jù)手冊(cè))。
條件搜索輪詢
作為1-Wire從器件,U1不啟動(dòng)通信。相反,主機(jī)(通常為微控制器)輪詢1-Wire線路。為了最大限度地降低開(kāi)銷,U1支持稱為“條件搜索”的1-Wire網(wǎng)絡(luò)功能。但是,在使用該功能之前,必須根據(jù)應(yīng)用程序的需要配置 U1。這包括定義合格輸入端口(通道選擇),指定合格端口的極性(通道極性選擇),在端口的引腳或活動(dòng)鎖存器之間進(jìn)行選擇,以及指定設(shè)備是響應(yīng)單個(gè)端口的活動(dòng)(OR)還是所有端口的活動(dòng)(AND)。
配置示例
例如,如果八個(gè)端口中的任何一個(gè)檢測(cè)到活動(dòng),則考慮 U1 將執(zhí)行條件搜索。此條件需要以下配置設(shè)置:通道選擇掩碼(地址 008Bh)= 11111111b(1 表示選擇了端口);通道極性選擇寄存器(地址008Ch)= 11111111b(1表示電平必須高);控制/狀態(tài)寄存器(地址 008Dh) = 00000001b(選擇端口的活動(dòng)鎖存器作為源,并指定 OR 作為條件搜索詞,即單個(gè)端口上的活動(dòng))。
上電后,必須使用寫入條件搜索寄存器命令將配置數(shù)據(jù)加載到 U1 中。要用作輸入,PIO 輸出鎖存器必須設(shè)置為 1。通道訪問(wèn)寫入命令(以 FFh 作為 PIO 輸出數(shù)據(jù)字節(jié))將端口定義為輸入。隨后,“重置活動(dòng)閂鎖”命令的發(fā)出將完成配置。U1 現(xiàn)在已準(zhǔn)備好處理按鈕活動(dòng)。
軟件大綱
配置U1后,上電時(shí)的應(yīng)用軟件進(jìn)入無(wú)限循環(huán),其中1-Wire復(fù)位后跟條件搜索命令。如果沒(méi)有按鈕活動(dòng),則 U1 沒(méi)有響應(yīng),如條件搜索命令代碼后面的兩個(gè)位的“邏輯 1”所示。在這種情況下,微控制器取消條件搜索并重新開(kāi)始。
如果 U1 響應(yīng)條件搜索,則前兩位將為 1 和 0,以真形式和反轉(zhuǎn)形式表示設(shè)備家族代碼 (29h) 的最低有效位。在這種情況下,微控制器應(yīng)完成條件搜索流程,該流程由192位序列組成(參見(jiàn)數(shù)據(jù)手冊(cè))。接下來(lái),微控制器通過(guò)使用PIO活動(dòng)鎖存器狀態(tài)寄存器的地址(地址008Ah)發(fā)出讀取PIO寄存器命令來(lái)讀取寄存器的數(shù)據(jù)。然后,微控制器發(fā)出1-Wire復(fù)位,然后發(fā)出恢復(fù)和復(fù)位活動(dòng)鎖存器命令。然后,它返回到無(wú)限循環(huán),輪詢下一個(gè)按鈕事件。
如果U1響應(yīng)且未連接其他1-Wire從機(jī),微控制器可在讀取前2位后取消條件搜索,發(fā)出1-Wire復(fù)位,然后發(fā)出Skip ROM命令,然后讀取PIO活動(dòng)鎖存器狀態(tài)寄存器。接下來(lái),它必須發(fā)出1-Wire復(fù)位,然后發(fā)出跳過(guò)ROM和復(fù)位活動(dòng)鎖存器命令,然后返回?zé)o限循環(huán)。
按下了哪個(gè)按鈕?
從PIO活動(dòng)鎖存器狀態(tài)寄存器讀取的代碼包含答案。如果按下 PB1,則數(shù)據(jù)為 00000001b,對(duì)于 PB2,數(shù)據(jù)為 00000010b,依此類推。8 位中至少有一個(gè)為 1。如果自上次“重置活動(dòng)閂鎖”命令以來(lái)按下了多個(gè)按鈕,則幾個(gè)位將為 1。然后,應(yīng)用軟件必須決定此類條件是否有效。 (在最簡(jiǎn)單的情況下(8 個(gè)代碼中的 1 個(gè)),軟件會(huì)將所有設(shè)置了多個(gè)位的代碼視為無(wú)效。
超過(guò) 8 個(gè)按鈕
這個(gè)概念可以擴(kuò)展到8個(gè)以上的按鈕。您可以將其他按鈕與同時(shí)激活的兩個(gè)端口相關(guān)聯(lián),而不是將一個(gè)按鈕與一個(gè)端口相關(guān)聯(lián)(2/8 代碼)。這些附加按鈕 (PBn) 的連接如圖 2 所示(x, y = 0 到 7, x ≠ y)。如果 Px 或 Py 被另一個(gè)按鈕激活,二極管會(huì)阻止該活動(dòng)傳播到其他端口。同樣,應(yīng)用軟件必須檢查從PIO活動(dòng)鎖存器狀態(tài)寄存器讀取的代碼,以確定其是否有效。這個(gè)概念的理論極限是 255 個(gè)按鈕,每個(gè)額外的按鈕需要組合 2、3、4、5、6、7 或 8 個(gè)二極管。當(dāng)每增加一個(gè)按鈕的二極管成本開(kāi)始超過(guò)收益時(shí),你會(huì)發(fā)現(xiàn)再增加一個(gè)DS2408更具成本效益。
圖2.如果使用二極管將其他按鈕(最多 28 個(gè))連接到兩個(gè)端口,則可以對(duì)其進(jìn)行監(jiān)控。
審核編輯:郭婷
-
電源
+關(guān)注
關(guān)注
185文章
18248瀏覽量
254863 -
電阻器
+關(guān)注
關(guān)注
21文章
4014瀏覽量
63223 -
鎖存器
+關(guān)注
關(guān)注
8文章
922瀏覽量
42089
發(fā)布評(píng)論請(qǐng)先 登錄
兩根線重疊繞制的共模電感和兩根線各自占磁環(huán)一邊繞制的共模電感效果有什么區(qū)別
請(qǐng)問(wèn)485通訊中能把多個(gè)通訊設(shè)備直接并聯(lián)在A,B兩根線上嗎?
如何去接外接制動(dòng)電阻的兩根線
耳機(jī)子兩根線斷了有沒(méi)有正負(fù)
四線直流碳刷電機(jī)轉(zhuǎn)子兩根線定子的兩根線怎么接才能轉(zhuǎn)呢?
不是兩根內(nèi)存就能實(shí)現(xiàn)雙通道
為什么兩根相線之間的電壓是380V

溫度傳感器兩根線怎么接線 溫度傳感器兩根線與三根線的區(qū)別

評(píng)論