导航:首页 > 操作系统 > 单片机按键长按短按

单片机按键长按短按

发布时间:2023-05-17 15:36:47

‘壹’ 51单片机识别四个独立按键是短按还是长按

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

‘贰’ 单片机按键怎么实现长按和短按和组合键功能

是在实物开发板上实现吗?
长按和短按很好实现,当检测到有按键按下了,就开始计时,用定时器,检测到按键松开了,停止计时,然后根据计时的时间长短,确定是长按还是短按,比如,时间小于0.5秒为短按,超过3秒为长按,其余时间为无效,不够长按时间,就为无效按键,也不算是短按的。这样可以排除是随意按键的可能。
组合键就好办了,检测到同时按两个,三个,就为组合键,至于是什么功能,那由你自己定义了。

‘叁’ 单片机,红外线遥控器,长按和连续按2下有什么区别程序该怎样区分呢

每种协议都是不一样的,比如是日立的协议吧,就是通常说的一种,长按时发的第一个32位是对应的地址码,命令码及其反码,但是按键一直按下时,则每隔固定时间发送的是重复码,这个重复是固定知橘一组编码,与你按键对应的的地址和命令没搭乎团有任何关系,也就是说任何长按的重复码都是一样的;
而连续按则不同,按键松开后再按,则再次发送对应地址码,命令码及其反码,不发送重复码。
程序可以根据具体的编码时序分支处理,若是连续按,则顷宽跳入一个分支,否则跳入长按处理,长按里面判断很简单,则将上一次的结果重复一次即可。

‘肆’ 51单片机,矩阵按键,长按短按判断

/*网友反映长键结束后会送出短键值,特作更改2019.03.29*/

//1,再写一个长短键判断函数,调用那个按键扫描函数
unsignedcharKEY_process(void)
{
staticunsignedcharOld_key=0;//上次按键值
staticunsignedcharKey_buf=0;//按键有效保存
staticunsignedcharPress_CNT=0;//按键按下时间,根据调用时间间隔确定
=0;//长键有效标记变量
unsignedcharNew_key=0;//当前按键值
unsignedcharKEY=0;//待返回的按键值

New_key=keyscan();

if(New_key==Old_key)
{
if(New_key!=0)//建议keyscan返回0的那个值改为其他值,方便这里判断
{
Key_buf=New_key;
if(Press_CNT<0xff)
{
Press_CNT++;
}
if(Press_CNT>=100)//调用时间间隔确定*100为长按时间,
{
KEY=Key_buf+100;//将短键+100作长键区分
Press_CNT=0;//按键时间清0
Key_buf=0;//按键缓冲清0
bPreKeyIsLong=1;//长键有效标记
}

}
else//按键弹起
{
if(Key_buf&&(bPreKeyIsLong==0))//仅在长键无效时
{
KEY=Key_buf;//将缓冲值送将返回的值
Key_buf=0;//清按键缓冲
}
Press_CNT=0;//按键弹起或按其他按键,将长按时间清0
bPreKeyIsLong=0;//长键有效标记清0
}
}
Old_key=New_key;//将新按键赋给下一次的旧按键值

returnKEY;//0代表无按键
}
//2,弹起不返回已确定的值,则在keyscan最后加一句判断
if((P3&0X0F)==0X0F)//按键已经弹起
{
keyvalue=MY_key;//使按键等于一个自定义的值
}

‘伍’ 用一个轻触开关实现单片机短按开机,长按关机

不需要单片机,使用双稳态触发器配合轻触开关,当轻触开关每按动一次,给双稳态一个输入脉冲,双稳态两个输出端轮流输出,利用此一个输出端控制开机继电器接通电源,即可在按动下一次时因双稳态转向另一端输出而切断电源。

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

这个真心不难,就是简单的c语言判定就行了,《C程序设计语言》,实在看不了就看谭总写的那本c语言。给你写过伪代码,
if(key=ReadKey())//读取按键,判断有无按键按下去,没按键按下,这里返回0值是不进入这个函数的
{
delay(x);//延时一段时间,写过循环就行了
if(!ReadKey())//在次读取按键值,实际上按下去按键是低电平(原理图一般都是这样做的)
{
return 已经松手了( 这里是高电平了返回0了)

‘柒’ 怎么用C语言/C51程序实现单片机按键长按开机与长按关机

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

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

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

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

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

‘捌’ 请教51单片机定时中断检测长按与短按问题-100分悬赏

首先你的程序写的不够合理,作为按键一般会使用外部中断而不是定时中断,外部中断可以保证实时按键。
一般按键都是采用外部中断,如果是在while循环里面进行按键键值判断,那么在判断之前最好加个小延时,进行按键去抖。
像你这个wile循环耗时很长,最适合使用外部中断了,当然如果按键没有接到外部中断引脚,采用定时中断也可以达到一定的效果,但是一定要把定时时间设置的短一些。

‘玖’ 51单片机如何通过编程来实现长按键与短按键的识别

检测到按键按下后,来一个
for(;;)
{
按槐辩键松唯明睁了break;
否则一只等待,同时一个变量i++当i加到一定值就可以为长按指岁了
}

‘拾’ 单片机按键短按和长按的程序

设置定时器100毫秒中断a值自家1
设置按键值位变量k
设置按键端口k1
if (!k1)按键按下

delay(20);去痘
if (!k1)确认按下
a=0;计时数清0 确保长按时间精准
while(!k1)按钮没释放 死循环检测按下时间
if(a>30)达到3000毫秒
k=!k按键值取反 没按前为0 长按3秒后为1 短案无效

阅读全文

与单片机按键长按短按相关的资料

热点内容
钉钉打卡服务器过什么意思 浏览:139
镂空加密隔断墙效果图 浏览:539
windows7怎么安装证书服务器 浏览:952
证券业务的程序员 浏览:202
u点服务器wifi密码如何设置 浏览:864
宝马x5大灯编程 浏览:673
python安装和使用 浏览:381
加密的门禁卡复制了用不了 浏览:714
javacsv读写 浏览:806
ug编程教程pdf 浏览:763
latex编译软件安卓版 浏览:248
如何在信合app上交居民医保 浏览:109
丑恶pdf 浏览:365
陕西定频压缩机销售公司 浏览:795
安卓系统如何帮人打王者 浏览:427
sbtlinux安装 浏览:141
阿里云sip服务器 浏览:73
身为程序员的你怎么拼命 浏览:453
android图片手势放大 浏览:586
钱的所有算法 浏览:13