按键的介绍:
轻触开关是一种电子开关,使用时.轻轻按开关按钮就可使开关接通,当松开手时.开关断开。我们使用的开关如下图:
在一个理想的状态下,我们按下按键就会使得电位状态从低电平编程高电平,高电平编程低电平。
事实上,按键在按下和松开的过程中,会存在一个处于中间值的过程,这个时候会存在一个抖动现象。
为了消除按键的抖动现象,我们需要对这一电路进行一个修改。
对于消抖,我们可以通过两个途径进行消抖
1、硬件消抖:
采用一个RC延时充放电的电路进行消抖。
工作原理:在RC消抖电路中,电阻起到限制电流流动的作用,电容则用来储存电荷。当输入信号发生变化时,电容会通过电阻进行充放电,从而实现对信号的平滑处理。通过合理选择电阻和电容的数值,可以达到最佳的消抖效果。
RC消抖电路的工作方式可以分为两个阶段:充电阶段和放电阶段。
1,充电阶段:当输入信号由低电平变为高电平时,电容开始充电。由于电容的充电时间常数( t=RC),充电过程并不是瞬间完成的,而是需要一定的时间。在这个过程中,电容会逐渐储存电荷,输出信号也会逐渐稳定。当电容充满电荷后,输出信号达到稳定状态。
2.放电阶段:当输入信号由高电平变为低电平时,电容开始放电。放电过程同样需要一定的时间,电容会逐渐释放电荷。在这个过程中,输出信号会逐渐下降,直到达到低电平。放电过程的时间也由RC电路的时间常数决定。
2、软件消抖:
当按键被按下时,通过延时时间来判断按键是否按下(即二次确认按键的状态)来进行消抖
程序编写:
通过一个按键来控制一个灯的启停状态
#include
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P2^0;
sbit K1=P3^1;
void delay(u16 i) //延时函数
{
while(i--);
}
void key()
{
if(K1==0)
{
delay(1000); //消抖
if(K1==0)
{
led=~led;
}
while(!K1); //判断按键是否松开
}
}
void main()
{
while(1)
{
key();
}
}
现象展示:
1、当我们按下按键时,那么LED灯亮
2、当我们再次按下按键时,LED灯熄灭
全部0条评论
快来发表一下你的评论吧 !