文件名称:状态机做独立按键检测 连发
文件大小:35KB
文件格式:DOC
更新时间:2015-06-19 02:30:58
状态机做独立按键检测
人机界面最重要的就是按键了,觉得按键做的最好的就是手机的按键了,有长按、敌探、连发等功能。还有组合等。一个好的按键程序用书本上学的按键检测方法已 经不能适应工程的需要了,为此人们设计出一种状态机检测按键的方法。 在一个系统中按键是随机的,因此系统软件对按键要一直循环查询,由于按键检测过程需要进行消抖处理,因此取状态机的时间序列为10ms,这样不仅可以跳过 按键抖动的影响,同时也小于0.3-0.5秒的稳定闭合期,不会将按键的操作过程丢失。 程序实现方法,用定时器定时10ms,每隔10ms检测一次按键,将一个按键的检测过程分为几个不同的状态,最简单的分为 初使状态-按键闭合确认状态-按键释放状态,如果要求按键实现的功能越多,状态也就越多 ,比如还有常用的长按状态。以下是一个状态机按键程序,仅供参考。 程序基于AVR单片机, key.h文件的一部分 #define KEY0_PORT PORTD #define KEY0_DDR DDRD #define KEY0_PIN PIND #define KEY0 PD0 #define KEY1_PORT PORTD #define KEY1_DDR DDRD #define KEY1_PIN PIND #define KEY1 PD1 #define KEY2_PORT PORTD #define KEY2_DDR DDRD #define KEY2_PIN PIND #define KEY2 PD2 #define KEY3_PORT PORTD #define KEY3_DDR DDRD #define KEY3_PIN PIND