打印

键盘按键不能长按吗?

[复制链接]
5069|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenczy|  楼主 | 2012-2-10 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 chenczy 于 2012-2-10 10:24 编辑

我做了一个12X12的按键程序,都是直接用IO口来做,即P0、P2.4-P2.7做输入,P1、P2.0-P2.3做输出。用了3个上拉10K排阻。为什么我长按几个键,为什么我按别的线上的其中一个别的几下也会是按下。例如K1、K2、K3为P1.0和P0.0、P0.1、P0.2上的按键,D1、D2、D3为P0.1和P0.1、P0.1、P0.2上的键。我同时按下K1、K2、K3,然后只按下D1,但是这时会检测到D2、D3也是按下的,请教一下这是怎么回事呢?是不是我的上拉用的不对?
单片机用的是51单片机

相关帖子

沙发
chenczy|  楼主 | 2012-2-10 10:40 | 只看该作者
难道是程序问题?
P1=0xfe;        //P1.0=0
    P20=1;
    P21=1;
    P22=1;
    P23=1;       
    key[0]=~P0;
    key[1]=((P2>>4)&0x0f);

P1=0xfd;        //P1.1=0
    P20=1;
    P21=1;
    P22=1;
    P23=1;
    key[1]=~(key[1]+((P0<<4)&0xf0));
    key[2]=((P0>>4)&0x0f);
    key[2]=~(key[2]+(P2&0xf0));
这样写有问题吗?

使用特权

评论回复
板凳
weldking| | 2012-2-10 20:43 | 只看该作者
检测到一个就不检测到别的

使用特权

评论回复
地板
chenczy|  楼主 | 2012-2-11 10:10 | 只看该作者
我要的是每个按键都能同时检测到(相对);不可能说一个按下别的就不能按

使用特权

评论回复
5
NE5532| | 2012-2-11 10:39 | 只看该作者
我要的是每个按键都能同时检测到(相对);不可能说一个按下别的就不能按
chenczy 发表于 2012-2-11 10:10


你的方法和要求相违背,当然不能实现。估计楼主的键盘程序不是自己写的吧,或者是没搞懂原理就照着别人的抄。没有不能实现的,只有方法不对,PC键盘也是个单片机做的。

使用特权

评论回复
6
chenczy|  楼主 | 2012-2-11 11:07 | 只看该作者
想明白是怎么回事,硬件电路设计出问题。例如我按下K1和K2,再按下D1,那么D2也是相当于按下了。所以会出现这个问题。现在看下怎么改电路,在想加二极管行不行

使用特权

评论回复
7
NE5532| | 2012-2-11 11:12 | 只看该作者
想明白是怎么回事,硬件电路设计出问题。例如我按下K1和K2,再按下D1,那么D2也是相当于按下了。所以会出现这个问题。现在看下怎么改电路,在想加二极管行不行 ...
chenczy 发表于 2012-2-11 11:07


这个不是一个简单行和不行能回答你的问题,是你要想办法怎么让他行,高手告诉你的不见得就是最好,自己找到方法你就是高手。但是成为高手的关键是你知道自己要干什么,找得到问题的关键,并且针对这个关键去想办法。

使用特权

评论回复
8
chenczy|  楼主 | 2012-2-11 11:23 | 只看该作者
问题找到了,在想解决的方法,因为以前没做过144个按键的电路。现在在想一个最简单的解决方法,当然也是最省钱的。不知道那位高手有做过,给个电路参考下。呵呵

使用特权

评论回复
9
NE5532| | 2012-2-11 11:38 | 只看该作者
问题找到了,在想解决的方法,因为以前没做过144个按键的电路。现在在想一个最简单的解决方法,当然也是最省钱的。不知道那位高手有做过,给个电路参考下。呵呵 ...
chenczy 发表于 2012-2-11 11:23


提示一下,如果口线够,可以两边扫。

使用特权

评论回复
10
chenczy|  楼主 | 2012-2-11 11:52 | 只看该作者
一个40脚的51,只用了个串口,别的口都可以用。两边扫是什么意思?不太明白

使用特权

评论回复
11
NE5532| | 2012-2-11 12:08 | 只看该作者
一个40脚的51,只用了个串口,别的口都可以用。两边扫是什么意思?不太明白
chenczy 发表于 2012-2-11 11:52

行列扫描的基本办法是一边输出一边输入,能不能把输入输出换一下再扫一次呢?

使用特权

评论回复
12
chenczy|  楼主 | 2012-2-11 12:25 | 只看该作者
但两边扫也不行的吧,因为只要有三个键按下,那么第4个键已经是通了的,也就是相当于按下了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

141

主题

791

帖子

0

粉丝