列掃瞄法類似行掃瞄法:話不多說,如下!
矩陣鍵盤如下圖:
列掃瞄涉及到與運算:與運算符號為& ,計算規則是:有0全為0,全1才為1
如:1111
0000 和 1011
0000進行與運算
1111
0000
1011
0000
----
-------
運算結果: 1011
0000
行掃瞄法:假設按下的是3號鍵
第1步:識別鍵盤有無鍵按下
第2步,識別出哪個按鍵被按下。採用逐列掃瞄法,在某一時刻只讓1條列線處於低電平,其餘所有列線處於高電平。
當第1列為低電平,其餘各列為高電平時,因為是3號鍵被按下,
第1行的行線仍處於高電平;當第2列為低電平,其餘各列為高電平時,
第1行的行線仍處於高電平;直到讓第4列為低電平,其餘各列為高電平時,
此時第1行的行線電平變為低電平,據此,可判斷第1行第4列交叉點處的按鍵,即3號鍵被按下。
#include
typedef
unsigned
char u8;
#define key_press p1
//控制p1的口
unsigned
char code smg=
;// 顯示段碼值0~f
unsigned
char
keyscan()
;//列掃瞄函式,返回相應的鍵值
unsigned
char
keypro()
;//根據列掃瞄函式返回的鍵值,確定對應的按鍵,並返回0-15 即0-f
unsigned
char value;
//儲存鍵值
void
delay
(int ms)
//延遲函式
}void
main()
}unsigned
char
keyscan()
key_press=
0xfb
;//掃瞄第二列
if(key_press!=
0xfb)
key_press=
0xfd
;//掃瞄第三列
if(key_press!=
0xfd)
key_press=
0xfe
;//掃瞄第四列
if(key_press!=
0xfe)}
return value;
}unsigned
char
keypro()
}
不對之處望見諒,並指出錯誤 ( ̄︶ ̄)↗ 微控制器 矩陣鍵盤實現行掃瞄,數碼管輸出0 F
行掃瞄法類似列掃瞄法 話不多說!如下 矩陣鍵盤如下圖 行掃瞄涉及到與運算 與運算符號為 計算規則是 有0全為0,全1才為1 如 1111 0000 和 1011 0000進行與運算 1111 0000 1011 0000 運算結果 1011 0000 行掃瞄法 假設按下的是12號鍵 第1步 識別鍵盤...
微控制器驅動數碼管
數碼管的原理?數碼管是分段控制點亮和熄滅的led段,數碼管分為共陽極以及共陰極,共陽極就是說數碼管的led段共乙個電壓正極,共陰極就是說所有的led段共乙個電壓負極。一般方法,乙個io控制公共段,共陽極為例子,給公共段施加乙個正電壓,其餘led段由io分開控制,想顯示多少,只需點亮對應的led段,即...
矩陣鍵盤 數碼管
在沒有數字顯示的開始,順序為矩陣鍵盤後,依次顯示的數碼管0 f,6同時數字控制靜態展示。數字控制和矩陣式鍵盤 首先關閉全部的數碼管的段選不讓數碼管顯示不論什麼數字。然後位選中全部的數碼管,接下來僅僅須要選中全部的數碼管,以後的操作的僅僅須要送段選資料即可了,接著進入while 大迴圈不停的掃瞄鍵盤是...