理论上是可行的。
你确保你的程序正确的前提下,你直接用线就近接地测试一下是否有效
实际情况下,由于内部上拉电阻较大,容易收到外部干扰
如按键连线距离较长等
所以需要并联一个较小阻值的上拉电阻加强抗干扰能力。
君子一言,驷马难追。记得加50分。
你不加这个电阻的话,开关上红色引线的电平是不确定的(电荷的积累会引起电平变化),因为它是悬空的。你这情况,其实就是这个引脚,arduino检测到高电平了,程序认为你已经按下按键,所以灯亮了。
51单片机的P0口在输出1(高电平)时其实是高阻态,也就是输出电阻无穷大,相当于断开。高阻态显然不能向外提供电流,所以加一个上拉电阻从Vcc取电流,此时单片不给LED提供电流,全部电流由Vcc提供。由于P0口输出1时是高阻态,IO口的电位不会被钳位(你可以把它理解成LED与IO没有连接)。P0口输出0时,Vcc通过上拉电阻往单片机灌电流,在电阻上有5V的压降,与输出的逻辑电平0没有矛盾。
51单片机除P0外的其他IO口一般不需要接上拉电阻,但一定要在IO口和LED间接一个几百欧到1k左右的限流电阻,在LED导通时,由于有电流流经电阻,电阻上有压降,LED导通后压降一般在16V到3V不等(不会是07V),加上电阻上的压降,IO口上电压就可以达到5V,这与单片机输出的高电平没有矛盾。(事实上限流电阻的大小就是这么确定的,LED电流一般是几mA)
如果是其它单片机,如AVR或者PIC,IO口的结构可能不同,具体电路也就不同。但不管什么单片机,一般是不用IO直接驱动功率器件的,而是另外加一个驱动芯片,由单片机提供逻辑电平(几乎没有电流),驱动芯片提供功率(较大电流)。
总的来说,你图上画的用于51单片机的P0口是没有问题的。如果接的是51单片机的其他IO口,没有限流电阻是不合理的,一定要在这种情况下分析你提的问题的话,LED导通后的电流是由Vcc通过外接的上拉电阻和这个端口内部的上拉电阻并联提供的,此时端口的电位被钳位在低电平,但单片机输出是往锁存器里写0或1的逻辑,因为写1指令使内部锁存器始终为高,所以认为单片机输出高电平。但如果执行一条读指令,判断的是引脚的状态,因为被led嵌位那就是输入为低了,那么读到的就是0。也就是说,输出为高,输入为低。
以上就是关于STM32F4上拉电阻全部的内容,包括:STM32F4上拉电阻、Arduino中上拉下拉电阻问题。。。、51单片机关于上拉电阻问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)