单片机大侠 帮帮我 谢谢了!单片机按键短按,长按,弃抖动,松手检测程序

单片机大侠 帮帮我 谢谢了!单片机按键短按,长按,弃抖动,松手检测程序,第1张

短按

用电平变换中端口最好

直接if(rb0)判断就行了

长按

if(rb0)

dealy(100ms);

if(rb0)

do;

抖动,就是一个确定的延时检测时间

if(rb0)

delay(10ms);

if(rb0)

do;

判断arduino按键长按与短按的方法是:

1、设置三个变量(a,b,c),对应三个按键,初值都是0。

2、一个按键按下后,对应的变量赋值1(a,b,c=1)。

3、判断语句,判断条件中三个变量间进行与 *** 作,只要有其中一个位0就是假。

轻触开关是一种常用的按钮开关,其工作原理是通过手指轻触按钮使其内部接点闭合或断开。在单片机中,我们可以利用轻触开关来实现一些特定的功能,比如短按开机、长按关机等。

对于短按开机,我们可以通过在单片机的程序中设置一个计时器,在轻触开关被按下后,计时器开始计时,在一定时间内如果没有再次按下轻触开关,就认为是短按开机,执行相应的 *** 作。

对于长按关机,我们同样可以设置一个计时器,在轻触开关被按下后,计时器开始计时,如果在一定时间内轻触开关一直处于按下状态,就认为是长按关机,执行相应的 *** 作。

需要注意的是,在实现短按开机和长按关机时,要考虑到开关的抖动问题。抖动是指当按钮按下或松开时,接点会短暂的发生多次闭合和断开,这会对计时器的计时造成干扰,导致误判。因此,在程序中需要添加去抖动的处理,一般使用延时消抖或硬件消抖的方法来解决。

综上所述,通过轻触开关实现单片机短按开机长按关机的原理,是通过设置计时器和去抖动处理来实现的。

首先需要硬件支持,也就是单片机某个引脚可以控制断电和维持上电

按键的的作用也可以给单片机供电,并且还要有个专门的引脚检测按键状态。

软件:首先是长按判断。这个最好用按键扫描。就是检测按键按下时候,定时器计时,如果松开就立即清零。在设置一个功能函数检测定时值,大于两秒后,就表示长按。

按键按下单片机供电开始计时,如果达到长按标准,就输出引脚控制持续供电,这时候按键松了也不会断电。

运行期间,按键再次按下并符合长按,那木引脚输出停止供电,这时候如果按键松开,那就彻底没电关机。

static void lradc1_data_function(unsigned long data)

248 {

249 volatile unsigned int reg_val;

250 static int key_pressed = -1, count = 0;

251 int delay = HZ/40;

252 reg_val = readl(KEY_BASSADDRESS+LRADC_DATA1);

253 // printk("[lkj] second lradc data1 =0x%x, s_headset_plug=%d \n", reg_val, s_headset_plug);

254 //because recorder app close this, so

255 writel( readl(baseaddr+0x28) | (1<<27),(baseaddr+(0x28)));

256 writel( readl(baseaddr+0x28) | (1<<29),(baseaddr+(0x28)));

257

258 if(s_first_headset_plug != 1 || s_mic_type != 1) {

259 mod_timer(&mic_data->timer, jiffies + HZ/4);

260 printk("[lkj] input key hook key return \n");

261 return ;

262 }

是在实物开发板上实现吗?

长按和短按很好实现,当检测到有按键按下了,就开始计时,用定时器,检测到按键松开了,停止计时,然后根据计时的时间长短,确定是长按还是短按,比如,时间小于05秒为短按,超过3秒为长按,其余时间为无效,不够长按时间,就为无效按键,也不算是短按的。这样可以排除是随意按键的可能。

组合键就好办了,检测到同时按两个,三个,就为组合键,至于是什么功能,那由你自己定义了。

以上就是关于单片机大侠 帮帮我 谢谢了!单片机按键短按,长按,弃抖动,松手检测程序全部的内容,包括:单片机大侠 帮帮我 谢谢了!单片机按键短按,长按,弃抖动,松手检测程序、判断arduino按键长按与短按、用一个轻触开关实现单片机短按开机,长按关机等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10168846.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存