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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8004|回復: 9
打印 上一主題 下一主題
收起左側

四種4*4矩陣鍵盤的掃描方法

  [復制鏈接]
跳轉到指定樓層
樓主
ID:100515 發表于 2016-7-13 20:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
第一種:這種方法就是郭天祥書上教的掃描方法,很容易理解,但是程序比較長。
    P2=0xfe;//給第一列送低電平
    temp=P2;
    temp=temp&0xf0;
    while(temp!=0xf0)
    {   
          delay(10); //去抖
         temp=P2;
         temp=temp&0xf0;
           while(temp!=0xf0)
           {   
               temp=P2;
               switch(temp)
                {       case 0xee:num=1;break;
                         case 0xee:num=2;break;
                         case 0xee:num=3;break;
                         case 0xee:num=4;break;
                 }
            while(temp!=0xf0)    //按鍵釋放
             {
                  temp=P2;
                  temp=temp&0xf0;
             }   
         }
     }
然后再給第二、三、四列依次送低電平檢查,也就是說再重復上邊的程序四次

第二種
uchar keyscan(void)  
{
unsigned char cord_h,cord_l;
P2=0x0f;            //行線輸出全為0
cord_h=P2&0x0f;     //讀入列線值
if(cord_h!=0x0f)    //先檢測有無按鍵按下
{
  delayms(10);        //去抖
  if((P2&0x0f)!=0x0f)
  {
    cord_h=P2&0x0f;  //讀入列線值
   P2=cord_h|0xf0;  //輸出當前列線值
   cord_l=P2&0xf0;  //讀入行線值
   while((P2&0xf0)!=0xf0);//等待松開并輸出
   return(cord_h+cord_l);//鍵盤最后組合碼值
  }
}
return(0xff);     //返回該值

第三種
uchar keyscan()                    
{
    uchar i=0,j=0,key;
    P2=0xf0;               // 高位拉高,低位拉低
    if(((~P2)&0xf0)!=0)
    {
        delay(10);
        if(((~P32&0xf0)!=0)
        {
            P2=0xfe;
            while(((~P2)&0x0f)!=0)        // 此語句保證只掃描四行
            {
                if(((~P2)&0xf0)!=0)
                {
                    switch((~P2)&0xf0)
                    {
                        case 0x10:
                            j=0;break;
                        case 0x20:
                            j=1;break;
                        case 0x40:
                            j=2;break;
                        case 0x80:
                            j=3;break;
                    }
                    return(4*i+j);
                }
                else
                {
                    P3=P3<<1;           //循環4次
                    i++;
                }
            }
        }
    }
    return (key) ;   
}
第四種
uchar keyscan(void)
{
    uchar code K_Tab[4][4] = {
          0xee, 0xde, 0xbe, 0x7e, 0xed, 0xdd, 0xbd, 0x7d,
          0xeb, 0xdb, 0xbb, 0x7b, 0xe7, 0xd7, 0xb7, 0x77};
    uchar temp1 = 0xfe, temp2, i, j;
    for(i = 0; i < 4; i++)
    {          //掃描低四位
        P3 = temp1;                     //輸出一行0
        temp2 = P3;                     //馬上就讀入
        if((temp2 & 0xf0) != 0xf0)     //如果有鍵按下
        {
            for(j = 0; j < 4; j++)        //就掃描高四位
                if(temp2 == K_Tab[j])    //查表
            return i * 4 + j;         //查到了就返回按鍵的數值
        }
        else temp1 = _crol_(temp1, 1);
    }
    return 16;                        //沒有查到,返回按鍵松開的代碼
}  


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏9 分享淘帖 頂2 踩
回復

使用道具 舉報

沙發
ID:64089 發表于 2016-7-14 08:44 | 只看該作者
不錯,可以借鑒學習!
回復

使用道具 舉報

板凳
ID:429225 發表于 2018-11-26 15:20 | 只看該作者
第一種有問題,情況都為按鍵1
回復

使用道具 舉報

地板
ID:483991 發表于 2019-3-10 06:34 | 只看該作者
謝謝女神的分享

評分

參與人數 1黑幣 +4 收起 理由
嘉立創AAA + 4 很給力!

查看全部評分

回復

使用道具 舉報

5#
ID:482322 發表于 2019-3-10 20:24 來自手機 | 只看該作者
第一種里面的P2應該是P3吧,矩陣鍵盤好像是P3口控制的
回復

使用道具 舉報

6#
ID:336670 發表于 2019-3-11 09:47 | 只看該作者
謝謝女神的分享
回復

使用道具 舉報

7#
ID:230975 發表于 2019-3-14 14:16 | 只看該作者
190315 發表于 2019-3-10 20:24
第一種里面的P2應該是P3吧,矩陣鍵盤好像是P3口控制的

都可以的
回復

使用道具 舉報

8#
ID:230975 發表于 2019-3-14 14:17 | 只看該作者
對于CPU占用不高的,可以用第一種比較直觀
回復

使用道具 舉報

9#
ID:448556 發表于 2020-3-24 18:21 | 只看該作者
還是利用定時中斷做消抖好點 CPU利用效率高
回復

使用道具 舉報

10#
ID:190577 發表于 2022-10-4 21:16 | 只看該作者
應該使用狀態機思路編程
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日产欧产精品精品推荐蛮挑 | 国产在线视频一区二区董小宛性色 | 亚洲色图综合网 | 亚洲高清网 | 亚洲精品一区二区另类图片 | 日韩精品一区二区三区中文在线 | 久久这里只有精品首页 | 国产精品欧美一区喷水 | 99综合 | www.性色 | 精品一区二区免费视频 | 国产精品99久久免费观看 | 亚洲一区二区在线播放 | 国产精品成人一区二区三区 | av一二三四 | 亚洲激情第一页 | 91久久综合| 亚洲成人毛片 | 欧美日韩中文国产一区发布 | 四季久久免费一区二区三区四区 | 成人免费观看男女羞羞视频 | 成人免费一区二区三区视频网站 | 日韩视频成人 | 精品久久99 | 欧美四虎 | 久优草| 亚洲精品国产电影 | 天天操天天舔 | 亚洲精品小视频在线观看 | 欧美成人精品一区 | 亚洲综合一区二区三区 | 国产精品成人一区二区三区 | 国产69久久精品成人看动漫 | 精品国产一区二区三区性色 | 午夜影院在线观看视频 | 日韩免费毛片 | 午夜精品久久久 | 国产一区二区三区在线观看免费 | 午夜一区二区三区在线观看 | 一区二区三区中文字幕 | 国产欧美一区二区久久性色99 |