单片机IO口结构及上拉电阻

发布者:JoyfulJourney最新更新时间:2016-01-06 来源: eefocus关键字:单片机  IO口结构  上拉电阻 手机看文章 扫描二维码
随时随地手机看文章
MCS-51单片机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口身兼两职,既可作为地址总线,也可作为数据总线。

单片机IO口结构及上拉电阻 - 高豪 - gjhsky

图1 单片机P0口内部一位结构图

单片机IO口结构及上拉电阻 - 高豪 - gjhsky

图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。

单片机IO口结构及上拉电阻 - 高豪 - gjhsky

图3 单片机P2口内部一位结构图

    作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。

需要说明的是,作为输入口使用时,有两种情况:

    1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。

    2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。  

  
三、P3口

    P3口的电路如图4所示,P3口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。由于第二功能信号有输入输出两种情况,我们分别加以说明。

单片机IO口结构及上拉电阻 - 高豪 - gjhsky

图4 单片机P0口内部一位结构图

    P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关,P3口的第一功能和P1口一样可作为输入输出端口,同样具有字节操作和位操作两种方式,在位操作模式下,每一位均可定义为输入或输出。

    我们着重讨论P3口的第二功能,P3口的第二功能各管脚定义如下:

    ·P3.0    串行输入口(RXD)
    ·P3.1    串行输出口(TXD)
    ·P3.2    外中断0(INT0)
    ·P3.3    外中断1(INT1)
    ·P3.4    定时/计数器0的外部输入口(T0)
    ·P3.5    定时/计数器1的外部输入口(T1)
    ·P3.6    外部数据存储器写选通(WR)
    ·P3.7    外部数据存储器读选通(RD)

    对于第二功能为输出引脚,当作I/O口使用时,第二功能信号线应保持高电平,与非门开通,以维持从锁存器到输出口数据输出通路畅通无阻。而当作第二功能口线使用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。对于第二功能为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。而作为I/O口线输入端时,取自三态缓冲器的输出端。这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置“1”。  

四、IO口工作原理


    1. P0作为地址数据总线时,T1和T2是一起工作的,构成推挽结构。高电平时,T1打开,T2截止;低电平时,T1截止,T2打开。这种情况下不用外接上拉电阻.而且,当T1打开,T2截止,输出高电平的时候,因为内部电源直接通过T1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以"驱动8个TTL负载"的原因。

    2. P0作为一般端口时,T1就永远的截止,T2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平;要输出高电平,T2就截止,P0口就没有输出了,(注意,这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1。

    3. 其他端口P1、P2和P3,在内部直接将P1口中的T1换成了上拉电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。

    4. 在某个时刻,P0口上输出的是作为总线的地址数据信号还是作为普通I/O口的电平信号,是依靠多路开关MUX来切换的。而MUX的切换,又是根据单片机指令来区分的。当指令为外部存储器/IO口读/写时,比如 MOVX A,@DPTR ,MUX是切换到地址/数据总线上;而当普通MOV传送指令操作P0口时,MUX是切换到内部总线上的。

    5. P0、P1、P2、P3口用于输入时,需要写1使IO下拉的MOS管截止,以免MOS管导通将输入拉底为0,当一直用于输入时不用置1(先使用该IO输出,该IO锁存器里可能是0,再用该IO输入则会使MOS管导通),将IO写1后,该IO锁存器不会变了,所以再一直用于输入不用置1。p0用于地址数据线时输入不用写1,因为MUX没和锁存器相连。

PS:
    Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called “quasi- bidirectional” ports.

    因为端口1、2、3有固定的内部上拉,所以有时候他们被称为"准双向"口。

    Port 0, on the other hand, is considered “true” bidirectional, because when configured as an input it floats.

    端口0, 从另外一方面来说,就被 认为是"真正的"双向,因为当它被设置为输入的时候是浮空(高阻态)的。

五、P0口上拉电阻选择

    如果是驱动led,那么用1K左右的就行了。如果希望亮度大一些,电阻可减小,最小不要小于200欧姆,否则电流太大;如果希望亮度小一些,电阻可增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超过3K以上时,亮度就很弱了,但是对于超高亮度的LED,有时候电阻为10K时觉得亮度还能够用。我通常就用1k的。

    对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和VCC之间,那么除了要串接一个1——4.7k之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k~500K之间的都行,当然用10K的也可以,但是考虑到省电问题,没有必要用那么小的。

    对于驱动晶体管,又分为PNP和NPN管两种情况:对于NPN,毫无疑问NPN管是高电平有效的,因此上拉电阻的阻值用2K~20K之间的,具体的大小还要看晶体管的集电极接的是什么负载,对于LED类负载,由于发管电流很小,因此上拉电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至用2K的。对于PNP管,毫无疑问PNP管是低电平有效的,因此上拉电阻的阻值用100K以上的就行了,且管子的基极必须串接一个1~10K的电阻,阻值的大小要看管子集电极的负载是什么,对于LED类负载,由于发光电流很小,因此基极串接的电阻的阻值可以用20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此基极电阻的阻值最好不要大于4.7K。

    对于驱动TTL集成电路,上拉电阻的阻值要用1~10K之间的,有时候电阻太大的话是拉不起来的,因此用的阻值较小。但是对于CMOS集成电路上拉电阻的阻值就可以用的很大,一般不小于20K,我通常用100K的,实际上对于CMOS电路,上拉电阻的阻值用1M的也是可以的,但是要注意上拉电阻的阻值太大的时候,容易产生干扰,尤其是线路板的线条很长的时候,这种干扰更严重,这种情况下上拉电阻不宜过大,一般要小于100K,有时候甚至小于10K。


关键字:单片机  IO口结构  上拉电阻 引用地址:单片机IO口结构及上拉电阻

上一篇:用单片机做显示器信号发生器
下一篇:浅谈单片机调试方法

推荐阅读最新更新时间:2024-03-16 14:42

应用于仪表板控制及车身控制的新一代MCU技术
在汽车电子的各个系统当中,往往需要采用微控制器(MCU)做为运作控制的核心,而汽车对电子系统的倚重,也刺激车用微控制器市场的快速成长。车用微控器涵盖8位、16位、32位等低、中、高阶产品等级,各有其适合的应用系统,大致如下: 8位MCU:主要应用于车体的各个次系统,包括风扇控制、空调控制、雨刷、天窗、车窗升降、低阶仪表板、集线盒、座椅控制、门控模块等较低阶的控制功能。 16位MCU:主要应用为动力传动系统,如引擎控制、齿轮与离合器控制,和电子式涡轮系统等;也适合用于底盘机构上,如悬吊系统、电子式动力方向盘、扭力分散控制,和电子帮浦、电子剎车等。 32位MCU:主要应用包括仪表板控制、车身控制、多媒体信息系统(Telem
[嵌入式]
基于SE8510的MCU的供电问题解决方案
  1.基于SE8510的反激式隔离电源设计   图1是SE8510反激式隔离电源系统原理图,SE8510是离线式隔离原边控制反激LED驱动控制IC.SE8510使用了一个坚固的高压隔离工艺能够承受一个输入电压达450 v的冲击,具有8-450V的宽输入电压范围。因此SE8510可以通过主线输入电压直接驱动,简化变压器的设计过程。具有准确的LED调节功能,PWM调节控制,开短路保护,过温保护等多功能。使整体应用设计比以往的方案设计变的更加简单。     图1:SE8510反激式隔离电路图   2.支持PWM调节输出电流,改变LED亮度   PWM调光通过PIN DIM加一个低频方波信号就可以实现。当PWM信号为零,门
[单片机]
基于SE8510的<font color='red'>MCU</font>的供电问题解决方案
LED点阵显示系统设计方案
在车站、商场、学校等一些需要发布多变的实时信息或进行广告宣传的场所,黑板、纸张或是霓虹灯广告牌这些传统的媒介手段,不论是在 显示 效果还是可修改性上都已无法满足当前的需求。而 LED点阵 显示屏 具有耗电省、成本低、寿命长、占用空间小以及能够实时显示等特点,而且显示内容的信息量大,用户可随时任意自行编辑修改显示内容,因此,近年来已得到了广泛应用。 一、总体设计   系统采用了上位机——下位机的结构构建,上位机为 PC机,通过串行 通信 接口 与下位机显示系统进行通信 ,以实现对显示内容的实时擦除、更新等操作;下位机系统主要包括单片机控制电路和显示电路两部分,汉字显示采用 16x16点阵模式,通过单片机的控制,实现字符从右往左
[电源管理]
LED点阵显示系统设计方案
CPLD器件在单片机控制器中的使用
自动控制的对象五花八门、品种繁多,要求控制器能够模块化、标准化、灵活配置;进入商品经济时代,允许设计者的开发周期越来越短,从几年、几月缩短到几月、几天;有时合同临近结束前,用户还会提出更改设计条款的要求。因此,需要设计者开发出适应性强、便于修改、配置灵活的控制器,以满足用户需求,争得商机。 从成本考虑,有时以单片机为核心器件,量身度造地为被控对象设计专用控制器,仍是一种较好的选择。 CPLD器件与单片机结合优势互补、相得益彰 单片机的一些优缺点 单片机具有强大的信息处理、逻辑分析、决策判断等能力,借助程序,通过输入/输出接口,实时检测被控对象的状态,控制其当前或预计的行为,组成智能化仪器设备。 但是,单片机存在不可克服的
[单片机]
CPLD器件在<font color='red'>单片机</font>控制器中的使用
单片机指针说到黑客程序
2004年7月的一天,在电子BBS讨论区上溜达,看到一个有趣的帖子,整个帖子内容如下: 纯C51复位功能函数:一个大三学生,让人又爱又怕 现单列复位部分如下: main() { unsigned char code rst ={0xe4,0xc0,0xe0,0xc0,0xe0,0x32}; // 复位代码 (*((void (*)())(rst)))(); // 执行上一行代码,将rst数组当函数调用 } 本来我告诉他嵌入如下代码: clr a push acc push acc reti 结果他却玩了前面哪一段,而数组rst 中的内容恰恰是上面的汇编机器码,他的做法是将 rst数组的数据当作代码保
[单片机]
电子器件的“中控室”:单片机MCU详解
上一篇 文章介绍了嵌入式系统的组成部分。其中提到了单片机MCU,其实它也是一个小系统,它是控制电子产品的大脑。现如今,我们生活中的许多电器都含有单片机。例如:手机、电视机、冰箱、洗衣机、以及开关、LED等。那么,什么是单片机?它在这些电器中究竟做了些什么呢?以及是如何构成的? 它是如何诞生的 单片机诞生于1971年,经历SCM、MCU、SoC三大阶段。单片机由以前的1位、4位、8位、16位。早期的单片机都是4位或8位。其中最成功的是英特尔的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。 随着工业控制领域要求的
[单片机]
电子器件的“中控室”:<font color='red'>单片机</font><font color='red'>MCU</font>详解
12课:单片机逻辑运算类指令
对单片机的累加器A的逻辑操作: CLR A ;将A中的值清0,单周期单字节指令,与MOV A,#00H效果相同。 CPL A ;将A中的值按位取反 RL A ;将A中的值逻辑左移 RLC A ;将A中的值加上进位位进行逻辑左移 RR A ;将A中的值进行逻辑右移 RRC A ;将A中的值加上进位位进行逻辑右移 SWAP A ;将A中的值高、低4位交换。 例:(A)=73H,则执行CPL A,这样进行: 73H化为二进制为01110011, 逐位取反即为 10001100,也就是8CH。 RL A是将(A)中的值的第7位送到第0位,第0位送1位,依次类推。 例:A中的值为68H,执行RL A。68H化为二进制为0110100
[单片机]
51单片机IO模拟PWM控制舵机转向
本例程晶振为32M #include reg52.h #define uint unsigned int void drive(); void delay(uint); sbit pwm=P2^0; uint set; //set为舵机转角标志位 unsigned char angle; //angle为舵机PWM变化打角 void Time0_Init() //中断初始化 { TMOD=0X01; IE=0X82; TH0=(65536-58)/256; TL0=(65536-58)%6; TR0=1; } void main() //主函数 { set=0; angle=23; // 改变a
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved