矩陣按鍵掃瞄電路

2021-05-25 11:49:55 字數 1212 閱讀 9461

說到鍵盤掃瞄,相信大多數人第一反應就是行列矩陣掃瞄,這樣我們可以用相對有限的io口得到盡可能多的按鍵。鍵盤掃瞄是微控制器技術的一種基本處理方法,學校的微控制器課程都會有相應章節進行闡述,只要按照課本上講述的方法,一般都能設計出比較可靠的鍵盤掃瞄電路與程式。

課本上的鍵盤掃瞄方法(見下圖接法二)不能說是盡善盡美,從易懂性、成本、程式難易程度等方面綜合看應該是不錯的方法,給人感覺是已經沒有太多的改善空間,至少我是這麼認為的。

然而前段時間一位台灣朋友畫給我的鍵盤掃瞄矩陣電路(見下圖接法二),讓我又一次看到到自己的思維還有許多地方被自己的所謂「經驗」束縛著。

單純的從硬體接法看,兩種接法並沒有明顯區別,接法一甚至要複雜一些,但如果結合到鍵盤掃瞄的程式來看,就會發現接法一確實更好。

兩種接法我都沒有把上拉電阻包含進來,來讓我們看一下兩種接法到底有什麼不同:

接法二(教材

):我們熟悉的傳統掃鍵處理電路,假定鍵盤行列io口標號分別為h1/h2/h3和v1/v2/v3,掃鍵流程通常如下。

2.1. h1設定為輸出,h2/h3和v1/v2/v3設定為輸入

2.2. h1分別輸出1和0,讀v1/v2/v3狀態,如果vy狀態與h1一致,則認為h1與vy交叉位置的鍵按下

2.3. h2設定為輸出,h1/h3和v1/v2/v3設定為輸入

2.4. h2分別輸出1和0,讀v1/v2/v3狀態,如果vy狀態與h2一致,則認為h2與vy交叉位置的鍵按下

2.5. h3設定為輸出,h1/h2和v1/v2/v3設定為輸入

2.6. h3分別輸出1和0,讀v1/v2/v3狀態,如果vy狀態與h3一致,則認為h3與vy交叉位置的鍵按下

接法一:

新掃鍵處理電路,假定鍵盤行列io口標號分別為h1/h2/h3和v1/v2/v3,掃鍵流程通常如下。

1.1. h1/h2/h3和v1/v2/v3都設定為輸入

1.2. 讀h1/h2/h3和v1/v2/v3狀態,如果hx和vy讀到的狀態均為0,則認為hx與vy交叉位置的鍵按下

從上面流程可以看出接法一的程式**要簡單不少,既能減少掃鍵的**量,又能加快掃鍵處理的時間,站在軟體的角度看確實要比接法二要好。後來我反思了一下為什麼我們教材上的傳統處理方法沒有採用接法一,雖然接法一軟體上要簡單一些,但硬體布局要複雜,傳統的按鍵只有兩條接線,接法一需要三條接線,所以用傳統的按鍵是無法實現的,但現在許多電子產品的按鍵都用導電橡膠或鍋仔片來實現,所以接法已變得可行。

注:這兩種電路對於同時按鍵達到3個的情況都有可能形成錯誤的按鍵邏輯。

矩陣按鍵掃瞄的疑惑與解答

最近在學習金沙灘宋老師的微控制器,說實話學著是比較吃力,但是不後悔!老師交給的絕不是僅僅只是 魚 發現自己的學習態度以及嚴謹程度,真的和一些前輩比起相差甚遠。下面摘自一位名為 商道 的群友的學習總結,共勉 關於矩陣按鍵掃瞄消抖的解釋 教材第8章 矩陣按鍵掃瞄例題8.4.5 教材116頁第8章 矩陣按...

按鍵掃瞄處理

按鍵處理 微控制器書本上對於鍵盤處理往往都給出了幾種不同的方案,但是在乙個實際的系統應用中,往往用起來感覺不是很好。主要的弊端就是實時性不好。無論是採用中斷方式還是採用掃瞄方式,實行性都不能很好的達到要求。對於鍵盤,大家都知道有抖動,最最常用的消除抖動的方法就是用軟體消抖。但是書本上的軟體消抖基本都...

按鍵掃瞄處理

按鍵處理 微控制器書本上對於鍵盤處理往往都給出了幾種不同的方案,但是在乙個實際的系統應用中,往往用起來感覺不是很好。主要的弊端就是實時性不好。無論是採用中斷方式還是採用掃瞄方式,實行性都不能很好的達到要求。對於鍵盤,大家都知道有抖動,最最常用的消除抖動的方法就是用軟體消抖。但是書本上的軟體消抖基本都...