双向io口与准双向io口的区别

上传人:wt****50 文档编号:33947538 上传时间:2018-02-19 格式:DOC 页数:8 大小:155.50KB
返回 下载 相关 举报
双向io口与准双向io口的区别_第1页
第1页 / 共8页
双向io口与准双向io口的区别_第2页
第2页 / 共8页
双向io口与准双向io口的区别_第3页
第3页 / 共8页
双向io口与准双向io口的区别_第4页
第4页 / 共8页
双向io口与准双向io口的区别_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《双向io口与准双向io口的区别》由会员分享,可在线阅读,更多相关《双向io口与准双向io口的区别(8页珍藏版)》请在金锄头文库上搜索。

1、单片机 P0 口是双相口,而 P1P2P3 是准双相口。举个例子:相信大家都理解准妈妈,就是怀孕的女人,当然这里也是这样的,就不是真正的双相口了。为什么 P0 是双向口,这里的差别是什么呢?最主要原因是:P0 没有上拉电阻,所以当 P0最 IO 口的时候一定要加上上拉电阻,否则的话,你输出的 1 就是无效了,这样 T2 截止了,那么 P0 都就是呈现高阻状态了。下图分别是 P0,P1P2P3 的读写数据,红线表示输出,蓝线表示输入(读引脚)还有一个就是读锁存器的,没画出来。在读引脚的时候,有一点注意:每当读引脚的时候要确保场效应管 T2 是截止的,否则的话 1(高电平)外部数据读不出来,T2

2、会把它拉低,所以通过 MOV PX,FFH,把 T2 截止,就完美了。在单片机学习、开发和应用中,IO 口的配置对功能的实现起着重要的作用,下面介绍常见的四种配置,而现在很多单片机都兼有这四种配置,可供选择。一.准双向口配置如下图,当 IO 输出为高电平时,其驱动能力很弱,外部负载很容易将其拉至低电平。当IO 输出为低电平时,其驱动能力很强,可吸收相当大的电流。准双向口有三个上拉晶体管,一个“极弱上拉”,当端锁存器为逻辑“1” 时打开,当端口悬空时, “极弱上拉”将端口上拉至高电平。第二个上拉晶体管为“弱上拉”,当端口锁存器为逻辑“1”且端口本身也为“1”时打开,此上拉提供的电流,使准双向口输

3、出为“1”。如果此时端口被外部装置拉到逻辑 “0”时,通过施密特触发器,控制“弱上拉” 关闭,而“ 极弱上拉”维持开状态,为了把这个端口拉低,外部装置必须有足够的灌电流能力,使管脚上的电压,降到门槛电以下。第三个上拉晶体管为“强上拉”,当端口锁存器由“0”跳变到“1”时,这个上拉用来加快端口由逻辑“0”到逻辑“1”的转换速度。准双向口做为输入时,通个一个施密特触如器和一个非门,用以干扰和滤波。准双向口用作输入时,可对地接按键,如下图 1,当然也可以去掉 R1 直接接按键,当按键闭合时,端口被拉至低电平,当按键松开时,端口被内部“极弱上拉”晶体管拉至高电平。当端口作为输出时,不应对地外接 LED

4、 如图形控制,这样端口的驱动能力很弱,LED 只能发很微弱的光,如果要驱动 LED,要采用图 3 的方法,这样准双向口在输出为低时,可吸收 20mA 的电流,故能驱动 LED。图 4 的方法也可以,不过 LED 不发光时,端口要吸收收很大电流。二.开漏输出配置这种配置,关闭所有上拉晶体管,只驱动下拉晶体管,下拉与准双向口下拉配置相同,因此只能输出低电平(吸收电流) ,和高阻状态。不能输出高电平(输也电流) 。如果要作为逻辑输出,必须接上拉电阻到 VCC。这种配置也可以通过上图 3 和图 4 来驱动 LED。三.推挽输出配置这种配置的下拉与准双向口和开漏配置相同,具有较强的拉电流能力,不同的是,

5、具有持续的强上拉。因此可以用上图 2 的方法来驱动 LED。四.仅为输入配置(高阻配置)这种配置不能输出电流,也不能有收电流,只能作为输入数据使用。以上四种配置各有其特点,在使用中应根据其特点灵活运用。准双向口的最大特点是既可以作为输入,也可以作为输出,不需要通过控制切换。推挽输出的特点是,无论输也高电平还是低电平都有较大的驱动能力,在输也高电平时,也能直接点亮 LED,这在准双向口中是不能办到的。这种配置不宜作为输入,因为这需要外部设备有很强的拉电流的能胃。仅为输入配置的特点是端口只能作为输入使用,可以获得很高的输入阻抗,在有模拟比较器或 ADC 的端口中用得较多。开漏输出配置与准又向口相似

6、,但内部没有上拉电阻。有很好的电气兼容性,外部接上拉电阻到 3V 电源,就能和 3V 逻辑器件连接。外部接上拉电阻到 5V 电源,就要以和 5V 器件连接。需要说明的是以上四种配置均可以作为输入,也就是都可以检测端的逻辑状态,但其特性不同,不是每种配置都可以直接接按键。=下面通过 51 的 IO 口介绍各种状态的工作原理MCS-51 有 4 组 8 位 I/O 口:P0、P1、P2 和 P3 口,P1、P2 和 P3 为准双向口,P0 口则为双向三态输入输出口,下面我们分别介绍这几个口线。一、P0 口和 P2 口图 1 和图 2 为 P0 口和 P2 口其中一位的电路图。由图可见,电路中包含一

7、个数据输出锁存器(D 触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1 和T2)和控制电路。这两组口线用来作为 CPU 与外部数据存储器、外部程序存储器和 I/O 扩展口,而不能象 P1、P3 直接用作输出口。它们一起可以作为外部地址总线,P0 口身兼两职,既可作为地址总线,也可作为数据总线。图 1 单片机 P0 口内部一位结构图图 2 单片机 P0 口内部一位结构图P2 口作为外部数据存储器或程序存储器的地址总线的高 8 位输出口 AB8-AB15,P0 口由ALE 选通作为地址总线的低 8 位输出口 AB0-AB7。外部的程序存储器由 PSEN 信号选通,数据存储器则由

8、WR 和 RD 读写信号选通,因为 216=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 口常称为准双向口。需要

9、说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读修改写操作,象 JBC(逻辑判断)、CPL(取反) 、INC(递增)、DEC( 递减)、 ANL(与逻辑)和 ORL(逻辑或)指令均属于这类操作。2.读 P1 口线状态时,打开三态门 G2,将外部状态读入 CPU。 三、P3 口P3 口的电路如图 4 所示,P3 口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。由于第二功能信号有输入输出两种情况,我们分别加以说明。图 4 单片机 P0 口内部一位结构图P3 口的输入输出及 P3 口锁

10、存器、中断、定时/计数器、串行口和特殊功能寄存器有关,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 口使用

11、时,第二功能信号线应保持高电平,与非门开通,以维持从锁存器到输出口数据输出通路畅通无阻。而当作第二功能口线使用时,该位的锁存器置高电平,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。对于第二功能为输入的信号引脚,在口线上的输入通路增设了一个缓冲器,输入的第二功能信号即从这个缓冲器的输出端取得。而作为 I/O 口线输入端时,取自三态缓冲器的输出端。这样,不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线均应置“1”。 四、IO 口工作原理1. P0 作为地址数据总线时,T1 和 T2 是一起工作的,构成推挽结构。高电平时,T1 打开,T2 截

12、止;低电平时,T1 截止,T2 打开。这种情况下不用外接上拉电阻.而且,当 T1 打开,T2 截止,输出高电平的时候,因为内部电源直接通过 T1 输出到 P0 口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以 驱动 8 个 TTL 负载的原因。2. P0 作为一般端口时,T1 就永远的截止,T2 根据输出数据 0 导通和 1 截止,导通时拉地,当然是输出低电平;要输出高电平,T2 就截止,P0 口就没有输出了,(注意,这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平 1。3. 其他端口 P1、P2 和 P3,在内部直接将 P1 口中的 T1 换成了上拉

13、电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。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

14、(先使用该 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, i

15、s considered “true” bidirectional, because when configured as an input it floats.端口 0, 从另外一方面来说,就被 认为是真正的双向,因为当它被设置为输入的时候是浮空(高阻态) 的。五、P0 口上拉电阻选择如果是驱动 led,那么用 1K 左右的就行了。如果希望亮度大一些,电阻可减小,最小不要小于 200 欧姆,否则电流太大;如果希望亮度小一些,电阻可增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超过 3K 以上时,亮度就很弱了,但是对于超高亮度的 LED,有时候电阻为 10K 时觉得亮度还能够用。

16、我通常就用 1k 的。 对于驱动光耦合器,如果是高电位有效,即耦合器输入端接端口和地之间,那么和 LED的情况是一样的;如果是低电位有效,即耦合器输入端接端口和 VCC 之间,那么除了要串接一个 14.7k 之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k500K 之间的都行,当然用 10K 的也可以,但是考虑到省电问题,没有必要用那么小的。对于驱动晶体管,又分为 PNP 和 NPN 管两种情况:对于 NPN,毫无疑问 NPN 管是高电平有效的,因此上拉电阻的阻值用 2K20K 之间的,具体的大小还要看晶体管的集电极接的是什么负载,对于 LED 类负载,由于发管电流很小,因此上拉电阻的阻值可以用 20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于 4.7K,有时候甚至用 2K 的。对于 PNP 管,毫无疑问 PNP 管是

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号