单片机小白学习之路(八)---独立按键

目标:独立按键取反一个led灯


按键是一种电子开关,使用时轻轻按下开关按钮就可使开关接通,当松开手时,开关断开。没按是高电平,按下就变低电平

13367077-eeb4950c1ce2fd1b.PNG
按键

按键一开始有两种状态: 初始不导通,初始导通。当按键按下本来不导通的导通,本来导通的变不导通。这4根线可以看成两组,作为两个端口

比如按键导通的连个电视,按键按下就不导通就实现关闭功能。


这是按键按下的电平变化,上面是理想的,但往往现实和理想的丰满不同,下面的图体现了现实的骨感

13367077-1d76adaf7d09db90.png
现实

既然现实骨感,我们就要让它变理想,变理想的方式有两种:软件消抖硬件消抖

硬件消抖

13367077-8c1430c9e88ef0aa.png
硬件消抖

假如按下了,B处是低电平,那么5处是低,74LS00是与非门,所以有个0就是0,6处是0取反变1,到2处是1,而1本来就是1,所以输出是0,实现了消抖。原来就1(A),输出就1

如果你按键不多,还追求实时性的化,比如工业上的就用硬件消抖,我还是推荐大家用软件消抖,可以节省材料,还会减少不必要的麻烦


按键模块

13367077-ed9a44f05b25ce15.png
按键模块

4根线,作为2个端口,每个按键一个端口并联到地,另一个引出来,按键按下接地导通实现关闭。

代码

13367077-9212ccc5c640120f.PNG

keyless函数是软件消抖,if(k1==0)是为了判断按键是否按下,按下进入if语句,延迟1ms,再来判断下k1,其实那个延迟就实现了消抖,就是把抖动的部分跳过,第二个if满足则led取反。

while(!k)是k=0条件满足则一直在那循环,k是高电平就跳出,用于检测按键是否松开,松开就高电平跳出,这个函数就执行完了。这个函数还是有缺陷的,如果你一直按着不放那么那么cpu一直在那循环耗资源,下篇会讲到怎么改进哟

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值