電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 24|回復(fù): 0
收起左側(cè)

矩陣鍵盤的“一廂情愿”與“兩情相悅”

[復(fù)制鏈接]

193

主題

193

帖子

1532

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
1532
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2021-5-12 21:39:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

點(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)用場景



一、矩陣鍵盤的兩種掃描方式??矩陣鍵盤常用的有以下兩種掃描方式,相比較之下,小飛哥更推薦第二種掃描方式,第二種掃描方式能夠更有效地避免錯(cuò)誤按鍵,本次分享的也是第二種掃描方式的代碼。
  • 逐行掃描:高四位輸出低電平來對(duì)矩陣鍵盤逐行掃描,當(dāng)?shù)退奈唤邮軘?shù)據(jù)不全為一,表示有按鍵按下,然后通過接收到的數(shù)據(jù)是哪一位為 0 來判斷哪個(gè)按鍵被按下,可以簡單理解為,“一廂情愿型”;
  • 行列掃描:高四位全部輸出低電平,低四位輸出高電平。當(dāng)接受到的數(shù)據(jù),低四位不全為高電平時(shí),說明有按鍵按下。然后通過接收到的值判斷是哪一列有按鍵按下,然后再反過來高四位輸出高電平,第四位低電平,然后通過高四位接收到的值判斷哪一行按鍵按下,可以簡單理解為,“兩情相悅型”;
    二、“兩情相悅型”按鍵掃描方式詳解

    ??上面圖片是 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)都不夠的說~

    MCU鍵盤PF0ROW1PF1ROW2PF2ROW3PF3ROW4PG0COL1PG1COL2PG2COL3PG3COL4
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表