《同一个按键短按与长按有什么区别?源代码详细讲解.doc》由会员分享,可在线阅读,更多相关《同一个按键短按与长按有什么区别?源代码详细讲解.doc(1页珍藏版)》请在三一文库上搜索。
1、同一个按键短按与长按有什么区别?源代码详细讲解开场白:上一节讲了类似电脑键盘组合按键触发的功能,这节要教会大家一个知识点:如何在上一节的基础上,略作修改,就可以实现同一个按键短按与长按的区别触发。具体内容,请看源代码讲解。(1)硬件平台:用矩阵键盘中的S1和S5号键作为独立按键,记得把输出线P0.4一直输出低电平,模拟独立按键的触发地GND。(2)实现功能:两个独立按键S1和S5,按住其中一个按键,在短时间内松手,则认为是短按,触发蜂鸣器短鸣一声。如果一直按住这个按键不松手,那么超过规定的长时间内,则认为是长按,触发蜂鸣器长鸣一声。(3)源代码讲解如下:#include “REG52.H”#d
2、efine const_voice_short 20 /蜂鸣器短叫的持续时间#define const_voice_long 140 /蜂鸣器长叫的持续时间/*注释一:* 调整抖动时间阀值的大小,可以更改按键的触发灵敏度。* 去抖动的时间本质上等于累计定时中断次数的时间。*/#define const_key_time_short1 20 /短按的按键去抖动延时的时间#define const_key_time_long1 400 /长按的按键去抖动延时的时间#define const_key_time_short2 20 /短按的按键去抖动延时的时间#define const_key_time_long2 400 /长按的按键去抖动延时的时间void initial_myself(); void initial_peripheral();void delay_long(unsigned int uiDelaylong);void T0_time(); /定时中断函数void key_service(); /按键服务的应用程序void key_scan(); /按键扫描函数 放在定时中断里sbit key_sr1=P0