原创 【单片机基础-14】按键的使用

2023-3-26 20:51 289 4 4 分类: MCU/ 嵌入式 文集: 单片机基础

风风雨雨二十载,多少bug在心间。

代码编译不通过,急得抓耳直挠腮。

回想当年恩师讲,基础知道全忘干。

忙里偷闲回首看,权当引玉的抛转。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1、键盘的分类

键盘分编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如BCD码键盘、ASCLL码键盘等;而靠软件来识别的称为非编码键盘;

单片机组成的测控系统及智能化仪器中,用的最多的是非编码键盘。

非编码键盘又分为:独立式非编码键盘和行列式非编码键盘。

2、键开关的去抖动方法

机械触点开关的闭合和断开瞬间均有抖动过程,一般5~10ms。当CPU检测到有键按下时,必须对按键的一次闭合仅作一次处理,因此,必须除去抖动影响。

通常去抖动有硬件、软件两种方法。用硬件去抖动的方法通常用RS触发器组成的去抖动电路如上图右图所示。

当开关闭合时,输出为低电平,在开关抖动期间,弹簧片可能和A、B两点均不接触,RS触发器保持原来状态,因此消除了开关抖动的影响。

软件去抖动的办法是CPU检测到有键按下时,延迟5~10ms(让过抖动时间)后,再去检测按键是否按下,若再次检测时无键按下,则不执行键闭合操作,若再次检测时有键按下,则执行相应键闭合操作。

3、举例

sbit key=P1^0; //置位一个按键

void main()

{

if(key==0) //第一次检测(扫描)按键,按键按下时为0电平

{

delayms(5);//延迟5~10ms(让过抖动时间)

if(key==0) //二次检测(扫描)按键是否按下

执行语句;

}

}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /3 下一条