huarana 发表于 2013-3-13 18:31:17

问个入门问题,关于矩阵键盘

    初学,矩阵键盘的教程,一般都是P3口,或者P?口总线接4X4的矩阵键盘

这样反转扫描、

但是我想知道的是,假如矩阵的行线和列线 不一定就在一个总线上。

比如第一行是P30,第二行变成 P10,第一列又是其他的IO口

这样的话,程序上怎么处理呢?

chen90sky 发表于 2013-3-13 18:48:13

本质上就是把所有列电平质低,然后逐行扫描,看有没有那一行读入是低电平,是的那一行就是按键所在行。然后行列交换再进行一次以上工作,就可以确定出按下键的具体所在列了。(注意软件或者硬件上需要有消抖功能)

huarana 发表于 2013-3-13 19:11:29

chen90sky 发表于 2013-3-13 18:48 static/image/common/back.gif
本质上就是把所有列电平质低,然后逐行扫描,看有没有那一行读入是低电平,是的那一行就是按键所在行。然后 ...

你的意思我明白,就是说要给每一个行,列 都赋值,然后逐行(列)扫描。


但是使用反转法的时候,好像不太好操作。难道要每一位都单独赋值,程序比较繁琐,呵呵 。

chen90sky 发表于 2013-3-13 19:16:48

huarana 发表于 2013-3-13 19:11 static/image/common/back.gif
你的意思我明白,就是说要给每一个行,列 都赋值,然后逐行(列)扫描。




是啊 你如果不按一定的规律来那程序上只有按位赋值了。为什么不放在相邻的硬件接口处呢,硬件上清晰软件上也简单。

ibichao 发表于 2013-3-13 19:25:19

除非没办法只能这样分配,否则你就是嫌的蛋疼。

huarana 发表于 2013-3-13 22:15:58

chen90sky 发表于 2013-3-13 19:16 static/image/common/back.gif
是啊 你如果不按一定的规律来那程序上只有按位赋值了。为什么不放在相邻的硬件接口处呢,硬件上清晰软件 ...

因为有时候按键会比较多呀超过16个

iicoyool 发表于 2013-3-13 22:24:05

lxa0 发表于 2013-3-13 22:42:42

chen90sky 发表于 2013-3-13 19:16 static/image/common/back.gif
是啊 你如果不按一定的规律来那程序上只有按位赋值了。为什么不放在相邻的硬件接口处呢,硬件上清晰软件 ...

4X4矩阵键盘不算难
完全可以自行设定

huarana 发表于 2013-3-13 22:48:43

iicoyool 发表于 2013-3-13 22:24 static/image/common/back.gif
写个函数不就的了。比如outkeyPort(uchar num);
在函数里将八位都定义一下,没有什么区别的 ...

就是映射把 把端口

zjk 发表于 2013-3-13 23:03:33

那就认为定义一下呗

咱厝人 发表于 2013-3-14 00:12:11

ibichao 发表于 2013-3-13 19:25 static/image/common/back.gif
除非没办法只能这样分配,否则你就是嫌的蛋疼。

{:titter:}
页: [1]
查看完整版本: 问个入门问题,关于矩阵键盘