位置:51电子网 » 技术资料 » 单 片 机

一种软件去除键抖动的方法

发布时间:2008/5/27 0:00:00 访问次数:683

摘要:单片机控制系统中大多使用控制键来实现控制功能。消除按键瞬间的抖动是设计者必须要考虑的问题。本文介绍一种很实用的软件去抖动方法,它借助于单片机内的定时中断资源,只要运算一下逻辑表达就完成了去抖动。这个方法效率高,不耗机时且易实现。文中使用的逻辑表达式由简单卡诺图和真值表推出,使该方法的机理容易理解。文中还提供用c51单片机编程语言编写的实用例程。

关键词:单片机 键处理 控制系统 去抖动 键盘

概述

在单片机控制系统中,通过按键实现控制功能是很常见的。对按键处理的重要环节是去抖动,包括去除按下和抬起瞬间的抖动。去抖动的方法有很多种,如使用r-s触发器的硬件方法、运用不同算法的各种软件方法等。硬件方法会增加成本和体积,对于按键较多的矩阵式键盘,会用硬件方法;软件方法用的比较普遍,但有一种加固定延时的去抖动法效率最低,它以无谓地耗费机时来实现去抖动。

此处介绍的是一种软件方法。简单说来是一种运算法,配合定时中断读取按键,通过运算逻辑表达式:

keradyn=ktemp kinput+kreadyn-1 (ktemp ⊙kinput) (1)

ktemp=kinput (2)

可以获得消除抖动的按键消息。这种方法效率高,不需耗时的循环等待,而且算法简单、使用方便。

一、基本原理

由于按键的按下与抬起都会有10~20ms的抖动毛刺存在,因此,为了获取稳定的按键信息,须要避开这段抖动期。

设置3个变量kready、ktemp和kinput,并设置定时中断周期为20ms。在定时中断服务程序中读取按键,并把读取的数据存于变量kinput中。变量kready中是所需要的稳定的按键信息;ktemp是中间变量,它的值是上一次的kinput。

根据当前按键的状态,考虑到kready中是20ms抖动后的有效键信息,则kready、ktemp和kinput之间,在不同时刻的状态关系如表1所列。

表1

时 刻kreadyktempkinput
1000
2001
3010
4001
5111
6111
7110
8101
9110
10000
11

摘要:单片机控制系统中大多使用控制键来实现控制功能。消除按键瞬间的抖动是设计者必须要考虑的问题。本文介绍一种很实用的软件去抖动方法,它借助于单片机内的定时中断资源,只要运算一下逻辑表达就完成了去抖动。这个方法效率高,不耗机时且易实现。文中使用的逻辑表达式由简单卡诺图和真值表推出,使该方法的机理容易理解。文中还提供用c51单片机编程语言编写的实用例程。

关键词:单片机 键处理 控制系统 去抖动 键盘

概述

在单片机控制系统中,通过按键实现控制功能是很常见的。对按键处理的重要环节是去抖动,包括去除按下和抬起瞬间的抖动。去抖动的方法有很多种,如使用r-s触发器的硬件方法、运用不同算法的各种软件方法等。硬件方法会增加成本和体积,对于按键较多的矩阵式键盘,会用硬件方法;软件方法用的比较普遍,但有一种加固定延时的去抖动法效率最低,它以无谓地耗费机时来实现去抖动。

此处介绍的是一种软件方法。简单说来是一种运算法,配合定时中断读取按键,通过运算逻辑表达式:

keradyn=ktemp kinput+kreadyn-1 (ktemp ⊙kinput) (1)

ktemp=kinput (2)

可以获得消除抖动的按键消息。这种方法效率高,不需耗时的循环等待,而且算法简单、使用方便。

一、基本原理

由于按键的按下与抬起都会有10~20ms的抖动毛刺存在,因此,为了获取稳定的按键信息,须要避开这段抖动期。

设置3个变量kready、ktemp和kinput,并设置定时中断周期为20ms。在定时中断服务程序中读取按键,并把读取的数据存于变量kinput中。变量kready中是所需要的稳定的按键信息;ktemp是中间变量,它的值是上一次的kinput。

根据当前按键的状态,考虑到kready中是20ms抖动后的有效键信息,则kready、ktemp和kinput之间,在不同时刻的状态关系如表1所列。

表1

时 刻kreadyktempkinput
1000
2001
3010
4001
5111
6111
7110
8101
9110
10000
11
相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!