深入解析按键单击、、长按的实现原理与过程

[复制链接]
查看278 | 回复0 | 2024-8-23 00:06:32 | 显示全部楼层 |阅读模式
序言:在好多项目开发过程中我们一般会涉及到键盘的使用,为了使按钮的功能更多远化我们一般会区别键盘的单击、双击、长按等操作过程因而实现更多的功能。如今让我们来剖析一下她们的实现原理和过程。

一、原理解析(注意i:这儿我们的硬件设计为当按钮按下为低电平,如硬件设计不一致反过来即可,原理是相同的)

首先我们来看一下单击、双击、长按电平时序图



从三种时序图我们可以看出三种操作方法的区别就在于当按钮按下后低电平和高电平的时间,通过判定高低电平的变化时间就可以把这三种形式区别开。

单击、和长按的区别:

单击和双击时序图十分的相像,最大的区别就是按钮按下后低电平的持续时间,这儿我们对比单击和长按的时序图,可知长按的低电平时间要比单击的要长好多所以这儿我们假定单击时低电平的时间为S1,长按量低电平的时间为S2,我们只要在单击和双击之间加一个判别时间这儿我们加入S3作为判定,当按钮按下时低电平的时间超过了S3则判定为长按,若低电平时间大于S3则判定为单击。我们可以按照自己的须要设定S3的时间来规定哪些是长按,哪些是单击。

单击和双击的区别:

通过时序图我们可以看见双击相当于两次单击,双击时第一次按钮放开到第二次键盘按下有一个时间间隔这儿我们用D1表示,而双击和单击的区别在于在D1时间之后单击的电平仍然处于高电平状态,而双击则会再度出现一段低电平,这儿我们可以加一个定时器在第一次按钮放开后开始计时,计时的最大值为D2,这儿我们只要判定在D2时间内是否出现了低电平。倘若出现了低电平则双击,假如没有出现低电平则为单击。倘若出现低电平的时间超过了D2则为两次单击而不是双击。这儿我们可以修改D2的时间来改变双击的速率。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则