一種基于ADC的高性價(jià)比鍵盤輸入設(shè)計(jì)
2 硬件設(shè)計(jì)
實(shí)際的硬件電路如圖2所示。為了提高按鍵響應(yīng)速度和減輕CPU掃描按鍵的負(fù)擔(dān),增加一個(gè)比較器,當(dāng)按鍵被按下時(shí)比較器輸出信號(hào)觸發(fā)中斷,在中斷中第一時(shí)間獲得鍵值。這樣,既避免了把按鍵程序放到主程序中循環(huán)查詢過多而占用CPU資源,又提高了CPU的利用率。當(dāng)然,為了節(jié)省硬件成本,也可以不要比較器。本文引用地址:http://www.ex-cimer.com/article/202443.htm
分壓電阻越大越省電,但是實(shí)際應(yīng)用時(shí)需要考慮ADC的輸入阻抗,不能太大,這里給出經(jīng)驗(yàn)值10 kΩ。另外,電壓比較器還要考慮到運(yùn)放的特性,為確保第一個(gè)鍵按下時(shí)運(yùn)放同相端電壓低于4 V,電阻R1的值就要相對(duì)大一些,后面的電阻可以取相同的值。為了減小按鍵抖動(dòng),在電路中串聯(lián)一個(gè)電容C1。當(dāng)沒有鍵按下時(shí),ADC相當(dāng)于懸空,需接一上拉電阻。這里R21取220 kΩ。
3 軟件設(shè)計(jì)
軟件設(shè)計(jì)是ADC按鍵的處理核心,一旦檢測(cè)到的A/D值不準(zhǔn),按鍵就會(huì)得到錯(cuò)誤的鍵值,帶來誤操作。當(dāng)按鍵數(shù)目很多時(shí),這種現(xiàn)象會(huì)更突出。
ADC按鍵其實(shí)就是一個(gè)數(shù)據(jù)采集過程,軟件需要完成數(shù)據(jù)采集、數(shù)據(jù)處理、按鍵解析這3個(gè)步驟。首先對(duì)按鍵要有一個(gè)認(rèn)識(shí),它是一個(gè)機(jī)械開關(guān),在鍵按下和彈起的過程中很難做到理想的導(dǎo)通和斷開,通常有一個(gè)抖動(dòng)過程,需要經(jīng)過一段時(shí)間才能真正地閉合和斷開。
在本設(shè)計(jì)中使用的是自帶8路10位ADC的MCUSTC90C52AD。驅(qū)動(dòng)起來比較簡(jiǎn)單,只需要配置幾個(gè)寄存器就可以進(jìn)行A/D轉(zhuǎn)換了,并且轉(zhuǎn)換速度很快。ADC代碼如下:
評(píng)論