|
5dqxhzrajxt64069781754.png (100.54 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
5dqxhzrajxt64069781754.png
2024-10-10 05:24 上傳
點(diǎn)擊上方「嵌入式實(shí)驗(yàn)基地」,選擇「置頂公眾號(hào)」第一時(shí)間查看嵌入式筆記!
來這里,還可以學(xué)習(xí)HAL庫的使用哦
前言 ??日常設(shè)計(jì)中,不可避免的會(huì)使用到按鍵,像我們常見的 POS 機(jī)、計(jì)算器等設(shè)備用到的按鍵是非常多的,如果采用普通的 1 個(gè) IO 1 個(gè)按鍵的設(shè)計(jì)方法,顯然對(duì)單片機(jī)資源來說是非常浪費(fèi)的,所以采用類似矩陣的設(shè)計(jì)思路,能夠大大減少 MCU IO 的使用,也是我們所說的矩陣鍵盤。
應(yīng)用場景
xo3jt1prnxq64069781854.jpg (82.1 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
xo3jt1prnxq64069781854.jpg
2024-10-10 05:24 上傳
qo4wwmkfvgd64069781954.jpg (66.32 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
qo4wwmkfvgd64069781954.jpg
2024-10-10 05:24 上傳
z1jznw220fq64069782054.jpg (12.79 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
z1jznw220fq64069782054.jpg
2024-10-10 05:24 上傳
一、矩陣鍵盤的兩種掃描方式??矩陣鍵盤常用的有以下兩種掃描方式,相比較之下,小飛哥更推薦第二種掃描方式,第二種掃描方式能夠更有效地避免錯(cuò)誤按鍵,本次分享的也是第二種掃描方式的代碼。
逐行掃描:高四位輸出低電平來對(duì)矩陣鍵盤逐行掃描,當(dāng)?shù)退奈唤邮軘?shù)據(jù)不全為一,表示有按鍵按下,然后通過接收到的數(shù)據(jù)是哪一位為 0 來判斷哪個(gè)按鍵被按下,可以簡單理解為,“一廂情愿型”;行列掃描:高四位全部輸出低電平,低四位輸出高電平。當(dāng)接受到的數(shù)據(jù),低四位不全為高電平時(shí),說明有按鍵按下。然后通過接收到的值判斷是哪一列有按鍵按下,然后再反過來高四位輸出高電平,第四位低電平,然后通過高四位接收到的值判斷哪一行按鍵按下,可以簡單理解為,“兩情相悅型”;
二、“兩情相悅型”按鍵掃描方式詳解
4bzrty5mga064069782154.png (135.5 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
4bzrty5mga064069782154.png
2024-10-10 05:24 上傳
??上面圖片是 4*4 矩陣鍵盤電路設(shè)計(jì),ROW1-ROW4 為鍵盤你的行,COL1-COL4 為鍵盤的列,8 個(gè) IO 共 16 個(gè)按鍵,我們以 K1 按下為例,分析具體的工作流程:
1、 先把行切換為上拉輸入模式2、把列切換為輸出模式,輸出低電平3、獲取當(dāng)前行輸入狀態(tài)
即:ROW1 線上此時(shí)為低電平,按下之前 ROW1-ROW4 為:1111,即 0x0F,按下之后,ROW1 與 COL1 連通,ROW1-ROW4 的值變?yōu)椋?110,即 0x0e,此時(shí)獲取到按鍵所在行;
4、把行切換為輸出狀態(tài),輸出低電平5、把列切換為上拉輸入模式6、獲取當(dāng)前列輸入狀態(tài)
即:COL1 線上此時(shí)為低電平,按下之前 COL1-COL4 為:1111,即 0x0F,按下之后,ROW1 與 COL1 連通,COL1-COL4 的值變?yōu)椋?110,即 0x0e,此時(shí)獲取到按鍵所在列;
7、兩次行列狀態(tài)獲取完成之后,即確定了按鍵所在行列,得到按鍵編碼:0xee,值并不是唯一的 0xee,具體跟硬件連接有關(guān)系。 硬件連接 ??調(diào)試用的鍵盤為這種非常簡單的,某寶幾毛錢,郵費(fèi)都不夠的說~
fobuuyoahyi64069782254.jpg (169.52 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
fobuuyoahyi64069782254.jpg
2024-10-10 05:24 上傳
MCU鍵盤PF0ROW1PF1ROW2PF2ROW3PF3ROW4PG0COL1PG1COL2PG2COL3PG3COL4 |
|