單片機一個ADC口實現多按鍵檢測功能

        按鍵電路是單片機應用中最廣泛最簡單的一個電路了,實際項目中經常會用到按鍵,但是一個按鍵往往需要佔用一個IO口,特別是單片機資源比較緊張的情況下,IO就顯得更加珍貴了。如果要用到按鍵,同時又不想浪費IO口,那麼可以換一個思路,通過AD口檢測電壓的方法來實現按鍵功能。

       先舉一個簡單的例子:

                                

三個電阻R1、R2、R3串聯,按鍵S1和電阻R1並聯,按鍵S2和電阻R2並聯,然後將R1和R2中間接到單片機IO口上,通過IO口讀取外部電壓,根據電壓判斷是哪個按鍵按下。

            

通過仿真可以看出,按鍵未按下時,ADC口電壓爲2.5V,按鍵S1按下後ADC口電壓爲5 V,按鍵S2按下後ADC口電壓爲0.05V。

按鍵S1、S2同時按下後ADC口電壓仍然爲5V。說明這種方法只能檢測獨立按鍵,不能檢測組合按鍵。

注意電路中的R3電阻不能省掉,否則S1、S2按鍵同時按下後,電源會直接被短路。

通過ADC口的電壓變化來判斷外部按鍵,這樣只需要一個ADC口就可以實現多個按鍵檢測。那麼在看看更多的按鍵要如何檢測。

                 

這個電路可以實現6個按鍵的檢測,不同的按鍵按下後,就會選擇不同電阻進行串並聯組合,從而改變輸出電壓值。

按鍵未按下時,輸出電壓爲0V。

按鍵S3按下後,輸出電壓爲3.947V。按鍵S4按下後,輸出電壓爲3.125V。

按鍵S5按下後,輸出電壓爲2.439V。按鍵S6按下後,輸出電壓爲1.829V。

按鍵S7按下後,輸出電壓爲1.25V。按鍵S8按下後,輸出電壓爲0.657V。

根據單片機ADC採樣精度和分壓電阻精度的不同,可以檢測的按鍵數量也不同。但是核心思想都是通過ADC讀取電壓值,根據電壓值得不同來判斷是哪個按鍵按下。要注意的是這種方法只適合檢測獨立按鍵,不適合檢測組合按鍵。

這樣在IO口資源不夠用的情況下,可以通過ADC口來作爲按鍵的檢測口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章