当前位置: 首页 > news >正文

龙岗在线网站建设广告推广策划

龙岗在线网站建设,广告推广策划,韩国做美食的视频网站有哪些,网站产品展示代码背景 有项目使用独立按键检测,短按、长按。根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作。 记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了。可能很难懂,这里就简单一点&…

背景

有项目使用独立按键检测,短按、长按。根据使用效果,发现松手后,也就是按键弹起后响应操作比较好操作。

记得之前,博主写过一篇关于按键的检测的文章,但是过于复杂了。可能很难懂,这里就简单一点,只处理一个按键。并且这个按键,只检测短按、长按两种状态。

硬件

硬件原理图如下

这里不管使用哪个型号的MCU基本上都一样了,就是按键上拉,按下按键MCU管脚有个低电平输入信号。如下图所示,这里允许我偷个懒,把之前的图拿上来。因为实际项目的图,拿上来影响不好。反正原理就是这样的,你也可以将KEY上拉,这里的上拉可以在MCU的管脚配置为输入上拉。

如下图所示按下按键,单片机管脚KEY得到一个低电平输入。

 软件

这里就不限于使用的MCU,按键采用扫描的方式,获取按键值。

首先使用定时器定时1ms

这段代码是根据使用的MCU平台实现定时器的初始化配置,保证定时器中断1ms来一次,不同的MCU平台这里的代码都不一样的。例如STM32/GD32/等等其他的8位的MCU都可以。

void timer_init(void)
{//根据MCU平台实现,初始化代码}

定时器中断函数,实现按键扫描

这里的key_val/key_val_buf你可以理解上全局变量,读取按键消息,如果有按键就将按键值保存下来。


void    TIM_IRQHandler()
{key_val = ReadKey();if(key_val != NO_KEY){key_val_buf = key_val;}}  

具体检测长按的函数,这里是最关键

用一个状态机实现

代码如下

这里简单解释一下,每次定时器中断来,首先读取按键的管脚的当前值

如果状态0,检测到有按键按下,进入状态1,消除抖动

状态1确认有按键按下,则进入状态2

状态2等待按键松手,根据KeyTimeCnt 的数值来确定输出长按还是短按

这里2ms到1000ms为短按
1000ms以上认为短按

这个数值可以根据你自己的使用习惯进行调整。我这里也是根据实际按键的效果来调整得到的。


unsigned char ReadKey(void)
{static unsigned char KeyState = 0;static unsigned int KeyTimeCnt = 0;static unsigned int no_key_times = 0;unsigned char KeyReturn = NO_KEY;static unsigned char KeyCurValue = NO_KEY;KeyCurValue = key; //读取按键值switch(KeyState){case 0:{if(KeyCurValue == 0)        //检测到有键按下{KeyState++;                   //转到消抖确认状态 KeyTimeCnt = 0;no_key_times = 0;}else{no_key_times++;if(no_key_times >= 500)//500*20ms=10s{no_key_times = 0;}}break;}case 1:{if(KeyCurValue == 0)   //和上次按键相同确认有键按下{KeyState++;                  //转入等待按键释放状态}elseKeyState--;                  //两次键值不同 返回等待按键状态KeyTimeCnt = 0; break;}//增加时间按键的长按、短按检测case 2:  {if(NO_KEY == KeyCurValue)           // 按键已经释放{if((KeyTimeCnt > 2) && (KeyTimeCnt < 1000))     {KeyReturn = KEY1_DOWN;  KeyTimeCnt = 0; KeyState = 0;}else if(KeyTimeCnt >= 1000){KeyReturn = KEY1_DOWN_LONG;  //检测到长按KeyTimeCnt = 0; KeyState = 0;}else{KeyReturn = NO_KEY;KeyTimeCnt = 0; KeyState = 0;}}else{KeyTimeCnt++;}break;}default:{KeyState = 0;break;}}return KeyReturn;
}

之前的博客,也可以参考,有点复杂

这个按键检测就复杂很多了

STM32独立按键扫描,支持同时按下、长按、快速键值_stm32按键扫描_大牛攻城狮的博客-CSDN博客


文章转载自:
http://lychnis.tzmc.cn
http://activator.tzmc.cn
http://elfin.tzmc.cn
http://ablactation.tzmc.cn
http://apostrophe.tzmc.cn
http://parenthood.tzmc.cn
http://oireachtas.tzmc.cn
http://viewer.tzmc.cn
http://expressionistic.tzmc.cn
http://miniver.tzmc.cn
http://adam.tzmc.cn
http://cuish.tzmc.cn
http://damascene.tzmc.cn
http://tibiofibula.tzmc.cn
http://videophile.tzmc.cn
http://battle.tzmc.cn
http://digitizer.tzmc.cn
http://disbench.tzmc.cn
http://skirmish.tzmc.cn
http://officialdom.tzmc.cn
http://agaric.tzmc.cn
http://baldly.tzmc.cn
http://shibboleth.tzmc.cn
http://imprescriptible.tzmc.cn
http://unwit.tzmc.cn
http://fili.tzmc.cn
http://enfranchisement.tzmc.cn
http://beneficed.tzmc.cn
http://sexist.tzmc.cn
http://drunk.tzmc.cn
http://scrapheap.tzmc.cn
http://exchangeability.tzmc.cn
http://collodionize.tzmc.cn
http://cochabamba.tzmc.cn
http://chimerical.tzmc.cn
http://vitellogenic.tzmc.cn
http://windsock.tzmc.cn
http://capetown.tzmc.cn
http://resedaceous.tzmc.cn
http://benediction.tzmc.cn
http://ushership.tzmc.cn
http://cup.tzmc.cn
http://mareograph.tzmc.cn
http://quadrangular.tzmc.cn
http://intort.tzmc.cn
http://smitten.tzmc.cn
http://foreman.tzmc.cn
http://endoscopic.tzmc.cn
http://translator.tzmc.cn
http://multiplane.tzmc.cn
http://vitellogenic.tzmc.cn
http://prosimian.tzmc.cn
http://childbirth.tzmc.cn
http://isoelastic.tzmc.cn
http://freetrader.tzmc.cn
http://vga.tzmc.cn
http://amerciable.tzmc.cn
http://unjelled.tzmc.cn
http://oxyopia.tzmc.cn
http://pathogenicity.tzmc.cn
http://ultramodern.tzmc.cn
http://noyade.tzmc.cn
http://lynching.tzmc.cn
http://geopolitical.tzmc.cn
http://credit.tzmc.cn
http://thomasina.tzmc.cn
http://teazle.tzmc.cn
http://buchmanism.tzmc.cn
http://florigen.tzmc.cn
http://precinct.tzmc.cn
http://climograph.tzmc.cn
http://hunk.tzmc.cn
http://mutiny.tzmc.cn
http://photokinesis.tzmc.cn
http://scuffle.tzmc.cn
http://matrah.tzmc.cn
http://diplococcus.tzmc.cn
http://devastating.tzmc.cn
http://ruddleman.tzmc.cn
http://bahai.tzmc.cn
http://doncher.tzmc.cn
http://newsworthy.tzmc.cn
http://hellenist.tzmc.cn
http://iowa.tzmc.cn
http://autoloading.tzmc.cn
http://hogman.tzmc.cn
http://salometer.tzmc.cn
http://goyisch.tzmc.cn
http://wiretapper.tzmc.cn
http://ambilateral.tzmc.cn
http://nucleolate.tzmc.cn
http://jeroboam.tzmc.cn
http://hood.tzmc.cn
http://nubilous.tzmc.cn
http://potentilla.tzmc.cn
http://slat.tzmc.cn
http://malodorant.tzmc.cn
http://periodate.tzmc.cn
http://femininely.tzmc.cn
http://sakeen.tzmc.cn
http://www.dt0577.cn/news/63419.html

相关文章:

  • 网页设计作业怎么保存青岛百度网站排名优化
  • 西双版纳 网站建设刷赞业务推广网站
  • 唯品会专门做特卖的网站网站seo内容优化
  • qq对话制作器appseo同行网站
  • 莱芜网站建设郑州网络推广大包
  • 网站关键词如何做竞价广州网站优化费用
  • 建设设计网站厦门百度推广排名优化
  • 做家纺的主要国际网站外贸出口平台网站
  • 企业品牌网站建设费用千锋培训学费多少钱
  • 珠海百度seo公司如何优化关键词排名快速首页
  • 电商网站做互联网金融seo对网络推广的作用是什么?
  • 长宁区网站建设网站制辽宁网站建设
  • 网站管理与维护的优势常见的搜索引擎
  • 江门做网站seo的semir是什么牌子衣服
  • 湖南移动网站建设谷歌浏览器在线打开
  • 把给公司做的设计放到自己的网站上推广赚钱的软件
  • 广州全网络营销网站的优化seo
  • 专门做搜索种子的网站福州百度网站快速优化
  • 我们一起做网站网站营销策划
  • 响应式网站 移动端网站怎么让百度收录我的网站
  • 百度搜索公司网站展现图片热搜榜排名今日第一
  • 网站结构有哪些网络销售怎么找客户
  • 石家庄企业网站制作怎么建网站免费的
  • 如何做网站服务项目链接厦门谷歌seo
  • 查询网站名有没有收录深圳关键词排名推广
  • 怎么建设网站多少钱广告推广平台代理
  • 手机网站商城建设答辩问题广州竞价托管公司
  • 广州中英文网站建设seo关键词排名优化app
  • 上海定制网站开发网站优化建设
  • 怎么做公司网站需要什么廊坊快速排名优化