在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

矩陣鍵盤實現16個按鍵操作原理及應該方案

貿澤電子設計圈 ? 來源:互聯網 ? 作者:佚名 ? 2017-09-08 13:54 ? 次閱讀

矩陣鍵盤是單片機外部設備中所使用的排布類似于矩陣的鍵盤組。矩陣式結構的鍵盤顯然比直接法要復雜一些,識別也要復雜一些,列線通過電阻接正電源,并將行線所接的單片機的I/O口作為輸出端,而列線所接的I/O口則作為輸入。矩陣鍵盤的優點是節約單片機IO口,例如普通鍵盤8個IO口只能用作8個按鍵,而矩陣鍵盤能作16個按鍵。

本文以51單片機為載體介紹一種4*4矩陣鍵盤實現16個按鍵操作的原理、電路和軟件設計要點。

1、 矩陣鍵盤的一般電路

如圖 1矩陣鍵盤電路所示,4*4矩陣鍵盤有4行4列按鍵,單片機4個I/O口接矩陣鍵盤的行線,另外4個I/O口接矩陣鍵盤的列線,通過對行線列線的操作完成按鍵的識別和操作。

2、 矩陣鍵盤的原理

矩陣鍵盤按鍵識別的流程一般是這樣的:(1)置第1行為低電平(0),其余行為高電平,讀取列線數據,列線有低電平表示此行有按鍵按下。(2)置第2行為低電平(0),其余行為高電平,讀取列線數據,列線有低電平表示此行有按鍵按下。......(N-1)根據行線列線的電平不同可以識別是否有按鍵按下,哪一個按鍵按下,獲取按鍵號。(N) 根據按鍵號跳轉至對應的按鍵處理程序。

3、 一個矩陣鍵盤程序的例子

圖2為按鍵處理的主流程,思路是依次拉低按鍵的各個行,再讀取列線的數據,假如列線有低電平,則認為此行有按鍵按下,標記此行有按鍵按下并存入行值。

讀取列線數據的思路則是這樣,依次讀取第1-4列,假如讀取此列時為低電平,則標記并存入列值。

下面是部分代碼:

//(1)按鍵識別程序void key() //按鍵掃描{unsigned char key_value_temp; //臨時按鍵值,默認1111 1111(二進制)key_value=0xff;

//鍵值key_value_temp=0xff; //鍵值臨時變量//矩陣鍵盤程序流程//依次拉低第1234行,讀入列線數據Pin_r_1=0; Pin_r_2=1;Pin_r_3=1;Pin_r_4=1; //拉低第1行。//Pin_r_1第1行行線,Pin_r_2第2行行線,其余類似key_value_temp=read_column();//讀列數據if (key_value_temp != 0xff)

//表示第一行有按鍵按下{key_value=key_value_temp & 0x1f;//獲取按鍵號,例如0001

1101表示第1行第2列的按鍵按下}Pin_r_1=1; Pin_r_2=0;Pin_r_3=1;Pin_r_4=1; //拉低第2行key_value_temp=read_column();//讀列數據if (key_value_temp != 0xff)

//表示第2行有按鍵按下{key_value=key_value_temp &0x2f;}Pin_r_1=1; Pin_r_2=1;Pin_r_3=0;Pin_r_4=1; //拉低第3行key_value_temp=read_column();//讀列數據if (key_value_temp != 0xff)

//表示第3行有按鍵按下{key_value=key_value_temp &0x3f;}Pin_r_1=1; Pin_r_2=1;Pin_r_3=1;Pin_r_4=0; //拉低第4行key_value_temp=read_column();//讀列數據if (key_value_temp != 0xff)

//表示第4行有按鍵按下{key_value=key_value_temp &0x4f;}}//(2)讀取列線數據unsigned char read_column() //讀矩陣鍵盤的列{unsigned char key_column;key_column=0xff;if(Pin_c_1==0 ) key_column=key_column & 0xfe;//1110

表示第1列按鍵按下。 key_column的低4位表示按鍵號,高4位常為1111if(Pin_c_2==0 ) key_column=key_column & 0xfd;//1101

表示第2列按鍵按下。if(Pin_c_3==0 ) key_column=key_column & 0xfb;//1011

表示第3列按鍵按下。if(Pin_c_4==0 ) key_column=key_column & 0xf7;//0111

表示第4列按鍵按下。return key_column;}以上程序對應的鍵值表如下:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 矩陣鍵盤
    +關注

    關注

    7

    文章

    207

    瀏覽量

    31513
  • 矩陣鍵盤電路

    關注

    0

    文章

    4

    瀏覽量

    8258

原文標題:一種單片機矩陣鍵盤設計,實在是太實用了~~~~

文章出處:【微信號:Mouser-Community,微信公眾號:貿澤電子設計圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    開發第1LVGL程序與實現按鍵操作

    開發第1LVGL程序與實現按鍵操作
    的頭像 發表于 01-07 13:49 ?541次閱讀
    開發第1<b class='flag-5'>個</b>LVGL程序與<b class='flag-5'>實現</b><b class='flag-5'>按鍵</b><b class='flag-5'>操作</b>

    矩陣4x4按鍵,如何把識別結果按編號01-16(十進制)顯示在兩七段數碼管上?

    矩陣4x4按鍵,并把識別結果按編號01-16(十進制)顯示在兩七段數碼管上,按鍵按下時顯示,
    發表于 10-31 20:43

    如何在FPGA中實現按鍵消抖

    在FPGA(現場可編程門陣列)中實現按鍵消抖是一重要的設計環節,特別是在處理用戶輸入時,由于物理按鍵的機械特性和電氣特性,按鍵在按下和釋放
    的頭像 發表于 08-19 18:15 ?2155次閱讀

    【xG24 Matter開發套件試用體驗】物聯網密碼柜之驅動矩陣鍵盤和OLED顯示器

    ) display_password(oled, password) time.sleep(0.01)# 防止CPU占用過高 階段性總結 本次使用circuitpython實現了對矩陣鍵盤和Oled顯示屏的驅動以及密碼校驗部
    發表于 08-04 23:04

    鍵盤矩陣規格設計圖

    鍵盤矩陣規格設計圖
    發表于 06-19 14:29 ?0次下載

    STM32矩陣按鍵造成IO口的損壞的原因?

    看了網上的4*4矩陣按鍵,不帶外部中斷,可實現多個按鍵同時按下。發現行線都配置成GPIO_Mode_Out_PP推挽輸出,我認為當同一列線
    發表于 05-17 06:02

    用STM8L152使用一矩陣鍵盤,信號一直處于低電平狀態的原因?

    想用STM8L152 使用一矩陣鍵盤,根據的是行列掃描的方法,但是代碼調試過程中只能檢測到列的信號(高低電平)的變化,信號一直處于低電平狀態,這是怎么一回事?哪里出問題了?
    發表于 05-15 08:31

    單片機接矩陣鍵盤GPIO應該怎么設置?是用上拉輸出或輸入模式嗎?

    單片機接矩陣鍵盤GPIO應該怎么設置?是用上拉輸出或輸入模式嗎?
    發表于 05-11 08:38

    stop mode下怎么實現按下矩陣鍵盤的任意鍵將系統喚醒呢?

    請問有沒有大佬知道stop mode下怎么實現按下矩陣鍵盤的任意鍵將系統喚醒呢?用WAKEUP 能實現嗎?
    發表于 05-06 07:08

    采用NT33510顯示屏,如何通過矩陣鍵盤更改顯示屏上的數字內容?

    我想實現這樣的功能:我的LCD當前顯示的是:新年快樂!2018! 想通過矩陣鍵盤將2018更改成2019,這個過程首先通過矩陣
    發表于 04-24 08:10

    AVR單片機外接16M晶振和STM32F103外接8MHZ運行速度哪一更快?

    同樣的程序進行比較: AVR單片機外接16M晶振:運行程序是矩陣按鍵掃描采用定時器中斷100ms掃描一次、還有串口接收中斷程序1S接收一次運行程序上后,串口接收中斷程序不會影響矩陣
    發表于 04-23 07:43

    電視機經典ADC按鍵電路實現方案

    3根線實現7按鍵,什么原理? 直接上電路原理圖!不同電視廠家的設計會有一點差異,但基本都是這個原理。
    的頭像 發表于 04-07 10:25 ?1297次閱讀
    電視機經典ADC<b class='flag-5'>按鍵</b>電路<b class='flag-5'>實現</b><b class='flag-5'>方案</b>

    stm32cubeMX如何配置4*4矩陣鍵盤

    stm32cubeMX如何配置4*4矩陣鍵盤,求大佬給代碼指導一下,看了太多代碼,自己迷亂了
    發表于 03-28 09:27

    MH481:磁軸鍵盤 高精度 線性霍爾傳感器方案

    磁軸鍵盤霍爾是一種特殊的設計,它將霍爾效應傳感器與磁軸鍵盤相結合。這種設計使得鍵盤能夠更好地適應不同的使用環境和用戶需求。MH481霍爾效應傳感器是一種電子器件,它可以檢測磁場的變化并轉換為電信號。在磁軸
    的頭像 發表于 01-30 23:54 ?2119次閱讀
    MH481:磁軸<b class='flag-5'>鍵盤</b> 高精度 線性霍爾傳感器<b class='flag-5'>方案</b>
    主站蜘蛛池模板: 日本三级黄色网址| 四大名著成人高h肉版| 国产一级一级片| 亚洲一区二区三区中文字幕| www.毛片网站| 欧美日韩国产一区| 欧美xxxx色视频在线观看免费| 男女爱爱免费高清| 黄色aa毛片| 扛着高跟鞋丝袜腿呻吟视频| 五月婷婷丁香在线观看| 亚洲一区二区在线视频| 热re99久久国产精品| 182tv免费视视频线路一二三| 天天爽夜夜爽夜夜爽| 色中色在线视频| 亚洲伊人久久综合影院2021| 伊人网在线视频观看| 天天爱夜夜操| 未满十八18周岁禁止免费国产| 成人性欧美丨区二区三区| 婷五月综合| 亚洲香蕉久久一区二区三区四区| 久久天天躁狠狠躁夜夜| 亚洲欧美圣爱天天综合| 天天天天做夜夜夜做| 久久国内| 亚洲日本在线观看视频| 在线看av的网址| 99久热| 亚洲视频1| 1区2区| 日韩a毛片| 国产免费播放一区二区三区| 狠狠色综合网站久久久久久久| 国产成人精品亚洲| 人人干天天操| www.xxx欧美| 亚洲欧美视频在线播放| 亚洲一级毛片免费在线观看| 女人张开腿等男人桶免费视频|