标题: MCU矩阵键盘当键被按下时,为什么对应的位被拉低,而不是被拉高呢? [打印本页]

作者: 19011250    时间: 2020-8-1 13:24
标题: MCU矩阵键盘当键被按下时,为什么对应的位被拉低,而不是被拉高呢?

1到4位是高位1111,5到8为低0000,当S1被按下时,第1位被拉低,为什么呢?为什么不是第5位被拉高,求比较深入原理性的解答

作者: angmall    时间: 2020-8-1 15:12
因为内部上拉的输出电流小,被拉低了

作者: xiaocake    时间: 2020-8-1 16:30
这个得结合MCU侧的情况来说。
除非事先设置了某IO口的强上拉输出,否则此IO口输出默认是集电极开路(PNP三极管)或漏极开路(场效应管)输出。这点你找找相关的单片机的各端口介绍就知道了

当MCU控制该IO口的三极管或场效应管开启(导通)时,该IO口被强制下拉到地,输出低电平,并且允许的灌入电流还比较大,驱动能力很强,即强下拉。

当MCU控制该IO的三极管或场效应管关闭(不导通)时,若没有加上拉电阻,则该IO口则相当于悬空的,此IO口就无法输出高电平。
要输出高电平只能通过MCU内部或外部的上拉电阻(一般上千欧的电阻)来实现了,
这样通过上拉电阻形成的高电平输出电流很小(以电源5V,上拉电阻10k为例,则理论最大输出电流只有5/10000=0.5mA),这样的驱动能力是很弱的,所以称为弱上拉。

因为MCU的以上特点,所以大家大都通过低电平来驱动外设。
(当然你想通过强上拉输出驱动外设也是可以的,但是不建议,因为外设一旦短路,则MCU的电源电压可能受此端口影响造成无法工作)

按此帖提到的矩阵键盘的按键表现,说明的对应的高电平是通过上拉电阻形成的。
弱上拉遇到了强下拉,自然是强下拉"厉害"一些,所以输出低电平也就不奇怪了。

作者: wulin    时间: 2020-8-1 21:23
下图是MCU的准双向I/O口等效简化图。当Q1截止,Q2导通,两个I/O口输出各为高电平和低电平。当按键按下时,电流由VCC经R1-PX.0-K1-PX.4到GND,PX.0与PX.4完全导通,所有电压降全部由R1承担,所以两个I/O口都呈低电平,不可能呈高电平。


作者: 1692483014    时间: 2020-8-3 00:55
wulin 发表于 2020-8-1 21:23
下图是MCU的准双向I/O口等效简化图。当Q1截止,Q2导通,两个I/O口输出各为高电平和低电平。当按键按下时, ...

简单明了,不愧是大神,admin的金币快过来!!!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1