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