单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: xiao_yp2014
收起左侧

状态机按键扫描,看懂了会增长你的功力。。。。

  [复制链接]
scm_beginner 发表于 2015-9-16 22:17 | 显示全部楼层
正在学,很需要。谢了。
回复

使用道具 举报

wcx6270 发表于 2015-9-17 10:52 | 显示全部楼层
好东西,学习中
回复

使用道具 举报

sf116 发表于 2015-9-17 20:25 | 显示全部楼层
状态机
回复

使用道具 举报

eclidtf 发表于 2015-9-19 06:51 | 显示全部楼层
不错,这次直接上压缩包了
回复

使用道具 举报

tt98 发表于 2015-10-25 12:28 | 显示全部楼层
看看怎样区分长短按的?
回复

使用道具 举报

曾为男人 发表于 2015-10-28 15:09 | 显示全部楼层
好东西  赞一个
回复

使用道具 举报

hzyong 发表于 2015-11-25 16:56 | 显示全部楼层
支持楼主!!!!!!
回复

使用道具 举报

zh3251241 发表于 2015-11-26 16:15 | 显示全部楼层
看看吧 和avr的一样不
回复

使用道具 举报

yjansrg 发表于 2015-11-27 12:49 | 显示全部楼层
正好,看看能不能学到新知识
回复

使用道具 举报

820784527 发表于 2015-12-4 16:29 | 显示全部楼层
  好屌
回复

使用道具 举报

ning 发表于 2015-12-9 12:28 | 显示全部楼层
学习学习,很好的样子!
回复

使用道具 举报

ning 发表于 2015-12-9 12:29 | 显示全部楼层
为什么下载不了呢!
回复

使用道具 举报

ning 发表于 2015-12-9 12:46 | 显示全部楼层
终于下载了,谢谢楼主!正好需要!
回复

使用道具 举报

 楼主| xiao_yp2014 发表于 2015-12-9 13:03 | 显示全部楼层
ning 发表于 2015-12-9 12:29
为什么下载不了呢!

需要登录才可以下载。
回复

使用道具 举报

eqihfui·· 发表于 2016-1-11 17:17 | 显示全部楼层
不错不错,看一下。以前知道这个就是没去研究,还是自己在扑捉那几个状态,弄得代码有点长
回复

使用道具 举报

eqihfui·· 发表于 2016-1-11 17:30 | 显示全部楼层
这个例子是不错,再加个按键的入口参数会好一些,比较省事,不用每次都来更改按键定义
回复

使用道具 举报

 楼主| xiao_yp2014 发表于 2016-1-12 09:50 | 显示全部楼层
eqihfui·· 发表于 2016-1-11 17:30
这个例子是不错,再加个按键的入口参数会好一些,比较省事,不用每次都来更改按键定义

谢谢你的建议。
回复

使用道具 举报

wfzdx 发表于 2016-1-14 15:15 | 显示全部楼层
下载了,向楼主学习!
回复

使用道具 举报

小易 发表于 2016-1-14 16:06 | 显示全部楼层
非常感谢楼主,我现在感觉延时消抖的按键程序不好用了,正好学习下你的
回复

使用道具 举报

小易 发表于 2016-1-14 16:08 | 显示全部楼层
谢谢楼主的分享,我老是叫我不要用延时消抖,可我不会其他方法,正好学习下你的
回复

使用道具 举报

wjwjwjwj 发表于 2016-1-20 22:30 | 显示全部楼层
终于下载了,谢谢楼主!
回复

使用道具 举报

dnstwjc 发表于 2016-3-1 17:40 | 显示全部楼层
谢谢!第一次听到"状态按键"的说法。学习了。
回复

使用道具 举报

jovian_yu 发表于 2016-7-8 10:48 | 显示全部楼层
资料不错,稍后评价,加好友不?qq2372696853
回复

使用道具 举报

FRING_HU 发表于 2016-7-17 22:30 | 显示全部楼层
你好,我定时器设置10MS中断一次,有时按键按一下会响应两次,我尝试增加中断时间到20MS,还是有这种现象,请问这个问题要怎么解决呢?
回复

使用道具 举报

FSLTKJ 发表于 2016-7-18 12:43 | 显示全部楼层
楼主,怎么没有看到,防抖处理呢?
回复

使用道具 举报

 楼主| xiao_yp2014 发表于 2016-7-21 09:33 | 显示全部楼层
FSLTKJ 发表于 2016-7-18 12:43
楼主,怎么没有看到,防抖处理呢?

按键扫描在主程序里面,每次判定一种按键状态后,都会到主程序里面去,这样就会有延时,达到防抖的效果。
回复

使用道具 举报

 楼主| xiao_yp2014 发表于 2016-7-21 09:34 | 显示全部楼层
FRING_HU 发表于 2016-7-17 22:30
你好,我定时器设置10MS中断一次,有时按键按一下会响应两次,我尝试增加中断时间到20MS,还是有这种现象, ...

这个中断时间太快,到中断时间调长,按键不需要这么多时间。
回复

使用道具 举报

 楼主| xiao_yp2014 发表于 2016-7-21 09:35 | 显示全部楼层
小易 发表于 2016-1-14 16:08
谢谢楼主的分享,我老是叫我不要用延时消抖,可我不会其他方法,正好学习下你的

这是一个好方法。
回复

使用道具 举报

024huayuan 发表于 2016-8-23 09:22 | 显示全部楼层
先来看看,
回复

使用道具 举报

aviro 发表于 2016-9-11 22:57 | 显示全部楼层
学习按键控制。
回复

使用道具 举报

bbxyzzj 发表于 2016-9-12 16:53 | 显示全部楼层
感谢!
回复

使用道具 举报

883 发表于 2016-9-21 16:28 来自手机 | 显示全部楼层
很好。但貌似没有消抖作用,下载到实验板试试,果真没有。
回复

使用道具 举报

ctwarmer 发表于 2016-9-26 18:57 | 显示全部楼层
883 发表于 2016-9-21 16:28
很好。但貌似没有消抖作用,下载到实验板试试,果真没有。

主程序while里加一个delay,可以起到消抖的作用(楼主注释里已经说了:“这里我没有计时”)
--不知道我这样理解对不对,初学者。
回复

使用道具 举报

 楼主| xiao_yp2014 发表于 2016-9-27 09:13 | 显示全部楼层
ctwarmer 发表于 2016-9-26 18:57
主程序while里加一个delay,可以起到消抖的作用(楼主注释里已经说了:“这里我没有计时”)
--不知道我 ...

不是这样理解,这种方式只是一种扫描按键按下的状态,这个地方分为了三步,如果不是很明白,可以参考一下switch语句,这儿是有去抖动的,去抖动延时的时间,取决于你调用read_key();函数的时间。
回复

使用道具 举报

883 发表于 2016-9-27 20:52 来自手机 | 显示全部楼层
xiao_yp2014 发表于 2016-9-27 09:13
不是这样理解,这种方式只是一种扫描按键按下的状态,这个地方分为了三步,如果不是很明白,可以参考一下 ...

哦,似乎明白了。也就是说,程序扫描时间必须大于按键抖动时间,谢谢楼主。
回复

使用道具 举报

ctwarmer 发表于 2016-9-30 14:40 | 显示全部楼层
xiao_yp2014 发表于 2016-9-27 09:13
不是这样理解,这种方式只是一种扫描按键按下的状态,这个地方分为了三步,如果不是很明白,可以参考一下 ...

我想表达的意思,和您所述一样。
去抖动的延时时间,取决于调用read_key()的时间,所以我说在主程序while里加一个delay。例如抖动时间为20ms,那么delay的时间大于等于20ms,也就相当于每20ms+去调用一次read_key()。
也许我表达的不够严谨,delay()和sleep()我还没太搞清楚。总之,如果是单线程,这里让cpu睡个20ms+;如果是多线程,则每20ms+调度该线程一次就可以了。
去抖动应该是“去抖动逻辑”+“去抖动延时”,两者不可缺一,这样会否更严谨些,多谢指正。
回复

使用道具 举报

袁洁栋 发表于 2016-10-12 22:00 | 显示全部楼层
下载,学习学习
回复

使用道具 举报

smallriver 发表于 2016-10-13 13:00 | 显示全部楼层
感觉太复杂,就一个简单的按键何必写那么多代码,如果真的做一个项目,就一个简单的按键就那么多代码,那要是多几个按键那还怎么办、。不知道要写多少了,还不如就用中断或直接扫描按键就可以了
回复

使用道具 举报

779613083 发表于 2016-10-14 00:40 来自手机 | 显示全部楼层
回去好好看看
回复

使用道具 举报

黑夜的星 发表于 2017-2-27 14:40 | 显示全部楼层
学习一下,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

快速回复 返回顶部 返回列表