51单片机驱动能力(拉电流_灌电流)及上拉电阻
- 格式:pdf
- 大小:345.54 KB
- 文档页数:7
1.P0作为地址数据总线时,T1和T2是一起工作的,构成推挽结构。
高电平时,T1打开,T2截止;低电平时,T1截止,T2打开。
这种情况下不用外接上拉电阻.而且,当T1打开,T2截止,输出高电平的时候,因为内部电源直接通过T1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以"驱动8个TTL负载"的原因.2.P0作为一般端口时,T1就永远的截止,T2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平;截止时,PO口就没有输出了,(注意,这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1. 3.其他端口P1、P2、P3,在内部直接将P1口中的T1换成了上拉电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。
4.在某个时刻,P0口上输出的是作为总线的地址数据信号还是作为普通I/O口的电平信号,是依靠多路开关MUX来切换的.而MUX的切换,又是根据单片机指令来区分的.当指令为外部存储器/IO口读/写时,比如MOVX A,@DPTR ,MUX是切换到地址/数据总线上;而当普通MOV传送指令操作P0口时,MUX是切换到内部总线上的.PS:Because Ports 1, 2, and 3 have fixed internal pullups, they are sometim es called “quasi- bidirectional” ports.因为端口1、2、3有固定的内部上拉,所以有时候他们被称为"准双向"口.Port 0, on the other hand, is considered “true” bidirectional, because wh en configured as an input it floats.端口0,从另外一方面来说,就被认为是"真正的"双向,因为当它被设置为输入的时候是浮空(高阻态)的.51单片机P0口的作为I/O的问题,其实看了51的P1口的电路就很容易理解了,主要是一个锁存器和推拉结构,在此作些说明。
灌电流(sink current),对一个端口而言,如果电流方向是向其内部流动的则是“灌电流”,比如一个IO通过一个电阻和一个LED连接至VCC,当该IO输出为逻辑0时能不能点亮LED,去查该器件手册中sink current参数。
拉电流(sourcing current),对一个端口而言,如果电流方向是向其外部流动的则是“拉电流”,比如一个IO通过一个电阻和一个LED连至GND,当该IO输出为逻辑1时能不能点亮LED,去查该器件手册中sourcing current参数。
一般来说上拉或下拉电阻的作用是增大电流,加强电路的驱动能力。
也有时用来平衡电平,是的处理器可以得到更稳定的逻辑电平,减少因干扰造成的盲区误判断。
说一下基础概念
电源到元件间的叫上拉电阻,作用是平时使该脚为高电平
地到元件间的叫下拉电阻,作用是平时使该脚为低电平
上拉电阻和下拉电阻的范围由器件来定(我们一般用10K)
+Vcc---上拉电阻---|IO口元件|(该情况为上拉电阻方式)
|IO口元件|---下拉电阻---GND|(该情况为下拉电阻方式)
而对于51处理器的P0口必须接上拉电阻才可以作为IO口输出使用上拉和下拉的区别是一个为拉电流,一个为灌电流
一般来说灌电流比拉电流要大
也就是灌电流驱动能力强一些。
单片机IO口结构及上拉电阻[ 2009-12-1 2:40:00 | By: zydlyq ]8051有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线:·P0口和P2口:右图为P0口和P2口其中一位的电路图,由图可见,电路中包含一个数据输出锁存器和两个三态数据输入缓冲器,另外还有一个数据输出的驱动和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
参考图2。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为216=64k,所以8051最大可外接64kB的程序存储器和数据存储器。
·P1口:右图为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况,其一是:首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
其二是:读P1口线状态时,打开三态门G2,将外部状态读入CPU。
第一部分灌电流、拉电流、吸电流 (1)第二部分上拉电阻和下拉电阻 (1)第三部分高组态 (7)第四部分线驱动、集电极开路、推挽式 (8)第五部分单片机输入\出口 (9)第一部分灌电流、拉电流、吸电流拉即泄,主动输出电流,从输出口输出电流;灌即充,被动输入电流,从输出端口流入;吸则是主动吸入电流,从输入端口流入。
吸电流和灌电流就是从芯片外电路通过引脚流入芯片内的电流;区别在于吸收电流是主动的,从芯片输入端流入的叫吸收电流。
灌入电流是被动的,从输出端流入的叫灌入电流;拉电流是数字电路输出高电平给负载提供的输出电流,灌电流是输出低电平时外部给数字电路的输入电流。
这些实际就是输入、输出电流能力。
拉电流输出对于反向器只能输出零点几毫安的电流,用这种方法想驱动二极管发光是不合理的(因发光二极管正常工作电流为5~10mA)。
驱动尽量用灌电流。
第二部分上拉电阻和下拉电阻一、什么是上拉电阻?什么是下拉电阻?上拉就是将不确定的信号通过一个电阻嵌位在高电平;电阻同时起限流作用,下拉同理。
上拉是对器件注入电流,下拉是输出电流;弱强只是上拉电阻值不同,没有什么严格区分;对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的(普通的口,加上拉电阻可以提高抗干扰能力,但是会增加负载),上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。
二、上拉电阻及下拉电阻作用:1、提高电压准位:a.当TTL电路驱动CMOS电路时,如果TTL电路输出的高电平低于CMOS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。
b.OC门电路必须加上拉电阻,以提高输出的高电平值。
c.通过上拉或下拉来增加或减小驱动电流。
2、加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
3、N/A引脚防静电、防干扰:在CMOS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提高泄荷通路。
拉电流输出和灌电流输出拉电流输出和灌电流输出上拉电阻:1、当TTL 电路驱动COMS 电路时,如果TTL 电路输出的高电平低于COMS 电路的最低高电平(一般为3.5V ),这时就需要在TTL 的输出端接上拉电阻,以提高输出高电平的值。
2、OC 门电路必须加上拉电阻,才能使用。
3、为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
4、在COMS 芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
5、芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。
6、提高总线的抗电磁干扰能力。
管脚悬空就比较容易接受外界的电磁干扰。
7、长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。
上拉电阻阻值的选择原则包括:1、从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。
2、从确保足够的驱动电流考虑应当足够小;电阻小,电流大。
3、对于高速电路,过大的上拉电阻可能边沿变平缓。
综合考虑以上三点,通常在1k 到10k 之间选取。
对下拉电阻也有类似道理对上拉电阻和下拉电阻的选择应结合开关管特性和下级电路的输入特性进行设定,主要需要考虑以下几个因素:1. 驱动能力与功耗的平衡。
以上拉电阻为例,一般地说,上拉电阻越小,驱动能力越强,但功耗越大,设计是应注意两者之间的均衡。
2. 下级电路的驱动需求。
同样以上拉电阻为例,当输出高电平时,开关管断开,上拉电阻应适当选择以能够向下级电路提供足够的电流。
3. 高低电平的设定。
不同电路的高低电平的门槛电平会有不同,电阻应适当设定以确保能输出正确的电平。
以上拉电阻为例,当输出低电平时,开关管导通,上拉电阻和开关管导通反射波干扰!!电阻匹配!!抑制电阻分压值应确保在零电平门槛之下。
4.频率特性。
以上拉电阻为例,上拉电阻和开关管漏源级之间的电容和下级电路之间的输入电容会形成RC延迟,电阻越大,延迟越大。
C8051F学习笔记:单片机的驱动能力学习51单片机的时候我们就知道51单片机的I/O口的特点:P0口没有弱上拉,所以做地址线时不用上拉,但输出“1”时就要加上拉电阻,不然输出电平到不了高电平,P1~P3则不存在这个问题,每个输出管脚都有弱上拉电阻(也就是电阻很大的上拉电阻),造成的结果是输出高电平电流很小,为uA量级,驱动不了LED、数码管之类的,所以要么在外加一个NPN的三极管增强驱动,要么LED、数码管用共阳极接法(也就是LED正接VCC,负接MCU的I/O;数码管用共阳数码管,COM口接VCC)。
虽然道理懂得,但很多时候脑子太死了,MCU接其他器件的时候,就要MCU的I/O输出驱动电流这事给忘了。
下面是一个教训:三个不同类型MCU 控制继电器的电路。
图1 MCU采用STC89C51,增加一个PNP,增强了驱动能力,能控制继电器TQ-RELAY的闭合图2 MCU用的是C8051F120,I/O端口高低电平能控制光耦继电器AQW610的闭合图3 MCU用的是ADI公司的单片机ADuC842,这种解法,MCU的I/O控制不了AQW610的闭合图2和图3基本是相同的电路,只不过是MCU不一样,为什么一个能控制AQW610,一个不行呢?让我们先来看看AQW610的DataSheet.AQW610的电气特性AQW610光耦继电器里的二极管工作电流常闭端为3.0mA,常开端为1.3mA。
再来看看单片机ADuC842(ADI公司兼容的51单片机)ADuC842的电气特性I SINK为灌电流,是指低电平输出时,能够吸收的电流;I SOUCE为拉电流,指高电平输出时,能够输出的电流;在这里虽然没有明确给出拉电流灌电流的最大值,只是把这两个作为输出高电流和低电平的测试条件,但可以认为这个测试条件也就是这款MCU能输出的最大电流了。
ADuC842高电平的驱动电流只能到80uA,P0~02、ALE低电平的驱动电流为1.6mA,P3低电平的驱动电流能达到3mA。
单片机IO口结构及上拉电阻[ 2009-12-1 2:40:00 | By: zydlyq ]8051有4组8位I/O口:P0、P1、P2与P3口,P1、P2与P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线:·P0口与P2口:右图为P0口与P2口其中一位的电路图,由图可见,电路中包含一个数据输出锁存器与两个三态数据输入缓冲器,另外还有一个数据输出的驱动与控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器与I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
参考图2。
P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR与RD读写信号选通,因为216=64k,所以8051最大可外接64kB的程序存储器与数据存储器。
·P1口:右图为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的就是,作为输入口使用时,有两种情况,其一就是:首先就是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)与ORL(逻辑或)指令均属于这类操作。
其二就是:读P1口线状态时,打开三态门G2,将外部状态读入CPU。
吸电流、拉电流输出、灌电流输出拉即泄,主动输出电流,从输出口输出电流;灌即充,被动输入电流,从输出端口流入;吸则是主动吸入电流,从输入端口流入。
吸电流和灌电流就是从芯片外电路通过引脚流入芯片内的电流;区别在于吸收电流是主动的,从芯片输入端流入的叫吸收电流。
灌入电流是被动的,从输出端流入的叫灌入电流;拉电流是数字电路输出高电平给负载提供的输出电流,灌电流时输出低电平是外部给数字电路的输入电流。
这些实际就是输入、输出电流能力。
拉电流输出对于反向器只能输出零点几毫安的电流,用这种方法想驱动二极管发光是不合理的(因发光二极管正常工作电流为5~10mA)。
上、下拉电阻一、定义1、上拉就是将不确定的信号通过一个电阻嵌位在高电平!“电阻同时起限流作用”!下拉同理!2、上拉是对器件注入电流,下拉是输出电流3、弱强只是上拉电阻的阻值不同,没有什么严格区分4、对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。
二、拉电阻作用1、一般作单键触发使用时,如果IC本身没有内接电阻,为了使单键维持在不被触发的状态或是触发后回到原状态,必须在IC外部另接一电阻。
2、数字电路有三种状态:高电平、低电平、和高阻状态,有些应用场合不希望出现高阻状态,可以通过上拉电阻或下拉电阻的方式使处于稳定状态,具体视设计要求而定!3、一般说的是I/O端口,有的可以设置,有的不可以设置,有的是内置,有的是需要外接,I/O端口的输出类似与一个三极管的C,当C接通过一个电阻和电源连接在一起的时候,该电阻成为上C拉电阻,也就是说,如果该端口正常时为高电平;C通过一个电阻和地连接在一起的时候,该电阻称为下拉电阻,使该端口平时为低电平,作用吗:比如:“当一个接有上拉电阻的端口设为输入状态时,他的常态就为高电平,用于检测低电平的输入”。
4、上拉电阻是用来解决总线驱动能力不足时提供电流的。
对于51单片机P1口驱动能力的理解在51单片机系列中,现在生产厂家很多,兼容型号也很多。
不同厂家生产的单片机P1口的驱动能力是不同的。
下面仅举最常用的3种单片机为例,谈谈驱动能力。
先说说LS型TTL负载。
LS型TTL负载是指单片机端口所接负载是74LS系列的数字芯片。
以TI公司的74LS00芯片为例,其输入端接高电平时,输入电流为20μA,输入端接低电平时,输入电流是-0.4mA。
因此,单片机端口输出高电平时,每个LS型的输入端将是20μA的拉电流型负载;输出低电平时,将是0.4mA的灌电流负载。
1. 标准的Intel8051单片机:其P0口是一个漏极开路的准双向口,驱动能力是8个LS型TTL负载。
楼上3楼说“51单片机P1口只是准双向口,内部没有上拉的。
(上拉的概念只是对于I/O的输入来说,对于输出来说,无所谓上拉,下拉的)。
”,其实并不对。
不对之处有两点:①没有上拉的是P0口,而不是P1口。
P1口是有上拉的。
②没有上拉(即漏极开路)其实只对输出有影响,以致只能输出低电平,不能输出高电平,而不妨碍高低电平的输入。
因此对P0口来说,输出为高电平时,其输出电流为0,必须外接上拉电阻才能输出高电平;输出低电平时,允许灌入电流为0.4mA×8=3.2mA。
而P1、P2、P3口都是有上拉的准双向口,带负载能力为4个LS型TTL门,因此,高电平输出电流为20μA×4=80μA,低电平允许灌入电流为0.4mA×4=1.6mA。
输出高低电平的带负载能力都很差,因此应该接入4.7k~10k左右的上拉电阻。
2. AT89系列单片机:因为输出电流会影响输出电压,所以参数表中是结合输出电压来提供输出电流能力的。
AT89C51和AT89S51允许的高电平输出电流为:输出电压为3.7V时,电流为25μA;允许的低电平输出电流(实际为灌入电流)为:输出电压为0.45V 时,电流为-1.6mA。
51单片机总结——上拉电阻单片机2009-07-28 14:56:05 阅读961 评论1字号:大中小上拉电阻的作用:(1)用于为OC和OD门电路,提供驱动能力。
以OC(集电极开路)电路为例:例如,达林顿管(其实就是复合三级管)集成块ULN2003. 内部一路的电路如图,就是一个集电极开路电路。
如果不加上拉电阻是无法高电平驱动其他器件的。
因为当三极管截至市没有电流流通的路径,更谈不上驱动了。
这个跟单片机P0口加上拉电阻的原理一样。
(2)提高高电平电位:单片机P1口外接4×4矩阵键盘。
另外复用P1.0~P1.3外接ULN2003控制驱动步进电机。
实验中遇到的问题:当接入ULN2003时键盘无法工作,去掉ULN2003后键盘工作正常。
ULN2003工作正常。
(注,两个部分不同时工作)问题分析:由于键盘的结构,无非就是两个金属片的接通或断开。
但是接入ULN2003 后无法正常工作,说明是接入ULN2003影响到了P1口电平的变化。
用万用表测的电压,当单片机输出高电平时,P1.0~P1.3电压1V左右,P1.4~P1.7电压4.3V左右,于是测A T89s52高低电平的判决电位,在1.3V左右。
这样P1.0~P1.3始终是低电平,键盘根本无法实现扫描功能。
解决方法,只要抬高P1口高电平时的电位,就可以正常工作,1.在P1口到ULN2003上串接电阻,起到分压的作用,就可以抬高电平。
2.给P1口接上拉电阻,跟P1口内部电阻并联,减小上拉电阻阻值,减小分得的电压,从而抬高P0口高电平电位。
采用第二种方案可以抬高电平到2.5V左右。
键盘工作正常。
另外:我在做液晶显示实验的时候,数据线用的P0口,无法正常工作,不显示字符。
但是乱动一下数据线就可以完成显示,但是显示现象并不正常,字符不是一次写入,而是乱动几次才能写完全部内容,正常应该一次全部显示。
原因是由于,我的P0口中有六个端口都外接并联三个发光二极管。
看来很多网友都搞不清灌电流和拉电流的概念,下面就此解释一下,希望看过本文后不再就此困扰。
一个重要的前提:灌电流和拉电流是针对端口而言的。
名词解释——灌:注入、填充,由外向内、由虚而实。
渴了,来一大杯鲜榨橙汁,一饮而尽,饱了,这叫“灌”。
灌电流(sink current),对一个端口而言,如果电流方向是向其内部流动的则是“灌电流”,比如一个IO通过一个电阻和一个LED连接至VCC,当该IO输出为逻辑0时能不能点亮LED,去查该器件手册中sink current参数。
名词解释——拉:流出、排空,由内向外,由实而虚。
一大杯鲜橙汁喝了,过会儿,憋的慌,赶紧找卫生间,一阵“大雨”,舒坦了,这叫“拉”。
拉电流(sourcing current),对一个端口而言,如果电流方向是向其外部流动的则是“拉电流”,比如一个IO通过一个电阻和一个LED 连至GND,当该IO输出为逻辑1时能不能点亮LED,去查该器件
手册中sourcing current参数。
/viewthread.php?tid=219138&highlight=%2Byez hubenyue
单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为“灌电流”,外部电路称为“灌电流负载”(sink current)单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为“拉电流”,外部电路称为“拉电流负载“(source current)这些电流一般是多少?最大限度是多少?这就是常见的单片机输
出驱动能力的问题。
分析一下TTL 的输入特性,就可以发现,51 单片机基本上就没有什么驱动能力。
它的引脚,甚至不能带动当时的LED 进行正常发光。
记得是在AT89C51 单片机流行起来之后,做而论道才发现:单片机引脚的能力大为增强,可以直接带动LED 发光了。
看看下图,图中的D1、D2 就可以不经其它驱动器件,直接由单片机的引脚控制发光显示。
虽然引脚已经可以直接驱动LED 发光,但是且慢,先别太高兴,还是看看AT89C51 单片机引脚的输出能力吧。
从AT89C51 单片机的PDF 手册文件中可以看到,稳态输出时,“灌电流”的上限为:
Maximum IOL per port pin: 10 mA;
Maximum IOL per 8-bit port:Port 0: 26 mA,Ports 1, 2, 3: 15 mA; Maximum total I for all output pins: 71 mA.
这里是说:
每个单个的引脚,输出低电平的时候,允许外部电路,向引脚灌入的最大电流为10 mA;
每个8 位的接口(P1、P2 以及P3),允许向引脚灌入的总电流最大为15 mA,而P0 的能力强一些,允许向引脚灌入的最大总电流为26 mA;
全部的四个接口所允许的灌电流之和,最大为71 mA。
/viewthread.php?tid=255097&highlight=%2Byez hubenyue
单片机驱动蜂鸣器-.
这里驱动蜂鸣器电阻为14k 如果电压为3V的时候需要电流为21ma,但是单片机提供的电流最大也就10ma左右,所以需要三极管来放大电流
如图P26高电平的时候蜂鸣器工作,P26低电平的时候断开。
蜂鸣器工作电压3V,所以取RES2为2v / 21ma为100欧左右。
先需要21ma二极管的放大倍数将近100倍,所以基极电流最小为0.21ma,现E点电压为3v所以R=U/A 电阻最大需要取2V/0.21ma=10000K 如果电阻取100欧那基极电流就是20ma,单片机驱动不了。
最大为10ma可知电阻的最小为200欧姆,放大2倍则蜂鸣器就可以工作了。
(在饱和,放大的临界状态所以可以使用IB=β*IC,)
而当这些引脚“输出高电平”的时候,单片机的“拉电流”能力呢?有10 mA的驱动能力。
结论就是:单片机输出低电平的时候,驱动能力尚可,而输出高电平的时候,就没有输出电流的能力。
这个结论是依照手册中给出的数据做出来的。
51 单片机的这些特性,是源于引脚的内部结构,引脚内部结构图这里就不画了,很多书中都有。
在芯片的内部,引脚和地之间,有个三极管,所以引脚具有下拉的能力,输出低电平的时候,允许灌入10mA 的电流;而引脚和正电源之间,有个几百K的“内部上拉电阻”,所以,引脚在高电平的时候,能够输出的拉电流很小。
特别是P0 口,其内部根本就没有上拉电阻,所以P0 口根本就没有高电平输出电流的能力。
哦,明白了,外接电路如果是“拉电流负载”,要求单片机输出高电平时发挥作用,那就必须用“上拉电阻”来协助,产生负载所需的电流。
下面做而论道就专门说说上拉电阻存在的问题。
如果在一个8 位的接口,安装了8 个1K 的上拉电阻,当单片机都输出低电平的时候,就有40mA 的电流灌入这个8 位的接口!如果四个8 位接口,都加上1K 的上拉电阻,最大有可能出现32 ×5 = 160mA 的电流,都流入到单片机中!
这个数值已经超过了单片机手册上给出的上限。
如果此时单片机工作
不稳定,就是理所当然的了。
而且这些电流,都是在负载处于无效的状态下出现的,它们都是完全没有用处的电流,只是产生发热、耗电大、电池消耗快...等后果。
呵呵,特别是现在,都在提倡节能减排,低碳...。
那么,把上拉电阻加大些,可以吗?
回答是:不行的,因为需要它为拉电流负载提供电流。
对于LED,如果加大电阻,将使电流过小,发光暗淡,就失去发光二极管的作用了。
对于D1,是灌电流负载,单片机输出低电平的时候,R1、D1 通路上会有灌电流;输出高电平的时候,那就什么电流都没有,此时就不产生额外的耗电。
综上所述,灌电流负载,是合理的;而“拉电流负载”和“上拉电阻”会产生很大的无效电流,这种电路不合理。
有些网友对上拉电阻情有独钟,有用没用的,都想在引脚上安装个上拉电阻,甚至还能说出些理由:稳定性啦、速度啦...。
其实,“上拉电阻”和“拉电流负载”电路,是会对单片机系统造成不良后果的。
做而论道看过很多关于单片机引脚以及上拉电阻方面的书籍、参考资料,基本上它们对于使用上拉电阻的弊病都没有进行仔细的讨论。
在此,做而论道郑重向大家提出建议:设计单片机的负载电路,应该采用“灌电流负载”的电路形式,以避免无谓的电流消耗。
上拉电阻,仅仅是在P0 口才考虑加不加的问题:当用P0 口做为输入口的时候,需要加上、当用P0 口输出高电平驱动MOS 型负载的时候,也需要加上,其它的时候,P0 口也不用加入上拉电阻。
在其它接口(P1、P2 和P3),都不应该加上拉电阻,特别是输出低电平有效的时候,外接器件就有上拉的作用。