引言
按键是一种常见的电子开关,按下时开关接通,松开时开关断开。其实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。
实物图
开发板IO连接图
J19与P2相连,JP1与J20相连,可根据自己的开发板来进行选择,代码也要做适当修改
按键原理图
工作原理
从上图可以看到,当单片机上电时,与JP1相连的寄存器的IO口默认是高电平。当按键按下时,IO口接GND(地)。当寄存器写入一个值,它就会输送到IO口中,同时寄存器会检测这个IO口的电平,并读取到寄存器中,此时我们可以通过代码进行检测是否被按下。
按键抖动
在按键检测中需要加入延时,其主要目的是为了消除按键抖动。按键抖动是指在按键按下或松开的瞬间,电路中会产生一系列快速的高低电平变化。这种抖动会导致单片机误判按键的状态,从而引发错误的操作。通过在检测到按键按下后加入一个短暂的延时,可以让按键抖动的影响消失,再次检测按键状态时,如果仍然是按下状态,才认为按键确实被按下了。这种方法可以有效地提高按键检测的可靠性。
代码演示1
#include <REGX52.H>
void DelayXms(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms--;