chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

矩陣鍵盤掃描的原理及設(shè)計(jì)

凡億PCB ? 來源:設(shè)計(jì)中在遇到按鍵較多, ? 作者:設(shè)計(jì)中在遇到按鍵 ? 2022-07-05 14:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

設(shè)計(jì)中在遇到按鍵較多,但是單片機(jī)I/O資源有限時(shí),采用矩陣鍵盤是一種很好的選擇方案。在按鍵較少時(shí),矩陣鍵盤沒有明顯的優(yōu)勢,比如3×3矩陣鍵盤占用I/O口6個(gè),只支持9個(gè)按鍵;但是,按鍵較多時(shí),矩陣鍵盤的優(yōu)勢就凸顯出來了,比如5×5矩陣鍵盤占用I/O口10個(gè),可支持25個(gè)按鍵;

矩陣鍵盤的硬件設(shè)計(jì)非常簡單,如圖1以5×5矩陣鍵盤為例,藍(lán)色行線5條,綠色列線5條(加上拉電阻),用按鍵代替行列交叉的節(jié)點(diǎn)即組成了矩陣鍵盤,其中二極管處的紅色連線可用來檢測按鍵是否按下或作為中斷信號的(可以不需要,使用時(shí)沒有任何影響,本文不涉及)。

4b9915ac-f417-11ec-ba43-dac502259ad0.png

圖1:矩陣鍵盤

圖2單片機(jī)STM32F103CBT6的外圍電路,帶顏色的I/O口為矩陣鍵盤行線PA1~PA5(藍(lán)色),列線PA6~PA10(綠色)。為方便編程,矩陣鍵盤最好選擇同組的I/O端口。

4bb1e8ca-f417-11ec-ba43-dac502259ad0.png

圖2:單片機(jī)外圍電路

硬件的設(shè)計(jì)就是以上部分,接下來講解程序部分,

矩陣鍵盤的掃描方法有多種,其中很青睞的是行列反轉(zhuǎn)掃描,不僅簡單而且效率高,而且只需要掌握該方法就足夠了。

行列反轉(zhuǎn)掃描的邏輯:

①行線輸出全為0(行線PA1~PA5配置成推挽輸出,列線PA6~PA10配置成上拉輸入)

②讀入列線值

③輸出列線值(行線PA1~PA5配置成上拉輸入,列線PA6~PA10配置成推挽輸出)

④讀入行線值

⑤組合行線列線值

對于STM32的單片機(jī),直接操作寄存器會(huì)更簡單,且無需再對I/O進(jìn)行另外的配置,全部代碼如圖3所示,完全可以當(dāng)做一個(gè)模塊來使用。

4bcd4e44-f417-11ec-ba43-dac502259ad0.png

圖3:矩陣鍵盤的行列反轉(zhuǎn)掃描

以下代碼與圖3里面的代碼完全一致(為方便瀏覽和拷貝)

/*----------------------
5*5矩陣鍵盤掃描函數(shù),返回掃描鍵值(行列反轉(zhuǎn)掃描)
-----------------------*/
u16 Key_Scan(void)
{
u16 cord_h,cord_l;
u16 key_value = 0xFFFF;
GPIOA->CRL = 0x88333334;
GPIOA->CRH = 0x44444888;
GPIOA->ODR = GPIOA->IDR & 0xFFC1;
cord_l = GPIOA->IDR & 0x07C0;
if(cord_l != 0x07C0)
{
delay_ms(10);
if(cord_l != 0x07C0)
{
cord_l = GPIOA->IDR & 0x07C0;
GPIOA->CRL = 0x33888884;
GPIOA->CRH = 0x44444333;
GPIOA->ODR = cord_l | 0xF83F;
delay_us(1);
cord_h = GPIOA->IDR & 0x003E;
cord_h >>= 1;
cord_l >>= 1;
key_value = (cord_l + cord_h) & 0xFFFF;
return(key_value);
}
}return(0xFFFF);
}

以下代碼為端口配置寄存器的操作,PA組I/O有16個(gè)引腳:PA0~PA15;3代表推挽輸出,4代表浮空輸入,8代表上拉輸入;

GPIOA->CRL = 0x88333334; //低8位配置
GPIOA->CRH = 0x44444888; //高8位配置

以下代碼中,GPIOA->ODR為端口輸出數(shù)據(jù)寄存器,用于寫操作;GPIOA->IDR為端口輸入數(shù)據(jù)寄存器,用于讀操作;

0xFFC1的二進(jìn)制:1111 1111 1100 0001,表示要對PA1~PA5置0。

0x07C0的二進(jìn)制:0000 0111 1100 0000,表示要對PA6~PA10讀值。

GPIOA->ODR = GPIOA->IDR & 0xFFC1;//行線輸出全為0
cord_l = GPIOA->IDR & 0x07C0; //讀入列線值

行列反轉(zhuǎn)后的原理與上面完全一樣,這里就不一一闡述了。

最后講一下組合行線列線值,假如S1按鍵按下去了,得到的二進(jìn)制為(注意黑體字

cord_h:0000 0000 0011 1100

cord_l:0000 0111 1000 0000

cord_h >>= 1 表示右移1位得到:

0000 0000 0001 1110

cord_l >> = 1 表示右移1位得到:

0000 0011 1100 0000

組合碼(鍵值):key_value=0000 0011 1101 1110,即0x03DE;最后函數(shù)返回key_value值,該值就作為判斷S1的鍵值。

之所以右移1位,是因?yàn)镻A0沒有用于矩陣鍵盤,所得到的鍵值也就被左移了1位,事實(shí)上,也可以不用右移,只是得到的組合碼不同而已,右移是為了方便計(jì)算。

矩陣鍵盤的鍵值定義如下:

#define S1 0x03DE
#define S2 0x03BE
#define S3 0x037E
#define S4 0x02FE
#define S5 0x01FE
#define S6 0x03DD
#define S7 0x03BD
#define S8 0x037D
#define S9 0x02FD
#define S10 0x01FD
#define S11 0x03DB
#define S12 0x03BB
#define S13 0x037B
#define S14 0x02FB
#define S15 0x01FB
#define S16 0x03D7
#define S17 0x03B7
#define S18 0x0377
#define S19 0x02F7
#define S20 0x01F7
#define S21 0x03CF
#define S22 0x03AF
#define S23 0x036F
#define S24 0x02EF
#define S25 0x01EF

要點(diǎn):

①行列反轉(zhuǎn)掃描的思想是行線作為輸出時(shí),讀出列線的值;然后反過來,列線作為輸出時(shí),讀出行線的值,最后把兩個(gè)值組合起來就是該按鍵的鍵值;

②參與計(jì)算的十六進(jìn)制數(shù)一定要與行線或列線在同組端口的位置匹配,比如0xFFC1的二進(jìn)制:1111 1111 1100 0001,表示要對PA1~PA5置0。

審核編輯:郭婷


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 二極管
    +關(guān)注

    關(guān)注

    149

    文章

    10235

    瀏覽量

    174939
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6071

    文章

    45256

    瀏覽量

    660103

原文標(biāo)題:5×5矩陣鍵盤掃描,一條龍化繁為簡,值得擁有

文章出處:【微信號:FANYPCB,微信公眾號:凡億PCB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    FAQ_MA35_Family如何設(shè)置矩陣鍵盤

    FAQ_MA35_Family如何設(shè)置矩陣鍵盤?
    發(fā)表于 09-02 06:57

    LP5891-Q1 LED矩陣顯示驅(qū)動(dòng)器評估模塊技術(shù)解析

    矩陣LED顯示驅(qū)動(dòng)器,具有 48個(gè)恒流源和16個(gè)掃描FET。Texas Instruments LP5891-Q1符合汽車應(yīng)用類AEC-Q100認(rèn)證。
    的頭像 發(fā)表于 08-27 11:02 ?532次閱讀
    LP5891-Q1 LED<b class='flag-5'>矩陣</b>顯示驅(qū)動(dòng)器評估模塊技術(shù)解析

    HarmonyOS應(yīng)用自定義鍵盤解決方案

    自定義鍵盤是一種替換系統(tǒng)默認(rèn)鍵盤的解決方案,可實(shí)現(xiàn)鍵盤個(gè)性化交互。允許用戶結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤
    的頭像 發(fā)表于 06-05 14:19 ?1235次閱讀

    FZH182 LED驅(qū)動(dòng)控制專用電路中文手冊

    高段位顯示驅(qū)動(dòng)支持 16段×8位 顯示模式,適配復(fù)雜數(shù)碼管、點(diǎn)陣屏或多段位 LED 面板。內(nèi)置 16字節(jié)顯存,通過地址映射直接控制 SEG(段)和 GRID(位)輸出,數(shù)據(jù)位“1”對應(yīng)段點(diǎn)亮。鍵盤掃描功能8×4 矩陣
    發(fā)表于 05-23 10:41 ?1次下載

    LED驅(qū)動(dòng)控制專用電路FZH181中文手冊

    集成LED 驅(qū)動(dòng):支持 11段×7位 至 14段×4位 多種顯示模式,適配不同數(shù)碼管布局。鍵盤掃描:內(nèi)置 10×2 矩陣鍵盤掃描,自動(dòng)完成鍵
    發(fā)表于 05-23 10:39 ?0次下載

    ADP5588移動(dòng)I/O擴(kuò)展器和QWERTY鍵盤控制器技術(shù)手冊

    ADP5588是一款I(lǐng)/O端口擴(kuò)展器和鍵盤矩陣,適用于需要大型鍵盤矩陣和擴(kuò)展I/O線路的QWERTY型電話。I/O擴(kuò)展器IC可以在移動(dòng)平臺(tái)中解決主處理器GPIO數(shù)量有限的問題。
    的頭像 發(fā)表于 05-22 11:37 ?545次閱讀
    ADP5588移動(dòng)I/O擴(kuò)展器和QWERTY<b class='flag-5'>鍵盤</b>控制器技術(shù)手冊

    ADP5587移動(dòng)I/O擴(kuò)展器和QWERTY鍵盤控制器技術(shù)手冊

    ADP5587 是一款 I/O 端口擴(kuò)展器和鍵盤矩陣,適用于需要大型鍵盤矩陣和擴(kuò)展 I/O 線路的 QWERTY 型電話。I/O 擴(kuò)展器 IC 可以在移動(dòng)平臺(tái)中解決主處理器 GPIO
    的頭像 發(fā)表于 05-22 11:08 ?606次閱讀
    ADP5587移動(dòng)I/O擴(kuò)展器和QWERTY<b class='flag-5'>鍵盤</b>控制器技術(shù)手冊

    低功耗Air724UG模組軟件指南:KEYPAD示例~

    一、簡介 ? 在電路設(shè)計(jì)中,通常需要較多的外部輸入,如果每個(gè)按鍵都單獨(dú)去占用一個(gè) IO 接口,就會(huì)非常浪費(fèi)資源,為了減少 I/O 口的占用,通常將按鍵排列成矩陣形式,即矩陣鍵盤。 特性
    的頭像 發(fā)表于 02-07 14:25 ?390次閱讀
    低功耗Air724UG模組軟件指南:KEYPAD示例~

    納祥科技NX1722,一種帶鍵盤掃描的8段4位 LED 驅(qū)動(dòng)控制方案

    NX1722是一種帶鍵盤掃描電路接口的 LED 驅(qū)動(dòng)控制專用電路,內(nèi)部集成有 MCU 輸入輸出控制數(shù)字接口、數(shù)據(jù)鎖存器、LED 驅(qū)動(dòng)、鍵盤掃描、輝度調(diào)節(jié)等電路。 NX1722性能穩(wěn)定
    的頭像 發(fā)表于 02-05 17:27 ?601次閱讀
    納祥科技NX1722,一種帶<b class='flag-5'>鍵盤</b><b class='flag-5'>掃描</b>的8段4位 LED 驅(qū)動(dòng)控制方案

    AN-660:XY矩陣鍵盤與MicroConverter的接口

    電子發(fā)燒友網(wǎng)站提供《AN-660:XY矩陣鍵盤與MicroConverter的接口.pdf》資料免費(fèi)下載
    發(fā)表于 01-13 16:02 ?0次下載
    AN-660:XY<b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>與MicroConverter的接口

    空調(diào)扇LED驅(qū)動(dòng)LED驅(qū)動(dòng)電路芯片VK1629

    、LED 驅(qū)動(dòng)、鍵盤掃描等電路。SEG腳接LED陽極,GRID腳接LED陰極,可支持16SEGx8GRID的點(diǎn)陣LED顯示面板,最大支持8x4按鍵矩陣。適用于冰箱、空調(diào)、家庭影院等產(chǎn)品的高段位顯示屏驅(qū)動(dòng)
    發(fā)表于 11-21 16:56

    嵌入式條碼掃描器的幾種掃描模式

    嵌入式條碼掃描器的掃描模式是指其在識(shí)別條碼時(shí)的工作模式,這些模式會(huì)影響到掃描器的使用效果和適用場景。以下是幾種常見的嵌入式條碼掃描器的掃描
    的頭像 發(fā)表于 11-19 16:27 ?995次閱讀
    嵌入式條碼<b class='flag-5'>掃描</b>器的幾種<b class='flag-5'>掃描</b>模式

    小家電LED驅(qū)動(dòng)點(diǎn)陣數(shù)顯驅(qū)動(dòng)芯片VK1S38A

    、LED 驅(qū)動(dòng)、鍵盤掃描等電路。SEG腳接LED陽極,GRID腳接LED陰極,可支持8SEGx8GRID的點(diǎn)陣LED顯示面板,最大支持8x3按鍵矩陣。適用于家電設(shè)備(智能熱水器、微波爐、洗衣機(jī)、空調(diào)
    發(fā)表于 11-16 10:51

    蔡司掃描儀GOM精準(zhǔn)與高效的掃描技術(shù)

    如今質(zhì)量已成為推動(dòng)產(chǎn)業(yè)升級的核心動(dòng)力基于結(jié)構(gòu)光掃描的光學(xué)三維測量技術(shù)憑借高精度數(shù)據(jù)采集能力,構(gòu)建精準(zhǔn)數(shù)字孿生模型,對工業(yè)生產(chǎn)質(zhì)量控制及產(chǎn)品信息數(shù)字化至關(guān)重要。主流的結(jié)構(gòu)光三維掃描方式包括單線激光、多
    的頭像 發(fā)表于 11-15 11:51 ?1435次閱讀
    蔡司<b class='flag-5'>掃描</b>儀GOM精準(zhǔn)與高效的<b class='flag-5'>掃描</b>技術(shù)

    點(diǎn)陣數(shù)碼管LED驅(qū)動(dòng)/數(shù)顯LED驅(qū)動(dòng)IC-VK1638 SOP28最大支持8×3按鍵矩陣/10×8點(diǎn)陣

    、鍵盤掃描等電路。SEG腳接LED陽極,GRID腳接LED陰 極,可支持10SEGx8GRID的點(diǎn)陣LED顯示面板,最大支持8x3按鍵矩陣。適用于家電設(shè)備 (智能熱水器、微波爐、洗衣機(jī)、空調(diào)、電磁爐
    的頭像 發(fā)表于 11-08 16:24 ?854次閱讀
    點(diǎn)陣數(shù)碼管LED驅(qū)動(dòng)/數(shù)顯LED驅(qū)動(dòng)IC-VK1638 SOP28最大支持8×3按鍵<b class='flag-5'>矩陣</b>/10×8點(diǎn)陣