第十四届蓝桥杯单片机组学习笔记(2):按键

news2024/11/15 10:58:45

第十四届蓝桥杯单片机组学习笔记(2):按键

  • 前言
  • 区分高低电平驱动
  • 按键消抖
    • 软件消抖
  • 触发处理的方式
  • 矩阵键盘

最简单常用的人机交互手段——按键

前言

实现按键检测需要解决的问题:

  1. 按键是低电平按下还是高电平按下;
  2. 按键消抖;
  3. 搞清楚需要实现功能的需求,按键检测是脉冲触发还是电平触发;电平触发比较适合长按参数递增,脉冲触发则规定了用户按下一次只能执行一次处理检测的是一个状态的改变;

区分高低电平驱动

在这里插入图片描述

  • 将跳线短接3和2即为独立按键,我们可以看到独立按键的触发方式是低电平触发,即:我们去检测单片机接按键的引脚是否为低电平就能检测出按键是否被按下了

按键消抖

  • 就像我们的键盘,你手放过去的时候,在犹豫是否要按下时,按键会有轻微的扰动,这时候如果只是单纯的去检测是否低电平去判断按键按下,是会误判的,并且按下的时候是会有机械抖动,你按下一次可能高会产生多个脉冲,所以这个时候我们就要加上按键消抖;按键消抖分为硬件消抖和软件消抖;

软件消抖

  1. 延迟函数消抖
    在检测到按键按下的时候加一点点延迟之后再去判断是否按下
    if(key==KEY_PRESS)
    {
    	delay_ms(10);
    	if(key==KEY_PRESS)
    	{
    		//按键处理
    	}
    }
    

触发处理的方式

一般按键的需求分为两种:

  • 按下一次按键处理一次,直到下一次按下,也只处理了一次;
  • 按下按键处理一次,长按不松手,按键处理继续处理第二次,第三次…

第一种:检测按键按下,写一个while等待按键被释放,然后再执行处理

if(key==KEY_PRESS)
{
	delay_ms(10);//去抖延时,如果10MS之后按键松开了可能是误触
	if(key==KEY_PRESS)
	{
		//按键处理
		while(key==KEY_PRESS);//等待按键被释放
	}
}
  • 通常我们在检测单片机的按键时,要等按键确认释放后才去执行相应的代码
    否则,死循环不断扫描串口电压的时候,会不断的执行相应的代码,直到用户松手,所以用松手来判断用户是否选择才是合理的

第二种:则不进行等待按键释放,而是使用延迟函数来代替,如果过了一会还是低电平就再次执行处理;

矩阵键盘

持续更新…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/171385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(1分钟速览)KBM-SLAM 论文阅读笔记

编辑切换为居中添加图片注释,不超过 140 字(可选)这篇博客记录了上面这篇论文的学习笔记。编辑切换为居中添加图片注释,不超过 140 字(可选)这个是本文的摘要,一眼开过去就是单目slam当今所遇到…

机器学习(一):人工智能概述

文章目录 人工智能概述 一、人工智能应用场景 二、人工智能小案例 三、人工智能发展必备三要素 四、人工智能、机器学习和深度学习 人工智能概述 一、人工智能应用场景 二、人工智能小案例 案例一 学习链接:https://quickdraw.withgoogle.com 案例二 学习链…

老杨说运维 | 2023,浅谈智能运维趋势(三)

文末附有视频回顾 前言: 在回顾(一)中,老杨提到的智能运维发展趋势中,面对国际化形势不确定的情况,信创部分的比例要求正在递增。作为国家经济发展的新动能,信创发展已步入深水区,智…

cv2.imread()、cv2.putText、cv2.imwrite()、cv2.waitKey()

cv2cv2.imread()cv2.putText()cv2.imwrite()cv2.waitKey()cv2.imread() 用于读取图像数据案例演示: import cv2# ouput img properties img_pathC:/Users/WHY/Pictures/Saved Pictures/OIP-C (1).jfif def funOutput…

安卓手机使用Linux Deploy安装CentOS

目录 前言 准备工作 实践 busybox安装 安装并配置Linux Deploy 局域网使用ssh连接服务器 公网使用ssh连接服务器 环境安装 写在最后 前言 最近沉迷于服务器搭建,书接上文,在安卓高版本中成功安装了服务器,但是安卓低版本的却一言难尽…

2023CUPT第七题 法拉第波 思路和解法

本文未完原题A droplet of less viscous liquid floating in a bath of a more viscous liquid develops surprising wave- like patterns when the entire system is set into vertical oscillation. Investigate this phenomenon and the parameters relevant to the product…

Webpack学习笔记

Webpack学习笔记1.引言2.Webpack相关的基础性问题3.Webpack的使用4.Webpack与代码规范和兼容性5.优化Html入口文件的处理6.实现webpack热更新7.生产模式与开发模式分析8.优化css配置,避免闪频现象9.代码压缩1.引言 最近想来自己对于前端的学习还是有很多的不足&…

毕业论文查重

每当毕业季论文编写都是一件大事,论文查重又是最让人头痛的事情,这里总结一些简单论文查重方法,希望对你有帮助。 首先通过一下系统查询重复比例,之后对照重复比例进行修改,如下图通过PaperPass论文检测进行查询生成的…

Linux安装JDK

创建develop目录 mkdir /usr/local/develop/ 我这边是直接将包拖进来了 创建jdk目录 mkdir /usr/local/develop/jdk/ 解压安装包 并且将安装文件放到 jdk目录里 tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /usr/local/develop/jdk/ 或 tar -xvf /usr/l…

【信息系统项目管理师】论文写作心得整理篇

【信息系统项目管理师】论文写作心得整理篇 【信息系统项目管理师】论文写作心得整理篇【信息系统项目管理师】论文写作心得整理篇一.摘要二.论文评分标准1.切合题意2.应用深度和水平3.实践性4.表达能力5.综合能力和分析能力扣分项目加分项目不及格项目格式要求摘要的组成三.论…

Unity 工具 之 报错 Jenkins 执行/调用 Python 脚本,报错提示 ‘python‘ 不是内部或外部命令,也不是可运行的程序或批处理文件

Unity 工具 之 报错 Jenkins 执行/调用 Python 脚本,报错提示 python 不是内部或外部命令,也不是可运行的程序或批处理文件 目录 Unity 工具 之 Jenkins 执行/调用 Python 脚本,报错提示 python 不是内部或外部命令,也不是可运行…

MyBatis -- 动态 SQL

MyBatis -- 动态 SQL动态 SQL 使用1. <if> 标签2. <trim> 标签3. <where> 标签4. <set> 标签5. <foreach> 标签动态 SQL 使用 动态 sql 是 Mybatis 的强大特性之⼀&#xff0c;能够完成不同条件下不同的 sql 拼接。 可以参考官方文档&#xff…

SNARK原理示例

1. 引言 前序博客有&#xff1a; SNARK DesignRollup项目的SNARK景观 SNARK方案由 Polynomial IOP ➕多项式承诺方案 组成。 当前的Polynomial IOP主要分为三大类&#xff1a; 1&#xff09;基于interactive proofs&#xff08;IPs&#xff09;的Polynomial IOP&#xff1…

【10】C语言_for循环 | 初识 | 入门 |

目录 1、引出for循环 2、for循环语法 例题&#xff1a; 1、引出for循环 因为while的三个条件&#xff0c;如果代码写的多的时候&#xff0c;以下的三个条件离得远不好&#xff0c;所以引出三个条件在一起的for循环 int main() { int i 1; //初始化while(i < 10)…

Java基本数据类型及其包装类

内置数据类型 Java语言提供了八种基本类型。六种数字类型&#xff08;四个整数型&#xff0c;两个浮点型&#xff09;&#xff0c;一种字符类型&#xff0c;还有一种布尔型。 byte&#xff1a; byte 数据类型是8位、有符号的&#xff0c;以二进制补码表示的整数&#xff1b;…

Prometheus-Exporter详解

一、Exporter是什么 广义上讲所有可以向Prometheus提供监控样本数据的程序都可以被称为一个Exporter。而Exporter的一个实例称为target&#xff0c;如下所示&#xff0c;Prometheus通过轮询的方式定期从这些target中获取样本数据: 二、Exporter的来源 从Exporter的来源上来…

26. 删除有序数组中的重复项

文章目录题目描述方法一 双指针-while方法二 双指针-for题目描述 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在某些语言中不能…

数字图像处理---空间滤波基础

空间滤波概念 滤波&#xff1a;通过修改或者抑制给定图像的特定频率分量&#xff0c;常见有低通滤波器与高通滤波器。空间滤波&#xff1a;将像素值使用该像素值及其邻域的值进行替换&#xff0c;替换方式有线性与非线性两种&#xff0c;即线性滤波器与非线性滤波器。 线性滤…

VScode快速配置C/C++环境

文章目录我安装时仅参考了这两篇分享1.下载并安装VScode 商店C/C插件2.下载MinGW-W64 x86_64-win32-seh3.配置各种.json5.Hello_world.cpp测试我安装时仅参考了这两篇分享 伸手党进&#xff1a;具体步骤主要是这篇&#xff1a;Hudiscount-Vscode配置C/C环境 MinGW-W64 x86_64-…

华为数通--NAT、ACL、IPSec

NAT\ACL\IPSEC VPNNAT1.1静态NAT转换1.2NAT服务器1.3动态NAT1.4easy IPACL高级ACLIPSEC VPN配置IPSec V-P-N&#xff1a;.1 加解密点.2 IPSEC的SPD&#xff08;ACL&#xff09;、提议&#xff08;protocol&#xff09;和IPSEC 策略NAT(网络地址转换&#xff09; 1.1静态NAT转换…