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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機上的幾種按鍵輸入實現(xiàn)方法

          單片機上的幾種按鍵輸入實現(xiàn)方法

          作者: 時間:2012-07-10 來源:網(wǎng)絡 收藏

          按鍵作為一種簡單實用的輸入設備已經(jīng)應用于各種應用系統(tǒng)中,可謂是無處不在。但在不同的實用場合下所使用的按鍵也不盡相同。這里就對幾種經(jīng)常用到的按鍵及其使用方法進行介紹。

          1、傳統(tǒng)按鍵:

          傳統(tǒng)按鍵是現(xiàn)在在各種電子設備中應用最為廣泛的按鍵,可能它們的形狀各有不
          同,但其控制方法卻大同小異,利用按鍵是否按下的IO 電平狀態(tài)變化來對其進行識別。
          這種按鍵如下圖所示:

          點擊瀏覽下一頁



          1)直接按鍵

          最簡單的鍵盤就是把電平信號直接接到IO 上。在程序里面讀取IO 電平狀態(tài),如
          果讀到相應的電平,則說明此IO 上所接的按鍵被按下。這種方法原理與控制方法都非
          常簡單,但造成了IO 資源的浪費。這種按鍵方式的示意圖如下:

          點擊瀏覽下一頁


          2)掃描按鍵矩陣

          這種方式很巧妙地利用了IO 資源,使得8 個IO 可以實現(xiàn)16 鍵鍵盤。它
          的示意圖如下:

          點擊瀏覽下一頁

          這種方式比上面的直接按鍵方式從原理與控制上都比上面的直接按鍵要
          復雜。它通過IO 的掃描來獲取鍵值,其實掃描過程非常簡單,過程如下:
          KEY1~KEY4 對應于IO0~IO3,KEY5~KEY8 對應于IO4~IO7。
          1.將IO0~IO3 置高,將IO4 置低,IO5、IO6、IO7 置高,讀取IO0~IO3。第一列的某
          個按鈕按下后,使相應的兩個觸點接通,相應行上的IO 可以讀到低電平。
          2.將IO0~IO3 置高,將IO5 置低,IO4、IO6、IO7 置高,讀取IO0~IO3。第一列的某
          個按鈕按下后,使相應的兩個觸點接通,相應行上的IO 可以讀到低電平。
          3.將IO0~IO3 置高,將IO6 置低,IO4、IO5、IO7 置高,讀取IO0~IO3。第一列的某
          個按鈕按下后,使相應的兩個觸點接通,相應行上的IO 可以讀到低電平。
          4.將IO0~IO3 置高,將IO7 置低,IO4、IO5、IO6 置高,讀取IO0~IO3。第一列的某
          個按鈕按下后,使相應的兩個觸點接通,相應行上的IO 可以讀到低電平。
          循環(huán)此過程可以不斷讀取按鍵鍵值。
          在實際的應用中,這個掃描過程通常是放在定時器的中斷服務程序中去完成的,
          通過全局變量將鍵值返回到其它函數(shù)中去。當然,作為學習其掃描過程,也可以將掃
          描放在主函數(shù)中直接來完成。
          在上面介紹的方式中,讀者可以看到,IO 都是以低電平作為檢測電平,那這
          是為什么呢?這是因為IO 讀取電平狀態(tài)的時候,讀取低電平比高電平要穩(wěn)定。也下
          是因為這一原因外部中斷以低電平或下降沿來作為其中斷觸發(fā)條件,以保證中斷的可*性。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 單片機 按鍵輸入 集成按鍵

          評論


          相關(guān)推薦

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