找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 34480|回复: 3
收起左侧

学51单片机-按键的扫描检测与消抖

[复制链接]
ID:74835 发表于 2015-3-20 23:04 | 显示全部楼层 |阅读模式
      
     触发按键,简称按键,是电路设计中常用的器件之一。种类很多,有贴片式的,有直插式的,有四条腿的,也有两条腿的。一般根据需求,进行高低、大小的选择。
     如上图所示,样式非常多。记得我第一次去中发买按键的时候,老板问我要什么样的,我也不知道,就说常用的就行。老板嘿嘿一笑,知道我是新人,就拿了几款常见的给我选。
     现在自然不会这么笨,一般来说,选择的参数也就这么几项,尺寸、高度、封装方式。例如我想买一种按键,我就直接问老板:6*6*5,四脚贴片的按键有木有?
     6*6是什么意思?占地面积,单位是毫米,就是说长和宽都是6mm的。
     5是高度,按键整体高度,单位是毫米。要求精细的,会说明按键座的高度和按键头的高度。
     国产按键最上面的那个按键头一般都是硬塑料的,韩国、日本还有台湾的按键,有很多是硅胶的头,按的时候手感挺不错的,不过价格也略贵。
     什么样的按键是好的按键?我跟一个卖了十多年货的老板聊过这个问题,抛开用料问题,就说触发的效果,只要买的时候按一下那个按键,听它那个声音,声音越清脆、越响,效果越好,当然了,价格越贵。
     接下来说应用电路,如下图所示,这是常见的应用电路:
     检测方式有两种,一种是扫描检测,另一种是中断检测。这次先说第一种,什么是扫描检测?
     就是单片机每隔一段时间,就去检测一下IO口的状态,未触发的时候,该引脚是高电平,触发的时候是低电平。
     有人会有疑问,这种方式会不会有遗漏?基本不会,因为单片机以微秒甚至纳秒的级别运行指令,而触发一次按键至少需要几十毫秒,汽车电子里面用到的触发按键,它的触发时间到了100毫秒。只要扫描次数足够,基本不会有遗漏。
     什么是消抖?检测出键闭合后执行一个延时程序,5ms~10ms的延时,让前沿抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认为真正有键按下。当检测到按键释放后,也要给5ms~10ms的延时,待后沿抖动消失后才能转入该键的处理程序。
     为什么要消抖?因为按键按下或者抬起时,电平会有剧烈的抖动,这些抖动会对按键的状态判断造成干扰。因此要消抖。
     这次的程序用按键触发LED,每次按下的时候,LED的状态进行翻转。
     好了,废话少说,上程序
     下载链接: 按键触发LED.zip (79.83 KB, 下载次数: 76)
回复

使用道具 举报

ID:301181 发表于 2018-5-10 17:03 | 显示全部楼层
我在实验的时候把延时加到30ms,按键就没有用处了,为什么啊
回复

使用道具 举报

ID:1060328 发表于 2023-1-6 15:45 | 显示全部楼层
这是个典型的51单片机,P3口内部电路并不是漏极开路。
我不明白在接按键时在外部接一个上拉电阻的作用是什么呢?
不接的话会有什么问题?
回复

使用道具 举报

ID:1017814 发表于 2023-1-29 17:04 | 显示全部楼层
hjc5035 发表于 2023-1-6 15:45
这是个典型的51单片机,P3口内部电路并不是漏极开路。
我不明白在接按键时在外部接一个上拉电阻的作用是什 ...

不接上拉电阻 ,有可能出现混乱,就是说不按按键时,引脚可能是“0”,也可能是“1”,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表