第七章80C51并行扩展技术本章要点并行扩展总线组成(地址、数据、控制总线)并行扩展寻址方式(线选法、译码法)用74系列芯片并行扩展I/O口扩展总线驱动能力80C51系列单片机有很强的外部扩展能力。外部扩展可分为并行扩展和串行扩展两大形式。早期的单片机应用系统以采用并行扩展为多,近期的单片机应用系统以采用串行扩展为多。外部扩展的器件可以有ROM、RAM、I/O口和其他一些功能器件,扩展器件大多是一些常规芯片,有典型的扩展应用电路,可根据规范化电路来构成能满足要求的应用系统。7.1并行扩展概述7.1.1并行扩展连接方式并行扩展总线组成⑴数据传送:由数据总线DB(D0~D7)完成;D0~D7由P0口提供。⑵单元寻址:由地址总线AB(A0~A15)完成;低8位地址线A0~A7由P0口提供,高8位地址线A8~A15由P2口提供。⑶交互握手:由控制总线CB完成。控制线有PSEN、WR、RD、ALE、EA80C51控制总线,有以下几条:①ALE:输出,用于锁存P0口输出的低8位地址信号,一般与地址锁存器门控端G连接。②PSEN:输出,用于外ROM读选通控制,一般与外ROM输出允许端OE连接。③EA:输入,用于选择读内/外ROM。EA=1,读内ROM;EA=0,读外ROM。一般情况下,有并且使用内ROM时,EA接Vcc;无内ROM或仅使用外ROM时,EA接地。④RD:输出,用于读外RAM选通,执行MOVX读指令时,RD会自动有效,一般与外RAM读允许端OE连接。⑤WR:输出,用于写外RAM选通,执行MOVX写指令时,WR会自动有效,与外RAM写允许端WE连接。⑥P2.X:并行扩展外RAM和I/O时,通常需要片选控制,一般由P2口高位地址线担任。并行扩展容量可分别扩展64KBROM(包括片内ROM)和64KB外RAM。7.1.2并行扩展寻址方式存储器内存储单元的子地址,由低位地址线,即与存储器地址线直接连接的地址线确定;存储器的芯片地址,由高位地址线产生的片选信号确定。当存储器芯片多于一片时,为了避免操作,必须利用片选信号来分别确定各芯片的地址分配。产生片选信号的方法有线选法和译码法两种。线选法高位地址线直接连到存储器芯片的片选端。低位地址线A0~A10实现片内寻址。高位地址线A11~A13实现片选,均为低电平有效(A11~A13中只允许有一根为低电平,另二根必须为高电平,否则出错)。无关位A14、A15可任取,一般取“1”。表7-1线选法三片存储器芯片地址分配表二进制表示16进制表示无关位片外地址线片内地址线A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0芯片Ⅰ1111000000000000F000H~F7FFH................1111011111111111芯片Ⅱ1110100000000000E800H~EFFFH................1110111111111111芯片Ⅲ1101100000000000D800H~DFFFH................1101111111111111线选法优点:连接简单;缺点:①芯片的地址空间不连续;②存在地址重叠现象。适用于扩展存储容量较小的场合。产生地址空间不连续的原因是用作片选信号高位地址线可组成的信号状态未得到充分利用。A13、A12、A11三根地址线的信号状态有8种:000-111,只使用了其中3种:110、101和011,这3种信号状态本身不连续,从而导致存储器地址空间不连续。所谓“地址重叠”,是指一个存储器芯片占有多个额定地址空间,一个存储单元具有多个地址,或者说不同的地址会选通同一存储单元。产生“地址重叠”的原因是高位地址线中有无关位,且无关位可组成多种状态,与存储器芯片的地址组合后可组成多个地址空间。译码法通过译码器将高位地址线转换为片选信号。2条地址线能译成4种片选信号,3条地址线能译成8种片选信号。表7-3译码法三片存储器芯片地址分配表二进制表示16进制表示无关位片外地址线片内地址线A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0芯片Ⅰ10000000000000008000H................~100001111111111187FFH芯片Ⅱ10001000000000008800H................~10001111111111118FFFH芯片Ⅲ10010000000000009000H................~100101111111111197FFH译码法与线选法比较,硬件电路稍复杂,需要使用译码器,但可充分利用存储空间,全译码时还可避免地址重叠现象,局部译码因还有部分高位地址线未参与译码,因此仍存在地址重叠现象。译码法的另一个优点是若译码器输出端留有剩余端线未用时,便于继续扩展存储器或I/O口接口电路。译码法和线选法不仅适用于扩展存储器(包括外RAM和外ROM),还适用于扩展I/O口(包括各种外围设备和接口芯片)。7.4用74系列芯片并行扩展I/O口扩展I/O口分类:并行扩展和串行扩展;可编程和不可编程。80C51并行扩展I/O口是将I/O口看作外RAM的一个存储单元,与外RAM统一编址,操作时执行MOVX指令和使用RD﹑WR控制信号。从理论上讲,扩展I/O口最多可扩展64000个I/O口。与80C51最适配的是74HC系列,74HC系列是一种高速CMOS芯片,其输入和电源电压规范同CMOS4000系列,输出驱动能力和速度与74LS系列相当。构成输出口时,接口芯片应具有锁存功能;构成输入口时,接口芯片应具有三态缓冲和锁存功能。7.4.174373扩展输入口74373芯片介绍74373是8D三态同相锁存器,内部有8个相同的D触发器。D0-D7为其D输入端,Q0-Q7为其Q输出端。G为门控端,OE为输出允许端。当G高电平,且OE低电平时,D0-D7的信号进入D触发器,从相应的输出端Q0-Q7输出。当G为低电平时,Q保持不变;当OE为高电平时,Q是高阻态。典型应用电路G接高电平,门控始终有效;从D0~D7输入的信号能直达Q0~Q7输出缓冲器待命;由80C51的RD和P2.7(一般用P2.0~P2.7为宜)经过或门与74373OE端相连。例7-4按图7-16,试编制程序,从373外部每隔1秒读入一个数据,共16个数据,存入以30H为首址的内RAM。解:编程如下:IND:MOVDPTR,#7FFFH;置373口地址MOVR0,#30H;置内RAM数据存储区首址IND0:MOVXA,@DPTR;输入数据MOV@R0,A;存数据INCR0;指向下一存储单元LCALLDLY1s;调用1s延时子程序CJNER0,#40H,IND0;判16个数据读完否?未完继续RET;7.4.274377扩展输出口74377芯片介绍74377为带有输出允许控制的8D触发器。D0-D7为8个D触发器的D输入端,Q0-Q7是8个D触发器的Q输出端。时钟脉冲输入端CLK,上升沿触发,8D共用。OE为输出允许端,低电平有效。当OE端为低电平,且CLK端有正脉冲时,在正脉冲的上升沿,D端信号被锁存,从相应的Q端输出。典型应用电路80C51单片机的WR和P2.5分别与74377CLK端和输出允许端OE相接。P2.5决定74377地址为DFFFH。例7-5按图7-18,试编制程序,从74377连续输出16个数据,输出数据区首址30H。解:编程如下:OUTD:MOVDPTR,#0DFFFH;置377口地址MOVR0,#30H;置内RAM数据存储区首址MOVR2,#10H;置数据长度OUT1:MOVA,@R0;读数据MOVX@DPTR,A;输出数据INCR0;指向下一存储单元DJNZR2,OUT1;判16个数据输出完否?未完继续RET;7.4.3扩展总线驱动能力当P0口总线负载达到或超出P0口最大负载能力8个TTL门时,必须接入总线驱动器。因P0口传送数据是双向的,因此要扩展的数据总线驱动器也必须具有双向三态功能。双向总线扩展(1)74245芯片介绍74245是8同相三态双向总线收发器,可双向传输,当片选端CE低电平有效时,DIR=1,信号从AB;DIR=0,信号从BA,当CE为高电平时,A、B端均成高阻态。(2)典型应用电路控制DIR可用RD或WR,片选端CE直接接地,始终有效。图7-20a用RD控制DIR,A0-A7接P0口,B0-B7接外RAM或外设。当RD有效时,DIR=0,数据从BA;RD无效时,DIR=1,数据从AB。图7-20b用WR控制DIR,B0-B7接P0口,A0-A7接外RAM或外设。当WR有效时,DIR=0,数据从BA;WR无效时,DIR=1,数据从AB。单向总线扩展除扩展双向数据总线P0口外,若需要扩展P2口(高8位地址总线,单向)或WR、RD、PSEN、ALE等单向控制总线,就不必用74245,可用74244。(1)74LS244芯片介绍74244是8同相三态缓冲/驱动器。片内有2组三态缓冲器,每组4个,分别由一个门控端控制。门控端低电平有效时,输入端信号从输出端输出,门控端信号无效时,输出端呈高阻态。(2)典型应用电路地址信号或控制信号是单向传输,且不允许锁存,1G、2G接地始终有效。综上所述,扩展输入口时,用74373为宜;扩展输出口时,用74377为宜;扩展双向总线时,用74245为宜;扩展单向总线时,用74244为宜,推荐采用74HC系列芯片。