,单片机如何检测按键被按下

电子 浏览

很多传统单片机教材及相关书籍,对于按键的检测和消抖,都是先判断按键是否按下,如果按下了,则阻塞延时几十毫秒,以跳过抖动时间,之后在判断一次按键是否按下,如果按下,则把按键按下变量置位。工作了才发现这种阻塞延时消抖的方法很拙劣,在这段延时的时间内,其他任务是没有办法扫描的,因此也有了很多隐患在里面,为了改善这种弊端,大多按键检测都是利用定时器消抖,并把按键扫描放到定时中断中扫描。

1、如何用单片机判断按键单击双击?

按键弹起的时候开始计时,如果超过一定时间了都没再检测到第二次按键弹起,那就是一个单击操作,否则就是双击。假设有键按下时key0。假设key0有键if(key0)第一次按下按键{while(!key);第一次松开按键while(i&&key)i的大小就是延时长短{i;}if(i0)表示没有第二次按键if(i!0)表示按下了第二次}防抖那些就自己加了吧。

2、单片机电子时钟如何识别按键或开关按下与否

这个最好的方法是用定时器,按键启动定时器,按键抬起读定时器,如果感觉定时器时间不够用可以用个常量,然后做加一计算。单片机由运算器、控制器、存储器、输入输出设备构成。单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。

3、单片机按键检测程序

P30xfe;//P30b11111110,令P3.00,同时令高四位为高电平,作好读端口准备(51IO特点)tempP3;//读回P3口的状态temptemp&0xf0;//temp&11110000,0与任何数结果为0,把temp变量的低四位屏蔽了,高四位因为任何数与1等于它本身,所以把高四位对应的端口状态读进来。

4、单片机如何检测多个按键按下情况?

硬件方法用zlg7290,自动的按键扫描和数码管显示芯片。设计一个矩阵键盘,按行列扫描即可,也可以用中断,你可以参考下行列扫描法,如果通过中断实现行列扫描,应该都能检测到。用查询的办法或中断+查询的办法如果有键按下(中断)则依次查询所有按键或直接每几十或几百ms判断所有按键的状态这样就一个都不漏掉了。