找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1621|回复: 13
打印 上一主题 下一主题

三个IO口控制5个按键

[复制链接]

33

主题

391

帖子

1801

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

EDA365欢迎您!

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

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

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

QQ图片20140408114037.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏1 支持!支持! 反对!反对!

2

主题

97

帖子

684

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

2

主题

97

帖子

684

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
684
14#
发表于 2014-7-9 20:03 | 只看该作者
change2011 发表于 2014-7-9 00:08
+ r0 b( _) F& b扫描K3、K6时,F0、F1输出低电平;F2如果是输入状态,应该不能输出高低电平。如果输出高电平,那不成了输 ...
% m  o( X: C1 X7 ~
具体看MCU的型号,有的MCU可以设置为带上拉的输入模式,例如STM32的MCU输入可以调置为GPIO_Mode_IPU

6

主题

46

帖子

223

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
223
13#
发表于 2014-7-9 00:08 | 只看该作者
天才小痴 发表于 2014-7-7 18:21
! f3 b. h9 U" y5 @( {, f7 @" ?你这个电路只有处理单键任务,F0,F1,F2为输入状态,F0为1,K5被按下,F1为1,K4被按下,F2为1,K1被按下 ...

& u' W: ]  y  s/ C" o% v扫描K3、K6时,F0、F1输出低电平;F2如果是输入状态,应该不能输出高低电平。如果输出高电平,那不成了输出状态?按下K3、K6究竟时被拉低,还是拉高?以上本人疑虑,请高手讲解?

2

主题

97

帖子

684

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
684
12#
发表于 2014-7-7 18:21 | 只看该作者
李明宗伟 发表于 2014-7-3 11:33
7 J) N$ ^+ x% F( w6 F4 f高手,按照你这个解释有问题啊。
  E* o$ i  Z6 g, I3 O. t% L( ?$ H. S$ j% ^' i. O( m$ D1 N% H. t
假设我按下K1,这时F2为1;若程序此时正在检查K3或K6,按照你的流程 ...
% e& c/ {* D- U6 Z$ i
你这个电路只有处理单键任务,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..这样处理,就不会判断有误了!7 g0 Z0 K8 Q! g# g

4 C$ B) }8 P2 M1.
2 d5 k' d/ ^. E; @* {F0,F1,F2设置为输入,读F0.F1.F2的状态,对应该K5,K4,K1的事件
7 f* V5 D$ q$ F- k- F2.F0,F1设置为输出低电平,F2上拉输入
( ~( r" |) U, P! ~9 x) c当F0 = 0时,F2读到的状态为0,K6 事件- }8 T% A% S$ b! u5 D
当F1 = 0时,F2读到的状态为0,K3事件, y: y  ]3 _+ L& j# S6 {
这个时候按K5,K4,K1都是无效的。唯一考虑的问题是F0,F1直接接电源会不会去IO损坏。

17

主题

357

帖子

3043

积分

五级会员(50)

Rank: 5

积分
3043
11#
发表于 2014-7-3 11:33 | 只看该作者
天才小痴 发表于 2014-4-10 12:25
) l: T  ^4 J1 O: K8 o) z你的软件一开始把F0,F1,F2都设置为输入,读这三个口的状态,当F0为1时K5按下,当F1为1时K4按下,F2为1时K1 ...
1 a" I; e- ]; \
高手,按照你这个解释有问题啊。
+ X% H; I  n- J! u  n7 B( Y6 d! M& d  m2 J7 Z' i. Z  D1 p
假设我按下K1,这时F2为1;若程序此时正在检查K3或K6,按照你的流程,此时程序会认为是K3或K6被按下了。
3 F4 q6 \' B8 i  i1 X) Z! r- e
; J( C$ c( T3 c; n( @- D5 M+ F所以我认为,在检测K3或K6时,软件上还应该做一个判断,来排除K1导致的误判。这种程序搞起来还是很烦人的。

0

主题

15

帖子

185

积分

二级会员(20)

Rank: 2Rank: 2

积分
185
10#
发表于 2014-7-3 10:04 | 只看该作者
lvzhenjiang 发表于 2014-6-13 16:33. _7 `( `/ ?: q1 B" K$ z0 j
为什么不用一个AD口和分压电路来监测不同按键按下时获得不同电压来判断是哪个按键按下啊?
9 x$ ?  M$ j/ y; o1 J3 }
那不得弄个采样的么~~

14

主题

37

帖子

276

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
276
9#
发表于 2014-6-13 16:33 | 只看该作者
为什么不用一个AD口和分压电路来监测不同按键按下时获得不同电压来判断是哪个按键按下啊?
! Y) F3 F- j0 N4 p

33

主题

391

帖子

1801

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

2

主题

97

帖子

684

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
684
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

主题

121

帖子

977

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

1

主题

23

帖子

358

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

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

33

主题

391

帖子

1801

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

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

12

主题

219

帖子

659

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
659
2#
发表于 2014-4-8 13:48 | 只看该作者
k6 按下 f0 L f2 L
5 F3 V* N/ H3 @6 Q4 J7 {/ Vk3 按下 f1 L f2 L
. P; a# z& a+ J- R' S$ P, I& d7 sk1 按下 f2 H
! {* f& X5 C$ H# D) v* D! n, K& Ck4 按下 f1 H9 E% \; L+ L; X! C; k$ P3 J% ]7 s, M
k5 按下 f0 H
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-9 10:21 , Processed in 0.496197 second(s), 37 queries , Gzip On.

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

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

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