使用模數轉換(ADC)的特點就可以實現單片機用一個I/O采集多個按鍵信號。
一、單片機的I/O口檢測按鍵簡說
我們知道,一般情況下單片機的一個I/O口作為普通I/O口的話,只能檢測識別一個按鍵。
日常設計中,如果碰到按鍵數量較多的話,會采用行列式鍵盤,例如最常見的4X4矩陣鍵盤,這樣可以實現用8個I/O口檢測16個按鍵。
還有就是鍵盤接口,典型的是我們計算機上用的鍵盤,其采用PS/2接口,現在一般計算機上用的是USB接口的鍵盤。
另外還有使用串口或者IIC、SPI接口的鍵盤芯片,這些使用常見的串口、IIC、SPI通信協議實現。
但是這些都一個以上的I/O口,不是真正的用多個按鍵。
那么有沒有更簡單的辦法,使用更少的I/O口資源檢測更多的按鍵呢?
二、基于模數轉換的AD鍵盤
我們知道按鍵檢測實際上是檢測連接按鍵的端口的高低電平值,在單個I/O口檢測單個按鍵時,只是簡單的判斷連接按鍵的端口的電平是高電平(+5V)還是低電平(0V)。那么是否可以通過電平的微小變化來檢測按鍵是否被按下呢?
下圖為一個A/D鍵盤的原理圖,從圖中可以看出,當不同的按鍵被按下時,ADC端點處的電壓不同,通過判斷不同的電壓值就可以判斷出是那個按鍵被按下。
對于具有AD轉換功能的單片機來說,直接接到一個AD通道即可。對于沒有AD轉換功能的單片機,可采用一個AD轉換模塊。
對于這種按鍵,有以下缺點:
1、對于同一點處的電壓值,A/D多次采樣的結果不可能完全相同。
2)、電阻的誤差。電阻值由于電阻的精度和環境溫度的原因,誤差較大,所以A/D鍵盤各個按鍵點的分壓不準確。
3)、為盡量減少誤差,可以采取增加電阻精度、增加溫度補償等方法,另外在軟件處理時候要注意消除按鍵抖動等因素,還要對實際轉換值和標準值給出誤差補償。
4)、如果按鍵按下,經過A/D轉換,若實際轉換值在允許誤差范圍之內(需要實際測量各點電壓,并計算各點電壓平均值),則認為按鍵按下,否則程序不響應。
5)、實際試驗過程中,還要考慮電阻的累積誤差,選用精度越高的電阻,可分辨的按鍵數目越多。
-
單片機
+關注
關注
6050文章
44705瀏覽量
641309 -
IO
+關注
關注
0文章
474瀏覽量
39668 -
adc
+關注
關注
99文章
6571瀏覽量
546755
原文標題:如何實現單片機用一個I/O采集多個按鍵信號
文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論