分享

一种单片机按键长按短按识别处理方法

 岐岐feng 2018-04-14

一种单片机按键长按短按识别处理方法

有一个项目,用于自动温湿度控制,在使用的时候,需要操作者在人机界面对温湿度的目标值用按键进行设置,设置操作的使用频率不高。

为了防止误操作,客户要求长按3秒才能进入设置模式,之前在编程的时候使用单片机内部计时器开发,编写的代码冗长而且对外设资源的利用率不高。

后来看到别人写的一个代码,比之前写的更加精妙一些,虽然使用软件延时精度不高但是对于按键长按短按识别已足够,分享给大家。该例程实现了单片机区别处理按键长按(大于3秒)和短按(小于3秒)的方法,源码来自于他人,仅供学习参考。

单片机按键的引脚用WKUP_KD表示,需要事先进行定义;

此程序还需要一个延时30毫秒的子程序段delay_ms(30)和计时变量t;

实现的流程为:

1.检测WKUP_KD按键是否按下,一旦按下进入Check_WKUP程序段;

2.进入while死循环,在循环中反复检测WKUP_KD的按下状态。

如按键一直按下,计时变量t加一,直到检测到的按下时间大于3秒,退出循环返回1;

如循环中检测到按键抬起,则认定为按键按下时间不足3秒,退出循环返回0;

3.在其他程序中分别对Check_WKUP的不同返回值处理,以区别处理按键长按还是短按。

一种单片机按键长按短按识别处理方法

图 1 长按短按C程序代码

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多