<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機檢測矩陣鍵盤.c文件

          單片機檢測矩陣鍵盤.c文件

          作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏

          這是電路圖

          本文引用地址:http://www.ex-cimer.com/article/201611/323855.htm

          仿真文件和完整源碼下載:http://www.51hei.com/bbs/dpj-22586-1.html

          下面是矩陣鍵盤.c文件
          #include
          #include "delay_ms.h"http://利用函數(shù)delay_ms(unsigned int x)延時 x ms
          #include "矩陣鍵盤.h" //頭文件中宏定義#define JPJK P3
          void baoj1();
          unsigned char keyscan()
          {
          unsigned char temp,key;
          key = 0xff;
          JPJK = 0xfe; //將第一行線置低電平
          temp = JPJK;//讀JPJK的當前狀態(tài)到 temp
          temp &= 0xf0;// temp = temp & 0xf0 按位與
          if(temp != 0xf0)
          {
          delay_ms(10);//延時去抖
          temp = JPJK;
          temp &= 0xf0;
          if(temp != 0xf0)//第一行有鍵被按下
          {
          temp = JPJK;//讀被按下的鍵
          baoj1();
          switch(temp)
          {
          case 0xee: key = 1;break;
          case 0xde: key = 2;break;
          case 0xbe: key = 3;break;
          case 0x7e: key = 0x0a;break;
          }
          while(temp != 0xf0)//等待按鍵釋放
          {
          temp = JPJK;
          temp &= 0xf0;
          }
          }
          }
          JPJK = 0xfd; //將第二行線置低電平
          temp = JPJK;//讀JPJK的當前狀態(tài)到 temp
          temp &= 0xf0;// temp = temp & 0xf0
          if(temp != 0xf0)
          {
          delay_ms(10);//延時去抖
          temp = JPJK;
          temp &= 0xf0;
          if(temp != 0xf0)//第二行有鍵被按下
          {
          temp = JPJK;//讀被按下的鍵
          baoj1();
          switch(temp)
          {
          case 0xed: key = 4;break;
          case 0xdd: key = 5;break;
          case 0xbd: key = 6;break;
          case 0x7d: key = 0x0b;break;
          }
          while(temp != 0xf0)//等待按鍵釋放
          {
          temp = JPJK;
          temp &= 0xf0;
          }
          }
          }
          JPJK = 0xfb; //將第 三行線置低電平
          temp = JPJK;//讀JPJK的當前狀態(tài)到 temp
          temp &= 0xf0;// temp = temp & 0xf0
          if(temp != 0xf0)
          {
          delay_ms(10);//延時去抖
          temp = JPJK;
          temp &= 0xf0;
          if(temp != 0xf0)//第三行有鍵被按下
          {
          temp = JPJK;//讀被按下的鍵
          baoj1();
          switch(temp)
          {
          case 0xeb: key = 7;break;
          case 0xdb: key = 8;break;
          case 0xbb: key = 9;break;
          case 0x7b: key = 0x0c;break;
          }
          while(temp != 0xf0)//等待按鍵釋放
          {
          temp = JPJK;
          temp &= 0xf0;
          }
          }
          }
          JPJK = 0xf7; //將第四行線置低電平
          temp = JPJK;//讀JPJK的當前狀態(tài)到 temp
          temp &= 0xf0;// temp = temp & 0xf0
          if(temp != 0xf0)
          {
          delay_ms(10);//延時去抖
          temp = JPJK;
          temp &= 0xf0;
          if(temp != 0xf0)//第四行有鍵被按下
          {
          temp = JPJK;//讀被按下的鍵
          baoj1();
          switch(temp)
          {
          case 0xe7: key = 0;break;
          case 0xd7: key = 0;break;
          case 0xb7: key = 0x0f;break;
          case 0x77: key = 0x0d;break;
          }
          while(temp != 0xf0)//等待按鍵釋放
          {
          temp = JPJK;
          temp &= 0xf0;
          }
          }
          }
          return key; //返回按下的鍵
          }



          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();