单片机IO口驱动能力
3.1MCS-51单片机的并行IO口
一、并行I/O口的功能结构
2、接口功能 (2)通用I/O接口
(四)P0口
此时“控制”信号为“0”,多路开关 MUX向下,输出驱动器处于开漏状态,故需 外接上拉电阻,这种情况下,电路结构与P1 相同,所以也是一个准双向口,当要作为输 入时,必须先向口锁存器写“1”。
一、并行I/O口的功能结构
(四)P0口
这是由接口的特殊结构所决定的。每一个 口都包含一个锁存器,一个输出驱动器和两 个(P3口为3个)输入缓冲器。各口的结构也 P 3 有些差异,下面分别介绍。
一、并行I/O口的功能结构
1、接口结构
(一)P1口
P1口一位的结构如下图所示:
图2.15
一、并行I/O口的功能结构
1、接口结构
(一)P1口
接口结构中锁存器起输出锁存作用, 8位锁存器组成特殊功能寄存器P1,场 效应管和上拉电阻组成输出驱动器,以 增大负载能力,三态门1和三态门2分别 用于控制输入引脚和锁存器的状态。
作为I/O口应用的一个实例,下面介绍 8031单片机的最小应用系统如下图所示
二、产生接口控制信号的指令
(四)P0口
8051指令系统中能与接口打交道的指令 大体可分两类 1.一般的输入/输出指令 2.“读-修改-写”指 令
二、产生接口控制信号的指令
1.一般的输入输出指令
(四)P0口
输入指令执行时,内部产生“读引脚”信号, 直接从口线读入,亦称“读引脚”指令。 下面是属于这种指令的各种实例:
二、产生接口控制信号的指令
(四)P0口 2.“读-修改-写”指令 INC P2 接口锁存器加1 DEC P1 接口锁存器内容减1 DJNZ P3,LOOP 减1后不为零则跳转 还有三条虽不明显,但也属此列: MOV P1.1,C CLR P1.1 SETB P1.1 将进位位送接口的某位 清接口的某一位 接口的某一位置位
STM32F103非FT的IO端口驱动5V继电器
STM32F103 非FT的IO驱动5V继电器
笔者在进行STM32单片机应用方案的设计时,遇到一个问题:就是用STM32驱动5V的继电器。
STM32 只能输出3.3V/0V 的电平,但是驱动5V继电器直接使用STM32 是不现实的。
笔者考虑到使用PNP三极管驱动,电路图如下:
通过修改基极电阻R1能再继电器线圈上获取到1V和3V的电平,此时的三级管Q1工作在放大区,无论是PB0给高还是低,都在放大区,此时,对于有的继电器(电阻值在178欧姆)能实现通断,但是对于大部分的5V继电器是无法动作的,或者是无法断开。
方案二:修改stm32的端口,使用带FT(5V兼容的IO)外接10K的上拉电阻到5V,在把stm32是输出设置为OD(开漏模式),如下图:
此时,完全能输出0V/5V 单片机工作在饱和导通和截止状态,能驱动5V的继电器。
方案三:
笔者在实验时,电路板已经做好了,改IO端口,不太美观,已是有了该方案:基极集电极跨电阻。
此方案,在方案一的基础上不需要修改软件,只需要修改基极电阻值,增加一个基极集电极跨接电阻10K即可,此时,三极管在饱和导通和截止状态,能驱动5V继电器。
较方案二比较,是饱和的程度没有方案二深。
单片机IO口介绍
单片机IO口介绍单片机(microcontroller)是一种集成电路芯片,具有运算、存储和控制功能。
它是嵌入式系统中最常用的处理器之一、在单片机中,IO (Input/Output)口是用来进行输入输出操作的接口。
IO口通常包括数字IO口和模拟IO口两种类型。
下面将详细介绍单片机IO口的功能和应用。
1.数字IO口:数字IO口是单片机与外部设备进行数字信号交换的接口。
数字IO口可以进行输入和输出操作,具有以下特点:-输入功能:可以通过读取外部设备的状态或信号,并将其转换为数字信号输入到单片机中进行处理。
例如,传感器的信号输入和按键的输入等。
-输出功能:可以通过将数字信号输出到外部设备,控制其工作状态。
例如,LED的控制、驱动电机或继电器等。
数字IO口通常以引脚(pin)的形式存在于单片机芯片上。
一个引脚包括输入端和输出端,可以根据需要进行配置。
数字IO口操作简单、速度快、精度高,常用于控制和通信等方面。
2.模拟IO口:模拟IO口是单片机与外部设备进行模拟信号交换的接口。
模拟IO口可以进行模拟输入和输出操作,常用于采集和控制模拟信号。
-模拟输入功能:可以从外部信号源中获取模拟信号,并将其转换为数字信号输入到单片机中进行处理。
例如,温度传感器、声音传感器等。
-模拟输出功能:可以将数字信号转换为模拟电压、电流等形式,输出到外部设备中。
例如,通过PWM(脉冲宽度调制)信号控制电机的转速。
模拟IO口通常通过ADC(模数转换器)和DAC(数模转换器)实现。
ADC将模拟信号转换为数字信号,DAC将数字信号转换为模拟信号。
模拟IO口的使用相对复杂,需要进行模数转换和数模转换,但在一些需要对模拟信号进行处理和控制的应用中起到关键作用。
3.应用场景:IO口在单片机系统中广泛应用于各种应用场景。
以下是一些常见的应用场景:-传感器接口:通过IO口连接传感器,读取传感器的输出信号,进行数据采集和处理。
例如温度、湿度、光照等传感器的接口。
51单片机驱动能力(拉电流_灌电流)及上拉电阻
看来很多网友都搞不清灌电流和拉电流的概念,下面就此解释一下,希望看过本文后不再就此困扰。
一个重要的前提:灌电流和拉电流是针对端口而言的。
名词解释——灌:注入、填充,由外向内、由虚而实。
渴了,来一大杯鲜榨橙汁,一饮而尽,饱了,这叫“灌”。
灌电流(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 就可以不经其它驱动器件,直接由单片机的引脚控制发光显示。
MCS-51单片机IO口详解
单片机IO口结构及上拉电阻MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。
一、P0口和P2口图1和图2为P0口和P2口其中一位的电路图。
由图可见,电路中包含一个数据输出锁存器(D触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1和T2)和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
图1 单片机P0口内部一位结构图图2 单片机P0口内部一位结构图P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2^16=64k,所以MCS-51最大可外接64kB的程序存储器和数据存储器。
二、P1口图3为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
图3 单片机P2口内部一位结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。
51单片机IO口驱动能力
单片机输出低电平的时候,单个的引脚,向引脚灌入的最大电流为 10 mA;一个 8 位的接口(P1、P2 以及 P3),灌入的总电流最大为 15 mA,P0 允许灌入的最大总电流为 26 mA;全部的四个接口所允许的灌电流之和,最大为 71 mA。
但是当引脚输出高电平的时候,它们的“拉电流”能力可就差多了,竟然还不到 1 mA。
为了合理利用IO引脚的低电平能力强的特点,在外接耗电较大的器件(如LED数码显示器、继电器等)的时候,应该优先选用低电平输出来驱动外部器件。
使用IO口输出高电平驱动负载,就是一个错误的选择。
下图是一个直接利用单片机IO引脚驱动LED的电路。
图中P0口使用低电平驱动方式,只要加上约1K的限流电阻即可,甚至不需要常见的P0口上拉电阻。
发光的段,每个引脚灌电流约为3mA,不发光的段,电流为0。
即使各个段全都发光,电流也不超过P0所容许的电流,这是一个合理的驱动方式。
图中P3口使用了高电平驱动方式,这就必须加上上拉电阻来帮助IO接口输出电流。
电阻也采用了1K,发光的段,LED上的电流约为3mA,不发光的段,电流则为5mA,灌入了单片机的IO引脚。
单片机输出低电平的时候,LED不亮,此时VCC通过上拉电阻把电流全部灌进单片机IO口,并且电流是5mA,单片机输出高电平的时候,VCC通过上拉电阻将电流注入到LED中,led亮。
注意到了吗?LED 不发光的时候,上拉电阻给的电流全部灌入单片机的引脚了!如果在一个 8 位的接口,安装了 8 个 1k 的上拉电阻,当单片机都输出低电平的时候,就有 40mA 的电流灌入这个 8 位的接口!如果四个 8 位接口,都加上 1k 的上拉电阻,最大有可能出现32 × 5 = 160mA 的电流,都流入到单片机中!这个数值已经超过了单片机手册上给出的上限。
此时单片机就会出现工作不稳定的现象。
而且这些电流,都是在负载处于无效的状态下出现的,它们都是完全没有用处的电流,只是产生发热、耗电大、电池消耗快...等后果。
51单片机IO特点
LED发光二极管是电子产品中常用的元器件:在电子产品中我们经常使用一个红色或者绿色的发光二极管用来指示系统的工作状态;闪烁的发光二极管用来作为系统的报警信号;发光二极管是数码管和点阵屏的基本单位。在本节中,我们通过一个流水灯的实例,了解发光二极管的特点和51单片机IO口驱动流水灯的程序实现方法。
51单片机I/O特点
在上一单元中小灯闪烁的实例中,I/O控制小灯闪烁51 ,只需在软件中对IO置高和置低就可以了,使用起来非常方便。但是在实际应用中如果不了解IO的特点,设计的电路存在缺陷,IO使用起来未必会得心应手,初学者不必深究IO控制原理,但至少得弄明白几个基本的概念,这对后期学习高档单片机也很有帮助。
4、“取反”运算符(~)
与其它运算符不同,“取反”运算符为单目运算符,即它的操作数只有一个。它的功能就是对操作数按位取反。也就是是‘1’得‘0’,是‘0’得‘1’。如下例:a=0xff; //a=0b11111111
a=~a; //a=0b00000000。
5、左移运算符(<<)
左移运算符用来将一个数的各位全部向左移若干位。如:a=a<<2,表示将a的各位左移2位,右边补0。如a=34(0b00100010),左移2位得0b10001000。
取表方式实现流水灯程序
程序解释:
(1)取表方式实际上就是建立一个包含了各种状态的数组。相对于移位方式,取表方式要简单、灵活,在后面介绍的数码管、点阵LED中,也会用到取表方式。
(2)数组定义时(uchar code table[8]),相比标准C中数组的定义,多了一个关键字“code”,不加关键字“code”,表示把数组中的变量存放到MCU的RAM中,加上关键字“code”,表示把数组中的变量存放到MCU的FLASH中。单片机的FLASH空间远远大于RAM的空间,所以经常把像数组这样一旦烧录就不会再修改的变量放到FLASH中,来节省有限的RAM空间。
单片机IO口驱动能力
单片机IO口驱动能力2010-12-03 15:27驱动当逻辑门输出端是低电平时,灌入逻辑门的电流称为灌电流,灌电流越大,输出端的低电平就越高。
由三极管输出特性曲线也可以看出,灌电流越大,饱和压降越大,低电平越大。
逻辑门的低电平是有一定限制的,它有一个最大值UOLMAX。
在逻辑门工作时,不允许超过这个数值,TTL逻辑门的规范规定UOLMAX≤0.4~0.5V。
当逻辑门输出端是高电平时,逻辑门输出端的电流是从逻辑门中流出,这个电流称为拉电流。
拉电流越大,输出端的高电平就越低。
这是因为输出级三极管是有内阻的,内阻上的电压降会使输出电压下降。
拉电流越大,高电平越低。
逻辑门的高电平是有一定限制的,它有一个最小值UOHMIN。
在逻辑门工作时,不允许超过这个数值,TTL逻辑门的规范规定UOHMIN ≥2.4V。
由于高电平输入电流很小,在微安级,一般可以不必考虑,低电平电流较大,在毫安级。
所以,往往低电平的灌电流不超标就不会有问题,用扇出系数来说明逻辑门来同类门的能力。
扇出系数NO是描述集成电路带负载能力的参数,它的定义式如下NO= IOLMAX / IILMAX其中IOLMAX为最大允许灌电流,IILMAX是一个负载门灌入本级的电流。
No越大,说明门的负载能力越强。
一般产品规定要求No≥8。
对于标准TTL门,NO≥10;对于低功耗肖特基系列的TTL门,NO≥20扇入、扇出系数:扇入系数--门电路允许的输入端数目。
一般门电路的扇入系数Nr为1—5,最多不超过8。
若芯片输入端数多于实际要求的数目,可将芯片多余输入端接高电平(+5V)或接低电平(GND)。
扇出系数--一个门的输出端所驱动同类型门的个数,或称负载能力。
一般门电路的扇出系数Nc为8,驱动器的扇出系数Nc可达25。
Nc体现了门电路的负载能力。
对于输入电流的器件而言:灌入电流和吸收电流都是输入的,灌入电流是被动的,吸收电流是主动的。
如果外部电流通过芯片引脚向芯片内‘流入’称为灌电流;反之如果内部电流通过芯片引脚从芯片内‘流出’称为拉电流。
51IO端口的驱动能力
人生的意义在于进化299792458 / 40075704 = 7.473162011-09-22 18:4751单片机IO端口的驱动能力单片机输出驱动分为高电平驱动和低电平驱动两种方式,所谓高电平驱动,就是端口输出高电平时的驱动能力,所谓低电平驱动,就是端口输出低电平时的驱动能力,当单片机输出高电平时,其驱动能力实际上是端口的上拉电阻来驱动的,实际测试表明,51单片机的上拉电阻的阻值在330K左右,也就是说如果高电平驱动,本质上就是330K的上拉电阻来提供电流的,当然该电流是非常小的,小的甚至连发光二极管也难以点亮,如果要保证LED正常发光,必须要外接一个1K左右的上拉电阻,如果是一个led还好,要是10个、20个led的话,就要接10个、20个1K的上拉电阻,接电阻的本身是可以的,问题是接了上拉电阻以后,每当端口变为低电平0的时候,那么就有10个、20个上拉电阻被无用的导通,假设每个电阻的电流为5mA计算,20个电阻就是100mA,这将造成电源效率的严重下降,导致发热,纹波增大,以至于造成单片机工作不稳,因此很少有采用高电平直接驱动led的,高电平驱动led实际上就是共阴。
低电平驱动就不同了,端口为低电平0时,端口内部的开关管导通,可以驱动高达30多毫安的驱动电流,可以直接驱动led等负载,当端口为低电平0时,尽管内部的上拉电阻也是消耗电流的,但是由于内部的上拉电阻很大,有330K,因此消耗电流极小,基本上不会影响电源效率,不会造成无用功的大量消耗。
因此51单片机是不能用高电平直接驱动led的,只能用低电平直接驱动led,即只能用共阳数码管,而不能直接用共阴数码管。
youki12345 ( /thread-160467-1-1.html )在51单片机系列中,现在生产厂家很多,兼容型号也很多。
不同厂家生产的单片机P1口的驱动能力是不同的。
下面仅举最常用的3种单片机为例,谈谈驱动能力。
先说说LS型TTL负载。
单片机I_O驱动能力介绍
关于驱动能力的基本问题我一直都不明白驱动是什么.一般的说驱动一个负载,我想只要你的电压达到了一个阈值,那么就可以驱动这个负载啊,为什么有时候又说驱动能力不够了?为什么说一个没有输出缓冲的op是驱动不了小电阻和大电容负载的了?我直接在这个op后面接个大电容或者一个小电阻负载有什么影响了?当我用运放驱动一个大的mos管的时候为什么要级连几个反向器了,我直接把运放的输出接在这个大mos管上面不行吗?-----------------------------------楼主这个问题提得好,我以我自己的理解来试图做个解答。
首先,所谓的驱动能力,指的是输出电流的能力。
比方说,某型单片机通用IO口在高电平时的最大输出电流是20mA,这个20mA的指标,就表征了该IO口的驱动能力。
其次,如果负载过大(就像楼主所说的小电阻),则负载电流有可能超过其最大输出电流,这时我们说驱动能力不足。
再次,出现驱动能力不足,直接后果是输出电压下降,对逻辑电路来说,就是无法保持其高电平,以致出现逻辑混乱,不能实现预期的效果。
这种现象一般是不允许出现的。
------------------------------------因为mos管是有内阻的,每个mos管可以提供的最大电流是有限的.小的mos管提供小电流,大mos管可以提供大电流.楼主问题中说"我想只要你的电压达到了一个阈值,那么就可以驱动这个负载啊", 关键是当负载太大(即电阻太小,电容太大),超出了输出管的驱动能力时,输出的电压就会被拉下来,达不到gnd-vdd的变化范围.极限情况:r无限小,c无限大(gnd),那输出就没有信号变化了!关于51单片机P0口的驱动能力P0是个漏极开路接口,让它工作在灌电流状态下驱动LED是没有问题的.即:VCC>限流电阻>LED>P0.灌电流:IO口为低电平的时候,电流从IO口外面"灌"进单片机相反的就是 "拉电流" IO口为高电平的时候,电流从单片机流出去给负载供电。
51单片机io口的用法
51单片机io口的用法51单片机是一种经典的单片机系列,广泛应用于各种嵌入式系统中。
其IO口是单片机最基本的输入输出功能,可以用来连接外部设备和实现与外界的交互。
本文将介绍51单片机IO口的用法,并提供相关参考内容,帮助读者更好地理解和应用。
一、51单片机IO口简介51单片机的IO口是通过P0、P1、P2、P3四个寄存器来控制的。
其中P0口为8位双向I/O口,P1、P2、P3口为8位I/O 口,可以通过配置将其设置为输入(IN)或输出(OUT)模式。
在51单片机中,IO口的状态(高电平或低电平)决定了其在电路中的功能。
二、IO口的输入模式通过将IO口设置为输入模式,可以实现对外部信号的读取。
以下是51单片机IO口输入模式的几种常见应用:1. 按键输入:通过将IO口与按键连接,读取按键的状态(按下或松开)。
2. 传感器输入:通过将IO口与传感器连接,读取传感器的输出信号,如光线强度、温度等。
3. 外部信号输入:通过将IO口与其他设备连接,读取外部设备的状态或数据。
在使用IO口作为输入时,需要设置对应端口的引脚为输入模式,并读取相应寄存器的值进行判断。
三、IO口的输出模式通过将IO口设置为输出模式,可以实现对外部设备的控制。
以下是51单片机IO口输出模式的几种常见应用:1. LED显示:通过将IO口与LED连接,控制LED的闪烁、亮灭。
2. 电机驱动:通过将IO口与电机驱动芯片连接,控制电机的转动方向、速度。
3. 继电器控制:通过将IO口与继电器连接,控制继电器的开关状态。
在使用IO口作为输出时,需要设置对应端口的引脚为输出模式,并将相应寄存器的值设置为高电平或低电平。
四、IO口的控制方法有两种常见的方式可以控制51单片机的IO口:位操作和寄存器读写。
1. 位操作:通过对相应寄存器的位进行操作来控制IO口的状态。
例如,要将P1口的第0位设置为高电平,可以使用以下代码:P1_0 = 1;要将P1口的第1位设置为低电平,可以使用以下代码:P1_1 = 0;2. 寄存器读写:通过读写相应寄存器的值来控制IO口的状态。
单片机IO引脚驱动能力的提高
==================================
下面以常见的继电器为负载继续说明驱动方法。继电器线圈的驱动电流往往要有40mA以上,单片机的引脚肯定是不能承受了,必须用三极管来扩充输出能力。
+5V的大电流负载,用8550(PNP型)驱动电路可见下图。
这种电路,给单片机IO引脚带来了很大的电流,一个8位的接口最大有可能被灌入40mA的电流,远远超过了容许的数值。
上拉电阻能够增加大量不需要的电流,不仅会造成单片机工作不稳定,还会导致电源效率的严重下降,发热,纹波增大。这说明,高电平输出、加上拉电阻,就是一个不合理的驱动方式。
如果只是一个引脚的电流取值稍大一些,还算可以;但是综合考虑一个8位的接口,则每个引脚的电流就不要大于2~3mA。
图中P0口使用低电平驱动方式,只要加上约1K的限流电阻即可,甚至不需要常见的P0口上拉电阻。发光的段,每个引脚灌电流约为3mA,不发光的段,电流为0。即使各个段全都发光,电流也不超过P0所容许的电流,这是一个合理的驱动方式。
图片链接:
图中P3口使用了高电平驱动方式,这就必须加上上拉电阻来帮助IO接口输出电流。电阻也采用了1K,发光的段,LED上的电流约为3mA,不发光的段,电流则为5mA,灌入了单片机的IO引脚。
更重要的缺点是:在开机单片机复位后,自然输出的高电平,会使继电器吸合,或者是使电机转动。(使用ULN2003等芯片扩充输出电流的时候,也存在这个问题。)
虽然编程的时候,可以先进行接口的初始化,令其马上就输出0。但是每次开机,还是会有瞬间的大电流冲击,这往往是不允许的。
改进一下,可以再加上个8550,进行倒相,这就可以让单片机用输出低电平来驱动负载。
单片机IO口另外三种状态
单片机IO口另外三种状态
单片机IO 口的其中一种“准双向IO”的内部结构,实际上我们的单片机IO 口还有另外三种状态,分别是开漏、推挽、高阻态,我们通过图9-1 来分析下另外这三种状态。
前边我们简单介绍“准双向IO”的时候,我们是用三极管来说明的,出于严谨的态度,我们这里按照实际情况用MOS 管画图示意。
实际上三极管是靠电流导通的,而MOS 管是靠电压导通的,具体缘由和它们的内部构造有关系,在这里我们暂且不必关心,如果今后有必要了解可以直接查找模拟电子书或者百度相关资料进行细致学习。
在单片机IO 口状态这一块内容上,我们可以把MOS 管当三极管来理解。
在图9-1 中,T1 相当于一个PNP 三极管,T2 相当于一个NPN 三极管。
其中准双向IO 口原理已经讲过了,开漏输出和准双向IO 的唯一区别,就是开漏输出把内部的上拉电阻去掉了。
开漏输出如果要输出高电平时,T2 关断,IO 电平要靠外部的上拉电阻才能拉成高电平,如果没有外部上拉电阻IO 电平就是一个不确定态。
单片机的几种IO口配置
准双向口有三个上拉晶体管,一个“极弱上拉”,当端锁存器为逻辑“1”时打 开,当端口悬空时,“极弱上拉”将端口上拉至高电平。
第二个上拉晶体管为“弱上拉”,当端口锁存器为逻辑“1”且端口本身也为“1” 时打开,此上拉提供的电流,使准双向口输出为“1”。如果此时端口被外部装 置拉到逻辑“0”时,通过施密特触发器,控制“弱上拉”关闭,而“极弱上拉” 维持开状态,为了把这个端口拉低,外部装置必须有足够的灌电流能力,使管脚 上的电压,降到门槛电以下。
开漏输出配置与准又向口相似,但内部没有上拉电阻。有很好的电气兼容性,外 部接上拉电阻到 3V 电源,就能和 3V 逻辑器件连接。外部接上拉电阻到 5V 电源, 就要以和 5V 器件连接。
需要说明的是以上四种配置均可以作为输入,也就是都可以检测端的逻辑状态, 但其特性不同,不是每种配置都可以直接接按键。
四.仅为输入配置(高阻配置) 这种配置不能输出电流,也不能有收电流,只能作为输入数据使用。
以上四种配置各有其特点,在使用中应根据其特点灵活运用。 准双向口的最大特点是既可以作为输入,也可以作为输出,不需要通过控制切换。 推挽输出的特点是,无论输也高电平还是低电平都有较大的驱动能力,在输也高 电平时,也能直接点亮 LED,这在准双向口中是不能办到的。这种配置不宜作为 输入,因为这需要外部设备有很强的拉电流的能胃。 仅为输入配置的特点是端口只能作为输入使用,可以获得很高的输入阻抗,在有 模拟比较器或 ADC 的端口中用得较多。
单片机的几种 IO 口配置
在单片机学习、开发和应用中,IO 口的配置对功能的实现起着重要的作用,下 面介绍常见的四种配置,而现在很多单片机都兼有这四种配置,可供选择。
一.准双向口配置
如下图,当 IO 输出为高电平时,其驱动能力很弱,外部负载很容易将其拉至低 电平。当 IO 输出为低电平时,其驱动能力很强,可吸收相当大的电流。
stc单片机io驱动原理
stc单片机io驱动原理
STC单片机的IO驱动原理主要基于四种驱动模式:准双向输出、强推挽输出、仅为输入(高阻)、开漏输出。
以下是这些模式的简单介绍:
1. 准双向输出模式:准双向输出模式允许端口在输出和输入功能之间切换,而不需要重新配置I/O口输出状态。
当端口锁存数据置为逻辑高时,驱动能力很弱,允许外部设备将其拉低(要尽量避免这种情况);当引脚输出为低时,驱动能力很强,可吸收很大的电流。
2. 强推挽输出模式:强推挽输出模式提供持续的强上拉,推挽模式一般用于需要更大驱动电流的情况。
3. 仅为输入(高阻)模式:在此模式下,端口不提供吸收20mA电流的能力,主要用作输入功能。
4. 开漏输出模式:在开漏模式下,单片机可以读取引脚的外部状态;在外接上拉电阻的情况下,可以正确对外部输出高电平;否则,只要对外部输出低电平的情况下是正确的。
此外,每个端口还集成了可供用户选择使用的上拉电阻和施密特触发器,以进一步提高端口的抗干扰能力。
需要注意的是,在使用STC单片机时,要遵循一些注意事项。
例如,在准双向口模式下读取外部设备状态前,要先将相应的端口位置1,才可以读到外部正确的状态。
同时,由于8051CPU始终速度较高,因此当软件执行由低变高的指令后,一般需要加入1-2个空操作延迟指令,再读取外部状态。
以上内容仅供参考,建议咨询STC单片机的官方网站获取更全面准确的信息。
AVR单片机IO端口操作方法及注意事项
一次即可。因为它是一个控制全部上拉电阻的控制位。
DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入
PORTB|=BIT(2)|BIT(3); // 将 PORT 置1,满足上拉电阻的另一个条件
举例四:将PB0、PB1数据寄存器的数值翻转,即如果是1时变成0,如果是0时变成1
PORTB^=BIT(0)|BIT(1); // 翻转PB0 、PB1口
举例五:将PB2、PB3定义为输入,不带上拉电阻
DDRB&=~(BIT(2)|BIT(3)); //定义 PB2、PB3为输入
PORTB&=~(BIT(2)|BIT(3)); // 将 PORT 置0,没有上拉电阻
举例六:将PB2、PB3定义为输入,带上拉电阻。即没有引用这些引脚时,缺省值为高电平
SFIOR&=~BIT(PUD); // SFIOR寄存器的上拉电阻控制位PUD置0,在整个代码中,这句话可以不出现,或仅出现
4功能模块(中断,定时器)的输入可以是低电平触发,也可以是上升沿触发或下降沿触发。
5用于高阻模拟信号输入,切记不要使能内部上拉电阻,影响精确度。例如ADC数模转换器输入,模拟比较器输入
作输出时:
采用必要的限流措施,例如驱动LED要串入限流电阻
复位时:
复位时内部上拉电阻将被禁用。如果应用中(例如电机控制)需要严格的电平控制,请使用外接电阻固定电平
举例二:将PB0、PB1定义为输出,PB0、PB1均为高电平
DDRB|=BIT(0)|BIT(1); //定义 PB0、PB1为输出
PORTB|=BIT(0)|BIT(1);// PB0、PB1 输出高电平
单片机IO口的驱动能力
单片机的IO是有驱动能力限制的,特别是输出为高电平的时候,是有限制的。
我们来看单片机的IO口在输出时电路结构:
通过等效我们可以做出如下的模型
因此我们通过测试可得到每个IO口的输出能力,上拉或下拉电阻实际包括两部分组成,实际上拉/下拉电阻+Mos管的Rdson。
如果超过了这个电流,负载电路再减小的时候,输出电压就会持续的降低。
因此我们在实际输出接口要考虑不同芯片的电压和输入和输出的能力,根据实际的计算来考虑设置模式或者限制电流。
以上测试都是在负载电容50pf左右的时候。
在驱动容性负载的时候,由于初始充电电流比较大,因此波形可能变得很缓。
因此随着负载容性的增大,信号变得越缓,但容性超过一定程度的时候,IO口的电流不注意承担的时候,
就很容易出现问题。
我们在设计单片机输出的时候,一定要注意IO口的输出能力和输出电平是否可以接受,其次是负载类型会不会造成信号不良或对IO口本身造成伤害。
前面博文中有提到,IO直接接地的问题就是源于IO内部可能存在内部上拉,(51系列P1,P2,P3做输出口都是内部上拉),如果程序紊乱,寄存器设置为高电平,就会出现电流猛增,造成单片机的损坏,但这不是一定的,属于设计风险。
单片机IO口介绍
单片机IO口介绍单片机(Microcontroller)是一种集成了微处理器、存储器和各种I/O接口的芯片。
其中,I/O口是单片机与外部设备进行数据交换的通道,它是单片机最重要的功能之一、本文将详细介绍单片机的I/O口。
一、I/O口的基本概念在单片机中,I/O口是单片机与外部设备进行数据交换的接口。
它通过I/O线与外部设备相连接,可以实现数据的输入和输出。
单片机的I/O口可以分为通用I/O口和特殊功能I/O口两种类型。
通用I/O口是单片机常用的一种I/O口,它可以通过软件编程实现不同的功能,包括数字输入、数字输出和模拟输入输出等。
通用I/O口可以根据实际需求进行设置,提供灵活的数据交换方式。
特殊功能I/O口是单片机固定的一些特殊功能接口,通常用于特定的应用,如定时器、比较器、串行通信等。
特殊功能I/O口具有特殊的功能和特殊的操作要求,需要根据具体的应用进行设置。
二、通用I/O口的工作原理通用I/O口是单片机最常用的一种I/O口,它可以通过软件编程实现不同的功能。
通用I/O口的工作原理如下:1.输入模式:通用I/O口可以设置为输入模式,接收来自外部设备的输入信号。
在输入模式下,通用I/O口通常通过上拉或下拉电阻来实现输入的稳定性,并通过软件读取输入信号的状态。
2.输出模式:通用I/O口可以设置为输出模式,向外部设备输出信号。
在输出模式下,通用I/O口可以输出高电平或低电平信号,并通过软件控制输出的状态。
通用I/O口的状态可以通过软件进行设置和读取,可以实现灵活的数据交换。
通用I/O口的应用非常广泛,可以用于控制开关、驱动显示、读取按键等。
三、特殊功能I/O口的工作原理特殊功能I/O口是单片机固定的一些特殊功能接口,通常用于特定的应用。
特殊功能I/O口具有特殊的功能和特殊的操作要求,需要根据具体的应用进行设置。
下面介绍一些常见的特殊功能I/O口。
1.定时器/计数器:定时器/计数器是特殊功能I/O口中最常用的一个。
单片机STC12C5A60S2简介
STC12C5A60S2简介STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍.内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。
1、增强型8051CPU,1T(1024G),单时钟/机器周期2、工作电压 5.5-3。
5V3、1280字节RAM4、通用I/O口,复位后为:准双向口/弱上拉可设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA5、有EEPROM功能6、看门狗7、内部集成MAX810专用复位电路8、外部掉电检测电路9、时钟源:外部高精度晶体/时钟,内部R/C振荡器常温下内部R/C振荡器频率为:5。
0V单片机为:11~17MHz3.3V 单片机为:8~12MHz10、4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T111、3个时钟输出口,可由T0的溢出在P3。
4/T0输出时钟,可由T1的溢出在P3。
5/T1输出时钟,独立波特率发生器可以在P1。
0口输出时钟12、外部中断I/O口7路,传统的下降沿中断或电平触发中断,并新增支持上升沿中断的PCA模块,Power Down模式可由外部中断唤醒,INT0/P3.2,INT1/P3。
3,T0/P3。
4,T1/P3。
5,RxD/P3。
0,CCP0/P1。
3,CCP0/P1。
313、PWM2路14、A/D转换,10位精度ADC,共8路,转换速度可达250K/S15、通用全双工异步串行口(UART)16、双串口,RxD2/P1。
2,TxD2/P1。
317、工作范围:—40~8518、封装:LQFP—48,LQFP—44,PDIP-40,PLCC管脚说明P0。
0~P0。
7 P0:P0口既可以作为输入/输出口,也可以作为地址/数据复用总线使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机IO引脚驱动能力提升篇
来源:互联网作者:
关键字:单片机IO引脚
早期的51单片机,驱动能力很低。
P1、P2和P3口只能驱动3个LSTTL输入端,P0口可驱动8个。
如果想要驱动更多的器件,就要用到“总线驱动芯片”。
经常用的就是74LS244(单向)和74LS245(双向)。
现在常用的 AT89C51 单片机引脚的输出能力已经大多了,从 PDF 手册文件中可查出:
单片机输出低电平的时候,单个的引脚,向引脚灌入的最大电流为 10 mA;
一个 8 位的接口(P1、P2 以及 P3),灌入的总电流最大为 15 mA,P0 允许灌入的最大总电流为 26 mA;
全部的四个接口所允许的灌电流之和,最大为 71 mA。
但是当引脚输出高电平的时候,它们的“拉电流”能力可就差多了,竟然还不到 1 mA。
单片机的输出特性和很多常用的LS系列TTL器件的输出特性是相同的,都有灌电流较大的特点。
实际上,现在常用的单片机IO引脚驱动能力,就和早期的单片机增加了“总线驱动芯片”的效果基本是相同的。
现在的单片机输出低电平的时候,就已经可以直接驱动LED发光了。
上述的数值,也并非是不可逾越的破坏性极限数值。
当略超过这些数值范围的时候,单片机IO引脚的电压,就会发生变化,造成“高电平不高”、“低电平不低”,这就会缩小外接器件的噪声容限。
如果环境再稍有干扰,外接器件就无法正确判定单片机送来的高、低电平,将会胡乱动作。
==================================
为了合理利用IO引脚的低电平能力强的特点,在外接耗电较大的器件(如LED数码显示器、继电器等)的时候,应该优先选用低电平输出来驱动外部器件。
使用IO口输出高电平驱动负载,就是一个错误的选择。
下图是一个直接利用单片机IO引脚驱动LED的电路。
图中P0口使用低电平驱动方式,只要加上约1K的限流电阻即可,甚至不需要常见的P0口上拉电阻。
发光的段,每个引脚灌电流约为3mA,不发光的段,电流为0。
即使各个段全都发光,电流也不超过P0所容许的电流,这是一个合理的驱动方式。
图中P3口使用了高电平驱动方式,这就必须加上上拉电阻来帮助IO接口输出电流。
电阻也采用了1K,发光的段,LED上的电流约为3mA,不发光的段,电流则为5mA,灌入了单片机的IO引脚。
这种电路,给单片机IO引脚带来了很大的电流,一个8位的接口最大有可能被灌入40mA的电流,远远超过了容许的数值。
上拉电阻能够增加大量不需要的电流,不仅会造成单片机工作不稳定,还会导致电源效率的严重下降,发热,纹波增大。
这说明,高电平输出、加上拉电阻,就是一个不合理的驱动方式。
如果只是一个引脚的电流取值稍大一些,还算可以;但是综合考虑一个8位的接口,则每个引脚的电流就不要大于2~3mA。
这样来看,上拉电阻最小应该在1.8K~2.5K之间,不宜再小,以免总电流超过接口所容许的电流。
在网上看到一篇“51单片机P0口上拉电阻的深入研究”的文章,对上拉电阻的最小选择,写的很低,甚至说可以选200欧姆!呵呵,这会烧毁单片机引脚的。
==================================
驱动更大电流的负载,可以使用三极管来扩充电流,也可使用集成芯片ULN2003(或ULN2008),另外也可使用专用的驱动器件L298、各种型号的IGBT等等。
集成芯片的引脚比较密集,维修检查较困难,更换的时候更是不便。
做而论道比较喜欢使用三极管,它的耐压和电流承受能力都远远超过集成芯片,在PCB上布线也很灵活方便。
8550(PNP)和8050(NPN):它们是一组可以配对使用的三极管,特点是集电极允许的电流很大,Icm竟然能达到1500mA!而且还不需要使用散热片。
它们的集电极反向击穿电压BVceo为25V,Pcm为0.5W。
2N5401(PNP)和2N5551(NPN):它们也是一组可以配对使用的三极管,它们的特点是耐压比较高,集电极反向击穿电压BVceo可达160V!它们的最大集电极电流Icm为0.6A,Pcm为0.6W。
不同厂家的产品,参数会稍有不同。
==================================
下面以常见的继电器为负载继续说明驱动方法。
继电器线圈的驱动电流往往要有40mA以上,单片机的引脚肯定是不能承受了,必须用三极管来扩充输出能力。
+5V的大电流负载,用8550(PNP型)驱动电路可见下图。
P3.7输出低电平的时候,在R1中形成Ib约有2mA,经过8550的放大,Ic足够驱动继电器了。
用这个电路,不仅可以驱动继电器,也驱动蜂鸣器、扬声器、多个LED等等,甚至驱动小型的直流电机,也是可以的。
一般来说,电机的工作电流要大一些,只要不超过8550可以输出的最大电流是1500mA即可。
驱动电机时,图中电阻R1的取值应该再小一些。
==================================
用这个电路,可以各种大电流负载,但是做而论道为什么单单要用继电器,来说明问题呢?
因为在网上,发现很多不适当的继电器驱动电路,这些电路都是一个特点,即使用了射极输出电路结构。
射极输出电路要求输入的动态范围要大,而且输出的电压范围永远比输入小0.7V。
射极输出电路就不能有效的利用+5V的电源,实际上,加到继电器上的电压,不足+4V,除非是使用4V的继电器,否则这就是不稳定的隐患。
做而论道给出的电路是共射极结构,有电压放大能力,所以对输入的要求较低,输出动态范围大。
==================================
对于大于+5V的负载,如+12V,上面的电路就不行了。
如果只是简单的把电源由+5V改为+12V,那么单片机输出的高、低电平,还是只有0~5V的变化幅度,这对8550射极的+12V来说,都是低电平。
8550将不能截止。
对于大于+5V的负载,只能使用NPN型的8050三极管来驱动,先以单片机输出高电平来驱动。
电路如下:
==================================
在上述电路中,上拉电阻R2也会带来无谓的电流,其害处前面已经讨论过。
更重要的缺点是:在开机单片机复位后,自然输出的高电平,会使继电器吸合,或者是使电机转动。
(使用ULN2003等芯片扩充输出电流的时候,也存在这个问题。
)
虽然编程的时候,可以先进行接口的初始化,令其马上就输出0。
但是每次开机,还是会有瞬间的大电流冲击,这往往是不允许的。
改进一下,可以再加上个8550,进行倒相,这就可以让单片机用输出低电平来驱动负载。
上图中倒相用的8550,也可以使用“光耦”器件,这样一来,又增加了电气隔离的功能,这就是最完美的单片机输出驱动电路。
电路见下图。
图中的4N25经过实际测量,当LED的电流大于等于4.5mA时,输出端的光电管即可为Q4提供足够的基极电流。
所以图中的R3,可以使用810~1K的电阻。
==================================
上述的各个电路,都是以扩充单片机的输出电流为主题。
其实,很多数字IC的输出端,都存在扩充电流输出能力的问题,这里给出的电路,是普遍适用的。
这里介绍的8050/8550可以输出1500mA的电流,如果要求更大的输出电流,一种方法更换三极管,另外也可以使用专用大功率驱动器件,如L298,固态继电器,IGBT等等。