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

          新聞中心

          EEPW首頁 > 模擬技術(shù) > 設(shè)計應(yīng)用 > 經(jīng)典案例分享:兩種鍵盤掃描方法比較分析

          經(jīng)典案例分享:兩種鍵盤掃描方法比較分析

          作者: 時間:2012-05-15 來源:網(wǎng)絡(luò) 收藏

          說到,相信大多數(shù)人第一反應(yīng)就是行列矩陣掃描,這樣我們可以用相對有限的IO口得到盡可能多的按鍵。是單片機技術(shù)的一種基本處理方法,學(xué)校的單片機課程都會有相應(yīng)章節(jié)進(jìn)行闡述,只要按照課本上講述的方法,一般都能設(shè)計出比較可靠的電路與程序。

            課本上的鍵盤掃描方法(見下圖接法二)不能說是盡善盡美,從易懂性、成本、程序難易程度等方面綜合看應(yīng)該是不錯的方法,給人感覺是已經(jīng)沒有太多的改善空間,至少我是這么認(rèn)為的。

            然而前段時間一位臺灣朋友畫給我的鍵盤掃描矩陣電路(見下圖接法二),讓我又一次看到到自己的思維還有許多地方被自己的所謂“經(jīng)驗”束縛著。

            經(jīng)典案例分享:兩種鍵盤掃描方法比較分析

            單純的從硬件接法看,兩種接法并沒有明顯區(qū)別,接法一甚至要復(fù)雜一些,但如果結(jié)合到鍵盤掃描的程序來看,就會發(fā)現(xiàn)接法一確實更好。

            兩種接法我都沒有把上拉電阻包含進(jìn)來,來讓我們看一下兩種接法到底有什么不同:

            接法二:

            我們熟悉的傳統(tǒng)掃鍵處理電路,假定鍵盤行列IO口標(biāo)號分別為H1/H2/H3和V1/V2/V3,掃鍵流程通常如下。

            2.1. H1設(shè)置為輸出,H2/H3和V1/V2/V3設(shè)置為輸入

            2.2. H1分別輸出1和0,讀V1/V2/V3狀態(tài),如果Vy狀態(tài)與H1一致,則認(rèn)為H1與Vy交叉位置的鍵按下

            2.3. H2設(shè)置為輸出,H1/H3和V1/V2/V3設(shè)置為輸入

            2.4. H2分別輸出1和0,讀V1/V2/V3狀態(tài),如果Vy狀態(tài)與H2一致,則認(rèn)為H2與Vy交叉位置的鍵按下

            2.5. H3設(shè)置為輸出,H1/H2和V1/V2/V3設(shè)置為輸入

            2.6. H3分別輸出1和0,讀V1/V2/V3狀態(tài),如果Vy狀態(tài)與H3一致,則認(rèn)為H3與Vy交叉位置的鍵按下

            接法一:

            新掃鍵處理電路,假定鍵盤行列IO口標(biāo)號分別為H1/H2/H3和V1/V2/V3,掃鍵流程通常如下。

            1.1. H1/H2/H3和V1/V2/V3都設(shè)置為輸入

            1.2. 讀H1/H2/H3和V1/V2/V3狀態(tài),如果Hx和Vy讀到的狀態(tài)均為0,則認(rèn)為Hx與Vy交叉位置的鍵按下

            從上面流程可以看出接法一的程序


          上一頁 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); })();