在單片機(jī)系統(tǒng)里,按鍵是常見的輸入設(shè)備。本文將介紹四種按鍵硬件設(shè)計(jì)上的方案和一些軟件設(shè)計(jì)方面的技巧。
一、直接檢測(cè)GPIO口單個(gè)按鍵,如圖1所示。
圖1:方案一
二、在按鍵較多的情況下,則使用矩陣鍵盤,如圖2所示。
圖2:方案二
三、將按鍵接到外部中斷引腳上,利用按鍵按下產(chǎn)生的邊沿信號(hào)進(jìn)行按鍵檢測(cè),如圖3所示。
圖3:方案三
四、利用單片機(jī)的數(shù)字轉(zhuǎn)換器(ADC - Analog-to-digital converter),設(shè)定按鍵按下前后經(jīng)過(guò)ADC接口電壓的不同,根據(jù)電壓的差別來(lái)識(shí)別按鍵,如圖4所示。
圖4:方案四
以上四種設(shè)計(jì)分別各有優(yōu)點(diǎn)和不足。
第一種設(shè)計(jì)是最簡(jiǎn)單、最基礎(chǔ)的做法,對(duì)于單片機(jī)初學(xué)者很容易理解和使用,但缺點(diǎn)是需要在主循環(huán)中不斷檢測(cè)按鍵是否按下,并且需要做消抖處理。若主循環(huán)中某個(gè)函數(shù)任務(wù)占用時(shí)間較長(zhǎng),則按鍵會(huì)有不同程度的“失靈”。
第二種設(shè)計(jì)的優(yōu)點(diǎn)是能夠在GPIO數(shù)量有限的情況下,擴(kuò)展盡可能多的按鍵。但缺點(diǎn)同上,需要不停檢測(cè)按鍵是否按下。
第三種設(shè)計(jì)的效率最高,不需要循環(huán)檢測(cè)按鍵是否按下,但缺點(diǎn)是需要單片機(jī)有足夠的外部中斷接口供使用。
第四種設(shè)計(jì)的優(yōu)點(diǎn)是只需要單片機(jī)有一個(gè)ADC接口、一根線,就能對(duì)多個(gè)按鍵進(jìn)行識(shí)別,缺點(diǎn)是按鍵內(nèi)部一旦接觸不良,則可能導(dǎo)致按鍵串位,并且按鍵產(chǎn)生的抖動(dòng)有可能會(huì)造成識(shí)別錯(cuò)誤。
在以上常見按鍵設(shè)計(jì)的基礎(chǔ)上,分享一下我學(xué)習(xí)和工作中總結(jié)的按鍵方案。
改進(jìn)一:在原方案一的基礎(chǔ)上,加上與門電路,使得任何一個(gè)按鍵按下都能產(chǎn)生中斷,然后在中斷里面識(shí)別是哪個(gè)按鍵被按下。這改動(dòng)令電路不需要循環(huán)掃描,大大提高了效率。方案如圖5所示。只需要在每個(gè)按鍵對(duì)應(yīng)地增加一個(gè)二極管,利用二極管的線與特性,就可以實(shí)現(xiàn)按下任何按鍵都能產(chǎn)生中斷信號(hào),同時(shí)按鍵之間互不影響。二極管選用普通整流二極管即可,經(jīng)過(guò)測(cè)試,可靠可行。
圖5:改進(jìn)一
改進(jìn)二:在原有ADC按鍵的基礎(chǔ)上,也可以增加二極管的方式,實(shí)現(xiàn)按鍵中斷,并在中斷服務(wù)程序里進(jìn)行AD轉(zhuǎn)換,從而識(shí)別按鍵。電路如圖6所示。
圖6:改進(jìn)二
改進(jìn)三:按鍵時(shí)難免會(huì)作成抖動(dòng),因此必需按鍵消抖。消抖也可以通過(guò)硬件消抖和軟件消抖,這里分享一個(gè)十分簡(jiǎn)單且有效的硬件消抖方法:給按鍵并聯(lián)一個(gè)104左右的電容,這樣軟件上基本不用處理即可消除抖動(dòng)。
改進(jìn)四:在按鍵掃描檢測(cè)的方案下,如果主循環(huán)中有某個(gè)函數(shù)占用時(shí)間較長(zhǎng),按鍵或會(huì)發(fā)生長(zhǎng)短不一的“失靈”。對(duì)此可以將按鍵掃描放到定時(shí)器中斷里面,這樣就可周期性地檢測(cè)按鍵按下的情況,在不受主循環(huán)的影響下解析出按鍵的不同狀態(tài)。(按下、按住、彈起和未按下)
如果都設(shè)置了以上的改進(jìn),仍要注意以下兩點(diǎn):
一、定時(shí)器的定時(shí)時(shí)間不可過(guò)長(zhǎng)也不可過(guò)短。過(guò)長(zhǎng)容易檢測(cè)不到按下,過(guò)短會(huì)占用大量時(shí)間資源。
二、中斷服務(wù)程序需簡(jiǎn)單明了。只做檢測(cè)用,通過(guò)全局變量傳遞,在主循環(huán)內(nèi)完成按鍵響應(yīng),盡量不要在中斷服務(wù)函數(shù)內(nèi)占用太多時(shí)間。
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44992瀏覽量
650543 -
軟硬件
+關(guān)注
關(guān)注
1文章
313瀏覽量
19707 -
按鍵
+關(guān)注
關(guān)注
4文章
227瀏覽量
58075
原文標(biāo)題:這些單片機(jī)按鍵設(shè)計(jì)方案,拿走不謝!
文章出處:【微信號(hào):Mouser-Community,微信公眾號(hào):貿(mào)澤電子設(shè)計(jì)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄

硬件工程師必須掌握四種MOS驅(qū)動(dòng)電路!看看你學(xué)會(huì)幾種?#MOS#硬件電路#單片機(jī)#單片機(jī)方案開發(fā)
24位同步采樣ADC軟硬件替換ADS1274動(dòng)態(tài)應(yīng)變器應(yīng)用方案

16位6通道AFE軟硬件兼容ADS1120多參數(shù)監(jiān)護(hù)儀應(yīng)用方案

基于51/32單片機(jī)按鍵控制步進(jìn)電機(jī)正反轉(zhuǎn),A4988驅(qū)動(dòng)
觸摸按鍵噪聲對(duì)策 瑞薩CTSU MCU在應(yīng)對(duì)噪聲困擾時(shí)軟硬件設(shè)計(jì)注意點(diǎn)

兆芯CPU近期軟硬件適配動(dòng)態(tài)
恩智浦電機(jī)控制軟硬件解決方案

基于51單片機(jī)的分貝檢測(cè)報(bào)警系統(tǒng)(噪聲儀)

基于51單片機(jī)的遙控音樂系統(tǒng)仿真

仿真設(shè)計(jì)|基于51單片機(jī)的售貨機(jī)系統(tǒng)仿真

基于51單片機(jī)的遠(yuǎn)程防盜報(bào)警系統(tǒng)

單片機(jī)io口的四種工作狀態(tài)
基于STM32單片機(jī)的智能加濕器設(shè)計(jì)

評(píng)論