基于Atmel QTouch的ATmega48感應(yīng)的按鍵設(shè)計(jì)
4 函數(shù)庫安裝與軟件配置
要把ATmega48單片機(jī)的I/O口作為感應(yīng)按鍵輸入口來使用,首先需要安裝QTouch函數(shù)庫Atmel_QTouch_Libraries,目前比較新的函數(shù)庫版本是4.3。安裝完畢后,需要將與單片機(jī)對應(yīng)的庫文件加載到工程中。Atmel公司的集成開發(fā)環(huán)境AVR Studio提供了便捷的設(shè)置,新建一個(gè)工程后,可在Project→Configuration Options→Libraries界面中添加函數(shù)庫鏈接文件。
其次,需要對I/O口進(jìn)行配置。在工程配置(Project→Configuration Options→Custom Options)界面設(shè)置相應(yīng)的宏定義參數(shù)即可,如圖4所示。
圖4 AVR Studio工程配置界面
D_QTOUCH_:需要使用QTouch函數(shù)庫。
DSNSK=C和DSNS=C:表示將ATmega48 PC口設(shè)置為感應(yīng)按鍵口。
DQT_NUM_CHANNELS=4:表示最大可用通道數(shù)量。
DQT_DELAY_CYCLES=1:表示采樣電容充放電周期時(shí)間。
另外,在應(yīng)用系統(tǒng)源程序中需要加入庫函數(shù)的頭文件。代碼如下:
#include "touch_api.h"
5 系統(tǒng)應(yīng)用
應(yīng)用流程如圖5所示。在系統(tǒng)初始化之后,首先調(diào)用config_sensors()函數(shù)將需要的I/O口配置成感應(yīng)按鍵的采樣口,并對各個(gè)感應(yīng)按鍵的各個(gè)狀態(tài)進(jìn)行初始化。然后是設(shè)置感應(yīng)參數(shù),這些參數(shù)包括按鍵校準(zhǔn)閾值、正向漂移值、負(fù)向漂移值、最大連續(xù)感應(yīng)時(shí)間等[3]。最后,在應(yīng)用系統(tǒng)的主程序中,需要周期地調(diào)用庫函數(shù)qt_measuer_channels()對感應(yīng)信號進(jìn)行測量,并檢測按鍵的狀態(tài)。
圖5 QTouch應(yīng)用流程
需要注意的是,感應(yīng)按鍵采集使用了系統(tǒng)的一個(gè)定時(shí)器中斷,因此,應(yīng)用系統(tǒng)中的中斷程序會對其造成一定的影響。這就要求在按鍵感應(yīng)的過程中,應(yīng)用系統(tǒng)的中斷服務(wù)程序的處理時(shí)間越短越好。在電容感應(yīng)工作的時(shí)候,中斷服務(wù)程序處理時(shí)間不應(yīng)該超過1 ms,否則將嚴(yán)重影響感應(yīng)按鍵的靈敏度,甚至?xí)?dǎo)致感應(yīng)按鍵失靈[4]。
應(yīng)用系統(tǒng)程序如下:
int main( void ){
init_system();/*系統(tǒng)初始化*/
config_sensors();/*將I/O口配置成感應(yīng)按鍵*/
qt_init_sensing();/*初始化感應(yīng)傳感器*/
qt_set_parameters();/*感應(yīng)參數(shù)設(shè)置*/
init_timer_isr();/*用于感應(yīng)按鍵的定時(shí)器設(shè)置*/
qt_filter_callback = 0;/*濾波參數(shù)選擇*/
__enable_interrupt();/*使能定時(shí)器中斷*//*應(yīng)用程序主循環(huán) */
while (1) {
if( time_to_measure_touch ) {
time_to_measure_touch = 0u; /*繼續(xù)下一個(gè)采集周期*/
qt_measure_sensors( current_time_ms_touch );/*感應(yīng)檢測 */
}
KeyBuff = (qt_measure_data.qt_touch_status.sensor_states[0]);/*獲取感應(yīng)按鍵狀態(tài)*/
……/*系統(tǒng)應(yīng)用程序*/
}
}
結(jié)語
基于Atmel QTouch技術(shù)的嵌入式感應(yīng)按鍵設(shè)計(jì),簡化了設(shè)計(jì)難度,降低了系統(tǒng)的應(yīng)用成本,節(jié)省了印刷電路板的尺寸空間,系統(tǒng)應(yīng)用穩(wěn)定,可靈活應(yīng)用于各類電子產(chǎn)品中。
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論