2第8章MCS-51存储器的扩展沈阳航空航天大学2课程主要内容外部扩展的基本知识存储器的扩展方法程序存储器的外扩数据存储器的外扩EPROM芯片的外扩编程举例28.1概述片内的资源如不满足需要,需外扩存储器和I/O功能部件。系统扩展主要内容有:(1)外部存储器的扩展(外部RAM、ROM)(2)I/O接口部件的扩展。本章介绍如何扩展外部存储器。348051/8751最小应用系统最小应用系统58031最小应用系统PSENMCS-51单片机外部存储器结构:哈佛结构。MCS-51RAM和ROM的最大扩展空间各为64KB。系统扩展首先要构造系统总线。按功能把系统总线分为三组:1.地址总线(AdressBus,简写AB)2.数据总线(DataBus,简写DB)3.控制总线(ControlBus,简写CB)67与总线有关的基本概念系统总线:是连接计算机各部件的一组公共信号线,MCS51的系统总线可分为地址总线、数据总线和控制总线。地址总线:它用来传输单片机所发出的地址信号,以便进行存储单元和I/O端口的选择。地址总线的数目决定着可直接访问的存储单元及I/O端口的数目。数据总线:单片机与存储单元及I/O口之间传输数据信号控制总线:是一组控制信号线,包括单片机发出的也包括从外部存储单元或者I/O端口发送给单片机的。优点:总线结构大大减小了单片机系统中传输线的数目,增加了系统的可靠性。8系统扩展的三总线结构9构造系统总线10地址锁存器74LS3731.以P0口作为数据总线(8位)。2.以P0口经8位锁存器锁存后的信号作为地址总线的低8位。3.以P2口作为地址总线高8位。4.控制信号线。*ALE——低8位地址锁存信号。*PSEN*——扩展程序存储器读选通信号。*EA*——内外程序存储器选择信号。*RD*和WR*——扩展RAM和I/O口的读选通、写选通信号。111213单片机系统的串行扩展技术优点:串行接口器件体积小,与单片机接口时需要的I/O口线少,可靠性提高。缺点:串行接口器件速度较慢*串行总线是当前发展很迅速的一个领域14存储器扩展的读写控制RAM芯片:读写控制引脚OE*和WE*,与MCS51的RD*和WR*引脚相连。EPROM芯片:只有读出引脚OE*,与MCS51的PSEN*引脚相连。158.2存储器分类介绍只读存储器–ROM–PROM–EPROM可读写存储器–SRAM–DRAM不挥发性读写存储器–E2PROM–NOVRAM:不挥发随机访问存储器,如背装锂电池的SRAM特殊存储器–加密型ROM;双端口RAM;先进先出RAM;–快擦写型存储器168.2.1程序存储器扩展所使用的芯片采用只读存储器,非易失性。(1)掩膜ROM在制造过程中编程,只适合于大批量生产。(2)可编程ROM(PROM)用独立的编程器写入,只能写入一次。(3)EPROM电信号编程,紫外线擦除的只读存储器芯片。(4)E2PROM(EEPROM)电信号编程,电擦除。读写操作与RAM相似,写入速度稍慢。断电后能够保存信息。(5)FlashROM又称闪烁存储器,简称闪存。电改写,电擦除,读写速度快(70ns),读写次数多(1万次)。178.2.2常用EPROM芯片介绍典型芯片是27系列产品,例如,2764(8KB×8)27128(16KB×8)27256(32KB×8)27512(64KB×8)“27”后面的数字表示其位存储容量。扩展程序存储器时,应尽量用大容量的芯片。181.常用的EPROM芯片引脚功能如下:A0~A15:地址线引脚。数目决定存储容量。D7~D0:数据线引脚CE*:OE*:PGM*:Vpp:Vcc:GND:NC:片选输入端输出允许控制端编程时,加编程脉冲的输入端编程时,编程电压(+12V或+25V)输入端+5V,芯片的工作电压。数字地。无用端19202.EPROM芯片的工作方式(1)读出方式片选控制线CE为低,输出允许OE为低,Vpp为+5V,指定地址单元的内容从D7~D0上读出。(2)未选中方式片选控制线为高电平。(3)编程方式Vpp端加规定高压,CE*和OE*端加合适电平,就能将数据线上的数据写入到指定的地址单元。(4)编程校验方式(5)编程禁止方式输出呈高阻状态,不写入程序。213.EPROM使用的一点注意事项工作电压为5V,但不同厂家的芯片编程电压会有所不同通过专门编程器将程序代码写入程序存储器中在用专门的编程器进行程序固化的时候,对芯片型号及制造厂家的选择一定要准确22典型的EPROM接口电路1.使用单片EPROM的扩展电路2716、2732EPROM价格贵,容量小,且难以买到。仅介绍2764、27128、27256、27512芯片的接口电路。下面介绍外扩2764及27128的设计方法。238.3存储器扩展方法扩展存储器即分配地址空间给每个芯片,注意要避免地址和数据的冲突芯片的片选端口为避免数据的冲突提供了方便,如何通过MCS51的地址线产生片选信号是避免地址冲突的有效途径。片选控制–线选法•适用于系统芯片数目较少•利用高端地址线(未用到的地址线)直接作为外扩芯片的片选线,线路简单•地址空间有重叠,即同一存储空间可能对应多个地址–译码选通法•适用于多片存储器扩展•高端地址线经译码器译码后作为存储器片选线,线路需增加译码器芯片•地址空间连续,存储芯片空间对应地址唯一24芯片译码选通法的分类全译码方式:所有片选地址线(高端地址线)全部参加译码;部分译码方式:片选地址线(高端地址线)部分参加译码,剩下部分悬空;强调:MCS51外扩存储器应注意的问题程序存储器与数据存储器空间独立,各拥有64k寻址空间数据存储器扩展与I/O口扩展占用数据64k空间,统一编址数据总线与低8位地址总线复用,必须运用地址锁存器实现低8位地址总线的分离。2526OELLLHLEHHLXDHLXXQHLQ保持高阻态8.4常用的锁存器芯片地址锁存芯片–74LS273,74LS373,8282等74LS373功能表CLKXCLRLHHDXHLQLHLHLXQ保持74LS273功能表27锁存器8282功能及内部结构与74LS373完全一样,只是其引脚的排列与74LS373不同28锁存器的应用29锁存器74LS573输入的D端和输出的Q端也是依次排在芯片的两侧,与8282一样,为绘制印刷电路板时的布线提供方便。30输入端允许选择E3XLHHEHXLLCXXLLBXXLLAXXLHY0HHLHY1HHHLY2HHHHY3HHHHY4HHHHY5HHHHY6HHHHY7HHHHHHHHHHLLLLLLLLHHHHHHLLHHLHLHLHHHHHHHHHHHHHLHHHHHHLHHHHHHLHHHHHHLHHHHHHLHHHHHHL输出端注:E=E1+E28.5常用的译码器芯片地址译码芯片74LS13874LS138功能表74LS138管脚图31允许输入端选择EHLLBXLLAXLHY0HLHY1HHLY2HHHY3HHHLLHHLHHHHHLHHL输出端常用的译码器芯片地址译码芯片74LS13974LS139功能表74LS139管脚图––––存储器读选通OE存储器片选控制CE存储器编程脉冲PGM编程电压输入Vpp数据总线–数据接口D0~D7。地址总线–地址总线接口A0~A12328.6程序存储器的扩展EPROM2764的相关总线介绍控制总线33程序存储器EPROM的扩展2764为8K字节EPROM存储器,一般有五种工作方式:–读方式–未选中方式–编程方式–编程校核方式–编程禁止方式34程序存储器EPROM的扩展线选法扩展芯片2764占用系统地址空间(0000~1FFFH)or(2000~3FFFH)or(4000H~5FFFH)or(6000H~7FFFH)35EPROM读时序外部程序存储器的操作时序图(不执行MOVX类指令)P036EPROM读时序外部程序存储器的操作时序图(执行MOVX类指令)37程序存储器EPROM的扩展译码法扩展芯片2764占用系统地址空间(2000H~3FFFH)38使用多片EPROM的扩展电路扩展4片27128,每片16K字节398.7静态数据存储器的扩展常用的静态RAM(SRAM)芯片典型型号有:6116(2K)、6264(8K)、62128(16K)、62256(32K)。+5V电源供电,双列直插,6116为24引脚封装,6264、62128、62256为28引脚封装。各引脚功能如下:A0~A14:地址输入线。D0~D7:双向三态数据线。CE*:OE*:WE*:片选信号输入。对于6264芯片,当CS为高电平,且CE*为低电平时才选中该片。读选通信号输入线。写允许信号输入线,低电平有效。Vcc:工作电源+5VGND:地有读出、写入、维持三种工作方式。4041RAM芯片6264的相关总线介绍控制总线–存储器读选通OE–存储器写选通WE–存储器片选控制CS1(CE)CS2(CS)数据总线–数据接口D0~D7。地址总线–地址总线接口A0~A1242数据存储器RAM的扩展线选法扩展芯片6264占用系统地址空间(0000~1FFFH)or(2000~3FFFH)or(4000H~5FFFH)or(6000H~7FFFH)43数据存储器读/写时序数据存储器写周期时序44用线选法扩展多片外部数据存储器6264的电路45地址线为A0~A12,故剩余地址线为三根。用线选法可扩展3片6264。3片6264对应的地址空间如下。46数据存储器RAM的扩展译码法扩展芯片6264占用系统地址空间(4000H~5FFFH)47数据存储器扩展0000H~3FFFH4000H~7FFFH8000H~BFFFHC000H~FFFFH48上图中各片62128地址分配P2.7P2.6译码输出选中芯片地址范围存储容量00YO*IC10000H-3FFFH16K01Y1*IC24000H-7FFFH16K10Y2*IC38000H-BFFFH16K11Y3*IC4C000H-FFFFH16K49单片62256与8031的接口电路,地址范围为0000H~7FFFH50例1编写程序将片外RAM中5000H~50FFH单元全部清零。方法1:用DPTR作为数据区地址指针,同时使用字节计数器。MOVDPTR,#5000H;设置数据块指针的初值MOVR7,#00H;设置块长度计数器初值CLRALOOP:MOVX@DPTR,A;把某一单元清零INCDPTR;地址指针加1DJNZR7,LOOP;数据块长度减1,若不为0则继续清零HERE:SJMPHERE;执行完毕,原地踏步51方法2:用DPTR作为数据区地址指针,但不使用字节计数器,而是比较特征地址。MOVDPTR,#5000HCLRALOOP:MOVX@DPTR,AINCDPTRMOVR7,DPLCJNER7,#0,LOOP;与末地址+1比较HERE:SJMPHERE528.8EPROM和RAM的综合扩展采用线选法扩展2片8KB的RAM和2片8KB的EPROMRAM选6264,EPROM选2764。53IC2和IC4占用地址空间为A000H~BFFFH(P2.7=1、P2.6=0、P2.5=1)。同理IC1、IC3地址范围C000H~DFFFH(P2.7=1、P2.6=1、P2.5=0)。在这里只讨论关于地址分配的问题,这个电路图需要进一步改进才是真正的扩展硬件图。数据存储器与程序存储器地址虽然重叠,但是控制线的接法不一样54采用译码器法扩展2片8KBEPROM,2片8KBRAM。EPROM选用2764,RAM选用6264。共扩展4片芯片。5556外扩存储器的软件设计1.单片机片外程序区读指令过程(MOVC指令)2.单片机片外数据区读写数据过程(MOVX指令)例如,把片外程序存储器1000H单元的数送到片内RAM50H单元,程序如下:MOVA,#00HMOVDPTR,#1000HMOVCA,@A+DPTRMOV50H,A例如,把片内50H单元的数据送到片外数据存储器1000H单元中,程序如下:MOVA,50HMOVDPTR,#1000HMOVX@DPTR,A57M