[STM32] 求助一个关于矩阵键盘多个按键按下的问题!

[复制链接]
3486|19
 楼主| feicien 发表于 2018-3-31 16:45 | 显示全部楼层 |阅读模式
如图所示,行线RO、R1为输入,列线C0、C1为输出。
当按钮S1,S2,S3同时按下时,则列线C1与行线R0连接,RO与C0连接,C0与R1连接(四个线全连接)。此时,扫描码C0=0,C1=1,读取到R1为1,即S4也误为按下。这显示是不对的,不知道有什么其他方法识别出正确的按键状态吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
blust5 发表于 2018-3-31 20:51 | 显示全部楼层
可以加电阻或者二极管
blust5 发表于 2018-3-31 20:53 | 显示全部楼层
加上二极管之后,只能由C上的电平带动R上的电平,反过来不行,这样的话,就不会出现你说的情况了
blust5 发表于 2018-3-31 21:02 | 显示全部楼层
例如这样,这样的话,按你说的情况,即使S1、S2、S3都按下,在C0=0,C1=1时,
因为C1=1,且S2按下,所以R0=1,
虽然S1按下了,但因为有二极管,所以C0不会被拉高,所以R1=0,所以不会误判S4按下,如果S4真的按下了,会通过S4旁边的二极管将R1拉高。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
blust5 发表于 2018-3-31 21:04 | 显示全部楼层
不过一般矩阵键盘都是以低电平作为有效电平,这时候把二极管反过来就可以了,这时候在C端输出低电平,如果按键按下,相应R上的电平被拉低,而由于二极管的截止作用,不会拉低另外的C线。
奥巴羊 发表于 2018-3-31 21:37 | 显示全部楼层
blust5 发表于 2018-3-31 21:02
例如这样,这样的话,按你说的情况,即使S1、S2、S3都按下,在C0=0,C1=1时,
因为C1=1,且S2按下,所以R0= ...

C0=0,可以通过二极管传送到R0?
blust5 发表于 2018-4-1 08:25 | 显示全部楼层
奥巴羊 发表于 2018-3-31 21:37
C0=0,可以通过二极管传送到R0?

C0=0,R0被C1拉高,是1,这时候S1旁边的二极管反偏截止,R0到C0的通路是不通的。
一路向北lm 发表于 2018-4-1 08:49 | 显示全部楼层
楼主如果是想节约IO口,还想检测多个按键按下,可以设计ADC按键电路啊,完全满足你的要求。
奥巴羊 发表于 2018-4-1 09:22 | 显示全部楼层
blust5 发表于 2018-4-1 08:25
C0=0,R0被C1拉高,是1,这时候S1旁边的二极管反偏截止,R0到C0的通路是不通的。 ...

我的意思是S1被按下,C0怎么通过二极管使R0=0?
blust5 发表于 2018-4-1 14:12 | 显示全部楼层
奥巴羊 发表于 2018-4-1 09:22
我的意思是S1被按下,C0怎么通过二极管使R0=0?

你要获取S1的状态,就要C0=1,C1=0,这时候R0会被C0拉高,变成1.
blust5 发表于 2018-4-1 14:13 | 显示全部楼层
这个是扫描式获取的,所有的C线依次为1,同时去检测R线上的电平
奥巴羊 发表于 2018-4-1 19:25 | 显示全部楼层
blust5 发表于 2018-4-1 14:12
你要获取S1的状态,就要C0=1,C1=0,这时候R0会被C0拉高,变成1.

原来是这样,知道了。
caijie001 发表于 2018-4-2 09:56 | 显示全部楼层
blust5 发表于 2018-3-31 21:04
不过一般矩阵键盘都是以低电平作为有效电平,这时候把二极管反过来就可以了,这时候在C端输出低电平,如果 ...

学习了,厉害啊
qinlu123 发表于 2018-4-2 11:51 | 显示全部楼层
我没有看明白楼主到底在疑问什么,不过我有一个好用的矩阵键盘驱动。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
qinlu123 发表于 2018-4-2 11:57 | 显示全部楼层
列线输出IO要设置成开漏输出的。
ddllxxrr 发表于 2018-4-2 17:54 | 显示全部楼层
这个真地很好办,在测到按键是,输入和输出对调,再读一下输入,对照以前就可以读出是谁按下了
h286288986 发表于 2018-4-3 08:30 | 显示全部楼层
楼主想得太复杂了,软件就能过滤识别,自己好好在思考下怎么弄!
cooldog123pp 发表于 2018-4-3 08:47 | 显示全部楼层
按键不多直接用ADC啊,一个IO就解决了,而且,你这个问题是你软件没有处理好,行列扫描再想想。
tianqi911 发表于 2018-4-12 14:56 | 显示全部楼层
推荐用AD吧。用IO口扫描矩阵键盘,理论可行,实际应用要加很多东西,还要在板子上调试硬件。AD抗干扰强,实现也简单。
y15067805290 发表于 2018-4-12 15:39 | 显示全部楼层

怎么没有高手留言呢,不能让帖子沉下去,顶上
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

34

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部