单片机IO口结构及工作原理.docx

上传人:scccc 文档编号:13928698 上传时间:2022-01-26 格式:DOCX 页数:12 大小:337.58KB
返回 下载 相关 举报
单片机IO口结构及工作原理.docx_第1页
第1页 / 共12页
单片机IO口结构及工作原理.docx_第2页
第2页 / 共12页
单片机IO口结构及工作原理.docx_第3页
第3页 / 共12页
单片机IO口结构及工作原理.docx_第4页
第4页 / 共12页
单片机IO口结构及工作原理.docx_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《单片机IO口结构及工作原理.docx》由会员分享,可在线阅读,更多相关《单片机IO口结构及工作原理.docx(12页珍藏版)》请在三一文库上搜索。

1、单片机10 口结构及工作原理一、P0端口的结构及工作原理P0端口 8位中的一位结构图见下图:由上图可见,P0端口由锁存器、输入缓冲器、切换开关、一个与非门、一个与 门及场效应管驱动电路构成。下面,先分析组成P0 口的各个部分:先看输入缓冲器:在P0 口中,有两个三态的缓冲器,在其的输出端可以是高电 平、低电平,同时还有一种就是高阻状态(或称为禁止状态),上面一个是读 锁存器的缓冲器,下面一个是读引脚的缓冲器,读取PO.X引脚上的数据,要使 这个三态缓冲器有效,引脚上的数据才会传输到内部数据总线上。D锁存器:在51单片机的32根I/O 口线中都是用一个D触发器来构成锁存器 的。D端是数据输入端,

2、CP是控制端(也就是时序控制信号输入端),Q是输 出端,Q非是反向输出端。多路开关:在51单片机中,不需要外扩展存储器时,P0 口可以作为通用的输 入输出端口(即I/O)使用,对于8031 (内部没有ROM)的单片机或者编写的 程序超过了单片机内部的存储器容量,需要外扩存储器时,P0 口就作为,地址/ 数据总线使用。这个多路选择开关就是用于选择是做为普通I/O 口使用还是作 为,数据/地址,总线使用的选择开关了。当多路开关与下面接通时,P0 口是作为 普通的I/O 口使用的,当多路开关是与上面接通时,P0 口是作为,地址/数据,总 线使用的。输出驱动部份:P0 口的输出是由两个MOS管组成的推

3、拉式结构,也就是说, 这两个MOS管一次只能导通一个,当V1导通时,V2就截止,当V2导通时, V1截止。P0 口作为I/。端口使用时,多路开关的控制信号为0 (低电平),V1管截止, 多路开关是与锁存器的Q非端相接的(即P0 口作为I/O 口线使用)o作为地址 /数据线使用时,多路开关的控制信号为1, V1管由地址/数据线决定,多路开关 与地址/数据线连接。输出过程:1、I/O输出工作过程:当写锁存器信号CP有效,数据总线的信号T锁存器的 输入端D-锁存器的反向输出Q非端-多路开关-V2管的栅极-V2的漏极到 输出端PO.X。这时多路开关的控制信号为低电平0, V1管是截止的,所以作为 输出

4、口时,P0是漏极开路输出,类似于OC门,当驱动上接电流负载时,需要 外接上拉电阻。下图就是由内部数据总线向P0 口输出数据的流程图(红色箭头)。地址/数据*vccI控制信号CO, 1)P0.X脚使存器内部总线一写银存踹读引脚http:/www zsMCU. com多路开关P0 口由内部数据电线向引 脚输 出时的流程2、地址输出过程控制信号为1,地址信号为“0”时,与门输出低电平,V1管截止;反相器输出高 电平,V2管导通,输出引脚的地址信号为低电平。读引脚http /www zsMCU comPO口作为地址线,控制信号为1.地址信号力0时的工作流租图地址/数据11门勺;+VCC内部总线写锁存器

5、P0. X脚钺存器输出为高电平读引脚4-http /www zsMCU.多路开关com反之,控制信号为“1”、地址信号为“与门”输出为高电平,V1管导通;反 相器输出低电平,V2管截止,输出引脚的地址信号为高电平。请看下图(兰色 字体为电平):P0口作为地址线,控制信号为1,地址信号为1时的工作流租图可见,在输出“地址/数据”信息时,V1、V2管是交替导通的,负载能力很强,可 以直接与外设存储器相连,无须增加总线驱动器。3、作为数据总线的输出过程如果该指令是输出数据,如MOVX DPTR, A (将累加器的内容通过P0 口 数据总线传送到外部RAM中),则多路开关“控制”信号为十,“与门”解锁

6、,与 输出地址信号的工作流程类似,数据据由“地址/数据“线反相器-V2场效应管 栅极-V2漏极输出。输入过程:1、I/O读引脚工作过程:读芯片引脚上的数据时,读引脚缓冲器打开,通过内部数据总线输入,请看 下图(红色简头)。P0 口读引脚时的流程图2、I/O读锁存器工作过程:通过打开读锁存器三态缓冲器读取锁存器输出端Q的状态,请看下图(红色箭 头):内部总线写镣存器PO. X脚锁存器地址/数据控制信9(0、1)+VCC读引脚http:/www. zsMCU. com步路开关P0 口读锁存器时的流程图3、地址/数据时读指令码和数据过程作为数据总线使用。在访问外部程序存储器时,P0 口输出低8位地址

7、信息后, 将变为数据总线,以便读指令码(输入)。在取指令期间,“控制”信号为“0”, V1管截止,多路开关也跟着转向锁存器反相输出端Q非;CPU自动将0FFH(11111111,即向D锁存器写入一个高电平1)写入P0 口锁存器,使V2管 截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线, 这个过程和I/O读引脚过程是一样的。在输入状态下,从锁存器和从引脚上读来的信号一般是一致的,但也有例外。 例如,当从内部总线输出低电平后,锁存器Q=0, Q非=1,场效应管T2开通, 端口线呈低电平状态。此时无论端口线上外接的信号是低电乎还是高电平,从 引脚读入单片机的信号都是低电平,因而不

8、能正确地读入端口引脚上的信号O 又如,当从内部总线输出高电平后,锁存器Q=1, Q非=0,场效应管T2截止。 如外接引脚信号为低电平,从引脚上读入的信号就与从锁存器读入的信号不同。 为此,8031单片机在对端口 P0 P3的输入操作上,有如下约定:为此,8051 单片机在对端口 P0 一 P3的输入操作上,有如下约定:凡属于读修改写方式 的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。读修改 写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写) 到该端口上。这样安排的原因在于读修改写指令需要得到端口原输出的状态, 修改后再输出,读锁存器而不是读引脚,可以

9、避免因外部电路的原因而使原端 口的状态被读错。当P0作为地址/数据总线使用时,在读指令码或输入数据前, CPU自动向P0 口锁存器写入OFFH,破坏了 P0 口原来的状态。因此,不能再 作为通用的I/O端口。在系统设计时务必注意,即程序中不能再含有以P0 口作 为操作数(包含源操作数和目的操作数)的指令。二、P1端口的结构及工作原理jxblR缔内部总线写锁存器诚引脚输入grJ http:/www. Pl 口工作原理图由图可见,P1端口与P0端口的主要差别在于,P1端口用内部上拉电阻R代替 了 P0端口的场效应管T1,并且输出的信息仅来自内部总线。由内部总线输出 的数据经锁存器反相和场效应管反相

10、后,锁存在端口线上,所以.P1端口是具 有输出锁存的静态口。要正确地从引脚上读入外部信息,必须先使场效应管关 断,以便由外部输入的信息确定引脚的状态。为此,在作引脚读入前,必须先 对该端口写入I。具有这种操作特点的输入/输出端口,称为准双向I/O 口。8051 单片机的P1、P2、P3都是准双向口。P0端口由于输出有三态功能,输入前, 端口线已处于高阻态,无需先写入I后再作读操作。单片机复位后,各个端口已 自动地被写入了 1,此时,可直接作输入操作。如果在应用端口的过程中,已向 P1 一 P3端口线输出过0,则再要输入时,必须先写1后再读引脚,才能得到 正确的信息。此外,随输入指令的不同,P1

11、端口也有读锁存器与读引脚之分。三、P2端口的结构及工作原理:P2.X脚锁存器地址/数据+VCC控制信号(0、1)1上拉电阻内部总线T弓门写依存器一多路开关法引脚http:/www.zsmcu. comP2 口工作原理图由图可见,P2端口在片内既有上拉电阻,又有切换开关MUX,所以P2端口在 功能上兼有P0端口和P1端口的特点。这主要表现在输出功能上,当切换开关 向下接通时,从内部总线输出的一位数据经反相器和场效应管反相后,输出在 端口引脚线上;当多路开关向上时,输出的一位地址信号也经反相器和场效应 管反相后,输出在端口引脚线上对于8031单片机必须外接程序存储器才能构成应用电路(或者我们的应用

12、电路 扩展了外部存储器),而P2端口就是用来周期性地输出从外存中取指令的地址 (高8位地址),因此,P2端口的多路开关总是在进行切换,分时地输出从内部 总线来的数据和从地址信号线上来的地址。因此P2端口是动态的I/O端口。输 出数据虽被锁存,但不是稳定地出现在端口线上。其实,这里输出的数据往往 也是一种地址,只不过是外部RAM的高8位地址。在输入功能方面,P2端口与P0和H端口相同,有读引脚和读锁存器之分, 并且P2端口也是准双向口可见,P2端口的主要特点包括:不能输出静态的数据;自身输出外部程序存储器的高8位地址;执行MOVX指令时,还输出外部RAM的高位地址,故称P2端口为动态地址 端口。

13、即然P2 口可以作为I/O 口使用,也可以作为地址总线使用,下面我们就分析下 它的两种工作状态。1、作为I/O端口使用时的工作过程当没有外部程序存储器或虽然有外部数据存储器,但容易不大于256B,即不 需要高8位地址时(在这种情况下,不能通过数据地址寄存器DPTR读写外部 数据存储器),P2 口可以I/O 口使用。这时,“控制”信号为“。力多路开关转向 锁存器同相输出端Q,输出信号经内部总线一锁存器同相输出端Q-反相器 -V2管栅极-V2管9漏极输出。由于V2漏极带有上拉电阻,可以提供一定的上拉电流,负载能力约为8个TTL与非门;作为输出口前,同样需要向锁存器写入“1”,使反相器输出低电平,

14、V2管截止,即引脚悬空时为高电平,防止引脚被钳位在低电平。读引脚有效后, 输入信息经读引脚三态门电路到内部数据总线。2、作为地址总线使用时的工作过程P2 口作为地址总线时,“控制”信号为,1,,多路开关车向地址线(即向上接通), 地址信息经反相器-V2管栅极-漏极输出。由于P2 口输出高8位地址,与P0 口不同,无须分时使用,因此P2 口上的地址信息(程序存储器上的A15A8) 功数据地址寄存器高8位DPH保存时间长,无须锁存。四、P3端口的结构及工作原理P3 口是一个多功能口,它除了可以作为I/O 口外,还具有第二功能,P3端口的 一位结构见下图P3 口工作原理EB ht 1 p 口* zs

15、UCU corti上图可见,P3端口和P1端口的结构相似,区别仅在于P3端口的各端口线有两 种功能选择。当处于第一功能时,第二输出功能线为1,此时,内部总线信号经 锁存器和场效应管输入/输出,其作用与P1端口作用相同,也是静态准双向I/O 端口。当处于第二功能时,锁存器输出1,通过第二输出功能线输出特定的内含 信号,在输入方面,即可以通过缓冲器读入引脚信号,还可以通过替代输入功 能读入片内的特定第二功能信号。由于输出信号锁存并且有双重功能,故P3端 口为静态双功能端口。使P3端品各线处于第二功能的条件是:1、串行I/O处于运行状态(RXD,TXD);2、打开了处部中断(INT0JNT1);3、

16、定时器/计数器处于外部计数状态(TO,T1)4、执行读写外部RAM的指令(RD,WR)在应用中,如不设定P3端口各位的第二功能(WR,RD信号的产生不用设置), 则P3端口线自动处于第一功能状态,也就是静态I / O端口的工作状态。在更 多的场合是根据应用的需要,把几条端口线设置为第二功能,而另外几条端口 线处于第一功能运行状态。在这种情况下,不宜对P3端口作字节操作,需采用 位操作的形式。四、驱动能力P0端口能驱动8个LSTTL负裁。如需增加负载能力,可在P0总线上增加总线 驱动器。P1, P2, P3端口各能驱动4个LSTTL负载。由于P0P3端口已映射 成特殊功能寄存器中的P0 一 P3

17、端口寄存器,所以对这些端口寄存器的读/写 就实现了信息从相应端口的输入/输出。例如: MOV A, P1 ;把PI端口线上的信息输入到A MoV P1, A ;把A的内容由P1端口输出MOV P3, #OFFH ;使P3端口线各位置II/。口线的低电平的驱动能力明显高于高电平的驱动能力;关于51单片机P0 口的结构及上拉问题1 .P0作为地址数据总线时,T 1和T 2是一起工作的,构成推挽结构。高电平 时,T1打开,T2截止;低电平时,T1截止,T2打开。这种情况下不用 外接上拉电阻.而且,当T1打开,T2截止,输出高电平的时候,因为内部电源直接通 过T1输出到P0 口线上,因此驱动能力(电流

18、)可以很大,这就是为什么教科书上说 可以“驱动8个TTL负载”的原因.2 .P0作为一般端口时,T 1就永远的截止,T 2根据输出数据0导通和1截止, 导通时拉地,当然是输出低电平;截止时,P0 口就没有输出了,(注意,这种情 况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1.3 .其他端口 Pl、P2、P 3,在内部直接将P1 口中的T1换成了上拉电阻,所 以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并 一个上拉电阻。4 .在某个时刻,P0 口上输出的是作为总线的地址数据信号还是作为普通I/O 口的 电平信号,是依靠多路开关MUX来切换的.而MUX

19、的切换,又是根据单片机指令 来区分的.当指令为外部存储器/I。口读/写时,比如MOVX A,DPTR ,MUX是 切换到地址/数据总线上;而当普通MOV传送指令操作P0 口时,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” bi

20、directional, because when configured as an input it floats.端口 0,从另外一方面来说,就被认为是“真正的”双向,因为当它被设置为输入的时 候是浮空(高阻态)的.51单片机P0 口的作为I/O的问题,其实看了 51的P1 口的电路就很容易 理解了,主要是一个锁存器和推拉结构,在此作些说明。当用作输出,所有口线的状态都与SFR锁存位的设置有密切的联系。P0 口为低除外。当P0 口的一个位写入0时,这个位被拉低。但是对P0 口的其中一个位写入1时,这个位呈现高阻,也就是未能连机,不能使用。要 想获得1输出,你必须在P0 口外加上拉电阻。一般

21、驱动LED的上拉电阻为 470d外接逻辑电路的上拉电阻为4.7KO 补充:一些口线被作为简单的 高电平输入也与SFR锁存位有关。因为P1、P2、P3有内部上拉电阻,可以随 意被拉高,拉低。而P0 口作为高电平输入时,也会呈现高阻态。P0 口和P2 口的输入缓冲被用来作存取外部存贮用,P0 口用作外部存贮器 的低位字节的位址,并与数据读写多工。输出第一位元址,当位置线是16位时, P2 口用作高8位的位址线,因此当对外面存贮时,POD、P2 口没法当作I/O 口线。P1 口具有内部上拉电阻,当端口用作输入时,必须通过指令将端口的位锁 存器置1,以关闭输出驱动场效应管,这时P1 口的引脚由内部上拉

22、电阻拉为高 电平,所以向P1写入1,工作正常。P0则不同,它没有内部上拉电阻,在驱动场效应管的上方有一个提升场效 应管,它只是在对外存储器进行读写操作,用作地址/数据时才起作用,当向位 锁存器写入1,使驱动场效应管截止,则引脚浮空,所以写入1而未获得。P0 口上拉电阻的阻值:1、如果是驱动led,那么用1K左右的就行了。如果希望亮度大一些,电阻可 减小,最小不要小于200欧姆,否则电流太大;如果希望亮度小一些,电阻可 增大,增加到多少呢,主要看亮度情况,以亮度合适为准,一般来说超过3K以 上时,亮度就很弱了,但是对于超高亮度的LED,有时候电阻为10K时觉得亮 度还能够用。我通常就用1k的。2

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

24、电极为继电器负载 时,由于集电极电流大,因此上拉电阻的阻值最好不要大于4.7K,有时候甚至 用2K的。对于PNP管,毫无疑问PNP管是低电平有效的,因此上拉电阻的阻 值用100K以上的就行了,且管子的基极必须串接一个110K的电阻,阻值 的大小要看管子集电极的负载是什么,对于LED类负载,由于发光电流很小, 因此基极串接的电阻的阻值可以用20k的,但是对于管子的集电极为继电器负 载时,由于集电极电流大,因此基极电阻的阻值最好不要大于4.7K。3、对于驱动TTL集成电路,上拉电阻的阻值要用110K之间的,有时候电 阻太大的话是拉不起来的,因此用的阻值较小。但是对于CMOS集成电路,上 拉电阻的阻值就可以用的很大,一般不小于20K,我通常用100K的,实际上对 于CMOS电路,上拉电阻的阻值用1M的也是可以的,但是要注意上拉电阻的 阻值太大的时候,容易产生干扰,尤其是线路板的线条很长的时候,这种干扰 更严重,这种情况下上拉电阻不宜过大,一般要小于100K,有时候甚至小于10K。根据以上分析,上拉电阻的阻值的选取是有很多讲究的,不能乱用,具体情况 比较复杂,如果你是个莱鸟,那么你尽量用小一些的,这样牺牲一些电源功耗。 不过最好请教一下有关人员

展开阅读全文
相关资源
猜你喜欢
相关搜索

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


经营许可证编号:宁ICP备18001539号-1