很多网友都问我AT89S51的P0口为什么要接一个上拉电阻。我就用一个篇幅来说一说

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

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


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

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

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


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

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

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

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

自制单片机之十……AT89S51的上拉电阻问题的更多相关文章

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

    单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. 单片机的输出电流,很大程度上是取决于引脚上的外接器件. 单片机输出低电平时,将允许外部 ...

  2. 关于51单片机IO引脚的驱动能力与上拉电阻设计方案

    转载自:http://bbs.dianyuan.com/article/20312-2 单片机的引脚,可以用程序来控制,输出高.低电平,这些可算是单片机的输出电压.但是,程序控制不了单片机的输出电流. ...

  3. MOS管、PCB、H桥、步进电机驱动电路、51单片机的IO口驱动能力、灌电流、拉电流、上拉电阻的选择

    嵌入式开发PCB设计几点体会(转载):http://bbs.ednchina.com/BLOG_ARTICLE_3021801.HTMCollector-Emitter Saturation Volt ...

  4. P0口上拉电阻选择

    如果是驱动led,那么用1K左右的就行了.如果希望亮度大一些,电阻可减小,最小不要小于200欧姆,否则电流太大:如果希望亮度小一些,电阻可增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超 ...

  5. I2C上拉电阻

    在一些PCB的layout中,大家往往会看到在I2C通信的接口处,往往会接入一个4.7K的电阻,有的datasheet上面明确有要求,需要接入,有的则没有要求.   I2C接口 对于单片机来讲,有些I ...

  6. STM32F407读编码器没上拉电阻遇见的问题

    在调试之前由于本科阶段参加飞思卡尔智能汽车的竞赛,一直在使用与竞赛相关的单片机和编码器,后来由于工程的需要开始使用STM32的板子,在调试编码器的时候遇见了,使用了STM32的官方标准库中的定时器正交 ...

  7. I2C 上拉电阻选择计算公式

    I2C接口上拉电阻的选择 - I2C接口上拉电阻的选择 1.I2C接口的输出端是漏极开路或集电极开路,所以必须在接口外接上拉. 2.上拉电阻的范围很宽,但也需要跟据功耗.信号上升时间等具体确定. 和速 ...

  8. 关于XILINX芯片IO管脚的上拉电阻的疑问

    XILINX的每个IO脚都有一个可选的可配上拉电阻功能,现在我在配置文件的UCF里使用了这个上拉电阻:语法如下:NET"I_key_data"        LOC = " ...

  9. Altera FPGA管脚弱上拉电阻详细设置方法

    Altera FPGA管脚弱上拉电阻的软件设置方法 在使用 Altera 的 FPGA 时候, 由于系统需求, 需要在管脚的内部加上上拉电阻. Quartus II 软件中在 Assignment E ...

随机推荐

  1. [原创]Python入门到简单网站目录扫描器编写(上)

    1.字符串,整型,浮点型.区别以及用法 |------字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 可以不严格的说,你可以认为引号包括的,都属于字符串 ...

  2. C++ primer 中文第三版 阅读笔记 第八章

    一.寄存器对象: 函数中频繁被使用的变量可以加上register就可声明为寄存器对象.对于寄存器对象,假如能够放到寄存器中就会放到寄存器中,放不到的话就放到内存中.比如 register int  a ...

  3. QML设计登陆界面

    QML设计登陆界面 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5.2 说明: 用QML设计一个应用的登陆界面 ...

  4. CH BR8(小学生放假了-clock()/CLOCKS_PER_SEC-斜率优化常错集锦)

    小学生放假了 总时限 26s 内存限制 256MB 出题人 zsyzzsoft 提交情况 16/150 初始分值 1500 锁定情况 背景 我们能见到的最可怕的事情,莫过于小学生放假了! 描述 小学生 ...

  5. Socket 理解

    TCP/IP要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协 ...

  6. JAVA--聊天界面面板

    package windows.beautify; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event ...

  7. C#生成Code39(extend)条形码【非条形码字体】

    Code39是条形码的一种.由于编制简单.能够对任意长度的数据进行编码.支持设备广泛等特性而被广泛采用. 能够对任意长度的数据进行编码.其局限在于印刷品的长度和条码阅读器的识别范围. 支持设备广泛.目 ...

  8. ZOJ3557 How Many Sets II( Lucas定理)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud How Many Sets II Time Limit: 2 Seconds    ...

  9. ON UPDATE CURRENT_TIMESTAMP

    CREATE TABLE time1 (   id SMALLINT,   time1 TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TI ...

  10. ajax初学

    //参数说明url:请求文件地址//fnSucc:请求成功执行的函数,请求成功的条件为readyState状态码为4:且status状态码为200,status状态为浏览器请求返回的状态码//在fnS ...