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

第十四届蓝桥杯单片机组学习笔记(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);//等待按键被释放
	}
}
  • 通常我们在检测单片机的按键时,要等按键确认释放后才去执行相应的代码
    否则,死循环不断扫描串口电压的时候,会不断的执行相应的代码,直到用户松手,所以用松手来判断用户是否选择才是合理的

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

矩阵键盘

持续更新…

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值