微控制器 矩陣鍵盤實現列掃瞄,數碼管輸出0 F

2021-10-24 13:25:50 字數 1471 閱讀 7227

列掃瞄法類似行掃瞄法:話不多說,如下!

矩陣鍵盤如下圖:

列掃瞄涉及到與運算:與運算符號為& ,計算規則是:有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 大迴圈不停的掃瞄鍵盤是...