基于嵌入式技术支持的感应按键设计
LES=1:表示采样电容充放电周期时间。
另外,在应用系统源程序中需要加入库函数的头文件。代码如下:
#include touch_api.h
5 系统应用
应用流程如图5所示。在系统初始化之后,首先调用config_sensors()函数将需要的I/O口配置成感应按键的采样口,并对各个感应按键的各个状态进行初始化。然后是设置感应参数,这些参数包括按键校准阈值、正向漂移值、负向漂移值、最大连续感应时间等。最后,在应用系统的主程序中,需要周期地调用库函数qt_measuer_channels()对感应信号进行测量,并检测按键的状态。
图5 QTouch应用流程
需要注意的是,感应按键采集使用了系统的一个定时器中断,因此,应用系统中的中断程序会对其造成一定的影响。这就要求在按键感应的过程中,应用系统的中断服务程序的处理时间越短越好。在电容感应工作的时候,中断服务程序处理时间不应该超过1 ms,否则将严重影响感应按键的灵敏度,甚至会导致感应按键失灵。
应用系统程序如下:
int main( void ){
init_system();/*系统初始化*/
config_sensors();/*将I/O口配置成感应按键*/
qt_init_sensing();/*初始化感应传感器*/
qt_set_parameters();/*感应参数设置*/
init_timer_isr();/*用于感应按键的定时器设置*/
qt_filter_callback = 0;/*滤波参数选择*/
__enable_interrupt();/*使能定时器中断*//*应用程序主循环 */
while (1) {
if( time_to_measure_touch ) {
time_to_measure_touch = 0u; /*继续下一个采集周期*/
qt_measure_sensors( current_time_ms_touch );/*感应检测 */
}
KeyBuff = (qt_measure_data.qt_touch_status.sensor_states[0]);/*获取感应按键状态*/
……/*系统应用程序*/
}
}
6 结语
基于Atmel QTouch技术的嵌入式感应按键设计,简化了设计难度,降低了系统的应用成本,节省了印刷电路板的尺寸空间,系统应用稳定,可灵活应用于各类电子产品中。
- 有限状态机的嵌入式Linux按键驱动设计 (11-07)
- 基于RTX51的用户专用键盘软件设计(07-09)
- 基于CPLD的电池供电系统断电电路的设计(06-05)
- 3个普通IO识别22个按键试验(12-14)
- STM32 按键扫描方式 使用ST3.0.0库(12-03)
- STM32 按键EXTI方式 使用ST3.0.0库(12-03)