專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
在單片機(jī)應(yīng)用中,經(jīng)常要用到按鍵輸入,在有較多按鍵輸入的情況下,通常會使用矩陣式掃描方法來完成,例如對于16 個按鍵輸入的場合,會使用4 × 4 矩陣鍵盤,這需要占用較多的I/O口(如8 個),而對于單片機(jī)來說,其I/O 口資源非常有限,當(dāng)I/O 口資源緊缺時,只好選用成本更高的具有更多I/O 口的單片機(jī)來使用,本文介紹一種只用一個I/O 口實(shí)現(xiàn)多按鍵輸入的方法。對于使用一個I/O 口來實(shí)現(xiàn)多按鍵輸入,有個前提條件,就是這個I/O 口具有A/D 轉(zhuǎn)換功能,只要使不同的鍵按下時,A/D 轉(zhuǎn)換輸人端的電壓不同,就可識別出所按的鍵,其電路如下圖所示:在無鍵按下時,I/O 口端電壓為電源電壓Vcc,當(dāng)S1 鍵按下時,I/O 口端電壓最低,是電阻R1 和R2 的分壓,當(dāng)S2 鍵按下時,I/O 口端電壓變高,是電阻R1 和(R2+R3)的分壓,同理,當(dāng)S3、S4 按下時,電壓會更高,通過對該I/O 口的A/D 轉(zhuǎn)換值的大小進(jìn)行判斷,就可以得知所 按下的哪一個鍵。
圖中只列出了4 個按鍵的例子,在實(shí)際使用中,適當(dāng)調(diào)整電阻值,可使按鍵數(shù)增加很多,在8 位A/D 轉(zhuǎn)換中,理論按鍵數(shù)可以達(dá)到255個,單片機(jī)最小可識別電壓為(單片機(jī)電源為VCC)VCC/255,但考慮到干擾問題,一般建議各按鍵之間保證有0.1V以上的電壓差,按此要求一個I/O口能最大擴(kuò)展到50個按鍵。