按键的抖动现象
按键按下时都会发出一声响,虽然有的按键声音很轻微,但这都是金属导体碰撞产生的震动;——称这种现象为:按键的抖动。
如果不对按键的抖动进行处理,按键就会对系统电路或程序产生意外的干扰。因此,我们要对按键进行“消抖”。
按键按下后抬起有效
利用延时函数,按键key1按下后抬起有效,控制LED闪烁;
#include sbit key1 = P1^4; //实验板上key1 sbit LED0 = P0^0; unsigned char key1_down; void delay(unsigned int delay_time) { unsigned int j = 0; for(;delay_time > 0;delay_time --) { for(j = 0;j < 125;j ++); } } void key_pressed(void)//按键扫描函数 { if(key1 == 1); //如果按键按下 { delay(20); //消除键盘抖动 if(key1 == 1) //如果确实按键按下 key1_down = 1; //记忆key1按下的状态 } if((key1 == 0) && (key1_down == 1)) //key1曾经按下过,且这时又抬起 { LED0 = !LED0; //LED闪烁 key1_down = 0; //按键按下的状态清零 } } void main(void) { P0 = 0x00; //让P0驱动的LED全灭 while(1) key_pressed(); //调用函数 } 按键按下即有效 当确定按键真的按下后即生效 /* 软件去抖 */ if (0 == K1) //如果有键按下 { delay_ms(8); //延时一段时间去抖 if (0 == K1) //如果真的有键按下,检测到得是稳定闭合状态 { //语句块; //按键以后需要做的事情 } while (!K1); //松手检测,如果按住不放则一直在循环里 }
上一篇:C51单片机LCD1602驱动程序
下一篇:蜂鸣器(HC6800-EM3 V2.2开发板)
推荐阅读最新更新时间:2024-11-09 11:34
设计资源 培训 开发板 精华推荐
- AD8602DRZ 低侧运算放大器电流监视器的典型应用
- LTC2992HDE 双向宽范围功率监视器的典型应用
- AM2G-2405SZ 5V 2 瓦 DC-DC 转换器的典型应用
- STM32F407ZGT6核心板
- 使用 ROHM Semiconductor 的 BD46361 的参考设计
- 使用 STMicroelectronics 的 L99MOD53XPTR 的参考设计
- MIKROE-3309,基于 AD9833 低功耗可编程波形发生器的波形点击板
- AM2G-2405SZ 5V 2 瓦 DC-DC 转换器的典型应用
- 使用 Analog Devices 的 LTC3374AHUHF 的参考设计
- AKD4614-A,AK4614 24 位音频编解码器评估板