独立按键的长按与短按

发布者:size0109最新更新时间:2015-10-08 来源: eefocus关键字:独立按键  长按  短按 手机看文章 扫描二维码
随时随地手机看文章
按键扫描函数,支持按键长按和短按,长按与短按的区别可以放到10ms的定时里面,根据需要设置判断次数

 

//按键处理函数
//返回按键值
//mode:0,不支持连续按;1,支持连续按;
//0,没有任何按键按下
//1,KEY0按下
//2,KEY1按下
//3,KEY2按下
//4,KEY3按下 WK_UP
//注意此函数有响应优先级,KEY0>KEY1>KEY2>KEY3!!
u8 Key_Scan(u8 mode)

 static u8 key_up=1;//按键按松开标志
 if(mode)key_up=1;  //支持连按   
 if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))
 {
  delay_ms(10);//去抖动
  key_up=0;
  if(KEY0==0)return KEY_RIGHT;
  else if(KEY1==0)return KEY_DOWN;
  else if(KEY2==0)return KEY_LEFT;
  else if(KEY3==1)return KEY_UP;
 }else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;     
  return 0;// 无按键按下
}


//0,没有任何按键按下
//1,长按
//2,短按

u8 Key_long_short(void)
{
  static u8 oldkey,newkey;
  static u8 keylongnum;
  static u8 keylongflag;
  u8 key;

  newkey = Key_Scan(1);

  if(newkey!=0)
  {
     if(oldkey==newkey)
    {
    
     keylongnum++;
     if(keylongnum>100)
     {
      keylongnum=0;
      keylongflag=1;
      key = 1;
     }
     
    }

  }
  else
  {
  
    if((oldkey!=0)&&(keylongflag!=1))
   {
    key = 2;
   }
   else
   {
    key = 0;
   }
   keylongnum=0;
   keylongflag=0;
  }
  oldkey=newkey;
  return(key);
}

关键字:独立按键  长按  短按 引用地址:独立按键的长按与短按

上一篇:单片机数据采集常用算法
下一篇:上拉电阻和下拉电阻的选择

推荐阅读最新更新时间:2024-03-16 14:34

基于LPC1752的独立按键的原理及实现
1. 简介 本文档主要介绍LPC1752采集4个独立按键的原理及实现。 本设计共有4个独立按键,分别是确认键(SW1)、上键(SW2)、下键(SW3)和复合键(SW4)。确认键(SW1)连接至LPC1752的P1.25引脚,上键(SW2)连接至LPC1752的P1.26引脚,下键(SW3)连接至LPC1752的P1.28引脚,复合键(SW4)连接至LPC1752的P1.29引脚。连接图如下: 图1 独立按键连接图 本设计按键采用高电平输入有效方式。按键按下时,LPC1752检测到高电平,认为有按键信号输入。本设计可以处理独立按键的按下、长按以及按键间的组合键。 2. 程序设计 2.1 定义 2.2 初始化函数Key
[单片机]
基于LPC1752的<font color='red'>独立</font><font color='red'>按键</font>的原理及实现
在51单片机上用定时器实现按键长按短按功能
我们在项目中常常需要在只有一个按键的情况下,来实现长按执行某个功能,短按执行另一个功能。 鉴于此,用51搭的核心板实测,亲测可行。好了,废话少说,简单粗暴,直接贴上程序结构。 主函数() { } 在进入while大循环中,先要配置定时器。 在while中核心是:使用两个if块判断,第一个if块判断按键是否按下,在第一个if块里面只进行按键按下标志位设置和定时器计数。 在第二个if块里根据第一个if块定时器计数来执行长短按功能,记得在退出第二个if块时,按键按下标志位(press_flag)和定时器 计数变量(count)都要清零。 …… 定时器配置和中断服务程序就不贴出来了。
[单片机]
在51单片机上用定时器实现<font color='red'>按键</font><font color='red'>长按</font>、<font color='red'>短按</font>功能
独立按键和矩阵键盘原理
按键分类与输入原理 按键按照结构原理科分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关灯;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其他按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入时与软件结构密切相关的过程。 对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将按键输入,并检查是哪一个按键按下,将该键号送人累加器,然后通过跳转指令转入执行该键
[单片机]
<font color='red'>独立</font><font color='red'>按键</font>和矩阵键盘原理
STM8之外部中断长按键识别相关内容
  STM8常用中断指令   开总中断   _asm(“rim”);   禁止中断   _asm(“sim”);   进入停机模式   _asm(“halt”);   中断返回   _asm(“iret”);   等待中断   _asm(“wfi”);   软件中断   _asm(“trap”);   STM8S常用中断映射   如使用中断函数时,可以通过在上图中查找相对应的中断向量号,而中断函数的名字可以自定义   外部中断长按键识别相关配置   ??STM8S为外部中断事件专门分配了五个中断向量:   PortA 口的5个引脚:PA[6:2]   PortB 口的8个引脚:PB[7:0]   PortC 口的8
[单片机]
STM8之外部中断<font color='red'>长按键</font>识别相关内容
MSP430G2553测试程序(长短按键识别)
//原始状态P1.6亮,P1.0暗,利用状态机进行按键检测,短按键情况下并释放的瞬间P1.0翻转,P1.6翻转 //长按键P1.0,P1.6按照10Hz的频率闪烁 // MSP430G2xx3 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // P1.3|KEY P1.6|-- LED // | P1.0|-- LED // 作者 http://jiwm.blog.163.com // Built with IAR Embedded
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved