打印
[51单片机]

键盘扫描的问题

[复制链接]
652|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

我在看戴上举老师的《删繁就简-单片机入门到精通》。
看到第二章《单片机应用小技巧》第15部分键盘扫描
第98页,见附件的图,我用相机拍下来的。
本来书上说是5*6键盘模式,Pm.0~Pm.5是行扫描线,Pn.0~Pn.4是列扫描线。
上图是一部分,并且给矩阵键盘加上了一些二极管。
书上说,扫描键盘程序为Pn.x输出高的时候同时其他Pn.y输出低,现在键被按下的行输入状态会随其所在列输出
高低状态相应变化,相互不会产生冲突。比如同时按下键1、键2和键6.
Pn.0输出高和低时Pm.0和Pm.1都能读到1和0。。。。。。
我不大明白,当Pn.0输出高时,键1的二极管导通,所以Pm.0可以读到1.
可是Pn.0输出低时,Pn.1就会输出高,这时候键1的二极管不通,键2的二极管导通,不是还是读到1吗?
请高手解惑,谢谢!

相关帖子

沙发
tianss| | 2016-5-3 17:47 | 只看该作者

使用特权

评论回复
板凳
ywlzh| | 2016-5-3 18:08 | 只看该作者
像这种按键,到最后都是通过电平来区分的,不同就是扫描方式不同而已。

使用特权

评论回复
地板
JY-DX-JY|  楼主 | 2016-5-3 18:15 | 只看该作者
谁能回答我的问题呀?

使用特权

评论回复
5
hgjinwei| | 2016-5-3 18:18 | 只看该作者
扫描嘛,当然是分时判断啦,
Pn.0 ~ Pn.4逐次输出1(只允许一个管脚输出1),哪次读到1,就说明那个管脚所连接的按键按下。

比如:
T0: pn.0 = 1, if pm.0 = 1, K1 close, if pm.1 = 1, K6 close, ...
T1: pn.1 = 1, if pm.0 = 1, K2 close, if pm.1 = 1, K7 close, ...
...

上面那些二极管,是防止K1 & K2(或其他)同时导通,导致pn.0 & pn.1短路,这是推挽管脚作此用途的弊端,如果采用漏开管脚,则可不使用二极管,直接连接。

使用特权

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

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3349

帖子

30

粉丝