微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 键盘扫描方法大征集! ! 快快进来

键盘扫描方法大征集! ! 快快进来

时间:10-02 整理:3721RD 点击:
在这里向大家征集按键扫描的思路和方法,我们知道在实际运用中不能写delay() 这样的延时函数来消抖的,因为单片机会在这里白白浪费一段时间任何事情都不做,可能对于一些要求不高的场合也没什么影响,这里我们不讨论这种。当然我们也不能用while()来判断按键是否已经释放,如果这样的话一直按住这个键,单片机就死在这里了。大家都是怎么写的按键扫描程序呢,说说思路呀,或者贴出程序来大家一起讨论下。共同学习,共同进步
都没人来啊   我说说我的思路,抛砖引玉了   定时中断(例如10ms)  中断后进行按键扫描,1、第一次进来后判断是否有按键操作,如果有(KeyDelayTine++),计数器KeyDelayTine加1。2.第二次进来再次判断是否又按键按下,如果有(KeyDelayTime++),计数器再加1,如没有,则计数器清零退出,判定为抖动。3.当KeyDelayTime计数器加到一定的值后(比如:2、3、根据实际情况设定这个值)再进入扫描程序,扫描按键的键值。松手后清除KeyDelayTime计数器。4.当一直按住某个按键时,KeyDelayTime会一直加,当然前面要加个判定,来防止KeyDelayTime溢出,而当KeyDelayTime达到某个值时我们可以判定为长按。

等高手说思想  学习学习

都没人来啊   我说说我的思路,抛砖引玉了   定时中断(例如10ms)  中断后进行按键扫描,1、第一次进来后判断是否有按键操作,如果有(KeyDelayTine++),计数器KeyDelayTine加1。2.第二次进来再次判断是否又按键按下,如果有(KeyDelayTime++),计数器再加1,如没有,则计数器清零退出,判定为抖动。3.当KeyDelayTime计数器加到一定的值后(比如:2、3、根据实际情况设定这个值)再进入扫描程序,扫描按键的键值。松手后清除KeyDelayTime计数器。4.当一直按住某个按键时,KeyDelayTime会一直加,当然前面要加个判定,来防止KeyDelayTime溢出,而当KeyDelayTime达到某个值时我们可以判定为长按。

反正是 看脉冲                       

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top