基于A(yíng)VR微控制器的ADC按鍵設計技巧
1引言
在單片機應用領(lǐng)域中,人機交互的途徑和方式靈活多樣,但鍵盤(pán)輸人仍然是最常見(jiàn)、最重要的方法。通常實(shí)現鍵盤(pán)接口的方式有:直接輸入、矩陣結構、A/D方式、鍵盤(pán)和顯示復用、并行擴展、串口擴充以及用鍵盤(pán)和顯示專(zhuān)用控制器件。本設計使用A/D轉換的方法,其硬件電路簡(jiǎn)單,按鍵電路與MCU的連線(xiàn)少,易修改,而且可以節省MCU有限的I/0資源。但在處理按鍵數目較多的情況時(shí),往往會(huì )出現按鍵不可靠的問(wèn)題,如按鍵沒(méi)有任何反映,按鍵功能交叉。本文除了給出A/D按鍵的硬件電路外.著(zhù)重介紹利用軟件技巧來(lái)實(shí)現可靠的鍵盤(pán)接口。
2硬件設計
本設計選用的單片機是基于A(yíng)VR增強型RISC結構的低功耗8位CMOS微控制器ATmegal68「1」該微控制器具有8個(gè)10位帶采樣保持電路的逐次逼近型ADC,以確保在轉換過(guò)程中輸入ADC的電壓保持恒定。A/D轉換按鍵的具體硬件電路如圖l所示。A/D轉換的方法不僅成本低、功耗少、體積小、布線(xiàn)靈活,而且與帶MCU的主板的連接非常簡(jiǎn)單, 只需提供信號線(xiàn)和地線(xiàn)。
![]() |
當按鍵接通或斷開(kāi)時(shí),ATmega168通過(guò)A/D轉換后對讀取的電壓值比較判斷便可識別是否有按鍵按下。無(wú)按鍵按下時(shí)電路完全斷開(kāi),符合低功耗設計的原則。這種結構的鍵盤(pán)具有自然的優(yōu)先權,即某個(gè)按鍵按下后,其后的按鍵均無(wú)效。對于組合按鍵的輸入,則通過(guò)將其中的按鍵分別與不同的A/D口相連來(lái)實(shí)現。圖1中電容Cl的作用是消除干擾信號「2」
3 軟件設計
軟件設計是加轉換按鍵處理的核心,一旦檢測的A/D值不準,按鍵操作就會(huì )產(chǎn)生誤動(dòng)作和不動(dòng)作,按鍵數目達到二三十個(gè)時(shí),這種現象會(huì )經(jīng)常出現,針對此種情況,本文在軟件設計中做相應的技巧處理,按鍵處理程序的軟件設計流程如圖2所示。
![]() |
首先,電阻阻值的選擇決定了按鍵的數目,考慮到電壓誤差、電阻精度等因素,R0的阻值不能太小「3」。由實(shí)驗得知,R0的阻值為20 kΩ~100 kΩ比較合適。ATmega168的A/D轉換精度為10位,為提高按鍵分辨率,并保證按鍵的準確性,本設計只用高8位,而且設定相鄰按鍵鍵值的差值一致,也就是將256等區間劃分,這樣可以實(shí)現較多的按鍵。然后根據定義好的鍵值用電阻箱確定相應阻值。該程序每隔2 ms處理一次,每次采樣一次,共采樣6次,所以確定一次平均鍵值需要12 ms。延時(shí)去抖是通過(guò)再次求平均鍵值完成「4」,故確定按鍵是按下還是釋放需要24 ms,這樣不僅可以保證按鍵可靠,而且無(wú)需再加延時(shí)去抖過(guò)程。當采樣6次后進(jìn)行數字濾波,舍去其中的最大值和最小值,并且判斷最大值與最小值之差是否超過(guò)2,是則認為無(wú)鍵按下,否則就將其余的4個(gè)采樣值求平均值。當按鍵數目較多時(shí),為提高按鍵處理程序的速度,在鍵值確定和按鍵識別程序中采用二分法「5.6」,即先與中間鍵鍵值比較,如果所得鍵值比其A/D值小則與前面按鍵的鍵值比較,否則與后面按鍵比較??紤]到電壓波動(dòng)、電阻精度以及人為操作等各方面因素的影響,對凡是符合每個(gè)鍵值
評論