关于单片机IO口输入输出复用问题

请问,用下图能否实现用IO口扫描按键是否被按下,再输出高电平点亮小灯。当按键不被按下时,IO口是否一直都是低电平(通过二极管到地),单片机低电平范围0-2V,望解答,谢谢。

首先电阻应该接电源正极,按键一端接地,但还不行,按键检测时 ,IO口先输出高电平,若有按键按下则检测到低电平,所以在你检测按键之前,LED已经处于亮态了,这和你检测到按键按下再亮是矛盾的

当按键不被按下时,IO口是高是低由程序决定的,复位时IO口黙认是作为输入用的,输出是高电平

但负载能力比较弱

将LED改为低电平驱动是可行的,平时IO时输出高平可作为输入,LED 不亮,按下按键后,单片机检测到低电平,可输出低电平,LED就一直亮了(也可由程序控制亮一段时间灭,以便再次进行检测)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-09-03
个人理解:
如果你用51 P0口,这样是可以的。
解释:P0口没有内部上接电阻,你P0.0外接一个100K的上拉,1K改成5K,同时在LED上要串470电阻限流
这样,平时P0.0是高电平但上拉很弱(不足以让LED亮起来),按下键是低电平,可作正常IO的按键检测。
检测到动作后,让P0.0为高,这时它等同于直接到VCC,这时LED就正常亮了,即使这时按下键,也只是相当于在IO上又并了一个电阻,LED也正常亮。

。。。。实际情况呢?你来回答吧,哈哈。
第2个回答  2018-03-19
要检测按钮开关状态,首先得把端口设置为输入模式,
(而作为状态输入,你总得提供高低电平两种状态以选择,显然这里不能提供高电平;)
在检测到按钮按下后,再把该端口设置为输出端,并输出高电平以点亮LED,但是你的电路中,不加个限流电阻在LED上,会把端口烧毁的;
第3个回答  2014-09-03
这个电路有问题,按键和电阻的位置最好交换一下
相似回答