wulin 发表于 2020-8-1 21:23 简单明了,不愧是大神,admin的金币快过来!!! |
下图是MCU的准双向I/O口等效简化图。当Q1截止,Q2导通,两个I/O口输出各为高电平和低电平。当按键按下时,电流由VCC经R1-PX.0-K1-PX.4到GND,PX.0与PX.4完全导通,所有电压降全部由R1承担,所以两个I/O口都呈低电平,不可能呈高电平。
![]() |
这个得结合MCU侧的情况来说。 除非事先设置了某IO口的强上拉输出,否则此IO口输出默认是集电极开路(PNP三极管)或漏极开路(场效应管)输出。这点你找找相关的单片机的各端口介绍就知道了 当MCU控制该IO口的三极管或场效应管开启(导通)时,该IO口被强制下拉到地,输出低电平,并且允许的灌入电流还比较大,驱动能力很强,即强下拉。 当MCU控制该IO的三极管或场效应管关闭(不导通)时,若没有加上拉电阻,则该IO口则相当于悬空的,此IO口就无法输出高电平。 要输出高电平只能通过MCU内部或外部的上拉电阻(一般上千欧的电阻)来实现了, 这样通过上拉电阻形成的高电平输出电流很小(以电源5V,上拉电阻10k为例,则理论最大输出电流只有5/10000=0.5mA),这样的驱动能力是很弱的,所以称为弱上拉。 因为MCU的以上特点,所以大家大都通过低电平来驱动外设。 (当然你想通过强上拉输出驱动外设也是可以的,但是不建议,因为外设一旦短路,则MCU的电源电压可能受此端口影响造成无法工作) 按此帖提到的矩阵键盘的按键表现,说明的对应的高电平是通过上拉电阻形成的。 弱上拉遇到了强下拉,自然是强下拉"厉害"一些,所以输出低电平也就不奇怪了。 |
因为内部上拉的输出电流小,被拉低了 |