永发信息网

单片机按键按一次就加一

答案:3  悬赏:50  手机版
解决时间 2021-11-16 21:50
  • 提问者网友:蔚蓝的太阳
  • 2021-11-16 01:45
单片机按键按一次就加一
最佳答案
  • 五星知识达人网友:未来江山和你
  • 2021-11-16 02:51
按键相对是个低速任务。你按的再快,一秒可以按十次吗?什么?你可以。。那你就是作弊了。因为哪怕你反应的过来。按键可不行。所以。这个本质你需要牢牢抓住。那么你可以选择一秒之内只检测几次按键。把几乎是连续在使用的机器时间碎片化。比如在一个碎片里只查一次按键。是的,你现在就是这么做的。只是循环太快。碎片太多。按键的抖动你都查到了。所以你需要的仅仅是慢下来。极限就是刚刚说的查10次。算算,这是一个100ms的定时。明白定时器的真正用途了吗?如果你实际这么实验了你会发现这的确有效。不会加个成百上千了。接下来你需要设置一个逻辑让按键检测只对下降沿起作用。最好的办法就是和前次的状态比较。如果上次的状态为高而此次状态为低。那么这就是个下降沿。于是你需要一个寄存器保存上一次的状态。并每次比较后更新。原来这寄存器是这么用的。。实际实验后发现这么干已经可以保证基本每次长按只会加1。但是短按似乎会丢失。那是因为。100ms实在是长了些。电平保持100ms有时是太难了。所以,你可以适当提高频率。比如提高10倍。以10ms为周期。基本能解决大多数问题。
全部回答
  • 1楼网友:轮獄道
  • 2021-11-16 05:32
C语言中用延时防止跳动,用While检测是否松开
  • 2楼网友:三千妖杀
  • 2021-11-16 04:05
可以这样,给你个一般思路:1、检查按键状态-------2、延时20毫秒-------3、检查按键状态--------4、执行处理按键程序---------5、延时20毫秒---------返回到步骤1

说明:这是查询法,做实验或者简单程序可以,复杂程序最好用中断。在第一步如果没有按键返回1,第3步按键没按下就是按键时间太短则放弃也返回1。各延时段可根据手感调整一下延时时间。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯