单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
上一页
2/4
下一页
楼主: xiao_yp2014
打印上一主题下一主题

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

 [复制链接]
41#
ID:89595发表于 2015-9-16 22:17|只看该作者
正在学,很需要。谢了。
42#
ID:89591发表于 2015-9-17 10:52|只看该作者
好东西,学习中
43#
ID:90358发表于 2015-9-17 20:25|只看该作者
状态机
44#
ID:63484发表于 2015-9-19 06:51|只看该作者
不错,这次直接上压缩包了
45#
ID:88606发表于 2015-10-25 12:28|只看该作者
看看怎样区分长短按的?
46#
ID:93871发表于 2015-10-28 15:09|只看该作者
好东西  赞一个
47#
ID:39824发表于 2015-11-25 16:56|只看该作者
支持楼主!!!!!!
48#
ID:97245发表于 2015-11-26 16:15|只看该作者
看看吧 和avr的一样不
49#
ID:97344发表于 2015-11-27 12:49|只看该作者
正好,看看能不能学到新知识
50#
ID:98329发表于 2015-12-4 16:29|只看该作者
  好屌
51#
ID:85726发表于 2015-12-9 12:28|只看该作者
学习学习,很好的样子!
52#
ID:85726发表于 2015-12-9 12:29|只看该作者
为什么下载不了呢!
53#
ID:85726发表于 2015-12-9 12:46|只看该作者
终于下载了,谢谢楼主!正好需要!
54#
ID:69862发表于 2015-12-9 13:03|只看该作者
ning 发表于 2015-12-9 12:29
为什么下载不了呢!

需要登录才可以下载。
55#
ID:91729发表于 2016-1-11 17:17|只看该作者
不错不错,看一下。以前知道这个就是没去研究,还是自己在扑捉那几个状态,弄得代码有点长
56#
ID:91729发表于 2016-1-11 17:30|只看该作者
这个例子是不错,再加个按键的入口参数会好一些,比较省事,不用每次都来更改按键定义
57#
ID:69862发表于 2016-1-12 09:50|只看该作者
eqihfui·· 发表于 2016-1-11 17:30
这个例子是不错,再加个按键的入口参数会好一些,比较省事,不用每次都来更改按键定义

谢谢你的建议。
58#
ID:55852发表于 2016-1-14 15:15|只看该作者
下载了,向楼主学习!
59#
ID:65882发表于 2016-1-14 16:06|只看该作者
非常感谢楼主,我现在感觉延时消抖的按键程序不好用了,正好学习下你的
60#
ID:65882发表于 2016-1-14 16:08|只看该作者
谢谢楼主的分享,我老是叫我不要用延时消抖,可我不会其他方法,正好学习下你的
61#
ID:46943发表于 2016-1-20 22:30|只看该作者
终于下载了,谢谢楼主!
62#
ID:98707发表于 2016-3-1 17:40|只看该作者
谢谢!第一次听到"状态按键"的说法。学习了。
63#
ID:129273发表于 2016-7-8 10:48|只看该作者
资料不错,稍后评价,加好友不?qq2372696853
64#
ID:130893发表于 2016-7-17 22:30|只看该作者
你好,我定时器设置10MS中断一次,有时按键按一下会响应两次,我尝试增加中断时间到20MS,还是有这种现象,请问这个问题要怎么解决呢?
65#
ID:111256发表于 2016-7-18 12:43|只看该作者
楼主,怎么没有看到,防抖处理呢?
66#
ID:69862发表于 2016-7-21 09:33|只看该作者
FSLTKJ 发表于 2016-7-18 12:43
楼主,怎么没有看到,防抖处理呢?

按键扫描在主程序里面,每次判定一种按键状态后,都会到主程序里面去,这样就会有延时,达到防抖的效果。
67#
ID:69862发表于 2016-7-21 09:34|只看该作者
FRING_HU 发表于 2016-7-17 22:30
你好,我定时器设置10MS中断一次,有时按键按一下会响应两次,我尝试增加中断时间到20MS,还是有这种现象, ...

这个中断时间太快,到中断时间调长,按键不需要这么多时间。
68#
ID:69862发表于 2016-7-21 09:35|只看该作者
小易 发表于 2016-1-14 16:08
谢谢楼主的分享,我老是叫我不要用延时消抖,可我不会其他方法,正好学习下你的

这是一个好方法。
69#
ID:41583发表于 2016-8-23 09:22|只看该作者
先来看看,
70#
ID:92071发表于 2016-9-11 22:57|只看该作者
学习按键控制。
71#
ID:96326发表于 2016-9-12 16:53|只看该作者
感谢!
72#
ID:88481发表于 2016-9-21 16:28来自手机|只看该作者
很好。但貌似没有消抖作用,下载到实验板试试,果真没有。
73#
ID:140541发表于 2016-9-26 18:57|只看该作者
883 发表于 2016-9-21 16:28
很好。但貌似没有消抖作用,下载到实验板试试,果真没有。

主程序while里加一个delay,可以起到消抖的作用(楼主注释里已经说了:“这里我没有计时”)
--不知道我这样理解对不对,初学者。
74#
ID:69862发表于 2016-9-27 09:13|只看该作者
ctwarmer 发表于 2016-9-26 18:57
主程序while里加一个delay,可以起到消抖的作用(楼主注释里已经说了:“这里我没有计时”)
--不知道我 ...

不是这样理解,这种方式只是一种扫描按键按下的状态,这个地方分为了三步,如果不是很明白,可以参考一下switch语句,这儿是有去抖动的,去抖动延时的时间,取决于你调用read_key();函数的时间。
75#
ID:88481发表于 2016-9-27 20:52来自手机|只看该作者
xiao_yp2014 发表于 2016-9-27 09:13
不是这样理解,这种方式只是一种扫描按键按下的状态,这个地方分为了三步,如果不是很明白,可以参考一下 ...

哦,似乎明白了。也就是说,程序扫描时间必须大于按键抖动时间,谢谢楼主。
76#
ID:140541发表于 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+调度该线程一次就可以了。
去抖动应该是“去抖动逻辑”+“去抖动延时”,两者不可缺一,这样会否更严谨些,多谢指正。
77#
ID:64178发表于 2016-10-12 22:00|只看该作者
下载,学习学习
78#
ID:141361发表于 2016-10-13 13:00|只看该作者
感觉太复杂,就一个简单的按键何必写那么多代码,如果真的做一个项目,就一个简单的按键就那么多代码,那要是多几个按键那还怎么办、。不知道要写多少了,还不如就用中断或直接扫描按键就可以了
79#
ID:128380发表于 2016-10-14 00:40来自手机|只看该作者
回去好好看看
80#
ID:166907发表于 2017-2-27 14:40|只看该作者
学习一下,

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网