搜索
bottom↓
回复: 141

分享一个非常好用的按键模块和教程文档

  [复制链接]

出0入10汤圆

发表于 2016-5-28 10:03:50 | 显示全部楼层 |阅读模式
本帖最后由 10xjzheng 于 2016-5-28 22:29 编辑

这个按键模块有长按短按,移植方便等等的特点,是我一直在用的,除了做一些低功耗应用(这种定时扫描不省电)我不用之外,其他一把都用这种。
本按键驱动程序具有以下一个特点。
(1)实现按键的按下、抬起、长按、双击等功能,并且后两者的功能是可裁剪的,可以根据用户的需要进行添加或者删除。
(2)可选择是在按下的时候还是在弹起的时候响应按键时间。
(3)高度可移植性,可以不用修改驱动文件直接移植到不同的CPU,STM32和51单片机已经测试过,已经提供必要的接口获取按键的信息。
(4)用户需要设置一个小于按键抖动时间的间隔(一般是10ms~20ms,具体可以通示波器来进行测试)进行调用按键刷新函数,比如如果按键抖动时间是20ms、那么你可以用任意一个大于50Hz的频率调用按键函数,这对一般的单片机来说不是难事,可以是定时器中断,也可以是定时器分频来的软定时器。
(5)CPU占用率极小。
(6)可以随意创建任意多个按键。
按键程序分为3个文件,key.c、key.h、mykey.c、mykey.h这三个文件,用户需要编写mykey.c和mykey.h这两个文件,这两个文件的编写也十分简单,主要是按键底层IO口的配置,提供一个接口给驱动文件。key.c、key.h已经被我设置为只读属性,不需要随便修改它,这也是表明一个决心,既然是模块化的,那就要做到不用修改它,直接拿来用。

下面的楼层可以下载,我就把原来的程序删除掉了,大家请到下面的楼层下载。

使用后有什么感受也可以说说(ni men kuai kua wo a !)。

出0入0汤圆

发表于 2016-5-28 12:13:18 | 显示全部楼层
帮忙上传了,研究下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2016-5-28 10:41:53 | 显示全部楼层
多谢楼主分享,下来学习一下

出0入0汤圆

发表于 2016-5-28 11:17:41 | 显示全部楼层
学习了 感谢楼主分享。

出0入0汤圆

发表于 2016-5-28 11:21:54 | 显示全部楼层
感谢楼主的分享。
mark一下,好用的按键模块

出0入0汤圆

发表于 2016-5-28 11:24:32 | 显示全部楼层
不是很大,为啥不直接上传上来呢

出0入10汤圆

 楼主| 发表于 2016-5-28 11:49:03 | 显示全部楼层
bbglx 发表于 2016-5-28 11:24
不是很大,为啥不直接上传上来呢

上传老是出现错误,你帮个忙呗。

出0入0汤圆

发表于 2016-5-28 14:20:27 | 显示全部楼层
又是兄弟你给大伙发福利

出0入10汤圆

 楼主| 发表于 2016-5-28 14:35:35 | 显示全部楼层
JJKwong 发表于 2016-5-28 14:20
又是兄弟你给大伙发福利

交流学习

出0入0汤圆

发表于 2016-5-28 14:42:56 来自手机 | 显示全部楼层
好东西啊

出0入0汤圆

发表于 2016-5-28 15:06:54 | 显示全部楼层
非常感谢分享,把按键写成一个模块,移植起来确实十分方便

出0入0汤圆

发表于 2016-5-28 16:19:32 | 显示全部楼层
能不能用到arduino上面呀

出0入0汤圆

发表于 2016-5-28 16:19:52 | 显示全部楼层
不错,学习一下。

出0入0汤圆

发表于 2016-5-28 17:17:23 | 显示全部楼层
感谢分享,试用下

出0入0汤圆

发表于 2016-5-28 17:51:59 | 显示全部楼层
謝謝分享,研究一下.

出0入10汤圆

 楼主| 发表于 2016-5-28 17:53:13 | 显示全部楼层
weiming4033 发表于 2016-5-28 16:19
能不能用到arduino上面呀

只要是C语言可以用的就可以。

出0入0汤圆

发表于 2016-5-28 18:03:06 | 显示全部楼层
感谢楼主的分享!!!

出0入0汤圆

发表于 2016-5-28 18:39:27 来自手机 | 显示全部楼层
谢谢楼主,收下了

出0入53汤圆

发表于 2016-5-28 18:41:06 | 显示全部楼层
mark有时间过来研究一下

出0入0汤圆

发表于 2016-5-28 18:48:02 来自手机 | 显示全部楼层
试下看   

出0入0汤圆

发表于 2016-5-28 19:01:52 | 显示全部楼层
看一下跟那个只有3行的按键采集有啥区别

出0入0汤圆

发表于 2016-5-28 19:02:33 | 显示全部楼层
不错,学习一下。

出0入0汤圆

发表于 2016-5-28 19:22:43 | 显示全部楼层
好东西,谢谢分享。有空实验一下。

出0入0汤圆

发表于 2016-5-28 19:29:31 | 显示全部楼层
多谢楼主分享。

出0入0汤圆

发表于 2016-5-28 19:38:46 | 显示全部楼层
不错,谢谢楼主分享!

出0入0汤圆

发表于 2016-5-28 20:10:09 | 显示全部楼层
感谢分享

出50入0汤圆

发表于 2016-5-28 20:38:13 | 显示全部楼层
谢谢楼主,收了学习一下。

出0入0汤圆

发表于 2016-5-28 20:53:04 | 显示全部楼层
谢谢分享

出0入4汤圆

发表于 2016-5-28 21:02:57 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2016-5-28 21:40:17 | 显示全部楼层
mark!!!!

出0入0汤圆

发表于 2016-5-28 21:59:32 | 显示全部楼层
感谢分享,学习了!

出0入8汤圆

发表于 2016-5-28 22:02:18 | 显示全部楼层
楼主的连接打不开啊,

出0入0汤圆

发表于 2016-5-28 22:37:30 | 显示全部楼层
下载学习,感谢

出0入0汤圆

发表于 2016-5-28 22:47:15 | 显示全部楼层
还行吧~简单的状态机+函数回调机制
如果在struct KEY_Type结构体中增加一个指向用户级的回调函数就会更好,
在CreateKey函数创建的时候多加一个指向用户级的回调函数入口UserClb,然后在每个KEY状态都会向当前用户期望的回调函数中发送KEY消息,然后用户在在其回调函数中处理想要的东西~这样做是为了让用户级功能函数与KEY模块直接分离开~类似如下:
CreateKey(&Key1,cbOfKey1, UserClb);

出0入10汤圆

 楼主| 发表于 2016-5-28 22:49:09 | 显示全部楼层
weiming4033 发表于 2016-5-28 16:19
能不能用到arduino上面呀

如果能明白其中的原理,其他的语言也是可以的,我就用这里面的思想做的FPGA按键判断

出0入10汤圆

 楼主| 发表于 2016-5-28 22:50:40 | 显示全部楼层
myqiang1990 发表于 2016-5-28 22:47
还行吧~简单的状态机+函数回调机制
如果在struct KEY_Type结构体中增加一个指向用户级的回调函数就会更好, ...

对于我个人,这个模块是我开始模块化的象征性里程,再回首其意义比较重要。

出0入0汤圆

发表于 2016-5-29 09:03:24 | 显示全部楼层
学习。。。。谢谢

出0入0汤圆

发表于 2016-5-29 14:18:02 | 显示全部楼层
收藏学习了,多谢楼主的分享。

出0入0汤圆

发表于 2016-5-29 14:22:00 | 显示全部楼层
下载了   感谢分享。。。

出0入0汤圆

发表于 2016-5-29 15:04:21 | 显示全部楼层
感谢分享,好东西

出0入0汤圆

发表于 2016-5-29 15:42:28 | 显示全部楼层

出0入0汤圆

发表于 2016-5-29 18:33:00 来自手机 | 显示全部楼层
楼主好厉害  我是来夸你的

出0入0汤圆

发表于 2016-5-29 18:50:31 | 显示全部楼层
学习了 感谢楼主分享。

出0入8汤圆

发表于 2016-5-29 19:04:40 | 显示全部楼层
下载了,非常不错

出0入0汤圆

发表于 2016-5-29 19:12:06 来自手机 | 显示全部楼层
kuakua你了。。

出0入0汤圆

发表于 2016-5-29 21:51:17 来自手机 | 显示全部楼层
下载学习,谢谢分享。

出0入0汤圆

发表于 2016-5-29 22:26:19 来自手机 | 显示全部楼层
手机标记,谢谢分享

出0入0汤圆

发表于 2016-5-29 22:41:47 来自手机 | 显示全部楼层
按键模块程序马克,谢谢楼主

出0入10汤圆

 楼主| 发表于 2016-5-29 23:12:51 | 显示全部楼层

出0入4汤圆

发表于 2016-5-29 23:48:04 | 显示全部楼层
有没有回调函数?

出0入0汤圆

发表于 2016-5-30 08:50:50 | 显示全部楼层
10xjzheng 发表于 2016-5-28 17:53
只要是C语言可以用的就可以。

c++呢,要是封装成类就好了

出0入0汤圆

发表于 2016-5-30 08:55:17 | 显示全部楼层
下载来学习下,谢谢分享

出0入0汤圆

发表于 2016-5-30 09:48:43 | 显示全部楼层
挺好用的,学习了

出0入42汤圆

发表于 2016-5-30 10:06:58 | 显示全部楼层
不错  刚刚实测了一下   谢谢您的分享  

出0入0汤圆

发表于 2016-5-30 10:26:36 | 显示全部楼层
代码写得很规范,赞一个。

出0入0汤圆

发表于 2016-5-30 11:33:31 | 显示全部楼层
mark,赞1L,2L

出0入0汤圆

发表于 2016-5-30 21:26:40 | 显示全部楼层
谢谢分享,好贴

出0入0汤圆

发表于 2016-5-30 21:41:52 来自手机 | 显示全部楼层
感谢分享

出0入0汤圆

发表于 2016-5-31 01:04:21 来自手机 | 显示全部楼层
按键模块程序,谢谢楼主

出0入170汤圆

发表于 2016-5-31 08:52:21 | 显示全部楼层
学习学习

出0入0汤圆

发表于 2016-5-31 18:42:18 | 显示全部楼层
模块化的思想不错,学习一下

出0入0汤圆

发表于 2016-5-31 21:12:14 | 显示全部楼层
感谢楼主的分享

出0入0汤圆

发表于 2016-6-3 08:37:22 | 显示全部楼层
楼主威武!我爱楼主!是楼主自己写的吗?楼主有女朋友了吗?不如我们。。。。嘿嘿。

出0入0汤圆

发表于 2016-6-3 14:09:01 | 显示全部楼层
楼主,你这么好,我都不知道怎么去报答你了,请受小弟一拜

出0入0汤圆

发表于 2016-6-3 14:27:17 | 显示全部楼层
感谢分享,学习了!

出0入0汤圆

发表于 2016-6-3 21:02:13 | 显示全部楼层
学习一下  谢谢分享

出0入0汤圆

发表于 2016-6-4 16:25:21 | 显示全部楼层
谢谢楼主分享,小白学习了

出0入0汤圆

发表于 2016-6-5 19:35:31 | 显示全部楼层
研究下!

出0入4汤圆

发表于 2016-6-5 19:39:56 | 显示全部楼层
研究下,适合大容量都 MCU编程

出0入0汤圆

发表于 2016-6-5 21:40:10 来自手机 | 显示全部楼层
收藏学习一下,谢谢分享

出85入85汤圆

发表于 2016-6-6 08:10:12 来自手机 | 显示全部楼层
有空研究研究

出0入0汤圆

发表于 2016-6-6 16:52:34 | 显示全部楼层
KEY1_0:按下
KEY1_1:短按一下
KEY1_2:双击
KEY1_3:长按
KEY1_4:长按释放
.......KEY2......KEY3这样做一个枚举来用也很方便。

出0入0汤圆

发表于 2016-6-6 17:15:09 | 显示全部楼层
感谢分享,学习下

出0入0汤圆

发表于 2016-6-6 17:36:21 来自手机 | 显示全部楼层
下载下来学习一下,谢谢

出0入0汤圆

发表于 2016-6-6 18:20:03 | 显示全部楼层
多谢楼主分享,楼主真棒!

出0入0汤圆

发表于 2016-6-7 09:13:03 | 显示全部楼层
是定时器中断里扫描按键的方法吗?

出0入0汤圆

发表于 2016-6-8 15:59:22 | 显示全部楼层
感谢楼主的奉献

出0入0汤圆

发表于 2016-6-8 17:22:23 | 显示全部楼层
感谢,学习了

出0入0汤圆

发表于 2016-6-8 18:13:47 | 显示全部楼层
谢谢分享,学习下,我一直用 傻孩子专栏里的键盘模块,很好用。

出0入0汤圆

发表于 2016-6-9 15:40:33 | 显示全部楼层
不错。学习下。谢谢楼主的分享。

出0入0汤圆

发表于 2016-6-15 19:31:07 | 显示全部楼层
如果长按住不放
长按时间到了也不会触发长按状态把,需要按键抬起才能有判断长按?

出0入0汤圆

发表于 2016-6-15 22:31:44 | 显示全部楼层
非常好 很是感谢

出0入0汤圆

发表于 2016-6-16 00:28:53 来自手机 | 显示全部楼层
赞一个,明天下载研究,正好需要按键扫描程序,谢谢楼主

出0入0汤圆

发表于 2016-6-16 07:28:07 | 显示全部楼层
非常感谢分享。收下

出0入0汤圆

发表于 2016-6-17 15:59:57 | 显示全部楼层
不错,学习了,,支持楼主。

出0入0汤圆

发表于 2016-6-18 14:20:06 | 显示全部楼层
感谢楼主的分享。

出0入0汤圆

发表于 2016-6-18 21:22:55 | 显示全部楼层
不管怎么样必须看看,为分享点赞!

出10入0汤圆

发表于 2016-6-18 21:41:11 | 显示全部楼层
按键按下与松开应该用PRESSED和RELESED
而不应该用UP/DOWN,因为这是表示上、下呀

出0入0汤圆

发表于 2016-8-10 15:53:40 | 显示全部楼层
感谢分享。好好研究一下。mark、、、

出0入4汤圆

发表于 2016-8-17 16:04:42 | 显示全部楼层
感谢!!!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2016-8-17 16:37:02 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2016-8-17 16:54:25 | 显示全部楼层
谢谢分享!

出0入0汤圆

发表于 2016-9-7 21:46:09 | 显示全部楼层
谢谢楼主,我拿下试验一下

出0入0汤圆

发表于 2016-9-7 23:04:05 | 显示全部楼层
代码写得很规范

出0入0汤圆

发表于 2016-9-8 09:33:52 | 显示全部楼层
留位,谢谢楼主!

出0入0汤圆

发表于 2016-9-8 10:01:44 | 显示全部楼层
按键模块化编程   mark

出0入0汤圆

发表于 2016-9-8 12:01:24 来自手机 | 显示全部楼层
不错,正好用来学习

出0入0汤圆

发表于 2016-9-21 16:26:41 | 显示全部楼层
谢谢分享~~~最近想改变下按键处理

出0入0汤圆

发表于 2016-10-8 12:48:47 | 显示全部楼层
这么好的东西。 必须要看看

出5入10汤圆

发表于 2016-10-8 13:33:39 | 显示全部楼层
看了,写的很好啊
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 07:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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