如何實(shí)現(xiàn)單片機(jī)用一個(gè)I/O采集多個(gè)按鍵信號(hào)
使用模數(shù)轉(zhuǎn)換(ADC)的特點(diǎn)就可以實(shí)現(xiàn)單片機(jī)用一個(gè)I/O采集多個(gè)按鍵信號(hào)。
一、單片機(jī)的I/O口檢測(cè)按鍵簡(jiǎn)說(shuō)
我們知道,一般情況下單片機(jī)的一個(gè)I/O口作為普通I/O口的話,只能檢測(cè)識(shí)別一個(gè)按鍵。
日常設(shè)計(jì)中,如果碰到按鍵數(shù)量較多的話,會(huì)采用行列式鍵盤(pán),例如最常見(jiàn)的4X4矩陣鍵盤(pán),這樣可以實(shí)現(xiàn)用8個(gè)I/O口檢測(cè)16個(gè)按鍵。
還有就是鍵盤(pán)接口,典型的是我們計(jì)算機(jī)上用的鍵盤(pán),其采用PS/2接口,現(xiàn)在一般計(jì)算機(jī)上用的是USB接口的鍵盤(pán)。
另外還有使用串口或者IIC、SPI接口的鍵盤(pán)芯片,這些使用常見(jiàn)的串口、IIC、SPI通信協(xié)議實(shí)現(xiàn)。
但是這些都一個(gè)以上的I/O口,不是真正的用多個(gè)按鍵。
那么有沒(méi)有更簡(jiǎn)單的辦法,使用更少的I/O口資源檢測(cè)更多的按鍵呢?
二、基于模數(shù)轉(zhuǎn)換的AD鍵盤(pán)
我們知道按鍵檢測(cè)實(shí)際上是檢測(cè)連接按鍵的端口的高低電平值,在單個(gè)I/O口檢測(cè)單個(gè)按鍵時(shí),只是簡(jiǎn)單的判斷連接按鍵的端口的電平是高電平(+5V)還是低電平(0V)。那么是否可以通過(guò)電平的微小變化來(lái)檢測(cè)按鍵是否被按下呢?
下圖為一個(gè)A/D鍵盤(pán)的原理圖,從圖中可以看出,當(dāng)不同的按鍵被按下時(shí),ADC端點(diǎn)處的電壓不同,通過(guò)判斷不同的電壓值就可以判斷出是那個(gè)按鍵被按下。
對(duì)于具有AD轉(zhuǎn)換功能的單片機(jī)來(lái)說(shuō),直接接到一個(gè)AD通道即可。對(duì)于沒(méi)有AD轉(zhuǎn)換功能的單片機(jī),可采用一個(gè)AD轉(zhuǎn)換模塊。
對(duì)于這種按鍵,有以下缺點(diǎn):
1、對(duì)于同一點(diǎn)處的電壓值,A/D多次采樣的結(jié)果不可能完全相同。
2)、電阻的誤差。電阻值由于電阻的精度和環(huán)境溫度的原因,誤差較大,所以A/D鍵盤(pán)各個(gè)按鍵點(diǎn)的分壓不準(zhǔn)確。
3)、為盡量減少誤差,可以采取增加電阻精度、增加溫度補(bǔ)償?shù)确椒ǎ硗庠谲浖幚頃r(shí)候要注意消除按鍵抖動(dòng)等因素,還要對(duì)實(shí)際轉(zhuǎn)換值和標(biāo)準(zhǔn)值給出誤差補(bǔ)償。
4)、如果按鍵按下,經(jīng)過(guò)A/D轉(zhuǎn)換,若實(shí)際轉(zhuǎn)換值在允許誤差范圍之內(nèi)(需要實(shí)際測(cè)量各點(diǎn)電壓,并計(jì)算各點(diǎn)電壓平均值),則認(rèn)為按鍵按下,否則程序不響應(yīng)。
5)、實(shí)際試驗(yàn)過(guò)程中,還要考慮電阻的累積誤差,選用精度越高的電阻,可分辨的按鍵數(shù)目越多。
-
單片機(jī)
+關(guān)注
關(guān)注
6065文章
44945瀏覽量
648040 -
IO
+關(guān)注
關(guān)注
0文章
488瀏覽量
40297 -
adc
+關(guān)注
關(guān)注
99文章
6658瀏覽量
548513
原文標(biāo)題:如何實(shí)現(xiàn)單片機(jī)用一個(gè)I/O采集多個(gè)按鍵信號(hào)
文章出處:【微信號(hào):changxuemcu,微信公眾號(hào):暢學(xué)單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
控制關(guān)電的I/O口,如何實(shí)現(xiàn)徹底關(guān)電

8051單片機(jī)的四組I/O端口

單片機(jī)用一個(gè)I/O采集多個(gè)按鍵信號(hào)
基于單片機(jī)的矩陣鍵盤(pán)檢測(cè)案例

單片機(jī)I/O口的使用
單片機(jī)I/O 口模擬串行通信設(shè)計(jì)
利用單片機(jī)多余I/O口實(shí)現(xiàn)溫度檢測(cè)電路

用單片機(jī)I/O引腳實(shí)現(xiàn)A/D功能的原理與應(yīng)用
如何通過(guò)I2C總線I/O口實(shí)現(xiàn)系統(tǒng)的多個(gè)功能?

單片機(jī)如何通過(guò)I/O口實(shí)現(xiàn)斷電自關(guān)機(jī)

單片機(jī)學(xué)習(xí)-矩陣按鍵

單片機(jī)如何通過(guò)I/O口實(shí)現(xiàn)斷電自關(guān)機(jī)

單片機(jī)如何通過(guò)I/O口實(shí)現(xiàn)斷電自關(guān)機(jī)

如何實(shí)現(xiàn)單片機(jī)用一個(gè)I/O采集多個(gè)按鍵信號(hào)?

評(píng)論