独立按键(通过按键点亮LED灯)

我们前几节用到的是IO口的输出,这一节我们学习独立按键用到了IO口的输入。按键的接触是靠金属弹片接触,那么这个时候就会出现一个问题,按键按下就会出现抖动,根据原理图

当按键(K1或K2或K3或K4)按下,P31或P30或P32或P33 端口就是低电平,当按键没有按下,由于端口处存在上拉电阻,故端口处是高电平。判断按键有没有按下,检测端口处的电平就可以了,低电平就表明按键按下,高电平就是没有按下。由于会出现抖动,对高低电平的检测,就会出现误差。所以我们就需要消抖。可以软件消抖,也可以硬件消抖。硬件消抖一般需要搭建外电路。我们一般使用的是软件消抖。

软件消抖:首先我们用if语句判断管脚的电平,如果是低电平,再用一个延时函数进行消抖,最后再用一个if语句判断管脚的电平是否为低电平,如果为低电平按键确实按下。

我们可以用一个函数对按键进行一次检测(也就是按键按下之后,不管是再次按下还是松开,都不会再进行按键检测了)或者连续的检测(按下或者松开都会检测)。按照这个思路我们就要对按键检测函数设置一个相关的形参。不如我们就定义一个u8类型的参数。当我们传入参数0,就进行一次按键的检测,当我们传入参数时,就对按键进行连续的检测。有了这个思路之后,我们可以用一个标记位 ,我们用static关键字定义这个标记位。为什么要定义这个静态变量呢?当这个函数下面的标记位的数值发生改变的时候,这个静态变量就会保存这个值。具体实现代码如下

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值