王士瑩 張學(xué)
摘要: 提出了一種連續(xù)狀態(tài)法的按鍵檢測(cè)濾波方法,可以準(zhǔn)確穩(wěn)定地讀取按鍵狀態(tài)。對(duì)按鍵的“按下”、 “彈起”等基本狀態(tài)進(jìn)行分析,結(jié)合時(shí)間長(zhǎng)短和動(dòng)作次數(shù),提出了“短按”、“長(zhǎng)按”、“雙擊”等功能及其判定流程。實(shí)現(xiàn)了對(duì)按鍵的功能的擴(kuò)展,由單功能按鍵擴(kuò)展為多功能按鍵,充分發(fā)揮了按鍵的潛能。通過(guò)實(shí)例,對(duì)按鍵功能的實(shí)際應(yīng)用進(jìn)行了討論。
【關(guān)鍵詞】按鍵檢測(cè) 軟件濾波 功能擴(kuò)展
按鍵是機(jī)器與人交互(HMI)所必不可少的器件,在單片機(jī)系統(tǒng)中有著廣泛的應(yīng)用。按鍵在實(shí)際使用中存在著功能單一,不能正確使用或充分使用的問(wèn)題。本文對(duì)此進(jìn)行研究并深入發(fā)掘,力求使按鍵最大化地發(fā)揮其功能。
1 軟件濾波
機(jī)械按鍵在狀態(tài)切換時(shí)通常會(huì)有狀態(tài)不穩(wěn)定的一個(gè)階段,在這個(gè)階段產(chǎn)生的毛刺夾雜著高低電平,如果單片機(jī)直接讀取,很大概率會(huì)出現(xiàn)誤讀。因此除了硬件上要有相應(yīng)的濾波措施外,還要在程序中加入濾波功能,把不穩(wěn)定的狀態(tài)濾掉,以讀取按鍵的穩(wěn)定真實(shí)狀態(tài)。本文介紹一種連續(xù)狀態(tài)法來(lái)讀取按鍵狀態(tài)。基本思路為:讀取按鍵狀態(tài)并與前一次讀取的狀態(tài)進(jìn)行比較,若一致則記下讀取次數(shù)并延時(shí)后進(jìn)行下一次的讀??;若不一致,則把讀取次數(shù)清零重新讀取;重復(fù)上述過(guò)程,直到讀取次數(shù)達(dá)到10次。也就是說(shuō),只有讀到的按鍵狀態(tài)連續(xù)10次都一致,才認(rèn)為該狀態(tài)是正確穩(wěn)定的按鍵狀態(tài);若中間有一次不一致,則重新讀取,直到出現(xiàn)連續(xù)10次一致。流程圖如圖1所示。
2 按鍵功能
2.1 基本功能
按鍵的基本功能狀態(tài)有四個(gè),分別是:無(wú)動(dòng)作、按下、彈起、一直按下。定義一直按下的狀態(tài)是“1”,無(wú)動(dòng)作的狀態(tài)是“O”,則按下是從0到1上升沿,彈起是從1到O的下降沿。
對(duì)四個(gè)基本功能的定義流程如表1。
按鍵的“單擊”包括“按下”和“彈起”,是最常用的功能。使用“按下”觸發(fā)單片機(jī)的某個(gè)功能時(shí),單片機(jī)檢測(cè)到按鍵按下即運(yùn)行對(duì)應(yīng)功能,彈起按鍵時(shí)該功能已經(jīng)在運(yùn)行了;使用“彈起”時(shí),要等到按鍵彈開(kāi)后再運(yùn)行對(duì)應(yīng)功能。因此,使用“按下”比“彈起”反應(yīng)更快,操作更流暢。
2.2 “短按”和“長(zhǎng)按”功能
在一直按下的狀態(tài),根據(jù)按下的時(shí)間長(zhǎng)短,可以定義“短按”和“長(zhǎng)按”,可以把一直按下的時(shí)間在1秒到2秒以內(nèi)的動(dòng)作定義為“短按”,把3秒以上的動(dòng)作定義為“長(zhǎng)按”。判斷流程如圖2。
2.3 “雙擊”功能
還可以根據(jù)兩次按下的時(shí)間間隔的長(zhǎng)短定義“雙擊”功能。根據(jù)功能需要和操作習(xí)慣,一般把間隔在0.5秒以內(nèi)的連續(xù)兩次按下定義為“雙擊”。如圖3。
經(jīng)過(guò)以上處理,按鍵的功能由單一的“按下”,擴(kuò)展出了“短按”、“長(zhǎng)按”、“雙擊”。給每個(gè)動(dòng)作賦予處理函數(shù),則可以實(shí)現(xiàn)多個(gè)功能,該按鍵也可稱為多功能按鍵。
3 應(yīng)用實(shí)例
LCD是單片機(jī)系統(tǒng)中的常用顯示器件。若顯示的信息量大,一屏不夠,則需要多屏顯示,在各顯示界面之間用按鍵切換。另外,處于節(jié)省成本的考慮,多個(gè)單片機(jī)系統(tǒng)共用一個(gè)顯示器,需要查看參數(shù)時(shí)把LCD顯示器裝上,用完拆下隨身帶走。由于LCD顯示器需要初始化才能工作,因此安裝上后需要用按鍵通知單片機(jī)對(duì)LCD進(jìn)行初始化操作?;谝陨戏治觯褂枚喙δ馨存I的“按下”功能進(jìn)行切換顯示頁(yè)面的操作,用“雙擊”功能對(duì)LCD屏幕進(jìn)行初始化操作。
在位置跟蹤系統(tǒng)中,常用到“校準(zhǔn)”操作。校準(zhǔn)分為對(duì)當(dāng)前位置的校準(zhǔn)和對(duì)定位開(kāi)關(guān)的校準(zhǔn)。由于校準(zhǔn)會(huì)改變位置角度的數(shù)值,故該操作需要慎重使用。因此,可以用多功能按鍵的“短按”和“長(zhǎng)按”,進(jìn)行該操作。用“短按”進(jìn)行當(dāng)前位置的校準(zhǔn),用“長(zhǎng)按”進(jìn)行定位開(kāi)關(guān)的校準(zhǔn)。
4 結(jié)論
本文探討了按鍵在單片機(jī)系統(tǒng)中的功能,尤其是發(fā)掘了幾個(gè)非常實(shí)用的擴(kuò)展功能。通過(guò)按鍵功能擴(kuò)展,可以用一個(gè)按鍵完成兩個(gè)甚至多個(gè)功能。具有操作方便、節(jié)省成本的優(yōu)點(diǎn)。本文所舉的案例已經(jīng)應(yīng)用于實(shí)際產(chǎn)品和工程中,取得了很好的效果。
參考文獻(xiàn)
[1]曾旖,庹先國(guó),李向陽(yáng).按鍵開(kāi)關(guān)的抖動(dòng)與消除方法[J].電子制作,2005,05,46- 47.
[2]陳曉麗.按鍵的多種狀態(tài)檢測(cè)及消抖處理方法[J].家電科技,2013,04,68-70.
[3]劉天時(shí),劉賞,付春,一種單片機(jī)鍵盤(pán)電路設(shè)計(jì)與消抖處理[J].計(jì)算機(jī)與網(wǎng)絡(luò),2010,10,66-68.
[4]符瀟天,黃明,彭召敏等.基于定時(shí)中斷的實(shí)時(shí)按鍵任務(wù)處理設(shè)計(jì)[J],工業(yè)技術(shù)創(chuàng)新,2018,02:24-28.
[5]吳允強(qiáng),吳由松,基于狀態(tài)機(jī)的單片機(jī)按鍵短按長(zhǎng)按功能的實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2017,24,254.