大家好,上一篇我们一起学习了数码管的理论基础和代码书写思路,并学会数码管如何应用——多参数分时显示,今天我们将一起学习独立按键的基本理论和相关应用。
我的人生格言:“尽最大努力,做最好的自己!”
独立按键1
一、按键介绍
1.按键图
独立按键一端接I/O口,另一端接地。

看下图为独立按键模块,按键左端统一接P3口,右端均接地:
key1接P3^0,
key2接P3^1,
key3接P3^2,
key4接P3^3。

2.按键抖动
按键写代码一定要注意抖动。
| 按键按下时,由于一端接地,会使按键接IO端变成低电平,相反,当按键被松开时,由于按键接IO端与接地端断开,会变成高电平。值得注意的是,按键是有一定弹性的,按键在按下时,按键接IO端变成低电平需要时间,这段时间按键会发生前沿抖动,同理,松开按键,按键接IO端变成高电平也需要一段时间,这段时间按键会发生后沿抖动,整个抖动需要5ms-10ms时间。 |

3.按键消抖
按键抖动大致有两个方向解决,分别为硬件消抖和软件消抖
1.硬件消抖
加一个电路,可以利用触发器等进行电路过滤。
2.软件消抖
(1)利用延时函数消抖。
(2)利用定时器精准消抖。
(2)中断法消抖
本章先我们简单使用延时函数进行代码讲解,后续会讲其他方法。
二、相关运用
1.简单实现按键控制8个LED的亮灭
(1)仿真图1

(2)代码1
key.c
这是按键控制模块,当按下key1的按键时,该模块函数key()会返回一个值,这个值表示第一个按键被按下。
#include "key.h"//独立键盘头文件
#include "delay.h"//延时头文件
/******************************************************************************************
函数名:key
功能: 独立键盘函数
参数: 无
返回值:unsigned char
******************************************************************************************/
unsigned char key()//独立键盘按键函数
{
unsigned char temp=0;
if(key1==0)//判断是否按下键盘
{
delay(10);//消抖
if(key1==0)//再次判断是否按下键盘
{
temp=1;//键盘按下,中间值temp赋为1
}while(key1==0);//松手等待
}

本文详细介绍了独立按键的工作原理,包括按键图、抖动现象及其解决方案(硬件和软件消抖)。还展示了如何使用按键控制LED的亮灭以及简单的数值显示,通过延时函数实现按键处理逻辑。
最低0.47元/天 解锁文章
3402

被折叠的 条评论
为什么被折叠?



