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

2021-10-24 13:25:50 字數 1452 閱讀 3935

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

矩陣鍵盤如下圖:

行掃瞄涉及到與運算:與運算符號為& ,計算規則是:有0全為0,全1才為1

如:1111

0000 和 1011

0000進行與運算

1111

0000

1011

0000

----

-------

運算結果: 1011

0000

行掃瞄法:假設按下的是12號鍵

第1步:識別鍵盤有無鍵按下

第2步,識別出哪個按鍵被按下。採用逐行掃瞄法,在某一時刻只讓1條行線處於低電平,其餘所有行線處於高電平。

當第1行為低電平,其餘各行為高電平時,因為是鍵3被按下,第1列的列線仍處於高電平;

當第2行為低電平,其餘各行為高電平時,第1行的列線仍處於高電平;直到讓第4行為低電平,

其餘各行為高電平時,此時第1行的列線電平變為低電平,據此,可判斷第4行第1列交叉點處的按鍵,

即12號鍵被按下。

#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=

0xbf

;//掃瞄第二行

if(key_press!=

0xbf)

key_press=

0xdf

;//掃瞄第三行

if(key_press!=

0xdf)

key_press=

0xef

;//掃瞄第四行

if(key_press!=

0xef)}

return value;

}unsigned

char

keypro()

}

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

列掃瞄法類似行掃瞄法 話不多說,如下!矩陣鍵盤如下圖 列掃瞄涉及到與運算 與運算符號為 計算規則是 有0全為0,全1才為1 如 1111 0000 和 1011 0000進行與運算 1111 0000 1011 0000 運算結果 1011 0000 行掃瞄法 假設按下的是3號鍵 第1步 識別鍵盤有...

微控制器驅動數碼管

數碼管的原理?數碼管是分段控制點亮和熄滅的led段,數碼管分為共陽極以及共陰極,共陽極就是說數碼管的led段共乙個電壓正極,共陰極就是說所有的led段共乙個電壓負極。一般方法,乙個io控制公共段,共陽極為例子,給公共段施加乙個正電壓,其餘led段由io分開控制,想顯示多少,只需點亮對應的led段,即...

矩陣鍵盤 數碼管

在沒有數字顯示的開始,順序為矩陣鍵盤後,依次顯示的數碼管0 f,6同時數字控制靜態展示。數字控制和矩陣式鍵盤 首先關閉全部的數碼管的段選不讓數碼管顯示不論什麼數字。然後位選中全部的數碼管,接下來僅僅須要選中全部的數碼管,以後的操作的僅僅須要送段選資料即可了,接著進入while 大迴圈不停的掃瞄鍵盤是...