電子開(kāi)發(fā)網(wǎng)

電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

單片機(jī)矩陣鍵盤(pán)掃描的兩種方式

作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2012/4/26

矩陣鍵盤(pán)掃描方式:

第一種:逐行掃描法,就是一行一行的掃描。實(shí)現(xiàn)代碼如下(鍵盤(pán)連接P2口):

#define NO_KEY 0XFF
#define KEY_LO()  P2 &= 0XF0
#define KEY_HI()  P2 |= 0X0F
#define KEY_L(i)  P2 &= ~(1<<i)
#define KEY_RD()  ((P2>>4) & 0x0f)

UINT8 OnceKey(void)
{
 UINT8 line = 0;
 UINT8 key = NO_KEY;//key value
 KEY_LO();
 if (KEY_RD() == 0X0F)
 {
  KEY_HI();
  return NO_KEY;
 }

 for (line=0; line<4; line ++)
 {
  KEY_HI();
  KEY_L(line);
  key = KEY_RD();
  switch (key)
  {
   case ROW_FIRST:
    key = 4*line + 0;
    break;
   case ROW_SECOND:
    key = 4*line + 1;
    break;
   case ROW_THIRD:
    key = 4*line + 2;
    break;
   case ROW_FOURTH:
    key = 4*line +3;
    break;
   default :
    key = 0x0f;
    break;
  }
  if (key < 0x10)
  {
   return key;
  }
 }
 return NO_KEY;
}

第二種,線性反轉(zhuǎn)法。就是行和列分別讀出。實(shí)現(xiàn)代碼如下:

#define CVT(i) ((i)==(~1)&0x0f)? 0: ((i)==(~2)&0x0f)? 1: ((i)==(~4)&0x0f)? 2: ((i)==(~8)&0x0f)? 3: 4;

#define KEY0_3HI() P2 |= 0X0F
#define KEY0_3LO() P2 &= 0XF0
#define KEY4_7HI() P2 |= 0XF0
#define KEY4_7LO() P2 &= 0X0F
#define KEY0_3RD() (P2 & 0X0F)
#define KEY4_7RF() ((P2>>4) & 0X0F)

UINT8  OnceKey(void)
{
 UINT8 line = NO_KEY;
 UINT8 row = NO_KEY;
 UINT8 key;
 KEY0_3HI();
 KEY4_7LO();
 line = KEY0_3RD();//讀入行的值
 if (0x0f == line)
 {
  key = NO_KEY;
 }
 else
 {
  KEY0_3LO();
  KEY4_7HI();
  row = KEY4_7RD();//讀入列的值
  if (0x0f == row)
  {
   key = NO_KEY;
  } 
  else
  {
   key = CVT(line)*4 + CVT(row);
  }
 }
 KEY0_3HI();
 KEY4_7HI();
 return key;
}

Tags:單片機(jī),矩陣鍵盤(pán),掃描方式  
責(zé)任編輯:admin
相關(guān)文章列表
基于AT89C52單片機(jī)控制的雙軸太陽(yáng)自動(dòng)跟蹤系統(tǒng)設(shè)計(jì)
ESP32單片機(jī)入門(mén)篇
超聲波測(cè)距+溫度+報(bào)警的單片機(jī)代碼_51單片機(jī)超聲波測(cè)距C語(yǔ)言程序
七段數(shù)碼管顯示原理研究_數(shù)碼管顯示0~9對(duì)應(yīng)的段碼
單片機(jī)C語(yǔ)言編程入門(mén)教程  流水燈程序示例
基于51單片機(jī)—多功能秒表,多功能計(jì)時(shí)器C語(yǔ)言程序
STC89C52單片機(jī)數(shù)字電流表電壓表源碼與電路圖  51單片機(jī)電流電壓
自學(xué)stm32單片機(jī)四個(gè)步驟,實(shí)用又高效!
先學(xué)51還是先學(xué)STM32?STM32和51單片機(jī)的區(qū)別
單片機(jī)最小系統(tǒng)介紹及電路設(shè)計(jì) STM32單片機(jī)最小系統(tǒng)
什么是PIC單片機(jī)
為什么51單片機(jī)的晶振一般使用11.0592? 51單片機(jī)常用波特率初值表
51單片機(jī)寄存器功能一覽表
單片機(jī)寫(xiě)延時(shí)程序的幾種方法
自學(xué)單片機(jī)編程之中斷與時(shí)鐘程序
哈佛結(jié)構(gòu)與馮·諾伊曼結(jié)構(gòu)區(qū)別以及X86體系
單片機(jī)萬(wàn)年歷:公歷日期與農(nóng)歷日期的相互轉(zhuǎn)換程序
AVR定時(shí)器1的CTC模式設(shè)置
單片機(jī)超聲波視覺(jué)識(shí)別系統(tǒng)的測(cè)量軟件開(kāi)發(fā),超聲波測(cè)距
LCD1602的單片機(jī)驅(qū)動(dòng)詳解
請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱(chēng):
1分 2分 3分 4分 5分

還可以輸入 200 個(gè)字
[ 查看全部 ] 網(wǎng)友評(píng)論
最新推薦
關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁(yè)面
下到頁(yè)底
晶體管查詢(xún)
啊轻点灬大ji巴太粗太长了免费| 亚洲精品偷拍无码不卡av| 精品一区狼人国产在线| 国产一卡2卡3卡四卡精品一信息| 美女跪下吃j8羞羞漫画| 国产一区二区精品在线观看| 精品无码成人片一区二区| 又黄又爽又猛大片录像| 男人插女人30分钟| 伊人热热久久原色播放www| 欧美黄色一级视频| 亚洲熟妇少妇任你躁在线观看无码| 欧美人善交videosg| 亚洲国产成人无码av在线播放| 最近最好看2019年中文字幕| 亚洲av无码之日韩精品| 日本免费小视频| 久久久久人妻一区二区三区vr| 成人国产永久福利看片| 中国少妇无码专区| 夜色www国产精品资源站| 99久久99久久精品国产| 国产白嫩美女在线观看| 调教办公室在线观看| 国产一级片免费看| 精品人妻少妇一区二区三区在线| 免费在线黄色网址| 欧美日韩亚洲高清不卡一区二区三区 | 亚洲a级黄色片| 日本一二线不卡在线观看| 中文精品久久久久人妻| 奇米四色77777| 99国产成+人+综合+亚洲欧美| 国产真实伦偷精品| 蜜桃麻豆www久久囤产精品| 国亚洲欧美日韩精品| 玉蒲团之天下第一| 亚洲欧美日韩中字综合| 日韩欧美国产高清| 久久久久亚洲av成人网| 天天看片天天射|