按键扫描16Hz-单片机通用模板
- 一、按键扫描的原理
- 1、直接检测高低电平类型
- 2、矩阵扫描类型
- 3、ADC检测类型
- 二、key.c的实现
- 1、void keyScan(void) 按键扫描函数
- ①void FHiKey(void) 按键按下功能
- ②void FSameKey(void) 按键长按功能
- ③void FLowKey(void) 按键释放功能
- 三、key.h的功能和变量外部接口
- 四、keyScan()的使用和Note
一、按键扫描的原理
1、直接检测高低电平类型
- 单片机的IO设置下拉读取高电平,或设置上拉读取低电平;通过判断IO的高低电平从而判断按键状态。
2、矩阵扫描类型
- 设置3个IO上拉输入,先扫描第一列对地按键是否检测到低电平;KEY1输出低电平检测SW6是否是低电平,是低电平–>KEY1设置上拉,KEY2输出低电平验证SW6是否按下;同理SW7、SW8也是正反扫判断是否按下。
3、ADC检测类型
- 通过硬件搭建分压电阻电路,通过按键按下电阻分压读取ADC判断范围从而判断哪个按键按下。
二、key.c的实现
1、void keyScan(void) 按键扫描函数
#defineIO_MitKeyP21#defineIO_TemKeyP13#defineIO_TimeKeyP14#defineIO_ModeKeyP16#defineIO_StrAddKeyP17#defineIO_StrDecKeyP35#define MicKey0x01#define TemKey0x02#define TimeKey0x04#define ModeKey0x08#define StrAddKey0x10#define StrDecKey0x20 bit b_KeyTone_Flag=0;bitb_KeepUp_Flag=0;bitb_Skip_Flag=0;u8keyNum