BG4RFF 发表于 2011-5-17 20:48:48

请教马老师如何实现双击、长按、连_发

关键是单击后,是不是要等到确定没有双击,才处理键
这样对单击的键就有了明显的延迟
可以在一个键上实现单击,长按,单连_发,双击(第一键是单击不处理),双长按(第一键是单击不处理,第二次是长按),双连_发(第一键是单击不处理,第二次连_发)但是延迟感觉比较明显。
主要是想利用带有按键的旋转编码器实现菜单

zhanan 发表于 2011-5-17 22:07:45

单片机上的按键不能搞太复杂吧,基本上单击、短击、连击(长按)就够了,程序可以有选择性的对击键做出反应。
双击由于按键本身以及人的因素最好还是不用,毕竟不是用鼠标。
双长按用状态机解决。
用旋转编码器实现菜单关键是要有足够的显示信息,怎么按键反而是次要的。

dongzhiqing 发表于 2011-5-17 23:26:07

其实就是三个状态。

machao 发表于 2011-5-20 00:58:28

楼上说的对,使用状态机的方法可以实现,但是这个回答并没有根本的解决问题:就是那些状态?如何确定,它们之间如何转换?

这个不是编程问题,而是首先你必须搞清楚和确定实际按键过程中单击、双击、长按、连_发之间的关系。

在这4个之间,首先要给出单击、双击的非常具体的定义,否则你是不能进入代码设计的。

lz提到了“关键是单击后,是不是要等到确定没有双击,才处理键”已经涉及到了关键点,问题是你所定义的“单击”是什么样的具体过程。什么情况下才会发生“双击”,这个过程又是如何定义的。

请先给出所谓的“单击”、“双击”、“长按”的具体描述,如果能说清楚了,才能进一步的考虑如何编程实现这些按键过程的判别和处理。

guxingganyue 发表于 2011-5-30 17:05:06

不知楼主程序写的怎么样了,,按键实现了没?

ruizhixing 发表于 2011-7-12 21:39:47

我在想,能不能加入触发器来解决这个问题呢?(但是这样又好像违背了LZ的意思,LZ想纯用单片机解决?)

jacky82512 发表于 2011-8-13 16:52:56

请问你写的怎么样了?能否看下你的实现的代码
页: [1]
查看完整版本: 请教马老师如何实现双击、长按、连_发