久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6489|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)16矩陣鍵盤掃描程序,懂的拿走

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:407089 發(fā)表于 2018-10-9 16:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<reg52.h>
  2. typedef unsigned int u16;
  3. typedef unsigned char u8;

  4. //定義鍵盤連接的端口,設(shè)置鍵盤編碼數(shù)組
  5. #define keyboard_px P3
  6. u8 code key_tab[]={0xEE,0xDE,0xBE,0x7E,0xED,0xDD,0xBD,0x7D,0xEB,0xDB,0xBB,0x7B,0xE7,0xD7,0xB7,0x77};

  7. //延時1ms函數(shù)(晶振11.0592MHz)
  8. void delay(u16 num)
  9. {
  10.         u16 x,y;
  11.         for(x=num; x>0; x--){for(y=113; y>0; y--);}
  12. }

  13. //掃描函數(shù),獲取按鍵對應(yīng)的索引值
  14. u8 key_scan(void)
  15. {
  16.         u8 temp1, temp2, i;

  17.         keyboard_px = 0xf0;
  18.         delay(5);

  19.         if(keyboard_px != 0xf0)
  20.         {
  21.                 delay(5);
  22.                 if(keyboard_px != 0xf0)
  23.                 {
  24.                         //獲取按鍵編碼
  25.                         temp1 = keyboard_px;
  26.                         keyboard_px = 0x0f;
  27.                         delay(5);
  28.                         temp2 = keyboard_px;
  29.                         temp1 |= temp2;
  30.                         
  31.                         //提取按鍵編碼對應(yīng)的數(shù)碼管編碼(或者返回i值,用于對其它數(shù)組的數(shù)值提取)
  32.                         for (i=0; i<16; i++)
  33.                         {
  34.                                 if (key_tab[i] == temp1)
  35.                                 {
  36.                                         return i;
  37.                                         break;
  38.                                 }
  39.                         }
  40.                 }
  41.         }else{
  42.                 return 0xff;
  43.         }
  44. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:232366 發(fā)表于 2021-3-23 22:31 | 只看該作者
非常感謝提供我已經(jīng)理解了您的程序思路了并且已經(jīng)
回復(fù)

使用道具 舉報

板凳
ID:232366 發(fā)表于 2021-3-23 22:38 | 只看該作者
在您的程序基礎(chǔ)上修改以下不知道是否可以?
把行號和列號分別取出來然后再做或運算是否可以???
上程序請看 但是有一個問題貌似此時按鍵按下按鍵響應(yīng)速度明顯變慢了而且是跟KEY_Cnt消抖變量成正比這是什么情況呢???
void Matrix_KEY4x4_Scan_Drive()
{
        static idata uint8 temp1,temp2;
        static idata uint8 KEY_Cnt;
       
        Matrix_KEY4x4_GPIO=0x0f;
        temp1=Matrix_KEY4x4_GPIO;
       
        if(Matrix_KEY4x4_GPIO!=0x0f)
        {
                KEY_Cnt++;
                        if(KEY_Cnt>=200)
                        {
                                KEY_Cnt=0;
                                        if(Matrix_KEY4x4_GPIO!=0x0f)
                                        {
                                                        temp1=Matrix_KEY4x4_GPIO&0x0f;//取低四位或取列號
                                                        Matrix_KEY4x4_GPIO=0xf0;          //反轉(zhuǎn)
                                                        temp2=Matrix_KEY4x4_GPIO&0xf0;//取高四位獲取行號
                                                       
                                                        switch(temp1|temp2)
                                                        {
                                                                case(0x7e):Key_Value=0x01;break;
                                                                case(0x7d):Key_Value=0x02;break;
                                                                case(0x7b):Key_Value=0x03;break;
                                                                case(0x77):Key_Value=0x04;break;
                                                               
                                                                case(0xbe):Key_Value=0x05;break;
                                                                case(0xbd):Key_Value=0x06;break;
                                                                case(0xbb):Key_Value=0x07;break;
                                                                case(0xb7):Key_Value=0x08;break;
                                                               
                                                                case(0xde):Key_Value=0x09;break;
                                                                case(0xdd):Key_Value=0x10;break;
                                                                case(0xdb):Key_Value=0x11;break;
                                                                case(0xd7):Key_Value=0x12;break;
                                                               
                                                                case(0xee):Key_Value=0x13;break;
                                                                case(0xed):Key_Value=0x14;break;
                                                                case(0xeb):Key_Value=0x15;break;
                                                                case(0xe7):Key_Value=0x16;break;
                                                                default:break;
                                                        }
                                        }
                        }
        }
}

評分

參與人數(shù) 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:833834 發(fā)表于 2021-3-24 12:56 | 只看該作者
感謝,非常清楚明白
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久动漫 | 成人在线视频免费观看 | 超碰天天 | 日韩电影中文字幕 | 国产一区二区在线播放 | 久久亚洲精品国产精品紫薇 | 国产午夜精品福利 | 国产精品美女久久久久久免费 | 日本精品一区二区三区在线观看视频 | 国产无套一区二区三区久久 | 看一级毛片 | 水蜜桃久久夜色精品一区 | 美女一级黄| 国产一级视频 | 久久久久网站 | 在线中文字幕av | 国产成人综合亚洲欧美94在线 | 男人的天堂中文字幕 | 国产精品波多野结衣 | 中文字幕在线播放不卡 | 欧美视频精品 | 欧美日韩视频 | 久久精品高清视频 | 国产亚洲网站 | 久久噜| 欧美日韩一区在线播放 | 人人人人爽 | 国产精品精品视频一区二区三区 | 五月婷婷婷 | 精品一二三区 | 国产精品中文字幕在线观看 | 在线免费观看一区二区 | 99精品久久99久久久久 | 国产精品成人国产乱 | 亚洲欧美国产精品一区二区 | 亚洲天堂一区二区 | www.国产.com| 日韩欧美亚洲综合 | 欧美一级久久 | 国产精品久久久久久久久久久久午夜片 | 久久久五月天 |