对IO口在高阻态似乎仍然对输出有影响的疑问
本帖最后由 hsrzq 于 2024-8-3 17:09 编辑芯片使用STC8A8K64D4最小系统板。
电路图如上所示极其简单,如右图所示。U1(1)和U1(3)接最小系统板左上角3.3v供电。
当U1(2)悬空时LED1、LED2均不亮,符合预期。
当U1(2)接P3.4时:
当P3强推挽,当P3.4设置成高电平时LED2亮,设置成低电平LED1亮。这个也符合预期。
当P3高阻时,无论P3.4是高电平还是低电平,LED2保持常亮,这个就完全不符合预期了。
#include "stc8a8k64d4.h"
#include "stdint.h"
void main(void)
{
P3M0 = 0b00;
P3M1 = 0xff;
P34 = 0;
}
谁能给我解释一下这是为什么呢?
我平时主要是搞软件的,对硬件可以说一窍不通。为了练习用电烙铁搞的这个电路
wnagming 发表于 2024-8-3 17:08
你这个板子原理图发来看看
手抖了,是P3.4不是P4。
看我第一个图的最小系统板,引脚都是直连CPU的。
我也怀疑过引脚带上拉,试过其它端口(P7)都一样。 wnagming 发表于 2024-8-3 17:08
把三极管去掉,加上三极管,两个LED之间的电位就不是高阻状态了
1. 三极管去不掉。两个三极管基极相连的地方,后面还要继续接个工作电流很大的元件,IO口的电流远远不够。
2. 我重点问题在于,IO高阻接U1(2),不就相当于U1(2)悬空吗,但为什么和U1(2)实际物理悬空结果不一样…… 基极用2个10K电阻分压到3.3/2=1.65V试试 DebugLab 发表于 2024-8-3 18:24
基极用2个10K电阻分压到3.3/2=1.65V试试
问题倒是可以解决,但我其实更想知道原因,为什么“高阻”并不阻…… hsrzq 发表于 2024-8-3 21:49
问题倒是可以解决,但我其实更想知道原因,为什么“高阻”并不阻……
互补射随器(图腾柱)电路,输入悬空状态随机,原则上禁止开路
按1mA就能看到LED亮,三极管HFE为200计算,输入5μA就能亮,这么小的电流是极易受干扰的 先拆了R3看什么情况,分析是三极管漏电还是单片机IO漏电,如果是前者,就把两个三极管换成MMBT5551和MMBT5401试试,也许能解决问题,如果是后者,则需要给三极管基极加上下拉,将默认电位控制在VCC/2附近。
DebugLab 发表于 2024-8-3 22:05
互补射随器(图腾柱)电路,输入悬空状态随机,原则上禁止开路
按1mA就能看到LED亮,三极管HFE为200计算 ...
谢谢您,懂了!
晚上发现手捏导线都能看到微亮,看来果然容易受到影响~ 晓飛飛 发表于 2024-8-3 22:26
先拆了R3看什么情况,分析是三极管漏电还是单片机IO漏电,如果是前者,就把两个三极管换成MMBT5551和MMBT54 ...
嗯嗯,另一个大神也是这么说的,让拉到Vcc/2别直接悬空 实践中涨知识,这个案例在实际电路中多数会类似的控制
页:
[1]