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

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 4*4矩陣鍵盤模塊程序的調用

          4*4矩陣鍵盤模塊程序的調用

          作者: 時間:2016-11-18 來源:網絡 收藏
          產生.lib文件的方法:選擇“工程”——“目標target屬性”——“輸出”——產生庫文件*.lib,修改完后,編譯一下程序,無措后,就在工程目錄下產生一個.lib文件,到時要用到這個模塊程序時,直接把.c和.lib文件拷貝到所在的目錄下,再把.c的文件加載到工程文件里就OK了。

          /*
          ***************************************************************************************
          摘 要: 4*4小鍵盤模塊程序,供以后其他程序調用.其中P2口高四位接鍵盤列,P2口低四位接鍵盤行,
          版 本: V1.0
          完成日期: 2008.4.28
          作 者: ZHOUSFE
          ***************************************************************************************
          修改日期: 2008.5.6
          版 本: V1.2
          ****************************************************************************************
          */

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

          #i nclude
          #define uchar unsigned char
          #define keyport P2
          //uchar code seg[16]=

          {0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90,0X88,0X83,0XC6,0XA1,0X86,0X8E}; //0~f,

          共陽極
          uchar code keycode[16]=

          {0xEE,0XDE,0XBE,0X7E,0XED,0XDD,0XBD,0X7D,0XEB,0XDB,0XBB,0X7B,0XE7,0XD7,0XB7,0X77};//待查詢的

          鍵碼值

          /*
          *******************************************************************************************
          函數名稱:delay()
          功能描述:延時ms個微妙
          入口參數:unsigned int ms
          出口參數:無
          *******************************************************************************************
          */

          void delay(unsigned int ms)
          {
          unsigned char a;
          while(!ms--)
          for(a=0;a<124;a++);
          }

          /*
          *******************************************************************************************
          函數名稱:keyscan()
          功能描述:鍵盤掃描程序,利用行掃描方式,得到鍵值
          入口參數:無
          出口參數:掃描得到的鍵值~((~sm)+(~fh))
          *******************************************************************************************
          */

          uchar keyscan(void)
          {
          uchar sm; //存放行掃描代碼,該函數的返回值的低四位
          uchar fh; //該函數的返回值的高四位
          keyport=0xf0;
          if((keyport&0xf0)!=0xf0) //判斷是否有按鍵按下
          {
          delay(2); //去抖動延時(1~10ms)
          if((keyport&0xf0)!=0xf0)
          {
          sm=0xfe; //行掃描初值
          while((sm&0x10)!=0)
          {
          keyport=sm;
          if((keyport&0xf0)!=0xf0) //若本行有鍵按下,則執(zhí)行讀取鍵值信息
          {
          fh=(keyport&0xf0)|0x0f;
          return(~((~sm)+(~fh))); //返回掃描的鍵值
          }
          else sm=(sm<<1)|0x01; //若本行沒有鍵按下,則掃描下一行
          }
          }
          }
          return 0xff; //若沒有按鍵按下,則返回0xff
          }

          /*
          *******************************************************************************************
          函數名稱:getkey()
          功能描述:將掃描得到的鍵值轉化為對應的0~f
          入口參數:無
          出口參數:顯示的數字0~f
          *******************************************************************************************
          */

          uchar getkey()
          {
          uchar key;
          uchar temp;
          uchar j;
          while(1)
          {
          key=keyscan();
          delay(2);
          for(j=0;j<16;j++)
          {
          if(key==keycode[j]) //通過查詢方式,得到按下的按鍵值
          {
          temp=j; //按鍵值先保存于temp中
          if(key==0xff) //若沒有按下下一個鍵,則一直顯示上一個鍵值
          {
          return temp;
          }
          else
          {
          return j;
          temp=j; //更新temp里的值
          }
          }
          }
          }
          }
          /*
          *******************************************************************************************
          測試用函數
          *******************************************************************************************
          */
          /*void main(void)
          {
          uchar ch;
          P3&=0xfe;
          while(1)
          {
          ch=getkey();
          P0=~seg[ch]; //P0口接數碼管
          }
          }*/



          評論


          相關推薦

          技術專區(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); })();