找回密码
 注册
关于网站域名变更的通知
查看: 3536|回复: 13
打印 上一主题 下一主题

三个IO口控制5个按键

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2014-4-8 11:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
请问各位老大们,如图中所示,三个IO口 ,控制5个按键,软件上是怎样实现的,有谁知道的请告诉一下。谢谢!

QQ图片20140408114037.jpg (194.84 KB, 下载次数: 22)

QQ图片20140408114037.jpg

该用户从未签到

推荐
发表于 2014-4-10 11:59 | 只看该作者
这电路设计的有点烂,3个IO做五个键不应该这样设计

该用户从未签到

2#
发表于 2014-4-8 13:48 | 只看该作者
k6 按下 f0 L f2 L
$ U1 y' _) O% J" b, j3 bk3 按下 f1 L f2 L
) t1 n# w5 m% I: x( R+ ]k1 按下 f2 H
, r$ r/ n% k1 }$ {3 k1 X9 N5 e4 Xk4 按下 f1 H$ G# y8 |) h; Y! L
k5 按下 f0 H

该用户从未签到

3#
 楼主| 发表于 2014-4-8 14:34 | 只看该作者
那请问按键没有按下时,F0 F1 F2是什么状态?

该用户从未签到

4#
发表于 2014-4-9 22:09 | 只看该作者
这个是软件进行设置的,可以让各个IO口置电平,让后其他的进行扫描,不过此图软件有点难做

该用户从未签到

5#
发表于 2014-4-9 22:24 | 只看该作者
没按下,外部下拉啊,看看器件有没有内部的上下拉设置

该用户从未签到

7#
发表于 2014-4-10 12:25 | 只看该作者
你的软件一开始把F0,F1,F2都设置为输入,读这三个口的状态,当F0为1时K5按下,当F1为1时K4按下,F2为1时K1按下,扫描完这三个口后,把F0,F1设置输出口,先让F0输出高电平,F1读出低电平,读F2的状态,F2为1时,K6按下,再次F0=0,F1=1,再读F2的状态,F2为1,K3按下!扫描所有的按键完成!

该用户从未签到

8#
 楼主| 发表于 2014-4-12 12:41 | 只看该作者
好象有点明白了。

该用户从未签到

9#
发表于 2014-6-13 16:33 | 只看该作者
为什么不用一个AD口和分压电路来监测不同按键按下时获得不同电压来判断是哪个按键按下啊?( m# N7 J: o1 e

该用户从未签到

10#
发表于 2014-7-3 10:04 | 只看该作者
lvzhenjiang 发表于 2014-6-13 16:33/ ~) v6 ?: n) x. H+ d
为什么不用一个AD口和分压电路来监测不同按键按下时获得不同电压来判断是哪个按键按下啊?
' v8 T: r( s; o+ p# d
那不得弄个采样的么~~

该用户从未签到

11#
发表于 2014-7-3 11:33 | 只看该作者
天才小痴 发表于 2014-4-10 12:25
( U+ N) g9 Z7 O+ i! L你的软件一开始把F0,F1,F2都设置为输入,读这三个口的状态,当F0为1时K5按下,当F1为1时K4按下,F2为1时K1 ...

' D+ F4 L! G3 H4 }8 H( \9 d% t% q" T高手,按照你这个解释有问题啊。/ W( N2 x' d; w  h; I
1 X) I" n* t% j9 E
假设我按下K1,这时F2为1;若程序此时正在检查K3或K6,按照你的流程,此时程序会认为是K3或K6被按下了。
& U7 S3 D+ U+ E8 i9 W& \
& Y% ]; K9 Y/ Y! j- e( m所以我认为,在检测K3或K6时,软件上还应该做一个判断,来排除K1导致的误判。这种程序搞起来还是很烦人的。

该用户从未签到

12#
发表于 2014-7-7 18:21 | 只看该作者
李明宗伟 发表于 2014-7-3 11:33
0 J, M$ H0 ^7 P高手,按照你这个解释有问题啊。
0 p/ y, }, U# |! B( C9 m
7 K- U, }+ }$ f假设我按下K1,这时F2为1;若程序此时正在检查K3或K6,按照你的流程 ...
) Q  X! S) _$ {) S% m; u" s1 g
你这个电路只有处理单键任务,F0,F1,F2为输入状态,F0为1,K5被按下,F1为1,K4被按下,F2为1,K1被按下,处理完后再来判断K3,K6的事件,F0,F1为输出状态,输出低电平,F2为上拉输入状态,F0 = 0,K6按下,F2为0,K6按下,F1输出0,K3被按下,F2为0..这样处理,就不会判断有误了!
, Z! k% M- ~4 R4 a# X( E# n2 W
- _3 W; w0 t2 s6 W, Q4 \1.
! R5 v! w* a) Y# V! s3 V( PF0,F1,F2设置为输入,读F0.F1.F2的状态,对应该K5,K4,K1的事件
% C) D8 a  A2 d1 l2.F0,F1设置为输出低电平,F2上拉输入
% r* e' x( D( B当F0 = 0时,F2读到的状态为0,K6 事件
  ?, A1 V, ?: E" d' }7 ^当F1 = 0时,F2读到的状态为0,K3事件5 O5 J; P" [8 }
这个时候按K5,K4,K1都是无效的。唯一考虑的问题是F0,F1直接接电源会不会去IO损坏。

该用户从未签到

13#
发表于 2014-7-9 00:08 | 只看该作者
天才小痴 发表于 2014-7-7 18:21
( |# o4 L5 Q" J1 y% D$ O$ G  h你这个电路只有处理单键任务,F0,F1,F2为输入状态,F0为1,K5被按下,F1为1,K4被按下,F2为1,K1被按下 ...

1 G! f; E# m( }5 y3 L8 R$ o扫描K3、K6时,F0、F1输出低电平;F2如果是输入状态,应该不能输出高低电平。如果输出高电平,那不成了输出状态?按下K3、K6究竟时被拉低,还是拉高?以上本人疑虑,请高手讲解?

该用户从未签到

14#
发表于 2014-7-9 20:03 | 只看该作者
change2011 发表于 2014-7-9 00:08' q! s0 t! s3 ~- v
扫描K3、K6时,F0、F1输出低电平;F2如果是输入状态,应该不能输出高低电平。如果输出高电平,那不成了输 ...

. W) |0 A6 m4 d具体看MCU的型号,有的MCU可以设置为带上拉的输入模式,例如STM32的MCU输入可以调置为GPIO_Mode_IPU
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-1 00:20 , Processed in 0.140625 second(s), 29 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表