0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

p0口为什么接上拉电阻

工程师 来源:网络整理 作者:h1654155205.5246 2018-08-22 17:16 次阅读

单片机P0端口的结构及工作原理

P0端口8位中的一位结构图见下图:

p0口为什么接上拉电阻

由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与门及场效应管驱动电路构成。再看图的右边,标号为P0.X引脚的图标,也就是说P0.X引脚可以是P0.0到P0.7的任何一位,即在P0口有8个与上图相同的电路组成。

单片机端口上拉电阻的作用

顾名思义,上拉就是把电平拉高(一般到电源),下拉就是拉低(一般到地)。上拉主要是为了提高灌电流驱动能力,相当于从电源借点儿功率到IO口,下拉主要是在IO口功率足够的情况下,为了保护IO口,静态时为0电平。

对于不同的单片机和端口,上拉电阻的作用不同,最常见的由于内部结构的问题,不能处于悬空状态。我就以51单片机进行叙述,以其P0口为例,P0口是集电极开路输出,也就是OC门,这种结构没有输出高电平的能力就相当于一个一端接地的开关, 按下去就输出低电平0V,断开就没有电压,是悬空状态。至于用不用上拉电阻,取决于外部电路,如果要输出高电平控制一个器件,而这个器件本身又没有内置上拉,就必须自己接一个上拉电阻,如果要用低电平控制一个器件,则可以不用加上拉。一般来讲,做板子时都会在P0口放一个排阻,10Kohm就可以了。

P0口作为I/O口输出的时候时,输出低电平为0 输出高电平为高组态(并非5V,相当于悬空状态,也就是说P0 口不能真正的输出高电平)。给所接的负载提供电流,因此必须接上拉电阻(一电阻连接到VCC),由电源通过这个上拉电阻给负载提供电流。P0作输入时不需要上拉电阻,但要先置1。因为P0口作一般I/O口时上拉场效应管一直截止,所以如果不置1,下拉场效应管会导通,永远只能读到0。因此在输入前置1,使下拉场效应管截止,端口会处于高阻浮空状态,才可以正确读入数据。

单片机p0口为什么要加上拉电阻

P0口内部没有上拉电阻,是开漏的,不管它的驱动能力多大,相当于它是没有电源的,需要外部的电路提供,绝大多数情况下P0口是必需加上拉电阻的。

P0口和其它三个口的内部电路是不同的,如下图:

p0口为什么接上拉电阻

P0口是接在两个三极管D0和D1之间的,而P1-P3口的上部是接一个电阻的。P0口的上面那个三极管D0是在进扩展存储器或扩展总线时使用MOVX指令时才会控制它的导通和截止,在不用此指令时都是截止的。在平常我们使用如:P0_1=0P0_1=1这些语句时控制的都是下面那个三极管D1。

我们先假设P1口接一个74HC373,来看一看它的等效图

p0口为什么接上拉电阻  

当AT89S51的P1口上接了74HC373后就等于接了一个负载,如上图右边。一般来说这些数字电路的输入阻抗都很大,都在几百K到上兆欧姆,而P1口内的电阻R一般在几十K以内。

p0口为什么接上拉电阻

如上图,当我们发出指令P1=0时,三极管D导通,见中间的等效图,这时P1点的电位为0。

当发出P1=1的指令后,三极管D截止,见右边等效图,因为Rx的阻值要比R的阻值大得多,因此P1点的电位是接近电源电压的。即高电平。

我们再来看看P0口接负载时的图

p0口为什么接上拉电阻

当P0=0时,等效图是中间的,三极管D1导通,P0点的电位为0。

而当P0=1时,等效图是右边的,三极管D1截止,而上面的三极管D0始终是截止的,这样P0点就等效于悬空了,它处在不稳定状态,P0点又是RX的高阻抗输入点,很容易受到外界和周围电路的干扰从而直接影响到74HC373的输出状态。因此就得加上个电阻。如下图

p0口为什么接上拉电阻

加上电阻Rc后,电路的状态就和P1口一样了,这个电阻Rc就是上拉电阻。

但你如果只是为了让P0口驱动个发光管,那电路可以直接简化成下图那样。S51内部的电流最好不超过15mA,如果发光管的电压为2.2V那电阻就是(5-2.2)÷15=0.18K,也就是180欧姆。

p0口为什么接上拉电阻

当P0=0时P0点为低电位,发光管亮起,流过D1的电流约为15mA。

当P0=1时,P0点为悬空,但发光管和180欧电阻都是低阻抗元件,P点电位就为高电位,再说也无任何输出影响,因此这样电路是可以的

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620854
  • 上拉电阻
    +关注

    关注

    5

    文章

    345

    浏览量

    30259
收藏 人收藏

    评论

    相关推荐

    stm32G031串口外部不接上电阻,导致stm32进入到了硬件中断怎么解决?

    stm32G031使用串口和另一其他芯片交互,外部直连,未接上电阻,导致stm32进入到了硬件中断
    发表于 03-13 07:59

    请为cx3的io没有内部上电阻或下拉电阻吗?

    ,CyU3PGpioSetValue,在配置参数里CyU3PGpioSimpleConfig_t的结构里,没有看到此io是否可以配置内部上或下拉电阻。请为cx3的io没有内部上
    发表于 02-28 06:25

    ADUC7061设置DAC值,P0设置成GPIO和模拟输入,为什么会报错呢?

    ADUC7061如果我设置DAC值,P0设置成GPIO和模拟输入,本来是两个互相没关联的功能模块,居然会出错。 GP0KEY1 = 0x7; GP
    发表于 01-11 07:03

    地址送到P0P2后,程序执行的时序是ALE的脉冲产生的吗?

    地址送到P0P2后,程序执行的时序是ALE的脉冲产生的吗
    发表于 11-09 08:30

    请问51的P0什么时候要上电阻什么时候不需要?

    求教大神,51的P0什么时候要上电阻什么时候不需要呢?
    发表于 11-09 08:02

    为什么51的P0是8个引脚?

    为什么51的P0是8个引脚,P1也是8个引脚,为什么都是八个引脚
    发表于 11-01 07:51

    89C51P0--P3结构有什么不同?

    P0是开漏的,可以实现线与功能,可做为地址总线,可以作为地址总线的低八位,P1是普通IO(有些单片机有特殊功能比如AD,PWM),
    发表于 10-27 06:32

    keil总是显示p0未定义应该怎么解决?

    keil中总是显示p0未定义应该怎么解决?
    发表于 10-18 07:34

    请问51单片机P0接上电阻会不会直接驱动负载?

    51单片机P0接上电阻会不会直接驱动负载?
    发表于 10-17 07:20

    开漏输出模式下不外接上电阻有驱动能力吗?

    开漏输出模式下不外接上电阻有驱动能力吗
    发表于 10-15 13:28

    1602液晶对单片机P0有影响,会全部低的原因?

    为什么p0的led流水灯效果在插上1602液晶后,液晶会将p0全部低,导致p0
    发表于 10-08 08:10

    如果想51单片机最小系统P0有多个功能,锁存器又是如何的呢?

    51单片机与51单片机最小系统有什么区别;如果想51单片机最小系统P0有多个功能,锁存器又是如何的
    发表于 09-28 06:41

    I2C为什么要接上电阻

    I2C为什么要接上电阻?因为它是开漏输出。
    发表于 07-08 16:14 1145次阅读
    I2C为什么要<b class='flag-5'>接上</b>拉<b class='flag-5'>电阻</b>?

    M051可以整体给P0赋值吗?

    M051可以整体给P0赋值吗?怎么例程都是单个I/O的,我现在用P0P0.0~
    发表于 06-19 07:48

    今日说“法”:上、下拉电阻那点事

    ) 。 一般来说上或下拉电阻的作用是增大电流,加强电路的驱动能力。比如说51的p1,还有,p0
    发表于 05-18 17:30