搜索
bottom↓
楼主: zhuhanliang

新型的按键扫描程序,仅三行程序

  [复制链接]

出0入0汤圆

发表于 2011-4-6 22:57:51 | 显示全部楼层
要是矩阵的键盘程序这么容易,那还有什么做不了的啊!

出0入0汤圆

发表于 2011-4-7 00:29:28 | 显示全部楼层
矩阵键盘问题啊~~~~能处理矩阵键盘吗?能处理就是真的牛!

出0入0汤圆

发表于 2011-4-7 07:54:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-7 09:07:47 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-4-7 13:04:19 | 显示全部楼层
mark 按键扫描

出0入0汤圆

发表于 2011-4-7 15:37:54 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-4-7 22:29:30 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-8 10:37:31 | 显示全部楼层
while(1)
        {
              if (Intrcnt>20)     // 一直在等,直到20ms时间到
              {
                   Intrcnt="0";
                   break;       // 返回主循环
              }
        }
====================================================================
楼主将上面的代码用于消抖,比较的不好,流程都假死在那里了。

出0入0汤圆

发表于 2011-4-8 15:20:51 | 显示全部楼层
mark 扫描按键

出0入0汤圆

发表于 2011-4-8 17:21:49 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-6 13:06:15 | 显示全部楼层
mark,回头仔细研究一下

出0入0汤圆

发表于 2011-5-6 13:12:02 | 显示全部楼层
m

出0入0汤圆

发表于 2011-5-6 13:54:02 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-6 14:12:47 | 显示全部楼层
Mark,留待以後再細讀。

出0入0汤圆

发表于 2011-5-6 15:15:00 | 显示全部楼层
keys key ke k                MARK

出0入0汤圆

发表于 2011-5-6 17:28:40 | 显示全部楼层
MARK

出0入112汤圆

发表于 2011-5-6 19:19:23 | 显示全部楼层
回复【楼主位】zhuhanliang
-----------------------------------------------------------------------

强!
能用于矩阵键盘吗?

出0入0汤圆

发表于 2011-5-6 19:29:58 | 显示全部楼层
很好用的!

出0入0汤圆

发表于 2011-5-6 21:25:05 | 显示全部楼层
好东西!!改天静下心来好好研究~~

出0入8汤圆

发表于 2011-5-6 23:10:58 | 显示全部楼层
mark

出0入8汤圆

发表于 2011-5-6 23:27:00 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-9 01:16:24 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-9 14:09:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-9 14:25:26 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-5-9 15:08:12 | 显示全部楼层
貌似短键也能激活长键的标记,处理起来还得判断。

出0入0汤圆

发表于 2011-5-9 16:33:55 | 显示全部楼层
先标记 好文

出0入0汤圆

发表于 2011-5-9 21:40:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-10 15:09:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-10 16:09:25 | 显示全部楼层
回复【193楼】millwood0
you have a good concept but the code isn't modular enough.
here is what i would recommend:
==========code=============
#include <regx51.h>
#include "gpio.h"
//hardware configuration
#define key_port p2
#define key_port_in p2
#define key_ddr p2
#define key0 (1<<3) //key0 on key_port.3
#define key1 (1<<3) //key1 on key_port.3
#define key2 (1<<3) //key2 on key_port.......
-----------------------------------------------------------------------

大家对millwood0程序没看过么?
我有点疑问,
while (loop--) if (key_read(keys)) return 0x00;
这里就相当于软件延时了。按道理说loop--,单片机执行50次,是很快的。能达到图片中ms级的消抖动么?

出0入0汤圆

发表于 2011-5-10 16:51:08 | 显示全部楼层
回复【楼主位】zhuhanliang
-----------------------------------------------------------------------

just mark!

出0入0汤圆

发表于 2011-5-10 20:12:41 | 显示全部楼层
mark ,有空研究下!

出0入0汤圆

发表于 2011-5-10 20:35:30 | 显示全部楼层
mark

出0入4汤圆

发表于 2011-5-10 20:40:37 | 显示全部楼层
简化了一两行代码,没想到还有那么多人对key scan 有兴趣。 不能不说大家无法站在别人的肩膀上工作,当别人为创新或艺术设计时,中国的工程师仍然 所有的事情都想从砖头做起。

模块化,我现在最喜欢的是philips的三角矩阵扫描。

出0入0汤圆

发表于 2011-5-11 08:55:35 | 显示全部楼层
回复【335楼】gmyu
简化了一两行代码,没想到还有那么多人对key scan 有兴趣。 不能不说大家无法站在别人的肩膀上工作,当别人为创新或艺术设计时,中国的工程师仍然 所有的事情都想从砖头做起。
模块化,我现在最喜欢的是philips的三角矩阵扫描。
-----------------------------------------------------------------------

有点意思,“我现在最喜欢的是philips的三角矩阵扫描” 什么东东?

出0入0汤圆

发表于 2011-5-11 21:12:27 | 显示全部楼层
这篇文章确实不错,唯一的瑕疵就在于那个延时去抖,程序居然什么都不做,和死等差不多。

出10入10汤圆

发表于 2011-5-11 23:01:13 | 显示全部楼层
不错!

出0入0汤圆

发表于 2011-5-12 15:56:48 | 显示全部楼层
mk

出0入0汤圆

发表于 2011-5-12 21:52:20 | 显示全部楼层
mmmmmmmmmark

出0入0汤圆

发表于 2011-5-13 12:09:02 | 显示全部楼层
如果不用去抖动,那就神气了.不就是一个异或吧,不用也行啊.代码量在去抖动及完善算法.

出0入0汤圆

发表于 2011-5-13 12:15:01 | 显示全部楼层
以后试试

出0入0汤圆

发表于 2011-5-13 13:27:59 | 显示全部楼层
大巧不工!

出0入0汤圆

发表于 2011-5-13 13:47:24 | 显示全部楼层
去抖动,放到定时器中断中。
void InterruptHandle()    // 中断服务程序
{
    Intrcnt++;          // 1ms 中断1次,可变

    if (Intrcnt >= 20)    //20毫秒调用一次
    {
        Intrcnt = 0;
        KeyRead();      
    }
}
去掉下面的是不是更好。
while(1)  
        {  
              if (Intrcnt > 20)     // 一直在等,直到20ms时间到  
              {  
                   Intrcnt = 0;  
                   break;       // 返回主循环  
              }  
        }

出0入0汤圆

发表于 2011-5-13 14:14:43 | 显示全部楼层
回复【25楼】linghu2 令狐二中
好东西,但是不能用在矩阵的按键上面.
-----------------------------------------------------------------------

是的,好像 是不能用在矩阵上面

出0入0汤圆

发表于 2011-5-13 16:20:54 | 显示全部楼层
回复【345楼】xf331785508  

是的,好像 是不能用在矩阵上面

-----------------------------------------------------------------------

我已经改了一下,可以用在矩阵上面了

出0入0汤圆

发表于 2011-5-13 17:46:36 | 显示全部楼层
标记下先

出0入0汤圆

发表于 2011-5-13 20:54:58 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-16 23:44:58 | 显示全部楼层
做记号

出0入0汤圆

发表于 2011-5-17 10:07:04 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-5-17 23:06:22 | 显示全部楼层
收藏

出0入0汤圆

发表于 2011-5-20 17:54:28 | 显示全部楼层

出0入0汤圆

发表于 2011-5-23 14:13:40 | 显示全部楼层
MARK!

出0入0汤圆

发表于 2011-5-23 14:47:15 | 显示全部楼层
这个要MARK,学习。

出50入0汤圆

发表于 2011-5-23 15:26:15 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-5-26 09:55:11 | 显示全部楼层
应该不用吧,短键一松开手就应该会变回没的按按键的状态啦。

出0入0汤圆

发表于 2011-6-5 22:34:31 | 显示全部楼层
记下,留后用

出0入0汤圆

发表于 2011-6-6 03:34:26 | 显示全部楼层
确实不错诶,原理简单的说就是利用异或操作比较本次键值与上次键值,不同(异或产生1)就产生触发位。
触发按下键就表示本次状态与上次状态不同且本次为按下状态的键。
同理还可以定义一个触发弹起位Up,由Up = (~ReadData) & (ReadData ^ Cont);得到本次弹起的按键(本次状态与上次状态不同且本次为未按下状态的键)。

出0入0汤圆

发表于 2011-6-6 22:46:45 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-7 21:21:22 | 显示全部楼层
mark

出0入12汤圆

发表于 2011-6-7 22:20:13 | 显示全部楼层
先标记,谢谢了

出0入0汤圆

发表于 2011-6-7 22:42:46 | 显示全部楼层
不错的思路,学习学习!

出0入0汤圆

发表于 2011-6-8 11:17:09 | 显示全部楼层
记下了

出0入0汤圆

发表于 2011-6-8 12:01:27 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-8 13:01:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-8 13:25:13 | 显示全部楼层
谢谢分享,学习了,真的很不错

出0入0汤圆

发表于 2011-6-8 18:54:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-8 21:01:33 | 显示全部楼层
不错

出0入97汤圆

发表于 2011-6-21 09:40:43 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-21 11:43:05 | 显示全部楼层
顶一个..

出0入0汤圆

发表于 2011-6-23 17:31:52 | 显示全部楼层
真牛!!!!!!!

出0入0汤圆

发表于 2011-6-23 23:10:29 | 显示全部楼层
mark!!!

出0入0汤圆

发表于 2011-6-23 23:41:29 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-23 23:44:05 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-24 00:33:51 | 显示全部楼层
mark,回头细读

出0入0汤圆

发表于 2011-6-24 01:41:20 | 显示全部楼层
多谢分享

出0入0汤圆

发表于 2011-6-24 09:41:46 | 显示全部楼层
不错,谢谢楼主!不过要是矩阵键盘的话,感觉翻转法就狠简单的

出0入0汤圆

发表于 2011-6-27 17:02:36 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-27 20:29:02 | 显示全部楼层
看见过一次!

出0入0汤圆

发表于 2011-6-27 22:15:50 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-27 22:47:31 | 显示全部楼层
先留个记号

出0入0汤圆

发表于 2011-6-27 22:53:14 | 显示全部楼层
mark .回头仔细看

出0入0汤圆

发表于 2011-6-28 09:47:33 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-1 13:17:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-2 17:47:30 | 显示全部楼层
mark

出0入13汤圆

发表于 2011-7-2 18:02:05 | 显示全部楼层
思路不错,得好好看

出0入0汤圆

发表于 2011-7-2 23:17:48 | 显示全部楼层
留着,以后用到的时候看

出0入0汤圆

发表于 2011-7-3 01:33:58 | 显示全部楼层
不错,谢谢分享!

出0入0汤圆

发表于 2011-7-3 10:07:25 | 显示全部楼层
谢谢楼主分享!

出0入0汤圆

发表于 2011-7-3 11:04:24 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-7-3 11:14:02 | 显示全部楼层
mark一下待查。

出0入0汤圆

发表于 2011-7-3 13:52:59 | 显示全部楼层
记号下,好方法,谢谢.

出0入0汤圆

发表于 2011-7-3 14:16:14 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-3 15:38:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-3 22:13:26 | 显示全部楼层
呵呵,标题写得很大、、

出0入0汤圆

发表于 2011-7-3 23:10:59 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-7-4 11:12:29 | 显示全部楼层
xuexi!

出0入0汤圆

发表于 2011-7-4 16:34:20 | 显示全部楼层
还不错。。感觉有缺陷。。防抖的问题。。

出0入0汤圆

发表于 2011-7-4 17:56:35 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-4 18:01:13 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-7-4 18:10:31 | 显示全部楼层
回复【楼主位】zhuhanliang
-----------------------------------------------------------------------

菜鸟受教

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-18 14:13

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

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