對于只需要不到鍵盤或數字鍵盤的應用,這個簡單的電路使用單個多通道1-Wire可尋址開關(DS2408)和幾個外部元件來監視多個按鈕開關。
鍵盤和數字小鍵盤通常為電子設備提供用戶界面,但許多應用只需要少量按鈕。對于這些,您可以通過一對電線監控多個按鈕(圖1)。
圖1.該電路連接到微控制器,僅使用兩根電線即可監控8個按鈕。
多通道、1-Wire可尋址開關(U1、DS2408)提供輸入/輸出端口P0–P7,在本應用中用作輸入。高值電阻器(R帕金森)將這些端口接地以確保定義的邏輯狀態(0),D1–C1形成本地電源,從1-Wire通信線路竊取能量。當您按下按鈕時,它將相應的端口連接到本地電源電壓,相當于邏輯1。這種狀態變化設置端口的活動鎖存器(參見數據手冊)。
條件搜索輪詢
作為1-Wire從器件,U1不啟動通信。相反,主機(通常為微控制器)輪詢1-Wire線路。為了最大限度地降低開銷,U1支持稱為“條件搜索”的1-Wire網絡功能。但是,在使用該功能之前,必須根據應用程序的需要配置 U1。這包括定義合格輸入端口(通道選擇),指定合格端口的極性(通道極性選擇),在端口的引腳或活動鎖存器之間進行選擇,以及指定設備是響應單個端口的活動(OR)還是所有端口的活動(AND)。
配置示例
例如,如果八個端口中的任何一個檢測到活動,則考慮 U1 將執行條件搜索。此條件需要以下配置設置:通道選擇掩碼(地址 008Bh)= 11111111b(1 表示選擇了端口);通道極性選擇寄存器(地址008Ch)= 11111111b(1表示電平必須高);控制/狀態寄存器(地址 008Dh) = 00000001b(選擇端口的活動鎖存器作為源,并指定 OR 作為條件搜索詞,即單個端口上的活動)。
上電后,必須使用寫入條件搜索寄存器命令將配置數據加載到 U1 中。要用作輸入,PIO 輸出鎖存器必須設置為 1。通道訪問寫入命令(以 FFh 作為 PIO 輸出數據字節)將端口定義為輸入。隨后,“重置活動閂鎖”命令的發出將完成配置。U1 現在已準備好處理按鈕活動。
軟件大綱
配置U1后,上電時的應用軟件進入無限循環,其中1-Wire復位后跟條件搜索命令。如果沒有按鈕活動,則 U1 沒有響應,如條件搜索命令代碼后面的兩個位的“邏輯 1”所示。在這種情況下,微控制器取消條件搜索并重新開始。
如果 U1 響應條件搜索,則前兩位將為 1 和 0,以真形式和反轉形式表示設備家族代碼 (29h) 的最低有效位。在這種情況下,微控制器應完成條件搜索流程,該流程由192位序列組成(參見數據手冊)。接下來,微控制器通過使用PIO活動鎖存器狀態寄存器的地址(地址008Ah)發出讀取PIO寄存器命令來讀取寄存器的數據。然后,微控制器發出1-Wire復位,然后發出恢復和復位活動鎖存器命令。然后,它返回到無限循環,輪詢下一個按鈕事件。
如果U1響應且未連接其他1-Wire從機,微控制器可在讀取前2位后取消條件搜索,發出1-Wire復位,然后發出Skip ROM命令,然后讀取PIO活動鎖存器狀態寄存器。接下來,它必須發出1-Wire復位,然后發出跳過ROM和復位活動鎖存器命令,然后返回無限循環。
按下了哪個按鈕?
從PIO活動鎖存器狀態寄存器讀取的代碼包含答案。如果按下 PB1,則數據為 00000001b,對于 PB2,數據為 00000010b,依此類推。8 位中至少有一個為 1。如果自上次“重置活動閂鎖”命令以來按下了多個按鈕,則幾個位將為 1。然后,應用軟件必須決定此類條件是否有效。 (在最簡單的情況下(8 個代碼中的 1 個),軟件會將所有設置了多個位的代碼視為無效。
超過 8 個按鈕
這個概念可以擴展到8個以上的按鈕。您可以將其他按鈕與同時激活的兩個端口相關聯,而不是將一個按鈕與一個端口相關聯(2/8 代碼)。這些附加按鈕 (PBn) 的連接如圖 2 所示(x, y = 0 到 7, x ≠ y)。如果 Px 或 Py 被另一個按鈕激活,二極管會阻止該活動傳播到其他端口。同樣,應用軟件必須檢查從PIO活動鎖存器狀態寄存器讀取的代碼,以確定其是否有效。這個概念的理論極限是 255 個按鈕,每個額外的按鈕需要組合 2、3、4、5、6、7 或 8 個二極管。當每增加一個按鈕的二極管成本開始超過收益時,你會發現再增加一個DS2408更具成本效益。
圖2.如果使用二極管將其他按鈕(最多 28 個)連接到兩個端口,則可以對其進行監控。
審核編輯:郭婷
-
電源
+關注
關注
184文章
17841瀏覽量
251813 -
電阻器
+關注
關注
21文章
3803瀏覽量
62342 -
鎖存器
+關注
關注
8文章
908瀏覽量
41645
發布評論請先 登錄
相關推薦
評論