单片机的IO结构以及上下拉

转载 2017年01月03日 13:42:43


(一) IO结构

单片机 IO 口的其中一种“准双向 IO”的内部结构,实际上我们的单片机 IO 口还有另外三种状态,分别是开漏、推挽、高阻态,我们通过图 9-1 来分析下另外这三种状态。

前边我们简单介绍“准双向 IO”的时候,我们是用三极管来说明的,出于严谨的态度,我们这里按照实际情况用 MOS 管画图示意。实际上三极管是靠电流导通的,而 MOS 管是靠电压导通的,具体缘由和它们的内部构造有关系,在这里我们暂且不必关心,如果今后有必要了解可以直接查找模拟电子书或者百度相关资料进行细致学习。在单片机 IO 口状态这一块内容上,我们可以把 MOS 管当三极管来理解。在图 9-1 中,T1 相当于一个 PNP 三极管,T2 相当于一个 NPN 三极管。

其中准双向 IO 口原理已经讲过了,开漏输出和准双向 IO 的唯一区别,就是开漏输出把内部的上拉电阻去掉了。开漏输出如果要输出高电平时,T2 关断,IO 电平要靠外部的上拉电阻才能拉成高电平,如果没有外部上拉电阻 IO 电平就是一个不确定态。标准 51 单片机的P0 口默认就是开漏输出,如果要用的时候外部需要加上拉电阻。而强推挽输出就是有比较强的驱动能力,如图 9-1 中第三张小图,当内部输出一个高电平时,通过 MOS 管直接输出电流,没有电阻的限流,电流输出能力也比较大;如果内部输出一个低电平,那反向电流也可以很大,强推挽的一个特点就是驱动能力强。

单片机 IO 还有一种状态叫高阻态。通常我们用来做输入引脚的时候,可以将 IO 口设置成高阻态,高阻态引脚本身如果悬空,用万用表测量的时候可能是高可能是低,它的状态完全取决于外部输入信号的电平,高阻态引脚对 GND 的等效电阻很大(理论上相当于无穷大,但实际上总是有限值而非无穷大),所以称之为高阻。

(二)上拉下拉电阻

前边似乎我们很多次提到了上拉电阻,下拉电阻,具体到底什么样的电阻算是上下拉电阻,上下拉电阻都有何作用呢?

上拉电阻就是将不确定的信号通过一个电阻拉到高电平,同时此电阻也起到一个限流作用,下拉就是下拉到低电平。

比如我们的 IO 设置为开漏输出高电平或者是高阻态时,默认的电平就是不确定的,外部经一个电阻接到 VCC,也就是上拉电阻,那么相应的引脚就是高电平;经一个电阻到 GND,也就是下拉电阻,那么相应的引脚就是一个低电平。

上拉电阻应用很多,都可以起到什么作用呢?我们现在主要先了解最常用的以下 4 点:

  1. OC 门要输出高电平,必须外部加上拉电阻才能正常使用,其实 OC 门就相当于单片机 IO 的开漏输出,其原理可参照图 9-1 中的开漏电路。
  2. 加大普通 IO 口的驱动能力。标准 51 单片机的内部 IO 口的上拉电阻,一般都是在几十 K 欧,比如 STC89C52 内部是 20K 的上拉电阻,所以最大输出电流是 250uA,因此外部加个上拉电阻,可以形成和内部上拉电阻的并联结构,增大高电平时电流的输出能力。
  3. 在电平转换电路中,比如我们前边讲的 5V 转 12V 的电路中,上拉电阻其实起到的是限流电阻的作用,可以回顾一下图 3-8。
  4. 单片机中未使用的引脚,比如总线引脚,引脚悬空时,容易受到电磁干扰而处于紊乱状态,虽然不会对程序造成什么影响,但通常会增加单片机的功耗,加上一个对 VCC 的上拉电阻或者一个对 GND 的下拉电阻后,可以有效的抵抗电磁干扰。

那么我们在进行电路设计的时候,又该如何选择合适的上下拉电阻的阻值呢?
  1. 从降低功耗的方面考虑应当足够大,因为电阻越大,电流越小。
  2. 从确保足够的引脚驱动能力考虑应当足够小,电阻小了,电流才能大。
  3. 在开漏输出时,过大的上拉电阻会导致信号上升沿变缓。我们来解释一下:实际电平的变化都是需要时间的,虽然很小,但永远都达不到零,而开漏输出时上拉电阻的大小就直接影响了这个上升过程所需要的时间,如图 9-2 所示。想一下,如果电阻很大,而信号频率又很快的话,最终将导致信号还没等上升到高电平就又变为低了,于是信号就无法正确传送了。
图 9-2  上拉电阻阻值对波形的影响
图 9-2  上拉电阻阻值对波形的影响

综合考虑各种情况,我们常用的上下拉电阻值大多选取在 1K 到 10K 之间,具体到底多大通常要根据实际需求来选,通常情况下在标准范围内就可以了,不一定是一个固定的值。

GPIO的上拉下拉功能说明

上拉寄存器是控制对应端口上拉使能的。当对应位为0时,设置对应引脚上拉使能,为1时,禁止对应引脚上拉使能。如果上拉寄存器使能,无论引脚功能寄存器如何设置(输入,输出,数据,中断等),对应引脚输出高电平。...
  • myxmu
  • myxmu
  • 2014年08月29日 14:46
  • 9546

GPIO的上拉下拉功能说明

上拉寄存器是控制对应端口上拉使能的。当对应位为0时,设置对应引脚上拉使能,为1时,禁止对应引脚上拉使能。如果上拉寄存器使能,无论引脚功能寄存器如何设置(输入,输出,数据,中断等),对应引脚输出高电平。...
  • huanggenda568
  • huanggenda568
  • 2012年07月06日 19:17
  • 10939

单片机小白学步系列(二十) IO口原理

IO口操作是单片机实践中最基本最重要的一个知识,本篇花了比较长的篇幅介绍IO口的原理。也是查阅了不少资料,确保内容正确无误,花了很长时间写的。IO口原理原本需要涉及很多深入的知识,而这里尽最大可能做了...
  • jzj1993
  • jzj1993
  • 2014年11月13日 16:08
  • 3409

学习笔记之-51单片机IO口详解

51单片机I/O口的使用  对单片机的控制,其实就是对I/O口的控制,无论单片机对外界进行何种控制,或接受外部的何种控制,都是通过I/O口进行的。51系列单片机有4个I/O端口,每个端口都是8位准双向...
  • gjxman1314
  • gjxman1314
  • 2017年02月11日 17:57
  • 381

单片机的几种IO口配置

在单片机学习、开发和应用中,IO口的配置对功能的实现起着重要的作用,下面介绍常见的四种配置,而现在很多单片机都兼有这四种配置,可供选择。 一.准双向口配置 如下图,当IO输出为高电平时,其驱动能力...
  • ycdhonker
  • ycdhonker
  • 2014年06月07日 10:53
  • 1412

单片机IO口工作方式详细分析

单片机I/O口工作方式基本有以下几类: 1.准双向IO口配置(弱上拉)        小结: 灌电流能力强,拉电流能力弱读外部状态前要先锁存“1”(断开下拉晶体管)读IO口状态的原则是非高即低,只...
  • jbh18401
  • jbh18401
  • 2017年07月25日 10:00
  • 262

关于51单片机IO引脚的驱动能力与上拉电阻

单片机的引脚,可以用程序来控制,输出高、低电平,这些可算是单片机的输出电压。但是,程序控制不了单片机的输出电流。 单片机的输出电流,很大程度上是取决于引脚上的外接器件。单片机输出低电平时,将允许外部器...
  • baidu_33836580
  • baidu_33836580
  • 2016年01月25日 11:44
  • 1358

使用单片机普通IO口模拟串口的三种方法

随着单片机的使用日益频繁,用其作前置机进行采集和通信也常见于各种应用,一般是利用前置 机采集各种终端数据后进行处理、存储,再主动或被动上报给管理站。这种情况下下,采集会需 要一个串口,上报又需要另...
  • niepangu
  • niepangu
  • 2015年03月19日 09:36
  • 5598

单片机中上拉,下拉,开漏三者的区别在哪?作用?原理?

1.驱动能力       关于驱动能力的基本问题我一直都不明白驱动是什么.一般的说驱动一个负载,我想只要你的电压达到了一个阈值,那么就可以驱动这个负载啊,为什么有时候又说驱动能力不够了?为什么说一个没...
  • Pieces_thinking
  • Pieces_thinking
  • 2017年07月19日 11:32
  • 867

5个IO口扫描25个按键的解决方法

在做项目(工程)的时候,我们经常要用到比较多的按键,而且IO资源紧张,于是我们就想方设法地在别的模块中节省IO口,好不容易挤出一两个IO口,却发现仍然不够用,实在没办法了就添加一个IC来扫键。一个IC...
  • q553716434
  • q553716434
  • 2013年03月16日 00:13
  • 1538
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单片机的IO结构以及上下拉
举报原因:
原因补充:

(最多只允许输入30个字)