STC微控制器按鍵掃瞄程式

2021-08-22 09:58:41 字數 1094 閱讀 8151

最近在做乙個電子秤相關專案,使用stc系列微控制器作為主控晶元,專案第一階段直接使用iap15w4k58s4驅動兩個矩陣鍵盤,一切除錯順利,在專案即將結束時老闆要求使用另一塊微控制器驅動矩陣鍵盤,讀取鍵值後通過串列埠傳回之前的iap主控(理由是為了節省從矩陣鍵盤到主控板之間的長排線的成本,16p+10p);ok ,老闆發話了,還能說什麼呢,做唄,於是問題出現了。下面先簡單介紹矩陣鍵盤的檢測原理,然後說一說一些容易遇到的問題。

1.先簡單介紹下矩陣鍵盤的掃瞄原理

對於n*m的矩陣鍵盤(n>=m),我們在編寫程式的過程中,為提高掃瞄效率與降低程式的複雜程度,常設計n為列檢測,m為行掃瞄,對應於程式上的檢測輸入與掃瞄輸出。下圖為矩陣鍵盤的示意圖。

檢測原理:在上圖示意鍵盤中,規定豎向為列,即是p10,p11,p12,p13為列檢測;p14,p15,p16,p17為行掃瞄。沒有按鍵按下是,列檢測為到電平(一般為準雙向io,弱上拉),行掃瞄為低電平輸出。當按鍵s5被按下後,p10與p15接通,p10由高電平變為低電平,微控制器檢測到p10-p13有任何一位被拉低時,認為有按鍵按下,此時程式應記錄下哪一列按鍵被按下(得到按鍵的列座標),然後按序拉高p14-p14,直到p10-p13全為初始狀態(高電平),此時拉高的行即為被按下的按鍵的行座標。例如:s5被按下後,p10為0,得到列座標為1,當p15拉高後,p10-p14均為1,得到行座標為2,最後得到按鍵座標為2行1列--s5。其他按鍵檢測原理相同。

微控制器驅動掃瞄按鍵原理很簡單,但是在實際使用中對不同微控制器的配置有要求,配置不當容易檢測到錯誤的鍵值。一下簡要說明幾個容易遇到的問題。

1.現在市面上的微控制器io基本都有4種標準模式(準雙向io、推挽輸出、開漏輸出、高阻輸入)詳解見:(一般列檢測配置為準雙向io,但準雙向io的輸出為弱上拉啊,拉電流弱,抗干擾性差,所以在列檢測io外部,應外加上拉電阻(10-100k),一確保按鍵的穩定性。

2.在按鍵掃瞄的程式中,由於微控制器程式執行速度快,在檢測按鍵行座標時,拉高對應行後應適當延時,等待io埠穩定後再檢測行輸入是否改變(程式如下)。若不加入延時,會導致因io還沒來得及完全拉高,列檢測程式已經執行完畢,最終導致按鍵動作檢測不到或者誤檢。

微控制器 按鍵掃瞄

按鍵掃瞄,我想應該是比較簡單的微控制器應用了,但是有時候看起來簡單的東西反而不好寫。本文拿大部分人覺得簡單的按鍵掃瞄聊聊我工作至今對於軟體結構的理解。嗯,對的,是結構,不是架構,暫時不敢提架構這個詞。下面說說我個人對於乙個按鍵檢測的 理解。按鍵檢測需要做什麼事情呢?乙個是按鍵按下的這個物理事件的檢測...

51微控制器按鍵掃瞄C程式

大二上學期做過8051微控制器的按鍵程式,當時專案要求實現按鍵控制led屏顯示並且接收gprs傳來的資料。當時為了節省成本,就去大西電子市場買來8 8的led塊,然後自己一點一點的拼接成128 16的。做完之後雖然可以執行,但是很勉強,尤其是按鍵掃瞄程式沒有下面這位哥寫得簡潔縝密,所以就貼過來,以後...

51微控制器按鍵的掃瞄

include sbit addr0 p1 0 sbit addr1 p1 1 sbit addr2 p1 2 sbit addr3 p1 3 sbit enled p1 4 sbit key1 p2 4 sbit key2 p2 5 sbit key3 p2 6 sbit key4 p2 7 un...