51单片机如何实现按键的长按与短按功能,尝试过很多方法都不行,请高手多赐教,多谢了(想是简单,做是难)

如题所述

这个真心不难,就是简单的c语言判定就行了,《C程序设计语言》,实在看不了就看谭总写的那本c语言。给你写过伪代码,
if(key=ReadKey())//读取按键,判断有无按键按下去,没按键按下,这里返回0值是不进入这个函数的
{
delay(x);//延时一段时间,写过循环就行了
if(!ReadKey())//在次读取按键值,实际上按下去按键是低电平(原理图一般都是这样做的)
{
return 已经松手了( 这里是高电平了返回0了)
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-11
设置一定时器,比如定时0.5s加一,再设置一个标志位,当加数达到一个标准值时,定时器定时改为更短时间。
关键是设置定时器,标志位,在中端程序检验按键的电位。
试过没
第2个回答  2012-05-11
给你个思路,按下以后进入一个循环,再定一个变量短按的时候是1如果按的时间久了就让变0这样判断这个变量就能判断它的1和0就知道是长按还是段按

51单片机如何通过编程来实现长按键与短按键的识别?
按键松了break;否则一只等待,同时一个变量i++当i加到一定值就可以为长按了 }

怎么用C语言\/C51程序实现单片机按键长按开机与长按关机?
软件:首先是长按判断。这个最好用按键扫描。就是检测按键按下时候,定时器计时,如果松开就立即清零。在设置一个功能函数检测定时值,大于两秒后,就表示长按。按键按下单片机供电开始计时,如果达到长按标准,就输出引脚控制持续供电,这时候按键松了也不会断电。运行期间,按键再次按下并符合长按,那木...

51单片机 按键长按短按效果
include<reg51.h>#define uchar unsigned char#define uint unsigned int sbit key=P1^0;sbit LED1=P1^4;sbit LED2=P1^5;uchar code ledtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};uint dat,cnt;uchar dis[4],disscan=0;bit flags,flagl;void t0isr() ...

51单片机C程序:如何实现一个按键长按3秒进入程序,再长按3秒关机,短一...
长按3秒进入程序可以这样while(1){ if( key==0)\/\/按键按下 { cnt++; if( cnt>300) { cnt=0;\/\/到3秒,退出本循环进入下一段程序 break;} dely(10);\/\/延时10毫秒}} while(1){ ...\/\/此为主程序段} ...

51单片机,矩阵按键,长按短按判断
\/* 网友反映长键结束后会送出短键值,特作更改 2019.03.29 *\/\/\/1,再写一个长短键判断函数,调用那个按键扫描函数unsigned char KEY_process(void){ static unsigned char Old_key = 0;\/\/上次按键值 static unsigned char Key_buf = 0;\/\/按键有效保存 static unsigned ch...

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

51单片机C语言编程如何实现长按按键实现数值的累加
这个可以用定时器来做,比如检查某键,按键时间超过2秒后一个变量开始累加知道键释放为止。实现方法如下:include<reg51.h> define uint unsigned int define uchar unsigned char uint v=0,time=0;sbit key=P1^0;void t0isr() interrupt 1 { TH0=(65536-50000)\/256;TL0=(65536-50000)%256;ti...

C51单片机 单个按键 短按抬起和长按两功能程序怎么写
按键按下后启动定时器!在2个定时器中断内分别控制两个LED灯的开关!

单片机一个按键实现短按 中长按 更长按 也就是三种功能 程序怎么写
按键按下和抬起之间有防抖动延时,只要把防抖动延时时间设置大小不同就可以了。短按你设ms,中按搞个1-3s,长按弄个5-10s。我觉着这么行。

51单片机识别四个独立按键是短按还是长按
识别长按,先要确定一个时间,超过这个时间为长按,否则即为短按。当按一下键后,开始计时,同时判断确定时间到否?到了,执行长按的程序,等待按键释放。在判断时间的时候,如果按键释放了,说明未到长按的时间,执行短按的程序。或者,按下时开始计时,等待按键释放,释放后,停止计时,根据计时的...

相似回答