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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 兩線式鍵盤(AD按鍵)電路的設(shè)計(jì)與實(shí)現(xiàn)

          兩線式鍵盤(AD按鍵)電路的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2011-11-19 來(lái)源:網(wǎng)絡(luò) 收藏

          在做單片機(jī)項(xiàng)目開(kāi)發(fā)時(shí),經(jīng)常需要用到,而絕大多時(shí)候使用的是單或矩陣。矩陣鍵盤有許多優(yōu)點(diǎn),我在這就不多說(shuō)了,但有一點(diǎn)就是稍微多幾個(gè)就比較浪費(fèi)口線了,尤其是需要將鍵盤引出時(shí),那線多而長(zhǎng)很是一個(gè)不爽。下面我就說(shuō)說(shuō)兩線式的多,鍵盤只需兩根導(dǎo)線就搞定,前提是你的單片機(jī)系統(tǒng)要有多余的一根口線。說(shuō)到這里有人會(huì)問(wèn)了,我的系統(tǒng)沒(méi)有用到模擬采集,為了弄這個(gè)鍵盤再加一個(gè)芯片吧,這不是因小失大嗎?我要說(shuō)的是現(xiàn)在帶有功能的單片機(jī)相當(dāng)?shù)亩啵覂r(jià)格比沒(méi)帶的也貴不了多少。當(dāng)然你選了不帶AD的就另當(dāng)別論了。

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

            我在做一個(gè)項(xiàng)目的按鍵時(shí)遇到幾個(gè)情況:1.產(chǎn)品外設(shè)較多,單片機(jī)I/O口除鍵盤就只剩下一個(gè)I/O了,再?zèng)]有多余的了;2.現(xiàn)場(chǎng)情況所限,鍵盤與主機(jī)板要有一段距離;3.鍵盤需要9個(gè)按鍵。根據(jù)以上的情況采用兩線鍵盤最為合適。如圖所示。

            

            圖中 省略了部分按鍵,可以根據(jù)實(shí)際需要配置按鍵。此時(shí)就可以通過(guò)AD掃描讀取,可以根據(jù)AD值判斷有無(wú)按鍵按下或是那個(gè)按鍵按下。根據(jù)上圖電阻值(為方便舉例,全部取值為1K,可以自行取其它阻值,電壓平均分配就最好)可以算出:無(wú)按鍵按下,AD值為VCC;S1按下,AD值為0;S2按下,AD值為1/2VCC;同理,S3=2/3VCC;S4=3/4VCC;S5=4/5VCC;根據(jù)AD采集值比較最接近那個(gè)鍵值,則就是該按鍵。

            使用此方方法需注意幾點(diǎn):1.按鍵不可太多,這與AD分辨率有關(guān)系,否則將會(huì)檢測(cè)不準(zhǔn)。以8位分辨率來(lái)說(shuō),共256點(diǎn),每個(gè)按鍵的點(diǎn)為25點(diǎn)以上最好。即256/25=10,最多10個(gè)按鍵。具體可以自行實(shí)驗(yàn)。

            2.按鍵選用接觸性較好的按鍵。按鍵差的使用時(shí)間一長(zhǎng),容易產(chǎn)生接觸電阻,按鍵多容易誤檢測(cè)。

          DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




          評(píng)論


          相關(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); })();