按键消抖详解

2023-05-16

一、按键消抖原理

抖动时间的长短由按键的机械特性决定,一般为 5ms~10ms,键抖动会引起一次按键被误读多次。

解决办法:判断按键按下时,延时 10 ms 即可。
在这里插入图片描述
二、软件实现按键消抖

(1)首先定义一个记录按键状态的变量 release
(2)然后读取按键值检测按键状态,当按键状态改变,判断可能有按键动作,进入延迟函数
(3)延迟一会后,再次读取按键状态,如果仍为按下状态,说明确有按键动作
在这里插入图片描述
在主函数中轮询检测按键状态:
在这里插入图片描述
1、这里为什么要定义一个记录按键状态的变量 release 呢?

【答】:如果不定义按键状态变量,在主函数中轮询检测按键状态,当我们一直处于按下状态,那么它就会一直进入主函数的判断语句中,导致结果错误!

2、为什么按下状态返回值一定要是 1,而不是 0 呢?

【答】:如果返回值为 0,在主函数中的判断语句 if(keyvalue == 0)可进入一次,此时不断轮询检测按键状态,当我们一直处于按下状态,虽然我们前面定义了记录按键状态的变量,但由于 return 0 的缘故仍然返回值是 0,所以仍继续进入判断语句中,导致结果错误!

PS:如果利用“中断+定时器”处理更加方便,不用定义 release 变量,使用定时器完成延时任务,然后在中断里面检测是否真的有中断发生、是否按下按键,最后要注意清除相应的中断标志位。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按键消抖详解 的相关文章

随机推荐

  • android-studio 项目启动 镜像源加速

    解决android studio download maven metadata xml卡住问题 https blog csdn net hzw2017 article details 114776815 android studio 阿里
  • 基于vue3 beego vue-beegoBackstage 后台管理系统

    基础 在线访问地址 vue3 go admingithub访问 vue3 go admin 功能 用户管理 lt gt 关联角色角色管理 lt gt 关联菜单菜单管理部门管理字典管理登录 权限校验动态路由生成 按钮权限菜单栏切换面包屑tab
  • Build Dense Trajectory Codes in Ubuntu

    Even when the OpenCV and ffmpeg have been successfully installed you still may meet the error of 34 undefined reference
  • javascript 数组拆分为3个一组

    span class token keyword const span a span class token operator 61 span span class token punctuation span span class tok
  • win10美化工具全套详细解析

    1 xff0c 任务栏透明工具StartllsBack 1 xff0c 首先安装 xff0c 选第一个为当前用户安装 xff08 这个选哪个都可以的 xff09 2 xff0c 然后就是设置这个任务栏透明了 xff0c 右键 开始 菜单找到
  • 前后端分离的情况下生成activiti流程图

    页面用调接口的方式 xff0c 将图片流显示 效果图 xff1a 注意 xff1a 布署到有些最小安装的linux服务器时 xff0c 用户任务框里面的中文会显示不出来 xff0c 这是因为缺少系统字体 宋体 xff0c 需要在服务器安装字
  • Linux文件系统变成只读的解决方法

    解决方法 1 重启看是否可以修复 xff08 很多机器可以的 xff09 2 使用用 fsck y dev hdc6 dev hdc6指你需要修复的分区 来修复文件系统 3 若 xff0c 在进行修复的时候有的分区会报错 xff0c 重新启
  • 19-29-k8s-基本命令-yaml-kubectl

    19 k8s 基本命令 yaml kubectl xff1a Kubernetes 集群的命令行工具kubectl 1 kubectl 命令格式 xff1a kubectl command type name flags 参数 xff1a
  • linux下安装nginx

    linux下安装nginx 注 xff1a 此处需要先安装vmware xff0c 下载Centos8等工具 xff0c 配置好一个虚拟机 1 下载nginx的linux版本 2 上传至搭建好的linux环境上 3 解压nginx压缩包 4
  • 128-152-spark-核心编程-源码

    128 spark 核心编程 源码 xff08 主要以了解基本原理和流程为主 xff09 xff1a 总体相关 1 环境准备 Yarn 集群 1 Driver Executor 2 组件通信 1 Driver 61 gt Executor
  • 6-zookeeper-hadoop-ha原理简述-fail

    6 zookeeper hadoop ha故障转移机制 xff0c 原理简述 HA概述 xff08 2 X版本架构 xff09 1 xff09 HA xff08 High available xff09 xff0c 即高可用 xff08 7
  • treelistview入门使用

    treelistview入门使用 1 创建窗口程序 2 引入库System Runtime InteropServices APIs dll和System Runtime InteropServices APIs dll 3 工具箱添加控件
  • ps-01

    ps 01 入门 xff1a 来源尚硅谷ps课程 xff0c 兴趣而已 xff0c 仅做记录 内容无实质性操作指导 1 软件安装 百度参考各种连接 xff0c 自己安装 https baiyunju cc 10433 2 基础操作 2 1打
  • Notes of Dense Trajectory

    Dense Trajectories densely sample feature points in each frame track points in the video based on optical flow compute m
  • python解析xml文件(解析、更新、写入)

    Overview 这篇博客内容将包括对XML文件的解析 追加新元素后写入到XML xff0c 以及更新原XML文件中某结点的值 使用的是python的xml dom minidom包 xff0c 详情可见其官方文档 xff1a xml do
  • 统计字符串中出现次数最多的字母及其出现次数C++

    小弱鸡看不太懂别人的代码 xff0c 于是用了结构体的方法 xff0c 将字母及其出现次数打包 xff01 include lt iostream gt include lt string h gt include lt algorithm
  • 安装man中文

    安装 man 中文手册 在使用 mac 或者 linux 的时候 xff0c 需要用到命令 xff0c 而大量的命令含有大量 options xff0c 一般很难记住 xff0c 使用 man 可以查看这些命令的 options xff0c
  • Ubuntu 18.04安装PyCharm社区版

    下载 下载 xff1a 或直接官网下载 链接 xff1a https pan baidu com s 1JLmMqJNBvClLAYuK1rlKrw 提取码 xff1a 41qk 安装 下载完后进入到存储文件的地址执行以下代码 xff0c
  • Android安卓动态获取存储权限,保存文件到外部存储

    添加存储权限 lt 外部存储的写权限 gt lt uses permission android name 61 34 android permission WRITE EXTERNAL STORAGE 34 gt lt 外部存储的读权限
  • 按键消抖详解

    一 按键消抖原理 抖动时间的长短由按键的机械特性决定 xff0c 一般为 5ms xff5e 10ms xff0c 键抖动会引起一次按键被误读多次 解决办法 xff1a 判断按键按下时 xff0c 延时 10 ms 即可 二 软件实现按键消