打印
[应用相关]

键盘扫描,有点疑惑

[复制链接]
2440|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liu_xf|  楼主 | 2009-5-22 23:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
4×4阵列键盘扫描


判断是否有键按下,先对键盘所在端口写0x0f,再回读,不为0x0f,表示有键按下

在程序里我是这样处理的

先配制成开漏输出,写0x0f,再配制成浮空输入,读端口,发现每次读到的都是0xff.

是不是在第二次配制成输入的时候,IO寄存器的值就改变了

大家做阵列键盘扫描是怎么配制IO的啊。。。
沙发
dengting| | 2009-5-23 19:07 | 只看该作者

为什么要先写0f呢? 没搞懂

为什么要先写0f呢? 没搞懂

使用特权

评论回复
板凳
liu_xf|  楼主 | 2009-5-24 18:50 | 只看该作者

写不写0f不是问题 的关键

写什么都行

问题是当键盘没有键按下时,写出去的和读回来的值不一样

使用特权

评论回复
地板
liu_xf|  楼主 | 2009-5-25 13:03 | 只看该作者

没人关注,是太简单了吗。。。。

使用特权

评论回复
5
香水城| | 2009-5-25 13:28 | 只看该作者

请画出电路图再讨论

除非你的键盘上有锁存器,否则不可能写出去什么数值又读回来什么数值。

使用特权

评论回复
6
myfaith| | 2009-5-25 14:06 | 只看该作者

列和行输出相反电平后,

只能设高四位或低四位为输入,不能都设为输入,否则输出的电平自然没有了

使用特权

评论回复
7
liu_xf|  楼主 | 2009-5-25 14:09 | 只看该作者

电路就是16个键盘按4×4接成阵列直接接到IO口(共8根IO线)

在没有按键按下的情况下,写出去的值和读回来的值应该是一样的



STM32的IO没有缓存吗?

使用特权

评论回复
8
liu_xf|  楼主 | 2009-5-25 14:11 | 只看该作者

回6楼

问题是我要把行和列的状态读回来啊

不然怎么判断阵列中有哪个点按下。。。

使用特权

评论回复
9
香水城| | 2009-5-25 15:04 | 只看该作者

STM32的输出端有缓存,但在端口为输入时信号线不受STM32控制

你的阵列键盘扫描算法好像有问题,通常都是从行输出再从列输入,或从列输出再从行输入,没见过你这样从同样的线上输出再从同样的线上输入的。

使用特权

评论回复
10
myfaith| | 2009-5-26 10:36 | 只看该作者

看来楼主还没搞明白行列扫描

1翻转法,2逐行扫描法.

使用特权

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

本版积分规则

68

主题

372

帖子

3

粉丝