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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C51單片機(jī)的3*3矩陣鍵盤程序

          C51單片機(jī)的3*3矩陣鍵盤程序

          作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          #include

          #include
          /**延時(shí)1**/ //用于消抖
          void delay1(void)
          {uchar i;
          for(i=0;i<200;i++);
          }

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

          /****延時(shí)2**********/
          void delay2(void)
          {
          uchar i,j,s;
          for(i=250;i>0;i--)
          for(j=250;j>0;j--)
          for(s=5;s>0;s--);
          }
          /****串口初使化****/
          void chuankou_init(void)
          {
          TMOD=0X20;//定時(shí)器1,方式2,8位adclass=0&app_id=0&c=news&cf=1001&ch=0&di=128&fv=17&is_app=0&jk=a379ebf740993484&k=%BC%C6%CA%FD%C6%F7&k0=%BC%C6%CA%FD%C6%F7&kdi0=0&luki=1&n=10&p=baidu&q=98059059_cpr&rb=0&rs=1&seller_id=1&sid=84349940f7eb79a3&ssp2=1&stid=0&t=tpclicked3_hc&tu=u1831118&u=http%3A%2F%2Fwww%2E51hei%2Ecom%2Fmcu%2F2174%2Ehtml&urlid=0" id="3_nwl" mpid="3" target="_blank">計(jì)數(shù)器
          SCON=0x40;//方式1,而不允許接收
          PCON=0X00;//波特率不翻倍
          TH1=0xf4; //11.0592晶振,somd=0,波特率9600,初值=0xfa.應(yīng)用sst89E564,已經(jīng)倍頻
          TL1=0xf4;
          TR1=1; //啟動定時(shí)器1
          }
          /**鍵盤掃描函數(shù)**/
          uchar keyscan(void)
          {
          uchar code_h; //行掃描值
          uchar code_l; //列掃描值
          P1=0xf8; //P1.0-P1.2發(fā)全0,P1.3-P1.5發(fā)1,準(zhǔn)備讀列狀態(tài)
          if((P1&0Xf8)!=0Xf8) //如果P1.3-P1.5不全為1,可能有鍵按下
          {
          delay1(); //消抖
          if((P1&0xf8)!=0xf8) //重讀列位,若還是不全為1,定有鍵按下
          {
          code_h=0xfe;//P1.0為0。開始行掃描
          while((code_h&0x08)!=0x00) //判斷是否為最后一行,若不是,繼續(xù)掃描
          {
          P1=code_h; //P1口輸出行掃描值
          if((P1&0Xf8)!=0Xf8) //如果P1.3-P1.5不全為1,該行有鍵按下
          {
          code_l=((P1&0xf8)|0x07); //保留P3-p5位,低3位為1,作為列值
          return((~code_h)+(~code_l)); //鍵編碼=行掃描值+列掃描值,返回主程序
          }
          else //該行無鍵按下,行掃描值左移,掃描下一行
          code_h=((code_h<<1)|0x01);
          }
          }
          }
          return(0); //無鍵按下,反回0

          }
          /**主函數(shù)**/
          void main(void)
          {
          uchar key;
          chuankou_init(); //串口初使化
          while(1)
          {
          key=keyscan(); //調(diào)用鍵盤掃描函數(shù),返回的鍵值送變量key
          switch(key)
          {
          case 0x0a:SBUF=0X00;delay2();break;
          case 0x11:SBUF=0x05;delay2();break;
          case 0x12:SBUF=0x04;delay2();break;
          case 0x14:SBUF=0x03;delay2();break;
          case 0x22:SBUF=0x01;delay2();break;
          case 0x24:SBUF=0x02;delay2();break;
          case 0x21:SBUF=0x06;delay2();break;
          case 0x0c:break;
          case 0x05:break;

          default:break;
          }
          }
          }



          關(guān)鍵詞: C51單片機(jī)矩陣鍵

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();