矩阵式键盘
矩陣式鍵盤碼值
最近正好學(xué)習(xí)到了矩陣式鍵盤,然而當(dāng)時(shí)的我是這樣的
這是什么東西!!于是當(dāng)我決定向百度求助時(shí),依舊一臉懵,但實(shí)踐出真理嘛。秉持著這個(gè)理念,擼起袖子說(shuō)干就干。
首先,我們要準(zhǔn)備的器械有
為了方便理解我將行列分別進(jìn)行了編號(hào)
左邊四個(gè)接口為行數(shù),右邊四個(gè)為列數(shù),分別對(duì)應(yīng)第1,2,3,4行。
接下來(lái)讓我們看看那些碼值
哦,是不是一點(diǎn)頭緒都沒(méi)有,不急實(shí)驗(yàn)繼續(xù)。
注意,這里是keypad而不是keyboard
#include <Key.h> #include <Keypad.h> //導(dǎo)入庫(kù) const byte ROWS = 4; //行數(shù) const byte COLS = 4; //列數(shù) char keys[ROWS][COLS] = {{'1', '2', '3', 'A'},{'4', '5', '6', 'B'},{'7', '8', '9', 'C'},{'*', '0', '#', 'D'}}; //生成數(shù)組keysbyte rowPins[ROWS] = {2, 3, 4, 5};byte colPins[COLS] = {6, 7, 8, 9}; //定義引腳號(hào)Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //設(shè)置初始化void setup() {Serial.begin(9600);}void loop() {char key = keypad.getKey(); //由鍵盤輸入鍵值if (key != NO_KEY) { //當(dāng)鍵盤輸入不為空時(shí)Serial.println(key);}}OK,接下來(lái)讓我們看看運(yùn)行的結(jié)果
在這里放上高低電平反轉(zhuǎn)法的概念以便更方便地理解
假設(shè),當(dāng)我們按下1時(shí),我們可以由反轉(zhuǎn)法得到,相對(duì)應(yīng)的1號(hào)位為零,因此他的行值與列值分別為1110和1110,轉(zhuǎn)換為十六進(jìn)制則為ee,也就是說(shuō)此時(shí)的1的碼值為0xee.
haha,這時(shí),不就和之前的碼值相對(duì)應(yīng)了嘛,為了進(jìn)一步驗(yàn)證其正確性我們?cè)龠x取一個(gè)數(shù)進(jìn)行驗(yàn)證。
假設(shè)當(dāng)8按下時(shí),我們可以得到1011與1101,即 0xdb。
到此對(duì)于碼值我們應(yīng)該明白是怎么一回事了,回想當(dāng)初原來(lái)是自己將數(shù)值弄反了【捂臉】,當(dāng)然這也是我個(gè)人基于百度的理解,如有錯(cuò)誤還請(qǐng)諒解指出。
總結(jié)
- 上一篇: 工业机器人 扬州 江都_扬州市14家企业
- 下一篇: pcb设计单点接地示意图_答案:关于PC