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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 2個I/O 口檢測6個按鍵

          2個I/O 口檢測6個按鍵

          作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
          今天看到了用2個I/O口來檢測6個按鍵的方法,確實很霸道,特傳上來和大家一起分享。
          原理圖如下:


          分析:
          首先:IO1,IO2輸出高電平
          S1按下,IO2為低電平
          S2按下,IO1為低電平
          S3按下,IO1,IO2為0.7V(1N4148導通電壓),還是低電平。
          現(xiàn)在開始判別其他幾個按鍵了:
          1、IO1輸出低電平,讀IO2電平
          如果IO2為低電平,此時應(yīng)該是S4或者S6按下(S6按下時,IO2為0.7V,依舊是低電平)。
          此時IO1輸出高電平,IO2輸出低電平,讀IO1電平
          當S4按下時,IO1為低電平。剩余的就只能是S6了。
          2、IO1輸出高電平,IO2輸出低電平
          讀IO1,S5按下時,IO1為低電平。若IO1依舊為高電平,則是S6按下了。

          按鍵掃描程序:
          unsignedcharscan_key(void)
          {
          unsignedcharkeyval=0;//無鍵,有鍵1~6

          KEY_IO1=1;//釋放總線
          KEY_IO2=1;//釋放總線

          if(!KEY_IO1&&!KEY_IO2)
          keyval=3;//S3
          elseif(!KEY_IO1)
          keyval=2;//S2
          elseif(!KEY_IO2)
          keyval=1;//S1
          else
          {
          //開始掃描,也要考慮小毛賊的問題~~~
          KEY_IO1=0;//掃描
          if(!KEY_IO2)
          {
          //這時不能立即判定S4/S6
          KEY_IO1=1;//釋放總線
          KEY_IO2=0;//反向掃描
          if(!KEY_IO1)
          keyval=4;//S4~~~
          else
          keyval=6;//S6
          }
          else
          {
          //只能是S5了
          KEY_IO1=1;//釋放總線
          KEY_IO2=0;//反向掃描

          if(!KEY_IO1)
          keyval=5;//S5
          //elsekeyval=6;//S6//上面已判出了S6,這句是廢話
          }
          KEY_IO1=1;//釋放總線//已經(jīng)釋放~~~
          KEY_IO2=1;//釋放總線
          }
          returnkeyval;//返回鍵值0-無鍵,1~6-S1~S6鍵
          }

          程序流程圖:

          由于演示圖片是動態(tài)的,此處無法進行演示。



          關(guān)鍵詞: IO口檢測按

          評論


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