矩陣按鍵原理和BUG

2021-07-27 13:30:25 字數 925 閱讀 2560

當我們的電路有很多按鍵時,一般會採用矩陣方式與微控制器相連來減少對微控制器io的浪費,如下圖方式。

這個電路的原理:

1、比如檢測s13是否按下,微控制器把line4設為輸出,並輸出低電平,而line3、line2、line1設為開路輸入,或輸出高電平,反正只要這三個腳不為低電平就行了。

2、設row1、row2、row3、row4為輸入腳,微控制器去讀row1、row2、row3、row4,如果對應管腳為低,那麼對應按鍵就被按下了,比如row1為低電平,那麼說明s13被按下;row2為高電平,那麼s14沒有被按下,以此類推,就可以檢測該列的按鍵狀態。

3、檢測完line4列的按鍵,然後檢測line3列的按鍵,步驟同1。

由於按鍵存在抖動,一般我們要進行去抖動作,去抖方法有很多,可以自己網上查。

下面說一下這個電路存在的bug,如果你不需要多個按鍵同時按下的話這個電路是沒有問題的,但是如果單獨乙個按鍵按下需要乙個功能,幾個按鍵同時按下又要乙個功能;比如我們鍵盤上面的ctrl + s 為儲存功能,ctrl + alt + delet 為任務管理功能一樣。

而這個電路如果有3個按鍵一起按下那麼就有可能導致誤操作,如下圖:

掃瞄line4列的按鍵時,如果s13、s9、s10同時按下時,line4輸出低電平通過s13傳輸到row1讀到低電平正常。圖上可見,由於s9和s10同時按下,會使row1和row2短路,所以row2也是低電平,由於掃瞄的是line4列的按鍵,所以row1對應s13、row2對應s14、row3對應s15、row4對應s16、此時row2是低電平所以會認為是s14按下了。其他列的也一樣,所以大家要注意這個問題。

按鍵原理和軟硬體按鍵消抖動

系統的訊號輸入中,鍵盤因其結構簡單而被廣泛使用。因此,對鍵盤的輸入 邏輯0或1 進行準確取樣,避免錯誤輸入是非常有必要的。理想的鍵盤輸入特性如圖1所示 按鍵沒有按下時,輸入為邏輯1,一旦按下則輸入立刻變為邏輯0,鬆開時輸入則立刻變為邏輯1。圖 1理想鍵盤輸入特性 然而實際的鍵盤受製造工藝等影響,其輸...

矩陣鍵盤 按鍵檢測 按鍵次數檢測

在進行矩陣按鍵檢測的時候,對於51微控制器來說,由於io輸出電流較小,驅動能力不足,若用乙個a號io口去檢測b號io口,無論b口高電平還是低電平,a口皆是低電平 若a口置高,可用來檢測b口的低電平。io.h檔案 ifndef matrix h define matrix h include stc1...

六 矩陣按鍵(4 4)

矩陣鍵盤 掃瞄法 例程 功能 按下按鍵 數碼管顯示 0 1 2 3 4 5 6 7 8 9 a b c d e f include sbit fmq p3 6 char duan 0123456789abcdef void delayms unsigned int i void delay500us...