资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
单片机 P0 口是双相口,而 P1P2P3 是准双相口。举个例子:相信大家都理解准妈妈,就是怀孕的女人,当然这里也是这样的,就不是真正的双相口了。为什么 P0 是双向口,这里的差别是什么呢?最主要原因是:P0 没有上拉电阻,所以当 P0最 IO 口的时候一定要加上上拉电阻,否则的话,你输出的 1 就是无效了,这样 T2 截止了,那么 P0 都就是呈现高阻状态了。下图分别是 P0,P1P2P3 的读写数据,红线表示输出,蓝线表示输入(读引脚)还有一个就是读锁存器的,没画出来。在读引脚的时候,有一点注意:每当读引脚的时候要确保场效应管 T2 是截止的,否则的话 1(高电平)外部数据读不出来,T2 会把它拉低,所以通过 MOV PX,FFH,把 T2 截止,就完美了。在单片机学习、开发和应用中,IO 口的配置对功能的实现起着重要的作用,下面介绍常见的四种配置,而现在很多单片机都兼有这四种配置,可供选择。一.准双向口配置如下图,当 IO 输出为高电平时,其驱动能力很弱,外部负载很容易将其拉至低电平。当IO 输出为低电平时,其驱动能力很强,可吸收相当大的电流。准双向口有三个上拉晶体管,一个“极弱上拉”,当端锁存器为逻辑“1” 时打开,当端口悬空时, “极弱上拉”将端口上拉至高电平。第二个上拉晶体管为“弱上拉”,当端口锁存器为逻辑“1”且端口本身也为“1”时打开,此上拉提供的电流,使准双向口输出为“1”。如果此时端口被外部装置拉到逻辑 “0”时,通过施密特触发器,控制“弱上拉” 关闭,而“ 极弱上拉”维持开状态,为了把这个端口拉低,外部装置必须有足够的灌电流能力,使管脚上的电压,降到门槛电以下。第三个上拉晶体管为“强上拉”,当端口锁存器由“0”跳变到“1”时,这个上拉用来加快端口由逻辑“0”到逻辑“1”的转换速度。准双向口做为输入时,通个一个施密特触如器和一个非门,用以干扰和滤波。准双向口用作输入时,可对地接按键,如下图 1,当然也可以去掉 R1 直接接按键,当按键闭合时,端口被拉至低电平,当按键松开时,端口被内部“极弱上拉”晶体管拉至高电平。当端口作为输出时,不应对地外接 LED 如图形控制,这样端口的驱动能力很弱,LED 只能发很微弱的光,如果要驱动 LED,要采用图 3 的方法,这样准双向口在输出为低时,可吸收 20mA 的电流,故能驱动 LED。图 4 的方法也可以,不过 LED 不发光时,端口要吸收收很大电流。二.开漏输出配置这种配置,关闭所有上拉晶体管,只驱动下拉晶体管,下拉与准双向口下拉配置相同,因此只能输出低电平(吸收电流) ,和高阻状态。不能输出高电平(输也电流) 。如果要作为逻辑输出,必须接上拉电阻到 VCC。这种配置也可以通过上图 3 和图 4 来驱动 LED。三.推挽输出配置这种配置的下拉与准双向口和开漏配置相同,具有较强的拉电流能力,不同的是,具有持续的强上拉。因此可以用上图 2 的方法来驱动 LED。四.仅为输入配置(高阻配置)这种配置不能输出电流,也不能有收电流,只能作为输入数据使用。以上四种配置各有其特点,在使用中应根据其特点灵活运用。准双向口的最大特点是既可以作为输入,也可以作为输出,不需要通过控制切换。推挽输出的特点是,无论输也高电平还是低电平都有较大的驱动能力,在输也高电平时,也能直接点亮 LED,这在准双向口中是不能办到的。这种配置不宜作为输入,因为这需要外部设备有很强的拉电流的能胃。仅为输入配置的特点是端口只能作为输入使用,可以获得很高的输入阻抗,在有模拟比较器或 ADC 的端口中用得较多。开漏输出配置与准又向口相似,但内部没有上拉电阻。有很好的电气兼容性,外部接上拉电阻到 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 口其中一位的电路图。由图可见,电路中包含一个数据输出锁存器(D 触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1 和T2)和控制电路。这两组口线用来作为 CPU 与外部数据存储器、外部程序存储器和 I/O 扩展口,而不能象 P1、P3 直接用作输出口。它们一起可以作为外部地址总线,P0 口身兼两职,既可作为地址总线,也可作为数据总线。图 1 单片机 P0 口内部一位结构图图 2 单片机 P0 口内部一位结构图P2 口作为外部数据存储器或程序存储器的地址总线的高 8 位输出口 AB8-AB15,P0 口由ALE 选通作为地址总线的低 8 位输出口 AB0-AB7。外部的程序存储器由 PSEN 信号选通,数据存储器则由 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 口常称为准双向口。需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读修改写操作,象 JBC(逻辑判断)、CPL(取反) 、INC(递增)、DEC( 递减)、 ANL(与逻辑)和 ORL(逻辑或)指令均属于这类操作。2.读 P1 口线状态时,打开三态门 G2,将外部状态读入 CPU。 三、P3 口P3 口的电路如图 4 所示,P3 口为准双向口,为适应引脚的第二功能的需要,增加了第二功能控制逻辑,在真正的应用电路中,第二功能显得更为重要。由于第二功能信号有输入输出两种情况,我们分别加以说明。图 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 之间,那么除了要串接一个 14.7k 之间的电阻以外,同时上拉电阻的阻值就可以用的特别大,用100k500K 之间的都行,当然用 10K 的也可以,但是考虑到省电问题,没有必要用那么小的。对于驱动晶体管,又分为 PNP 和 NPN 管两种情况:对于 NPN,毫无疑问 NPN 管是高电平有效的,因此上拉电阻的阻值用 2K20K 之间的,具体的大小还要看晶体管的集电极接的是什么负载,对于 LED 类负载,由于发管电流很小,因此上拉电阻的阻值可以用 20k的,但是对于管子的集电极为继电器负载时,由于集电极电流大,因此上拉电阻的阻值最好不要大于 4.7K,有时候甚至用 2K 的。对于 PNP 管,毫无疑问 PNP 管是
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号