单片机原理及应用
上QQ阅读APP看书,第一时间看更新

3.1 单片机的并行接口

课件 单片机的并行接口-P0口

视频 单片机的并行接口-P0口

51单片机有4个并行接口,分别为P0、P1、P2、P3,每个接口均包括8条I/O口线,总共有32条I/O口线(引脚)。每个并行接口包含1个锁存器、1个输出驱动器和输入缓冲器,但是这4个并行接口的具体结构和功能却不完全相同。下面分别介绍它们的内部结构和工作原理。

1.P0口

P0口是一个8位漏极开路的双向三态I/O口,这是一个多功能接口,除了作为通用的I/O口外,还可以作为地址/数据总线,在单片机进行系统扩展时用作系统总线来使用。

P0口的8个引脚的位结构都是相同的,这里通过分析其中一个位结构来了解一下P0口的组成结构及工作原理。

由图3-1可以看到,P0口的位结构包括1个锁存器、2个三态缓冲器、1个输出驱动电路和1个输出控制电路。其输出控制电路由1个与门、1个反相器和1个多路转换开关组成;输出驱动电路由2个场效应管组成。

下面分别就P0口的不同功能进行工作原理的简单介绍。

图3-1 P0口一个引脚的位结构

1)P0口用作通用的I/O口

对照图3-1,当P0口作为普通的I/O口时,控制信号为低电平(即0),则控制电路中与其相连的与门输出必定为低电平,因此与输出驱动电路相连的场效应管V1处于截止状态。又因为控制信号为低电平,控制多路转换开关MUX向下闭合,与输出锁存器的端相连。这种情况下当写锁存器的信号CL有效时,内部连通的线路是:内部数据总线→锁存器的D端→锁存器的反相输出端→多路转换开关MUX→场效应管V2的栅极→P0口的某一位引脚。

P0口作为输出口时是漏极开路,因此后级电路必须外接上拉电阻。只有外接了上拉电阻,才能输出高电平,同时也加大了输出引脚的驱动能力。

当P0口作为输出引脚时,其工作原理如下:

(1)当内部总线输出1,且锁存器的CL引脚获得写脉冲时,锁存器的D端与Q端值相同为1,端对输入取反为0,而通过转换开关MUX与场效应管V2的栅极相连,此时V2截止,则P0的这个引脚变为高电平1,与总线上的输出相同,实现了高电平输出。

(2)当内部总线输出0,写锁存器信号CL有效时,锁存器的D端与Q端值相同为0,端对输入取反为1,而通过转换开关MUX与场效应管V2的栅极相连,此时V2导通,则P0的这个引脚变为低电平0,与总线上的输出相同,实现了低电平输出。

当P0口作为输入引脚时,需要考虑读引脚还是读锁存器。

读取P0口某一引脚上的数据时,读引脚缓冲器打开,此时引脚上的数据直接通过缓冲器到达内部数据总线和锁存器,完成数据读取。此时通过打开读锁存器缓冲器,也可以读取锁存器的输出Q的值,一般情况下,读引脚与读锁存器获得的值是一样的,直接读取就可以获得输入的数据。

但也有例外情况,比如,刚刚从内部总线输出低电平时,锁存器Q=0,,此时场效应管V2导通,引脚呈低电平。此时无论端口线上外接的信号是低电平还是高电平,从引脚读进来的都会是低电平,导致不能正确读取引脚信号。因此在读取数据前,该引脚需要先置1,使V2截止,这样才能正确读取外部输入的信号。

2)P0口用作地址/数据复用口

P0口在访问外部存储器时作为地址/数据复用端口。这时控制电路中的控制信号固定为高电平,并控制使多路转换开关MUX与反相器的输出端相连,此时与场效应管V2相连的与门状态是由数据/地址线来控制的。此刻内部连通的线路也有两条,分别是:

(1)地址/数据线→反相器→多路转换开关→场效应管V2→P0口某一位的引脚。

(2)地址/数据线和控制信号线→与门→场效应管V1→P0口某一位的引脚。

这两条线路在同一时刻只能有一条是连通的。

当地址/数据信号为0时,与门输出低电平,场效应管V1截止,而与地址/信号线相连的反相器得到高电平,通过多路转换开关后,场效应管V2导通,此刻通过该引脚输出的是低电平,与地址/数据信号输出相同,实现了输出地址/数据信号。

当地址/数据信号为1时,与之相连的反相器得到低电平,通过多路转换开关后,使与之相连的场效应管V2截止;与此同时,与门获得高电平输出,场效应管V1导通,此刻通过该引脚输出的是高电平。

由此可见,在输出地址/数据信号时,V1与V2是交替导通的,是一种推挽结构,负载能力很强,可以直接与外部存储器相连,无须再增加总线驱动器。

2.P1口

课件 单片机的并行接口-P1、P2口

视频 单片机的并行接口-P1、P2口

P1口是一个8位准双向并行口,它是所有4个并行口中结构最简单、功能最单一的接口。与P0口明显不同的是,P1口内置了上拉电阻。其位结构如图3-2所示。

图3-2 P1口一个引脚的位结构

1)P1口用作输入端口

P1口作为输入端口时,为了准确读取引脚的信息,必须先向锁存器写1,此时锁存器的Q=1,,场效应管V截止。这时引脚上输入的高电平信号就可以通过读引脚缓冲器进入内部总线和锁存器中。

2)P1口用作输出端口

P1口作为输出端口时,当写锁存器信号CL有效时,内部总线上的数据进入锁存器中。如果内部总线为0,则锁存器的Q=0,,场效应管V导通,引脚通过V连到接地上,此时引脚输出为低电平0;如果内部总线为1,则锁存器的Q=1,,场效应管V截止,由于上拉电阻的作用,此时该引脚输出为高电平1。

3.P2口

P2口是一个多功能的8位准双向I/O口,其内部结构与P1口相似,但比P1口多了一个多路转换开关,因此P2口兼有P0口与P1口的一些特点,这主要体现在输出功能上。当多路转换开关向左与锁存器的Q端相连时,内部总线上输出的信息通过反相器与场效应管相连,此时输出的是总线上传递的信息;当多路转换开关向右与地址线相连时,地址线上的信息通过反相器与场效应管相连,此时输出的是地址信息。其位结构如图3-3所示。

图3-3 P2口一个引脚的位结构

1)P2口用作输入端口

P2口作为输入端口时,也需要先向锁存器写1,使场效应管先截止。此时引脚上输入的高电平信号,送到读引脚缓冲器输入端,只有当读引脚缓冲器导通时,引脚上的高电平信号才可能送到内部总线和锁存器中。

2)P2口用作输出端口

P2口作为输出端口时,内部总线上的信息通过锁存器的D端输出到多路转换开关,再通过反相器后,连接到场效应管,最后到达输出引脚。

P2口具有多功能,除了可作为普通的I/O口外,还可作为访问外部存储器的地址信息。在控制信号的作用下,多路转换开关MUX与地址线相连时,地址信号就通过反相器、场效应管、引脚进行输出。值得注意的是,P2口输出的地址信号是外部存储器的高8位地址,其低8位地址信号是在控制信号作用下由P0口输出的。

4.P3口

课件 单片机的并行接口-P3口

视频 单片机的并行接口-P3口

P3口也是多功能的8位准双向并行口。其工作原理与P1、P2口相似,但也有不同。在作为普通I/O口时,第二功能的输出端要保持高电平,只有这样,锁存器的输出才能顺利通过与非门,到达场效应管的栅级,并通过引脚输出。其位结构如图3-4所示。

图3-4 3口一个引脚的位结构

P3口的每一位都具有第二功能。当使用P3口中某一位的第二功能时,要求该位的锁存器必须置位,以使第二功能输出端的信息能够顺利通过与非门,到达场效应管的栅极。当使用第二功能输入引脚时,必须使锁存器和第二功能输出线同时为1,这样才能使第二功能的输入信息送达该引脚。P3口各引脚的第二功能见表3-1。

表3-1 P3口各引脚的第二功能

在P3口的引脚信号输入通道中有两个缓冲器,第二功能输入信息取自第一个缓冲器的输出端,一般输入信号取自第二个缓冲器的输出端。

5.双向与准双向I/O口

P1、P2、P3口都是准双向I/O口,每一条口线(引脚)内部都有上拉电阻,都能独立地作为输出引脚或输入引脚。作为输入引脚时,必须先向锁存器写1,使场效应管截止,同时该引脚由内部的上拉电阻拉成高电平。当外部输入1时,该引脚即为高电平;输入0时,该引脚会被拉低为低电平。

P0口被称为双向口,其内部没有上拉电阻。双向指的是它被用作地址/数据端口时(且只有此时),P0口处于两个场效应管的推挽状态,当两个场效应管都关闭时,就会出现高阻状态,此时即为双向状态。

当P0口用于一般I/O口时,内部接VCC的场效应管是与引脚脱离的,此时只有接地的那个场效应管在起作用。这个时候通过P0口输出数据,必须外接上拉电阻才能输出高电平。如果此时P0口作为输入端使用,那么也需要先对端口写1,使下方场效应管先断开,这个时候如果引脚没有接上拉电阻,则引脚呈现的是高阻状态;如果接了上拉电阻,则本身会输出高电平。

双向口与准双向口的区别在于双向口有高阻态,输入的是真正的外部电信号;准双向口没有高阻态,但其内部有上拉电阻,所以输入的高电平是内部给出的,并不是真正的外部电信号。其实这两种信号在电平逻辑上是没有区别的,但作为模拟信号采集时只能使用外部真正的电信号。所以,P0口是真正的双向口,其余均为准双向口。不论准双向口还是双向口,在输入数据时都需要先向端口写“1”。

P0口为漏极开路,具有较大的驱动能力,能驱动8个LS TTL负载。如果需要增加负载能力,还可在P0总线上增加总线驱动器。P1、P2、P3口各能驱动4个LS TTL负载。