<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發(fā)網(wǎng)

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

      單片機矩陣鍵盤掃描的兩種方式

      作者:佚名    文章來源:本站原創(chuàng)    點擊數(shù):    更新時間:2012-4-26

      矩陣鍵盤掃描方式:

      第一種:逐行掃描法,就是一行一行的掃描。實現(xià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)法。就是行和列分別讀出。實現(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:單片機,矩陣鍵盤,掃描方式  
      責(zé)任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網(wǎng)友評論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 亚洲heyzo专区无码综合| 色狠狠色狠狠综合天天| 色综合久久一区二区三区| 天天做.天天爱.天天综合网 | 亚洲色欲久久久综合网东京热| 精品国产国产综合精品| 久久综合综合久久97色| 综合在线免费视频| 天天综合久久一二三区| 伊人激情久久综合中文字幕| 亚洲综合中文字幕无线码| 中文字幕久久综合| 色综合久久久无码中文字幕| 色综合久久无码五十路人妻| 丁香六月婷婷综合| 热综合一本伊人久久精品| 亚洲国产综合在线| 亚洲AV人无码综合在线观看| 国产激情综合在线观看| 国产在线视频色综合| 色综合视频一区中文字幕| 久久综合精品视频| 久久综合九色综合欧洲| 狠狠人妻久久久久久综合| 伊人色综合九久久天天蜜桃| 色偷偷狠狠色综合网| 六月婷婷综合激情| 亚洲国产成人五月综合网| 亚洲AV成人潮喷综合网| 色久悠悠婷婷综合在线亚洲| 色天天综合色天天碰| 国产婷婷色综合AV蜜臀AV| 亚洲AV人无码综合在线观看| 亚洲综合亚洲国产尤物| 亚洲私人无码综合久久网| 色综合久久天天综合| 亚洲综合区小说区激情区| 狠狠色丁香久久综合五月| 91探花国产综合在线精品| 天天综合天天添夜夜添狠狠添| 九九综合九九综合|