单片机学习笔记(6)
按键控制
学习过程跟随up主@海创电子
在这之前,我们先看看开发板当中,有关按键的原理图部分。
按键动作过程
当按键按下时,由于各个按键的另一端接地,单片机的管脚会接受到一个低电平信号。
理想情况下,在未按下按钮时,电平信号为高电平,而在按键按下之后,电平信号由高电平变为低电平。
而在实际情况下,当按钮按下时,会在高电平与低电平之间产生高低电平的交替现象,这一现象称之为抖动。在抖动现象结束后才会呈现出稳定的低电平,随着按键抬起时抖动现象再次出现,直至现象结束后回到高电平状态。
实现按键动作
按键动作流程
如果要实现按键动作,需要先检测到低电平动作,检测到低电平动作之后,使用延时函数延时5ms。这里延时5ms是因为抖动现象开始到结束时间一般为5ms,延时过后相当于跳过抖动。之后再次检测是否为低电平,若为低电平则执行相应动作。
“去抖”操作除了用软件可以实现,在硬件上也可以实现,这里讲的是使用软件去抖的方式。
程序实现——用按钮控制LED灯的亮灭
这里控制LED的按钮是常见的按键开关,动作只有单纯的按下和弹起两种。这里我们选用if类型语句作逻辑判断。
“if”语句
while(1) |
“while(!KEY);”语句起到了判断按键状态的作用。若按键未释放,则KEY=0,那么!KEY=1,while语句就一直处于循环状态。同理,当按键松开时则跳出while语句循环。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 寂静领域!
评论