找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划

三个IO口控制5个按键

查看数: 1622 | 评论数: 13 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-4-8 11:42

正文摘要:

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

回复

天才小痴 发表于 2014-4-10 11:59
这电路设计的有点烂,3个IO做五个键不应该这样设计
天才小痴 发表于 2014-7-9 20:03
change2011 发表于 2014-7-9 00:08
1 T! m0 W* D: P& J扫描K3、K6时,F0、F1输出低电平;F2如果是输入状态,应该不能输出高低电平。如果输出高电平,那不成了输 ...

+ I4 S7 R) _% z7 S具体看MCU的型号,有的MCU可以设置为带上拉的输入模式,例如STM32的MCU输入可以调置为GPIO_Mode_IPU
change2011 发表于 2014-7-9 00:08
天才小痴 发表于 2014-7-7 18:21
: W7 w3 E. v9 |! F/ d: i& Z7 k  S你这个电路只有处理单键任务,F0,F1,F2为输入状态,F0为1,K5被按下,F1为1,K4被按下,F2为1,K1被按下 ...

) o  M) s5 r1 f. N4 g1 u% B扫描K3、K6时,F0、F1输出低电平;F2如果是输入状态,应该不能输出高低电平。如果输出高电平,那不成了输出状态?按下K3、K6究竟时被拉低,还是拉高?以上本人疑虑,请高手讲解?
天才小痴 发表于 2014-7-7 18:21
李明宗伟 发表于 2014-7-3 11:33+ m- o  t9 |5 t4 U3 Q5 y
高手,按照你这个解释有问题啊。
! g& w2 ^$ E: T4 o7 f3 ~+ k+ K( l% ?9 Z
假设我按下K1,这时F2为1;若程序此时正在检查K3或K6,按照你的流程 ...

3 z2 \1 L' Q, D! ~你这个电路只有处理单键任务,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..这样处理,就不会判断有误了!' L1 P6 A3 [) U! `( r
& h5 b" ]! T  J, Y" J7 c" t8 [
1.
; u; N' e1 S0 Y( G8 Q6 IF0,F1,F2设置为输入,读F0.F1.F2的状态,对应该K5,K4,K1的事件
( m7 j( S; j* b6 m; T2.F0,F1设置为输出低电平,F2上拉输入
1 @  N4 H: a2 V7 \0 X  d8 i当F0 = 0时,F2读到的状态为0,K6 事件
1 V: Q: b& r5 i2 f& R0 c" ?2 a$ E当F1 = 0时,F2读到的状态为0,K3事件, {7 }; b/ R  [
这个时候按K5,K4,K1都是无效的。唯一考虑的问题是F0,F1直接接电源会不会去IO损坏。
李明宗伟 发表于 2014-7-3 11:33
天才小痴 发表于 2014-4-10 12:25
& h- M/ n* d3 O0 b8 V" ~2 }你的软件一开始把F0,F1,F2都设置为输入,读这三个口的状态,当F0为1时K5按下,当F1为1时K4按下,F2为1时K1 ...

2 a; d& e. m, `4 Y; u6 \5 Z/ Y高手,按照你这个解释有问题啊。9 I% {' D$ ]0 }2 h
; Z6 o  Z/ i3 v8 q; Y2 X
假设我按下K1,这时F2为1;若程序此时正在检查K3或K6,按照你的流程,此时程序会认为是K3或K6被按下了。
0 L  t5 k) ]( v' E. W& \
: I- n$ d0 ?2 x! A* N: A3 q所以我认为,在检测K3或K6时,软件上还应该做一个判断,来排除K1导致的误判。这种程序搞起来还是很烦人的。
140260 发表于 2014-7-3 10:04
lvzhenjiang 发表于 2014-6-13 16:33
* f+ C* D8 M4 W- g9 I为什么不用一个AD口和分压电路来监测不同按键按下时获得不同电压来判断是哪个按键按下啊?

; W: g; s7 \! {( M- }* ~5 M4 `那不得弄个采样的么~~
lvzhenjiang 发表于 2014-6-13 16:33
为什么不用一个AD口和分压电路来监测不同按键按下时获得不同电压来判断是哪个按键按下啊?$ W6 p' ~0 b) X4 @0 O2 m" t
与你同行 发表于 2014-4-12 12:41
好象有点明白了。
天才小痴 发表于 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按下!扫描所有的按键完成!
戏出东方 发表于 2014-4-9 22:24
没按下,外部下拉啊,看看器件有没有内部的上下拉设置
nacklack 发表于 2014-4-9 22:09
这个是软件进行设置的,可以让各个IO口置电平,让后其他的进行扫描,不过此图软件有点难做
与你同行 发表于 2014-4-8 14:34
那请问按键没有按下时,F0 F1 F2是什么状态?
hukee 发表于 2014-4-8 13:48
k6 按下 f0 L f2 L
' W) ?; R& v9 u. X* c) B0 P" jk3 按下 f1 L f2 L7 o/ Z) K) |! H
k1 按下 f2 H
5 f7 C% a& D& Z- m, t" n' o7 {, tk4 按下 f1 H
4 }9 U% ~/ |" U: m! P0 D  ak5 按下 f0 H
关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-9 10:42 , Processed in 0.063326 second(s), 38 queries , Gzip On.

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

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

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