本應用筆記詳細介紹了如何將MAX6954和MAX6955 LED顯示驅動器的按鍵掃描功能從32個按鍵擴展至多達80個按鍵。
MAX6954/MAX6955為4線和2線串行接口LED驅動器,可控制多達7段、14段和16段LED數字或16x8 LED陣列。該驅動程序還包括五個 I/O 擴展器 (GPIO) 端口,以及用于使用部分或全部這些端口自動掃描和去抖動多達 32 個按鍵開關的邏輯。此邏輯的一個可選功能是通過中斷輸出引腳提醒系統處理器密鑰去抖動。本文所述的技術通過增加二極管,將MAX6954/MAX6955的能力從32個增加到80個或更多鍵。
P0 |
P1 | P2 | P3 |
P0 |
LED Output O0 | SW A1 | SW B1 | SW C1 | LED Output O0 |
LED Output O1 | SW A2 | SW B2 | SW C2 | LED Output O1 |
LED Output O2 | SW A3 | SW B3 | SW C3 | LED Output O2 |
LED Output O3 | SW A4 | SW B4 | SW C4 | LED Output O3 |
LED Output O4 | SW A5 | SW B5 | SW C5 | LED Output O4 |
LED Output O5 | SW A6 | SW B6 | SW C6 | LED Output O5 |
LED Output O6 | SW A7 | SW B7 | SW C7 | LED Output O6 |
LED Output O7 | SW A8 | SW B8 | SW C8 | LED Output O7 |
圖1.MAX6954/MAX6955的標準32鍵連接。
表1和圖1所示為MAX6954/MAX6955的標準按鍵開關連接。按鍵開關電路讀取 32 個按鍵,這些按鍵以 4 x 8 矩陣(四列,八行)組織。八個按鍵矩陣行由八個 LED 陰極驅動輸出(LED 輸出 O0 到 LED 輸出 O7)驅動。這些 LED 陰極驅動輸出交替變為低電平 320μs (標稱),并作為多路復用 LED 驅動器的一部分按順序驅動其 LED。這些驅動輸出還用于將兩個按鍵開關的一端拉低。按鍵的另一端連接四個輸入引腳(P0-P3),在MAX6954/MAX6955內部上拉至V+。如果按下開關,P0、P1、P2或P3被適當的LED輸出Ox輸出拉低,MAX6954/MAX6955檢測并去抖動按鍵。
與開關串聯的二極管可確保在同時按下多個鍵時,兩個或多個 LED 陰極驅動輸出不會短路在一起。例如,如果將 SW A1 和 SW A2 壓在一起,則與按鍵串聯的二極管可防止 LED 輸出 O0 短路至 LED 輸出 O1。這是因為,在任何時候,至少有一個二極管會被反向偏置。通常采用的二極管是采用SOT23的低成本共陽極BAW56。
MAX6954/MAX6955可區分和區分32種可能的按鍵的任意組合。部件中只有足夠的寄存器來提供這 32 個密鑰的狀態。顯然,除了MAX6954/MAX6955設計的32個按鍵之外,沒有辦法擴展這種掃描拓撲。因此,有必要采取另一種更具創造性的方法。
具體來說,我們尋找一個多余的情況來利用。在許多情況下,應用程序只需要檢測是否按下了多個鍵中的一個。通常,設備上的雙鍵按下要么是錯誤的輸入,要么是進入出廠診斷模式的狡猾手段。因此,冗余情況是雙鍵按下。這里建議的創造性方法是使其他鍵看起來好像同時按下了某些鍵對。表 2 和圖 2 中的示例通過組合 P0 和 P1 以及 P2 和 P3 又增加了 16 個鍵。例如,當按下SW AB1時,MAX6954/MAX6955必須同時按下SW A1和SW B1。這種擴展架構運行良好,只要每個原始鍵對(例如 SW A1 和 SW B1)沒有物理上彼此相鄰放置,以避免它們意外地壓在一起。軟件應響應MAX6954/MAX6955去抖周期內的/IRQ鍵輸出,以確保只分析一次按鍵掃描的結果。如果軟件/IRQ響應較慢,則無法區分同時雙擊(識別我們的額外鍵)和相同兩個鍵的順序按鍵。無論哪種情況,密鑰去抖寄存器0x08-0x0B只是顯示為每個密鑰設置的位。
P0 |
P1 | P2 | P3 | P0 & P1 | P2 & P3 |
P0 |
LED Output O0 | SW A1 | SW B1 | SW C1 | SW D1 | SW AB1 | LED Output O0 |
LED Output O1 | SW A2 | SW B2 | SW C2 | SW D2 | SW AB2 | LED Output O1 |
LED Output O2 | SW A3 | SW B3 | SW C3 | SW D3 | SW AB3 | LED Output O2 |
LED Output O3 | SW A4 | SW B4 | SW C4 | SW D4 | SW AB4 | LED Output O3 |
LED Output O4 | SW A5 | SW B5 | SW C5 | SW D5 | SW AB5 | LED Output O4 |
LED Output O5 | SW A6 | SW B6 | SW C6 | SW D6 | SW AB6 | LED Output O5 |
LED Output O6 | SW A7 | SW B7 | SW C7 | SW D7 | SW AB7 | LED Output O6 |
LED Output O7 | SW A8 | SW B8 | SW C8 | SW D8 | SW AB8 | LED Output O7 |
每個額外的鍵都需要一個雙二極管(例如SOT23中的低成本共陰極BAV70),當按下開關時,它將P0和P1拉低,或P2和P3拉低。
圖2.擴展了與MAX6954/MAX6955的48鍵連接。
圖 2、表 2 方案通過組合 P0 和 P1 以及 P2 和 P3 增加了 16 個密鑰。實際上,P0-P3 按鍵掃描輸入還有四種可能的雙鍵組合。如果使用所有六個雙鍵組合,則密鑰計數可以擴展到 80 個交換機,如表 3 所示。圖 3 顯示了 LED 輸出 O0 行的六個額外鍵是如何接線的。同樣,每個額外的按鍵開關都使用一個雙二極管。
P0 |
P1 | P2 | P3 | P0 & P1 | P0 & P2 | P0 & P3 | P1 & P2 | P1 & P3 | P2 & P3 |
P0 |
LED Output O0 | SW A1 | SW B1 | SW C1 | SW D1 | SW AB1 | SW AC1 | SW AD1 | SW BC1 | SW BD1 | LED Output O0 |
LED Output O1 | SW A2 | SW B2 | SW C2 | SW D2 | SW AB2 | SW AC2 | SW AD2 | SW BC2 | SW BD2 | LED Output O1 |
LED Output O2 | SW A3 | SW B3 | SW C3 | SW D3 | SW AB3 | SW AC3 | SW AD3 | SW BC3 | SW BD3 | LED Output O2 |
LED Output O3 | SW A4 | SW B4 | SW C4 | SW D4 | SW AB4 | SW AC4 | SW AD4 | SW BC4 | SW BD4 | LED Output O3 |
LED Output O4 | SW A5 | SW B5 | SW C5 | SW D5 | SW AB5 | SW AC5 | SW AD5 | SW BC5 | SW BD5 | LED Output O4 |
LED Output O5 | SW A6 | SW B6 | SW C6 | SW D6 | SW AB6 | SW AC6 | SW AD6 | SW BC6 | SW BD6 | LED Output O5 |
LED Output O6 | SW A7 | SW B7 | SW C7 | SW D7 | SW AB7 | SW AC7 | SW AD7 | SW BC7 | SW BD7 | LED Output O6 |
LED Output O7 | SW A8 | SW B8 | SW C8 | SW D8 | SW AB8 | SW AC8 | SW AD8 | SW BC8 | SW BD8 | LED Output O7 |
圖3.擴展了與MAX80/MAX6954的6955鍵連接。
但是,為什么要僅限于雙擊鍵來識別額外的鍵呢?可以使用三重和四重組合鍵代替或補充雙鍵按下。表 4 顯示了這些額外的配置。請注意,四個三重組合需要一個三重二極管,而四重組合需要一個四重二極管。
P0 & P1 & P3 |
P0 & P1 & P4 | P0 & P2 & P3 | P1 & P2 & P4 | P0 & P1 & P2 &P3 |
P0 & P1 & P3 |
LED Output O0 | SW ABC1 | SW ABD1 | SW ACD1 | SW BCD1 | LED Output O0 |
LED Output O1 | SW ABC2 | SW ABD2 | SW ACD2 | SW BCD2 | LED Output O1 |
LED Output O2 | SW ABC3 | SW ABD3 | SW ACD3 | SW BCD3 | LED Output O2 |
LED Output O3 | SW ABC4 | SW ABD4 | SW ACD4 | SW BCD4 | LED Output O3 |
LED Output O4 | SW ABC5 | SW ABD5 | SW ACD5 | SW BCD5 | LED Output O4 |
LED Output O5 | SW ABC6 | SW ABD6 | SW ACD6 | SW BCD6 | LED Output O5 |
LED Output O6 | SW ABC7 | SW ABD7 | SW ACD7 | SW BCD7 | LED Output O6 |
LED Output O7 | SW ABC8 | SW ABD8 | SW ACD8 | SW BCD8 | LED Output O7 |
放棄三鍵和四鍵組合是有充分理由的——它們需要更多的二極管。但是,如果應用程序只需要幾個高于 32 鍵限制的額外鍵,則可能需要先考慮這五個鍵。這是因為用戶意外摸索三四個鍵的可能性比兩個鍵更不可能。
注意:討論的每個擴展鍵都經過接線,以模擬同一 LED 陰極驅動輸出(LED 輸出 O0 至 LED 輸出 O7)上的按鍵多次按鍵。通過這種連接,與任何多個按鍵組合關聯的按鍵將同時被掃描和去抖動,因此結果會同時顯示。模擬由不同LED陰極驅動輸出掃描的多次按鍵的額外按鍵將不可靠,因為按鍵不會同時去抖動。
審核編輯:郭婷
-
處理器
+關注
關注
68文章
19286瀏覽量
229854 -
led
+關注
關注
242文章
23277瀏覽量
660898 -
驅動器
+關注
關注
52文章
8237瀏覽量
146370
發布評論請先 登錄
相關推薦
評論