这电路设计的有点烂,3个IO做五个键不应该这样设计 |
change2011 发表于 2014-7-9 00:08 具体看MCU的型号,有的MCU可以设置为带上拉的输入模式,例如STM32的MCU输入可以调置为GPIO_Mode_IPU |
天才小痴 发表于 2014-7-7 18:21 扫描K3、K6时,F0、F1输出低电平;F2如果是输入状态,应该不能输出高低电平。如果输出高电平,那不成了输出状态?按下K3、K6究竟时被拉低,还是拉高?以上本人疑虑,请高手讲解? |
李明宗伟 发表于 2014-7-3 11:33+ m- o t9 |5 t4 U3 Q5 y 你这个电路只有处理单键任务,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. F0,F1,F2设置为输入,读F0.F1.F2的状态,对应该K5,K4,K1的事件 2.F0,F1设置为输出低电平,F2上拉输入 当F0 = 0时,F2读到的状态为0,K6 事件 当F1 = 0时,F2读到的状态为0,K3事件, {7 }; b/ R [ 这个时候按K5,K4,K1都是无效的。唯一考虑的问题是F0,F1直接接电源会不会去IO损坏。 |
天才小痴 发表于 2014-4-10 12:25 高手,按照你这个解释有问题啊。9 I% {' D$ ]0 }2 h ; Z6 o Z/ i3 v8 q; Y2 X 假设我按下K1,这时F2为1;若程序此时正在检查K3或K6,按照你的流程,此时程序会认为是K3或K6被按下了。 所以我认为,在检测K3或K6时,软件上还应该做一个判断,来排除K1导致的误判。这种程序搞起来还是很烦人的。 |
lvzhenjiang 发表于 2014-6-13 16:33 那不得弄个采样的么~~ |
为什么不用一个AD口和分压电路来监测不同按键按下时获得不同电压来判断是哪个按键按下啊?$ W6 p' ~0 b) X4 @0 O2 m" t |
好象有点明白了。 |
你的软件一开始把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按下!扫描所有的按键完成! |
没按下,外部下拉啊,看看器件有没有内部的上下拉设置 |
这个是软件进行设置的,可以让各个IO口置电平,让后其他的进行扫描,不过此图软件有点难做 |
那请问按键没有按下时,F0 F1 F2是什么状态? |
k6 按下 f0 L f2 L k3 按下 f1 L f2 L7 o/ Z) K) |! H k1 按下 f2 H k4 按下 f1 H k5 按下 f0 H |
关于我们|手机版|EDA365 ( 粤ICP备18020198号 )
GMT+8, 2024-11-9 10:42 , Processed in 0.063326 second(s), 38 queries , Gzip On.
地址:深圳市南山区科技生态园2栋A座805 电话:19926409050