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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)學(xué)習(xí)之5-獨(dú)立按鍵和矩陣鍵盤

          51單片機(jī)學(xué)習(xí)之5-獨(dú)立按鍵和矩陣鍵盤

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

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

          鍵盤的原理

          鍵盤分編碼鍵盤(例如電腦鍵盤)和非編碼鍵盤(自己用程序去識(shí)別)。

          非編碼鍵盤分:獨(dú)立式非編碼鍵盤(獨(dú)立按鍵)、行列式非編碼鍵盤(4*4陣列鍵盤)

          獨(dú)立鍵盤的電路圖。

          因?yàn)?1單片機(jī)的IO口不是雙向口而是準(zhǔn)雙向口,要讓IO口具備輸入功能,必須將IO口置1,置1之后當(dāng)按鍵按下時(shí)IO口的電平會(huì)被拉低,即被置0。當(dāng)檢測到IO口為0時(shí)即可判斷該按鍵已經(jīng)按下。按鍵按下時(shí)會(huì)有一個(gè)抖動(dòng)的過程(彈片會(huì)抖動(dòng)),由于單片機(jī)檢測IO口速度非常快,超過彈片抖動(dòng)的頻率,所以當(dāng)單片機(jī)檢測到IO口為0時(shí)需延時(shí)一小段時(shí)間再檢測IO是否為0,如果仍為0就確認(rèn)該按鈕被按下。因?yàn)镮O口里面有上拉電阻,所以當(dāng)松開按鈕時(shí),IO口又被拉高。

          例程:

          #include

          #defineuintunsignedint

          #defineucharunsignedchar

          sbitKey=P3^4;//按鍵

          sbitLed=P1^0;//Led燈

          voiddelay(uintz);

          /********主函數(shù)********/

          voidmain()

          {

          while(1)

          {

          if(!Key)

          {

          delay(10);//消抖操作

          if(!Key)

          Led=0;//按下時(shí)Led亮

          else

          Led=1;

          }

          }

          }

          voiddelay(uintz)

          {

          uintx,y;

          for(x=z;x>0;x--)

          for(y=110;y>0;y--);

          }

          第15集

          4*4矩陣鍵盤

          上圖中,1個(gè)按鍵占用一個(gè)IO口,如果有16個(gè)按鍵就占用了16個(gè)IO口。為了減少IO口的使用,就需要用矩陣的方式連線。如下圖


          矩陣掃描原理

          從圖可以看出P30、P31、P32、P33為行(低四位),P34、P35、P36、P37為列(高四位)。

          假設(shè)我們按下的是S6按鈕。


          上一頁 1 2 下一頁

          評(píng)論


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