目录
按键介绍
?按键消抖方法
按键检测原理
C51例程
?欢迎加QQ及邮件交流
按键介绍
? ? ?按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开关断开。
? ? ?通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,电压信号如下图所示:
?按键消抖方法
1,先设置IO口为高电平(由于开发板IO都有上拉电阻,所以默认IO为高电平)。
2,读取IO口电平确认是否有按键按下。
3,如有IO电平为低电平后,延时几个毫秒。
4,再读取该IO电平,如果任然为低电平,说明对应按键按下。
5,执行相应按键的程序。
按键检测原理
? ? ? ? 独立按键电路构成是由各个按键的一个管脚连接在一起接地,按键其他引脚分别接到单片机IO口。 我们知道单片机的IO 口既可作为输出也可作为输入使用, 当检测按键时用的是它的输入功能,独立按键的一端接地, 另一端与单片机的某个 I/O 口相连, 开始时先给该 IO 口赋一高电平,然后让单片机不断地检测该 I/O 口是否变为低电平,当按键闭合时,即相当于该 I/O 口通过按键与地相连,变成低电平,程序一旦检测到 I/O 口变为低电平则说明按键被按下,然后执行相应的指令。
C51例程
#include <reg52.h>
typedef unsigned int U16; typedef unsigned char U8;
sbit led = P2^0; sbit key1 = P3^1;
void delay(U16 time) { ?? ?while(time--); }
//基本的按键消抖方法,比较占用CPU void keyPress() { ?? ?if(key1==0) ?? ?{ ?? ??? ?delay(1000); ?? ??? ?if(key1==0) ?? ??? ?{ ?? ??? ??? ?led = ~led; ?? ??? ?} ?? ??? ?while(!key1); ?? ?} } ?? ??? ??? ??? ??? ??? ? void main() { ?? ?while(1) ?? ?{ ?? ??? ?keyPress(); ?? ?} }
?欢迎加QQ及邮件交流
QQ:13286670 邮箱:13286670@qq.com?
?
|