资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第8章,89C51,单片机扩展存储器的设计,8.1 系统扩展结构,AT89C51,系统并行扩展结构如,图,8-1,所示。,图,8-1,由图,8-1,可以看出,系统扩展主要包括,存储器扩展,和,I/O,接口部件扩展,。,外部存储器扩展,又包括,程序存储器扩展,和,数据存储器扩展,。,AT89C51,采用的是,哈佛结构,。,扩展后,系统形成了,两个并行的外部存储器空间,。,89C51,单片机采用并行总线结构,大大增加了系统的灵活性,使扩展易于实现,各扩展部件只要符合总线规范,就能很方便地接入系统。,由于系统扩展是通过总线把,AT89C51,与各扩展部件连接起来。因此,要进行系统扩展,首先要构造系统总线,。,系统总线按功能分为三组,如,图,8-1,所示。,(,1,)地址总线(,Adress,Bus,,,AB,),地址总线用于传送单片机发出的地址信号,以便进行存储单元和,I/O,接口芯片中的寄存器选择。地址总线是,单向传输,的。,(,2,)数据总线,(Data Bus,,,DB),数据总线用于在单片机与存储器之间或与,I/O,端口之间传送数据。数据总线是双向的,可以进行两个方向的传送。,(,3,)控制总线(,Control Bus,,,CB,),控制总线实际上就是单片机发出的各种控制信号线。,下面讨论如何构造系统三总线,1,以,P0,口作为低,8,位地址,/,数据总线,AT89C51,由于受引脚数目的限制,数据线和低8位地址线复用。,为了将它们分离出来,需要,外加地址锁存器,,从而构成与一般,CPU,相类似的片外三总线,见,图8-2,。,图,8-2,2.,以,P2,口的口线作为高位地址线,P2,口的全部,8,位口线用作高位地址线,再加上,P0,口经地址锁存器提供的低,8,位地址,便形成了,完整的,16,位地址总线,(见图,8-2,),使,寻址范围达到,64KB,。,3,控制信号线,除了地址线和数据线之外,还要有系统的控制总线。这些信号有的就是单片机引脚的第一功能信号,有的则是,P3,口第二功能信号。其中包括:,(,1,),PSEN*,信号作为外扩程序存储器的读选通控制信号。,(,2,),RD*,和,WR*,信号作为外扩数据存储器和,I/O,接口的读、写选通控制信号。,(,3,),ALE,信号作为低,8,位地址的锁存控制信号。,(,4,),EA*,信号作为内、外程序存储器的选择控制信号。,可看出,尽管,89C51,单片机有,4,个并行的,I/O,口,共,32,条口线,但由于系统扩展的需要,,真正作为数字,I/O,使用的,就剩下,P1,口和,P3,口的部分口线了。,8.2,地址空间分配和外部地址锁存器,8.2.1,存储器地址空间分配,如何把外部各自的,64KB,空间分配给各个程序存储器、数据存储器芯片,并且使程序存储器的各个芯片之间,数据存储器各芯片之间,为避免发生数据冲突,,一个存储器单元对应一个地址,,这就是存储器的地址空间的分配问题。,在外扩的多片存储器芯片中,,AT89C51,要完成这种功能,必须进行,两种选择,:,一是必须选中该存储器芯片,(或,I/O,接口芯片),这称为,“片选”,,只有被“选中”的存储器芯片才能被,AT89C51,读出或写入数据。为了片选的需要,每个存储器芯片都有片选信号引脚,,二是在“片选”的基础上再选择该芯片的某一单元,称为,“单元选择”。,常用的存储器地址空间分配方法有两种:,线性选择法,(简称线选法)和,地址译码法,(简称译码法),下面分别介绍。,1,线选法,直接利用系统的,高位地址线,作为存储器芯片(或,I/O,接口芯片)的“片选”控制信号,。为此,只需要把用到的高位地址线与存储器芯片的“片选”端直接连接即可。,线选法的,优点,是电路简单,不需要另外增加地址译码器硬件电路,体积小,成本低。,缺点,是可寻址的芯片数目受到限制。,另外,,地址空间不连续,每个存储单元的地址不唯一,不,能充分有效地利用存储空间,这会给程序设计带来一些不便,,只适用于外扩芯片数目不多的单片机系统的存储器扩展。,2,译码法,使用译码器对,89C51,的高位地址进行译码,将,译码器的译码输出作为存储器芯片的片选信号。,是最常用的地址空间分配的方法,它能有效地利用存储器空间,适用于多芯片的存储器扩展。,常用的译码器芯片,有,74LS138,(,3-8,译码器),74LS139,(双,2-4,译码器),74LS154,(,4-16,译码器)。若全部高位地址线都参加译码,称为,全译码,;若仅部分高位地址线参加译码,称,为,部分译码,。部分译码存在着部分存储器地址空间相重叠的情况。,两种常用的译码器芯片。,(,1,),74LS138,74LS138,是,3-8,译码器,,有,3,个数据输入端,经译码产生,8,种状态。其引脚如,图,8-3,所示,真值表如,表,8-1,所示。,由,表,8-1,可见,当译码器的输入为某一固定编码时,其,输出仅有一个固定的引脚输出为低电平,,,其余的为高电平,。而输出为低电平的引脚就作为某一存储器芯片的片选端的控制信号。,图,8-3,表,8-1,74LS138,译码器真值表,输 入 输 出,G1 G2A,*,G2B,*,C B A Y7,*,Y6,*,Y5,*,Y4,*,Y3,*,Y2,*,Y1,*,Y0,*,(,2,),74LS139,74LS139,是,双,2-4,译码器,。两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端。其引脚如,图,8-4,所示,真值表如,表,8-2,所示(见,P138,)。,图,8-4,下面,以,74LS138,为例,介绍如何进行地址分配。,例,要扩8片8,KB,的,RAM 6264,,如何通过74,LS138,把64,KB,空间分配给各个芯片?,64KB,地址空间的分配如,图,8-5,所示。,图,8-5,采用,全地址译码方式,,单片机发地址码时,每次只能选中一个存储单元。同类存储器间不会产生地址重叠的问题。,如果,用74,LS138,把64,K,空间全部划分为每块4,KB,,,如何划分呢?由于,4KB,空间需要,12,条地址线进行,“单元选择”,,而译码器的输入有,3,条地址线(,P2.6,P2.4,),,P2.7,没有参加译码,,P2.7,发出的,0,或,1,决定了选择,64KB,存储器空间的前,32KB,还是后,32KB,,由于,P2.7,没有参加译码,就,不是全译码方式,,这样前后两个,32KB,空间就重叠了。,那么,,这,32KB,空间利用,74LS138,译码器可划分为,8,个,4KB,空间,。如果把,P2.7,通过一个非门与,74LS138,译码器的,G1,端连接起来,如,图,8-6,所示,就不会发生两个,32KB,空间重叠的问题了。,8.,2.2,外部地址锁存器,地址锁存器芯片:74,LS373、8282、74LS573,等。,1.锁存器,74,LS373,带有三态门的8,D,锁存器,其引脚及内部结构如,图,8-7,和,图,8-8,。,89C51,与,74LS373,的连接如,图,8-9,所示。,图,8-6,引脚说明如下:,D7,D0:,8,位数据输入线。,Q7Q0:,8,位数据输出线。,G:,数据输入锁存选通信号,图,8-7,图,8-8,OE,*,:,数据输出允许信号,图,8-9,74LS373,功能如,表,8-3,所示。,表,8-3 74LS373,功能表,OE*,GDQ,0111,0100,00,不变,1,高阻态,2,锁存器74,LS573,输入的,D,端和输出的,Q,端依次排在芯片的两侧,,为绘制印刷电路板时的布线提供了方便。,图,8-10,74LS573,的各,引脚说明,如下,:,D7,D0,:,8,位数据输入线。,Q7,Q0,:,8,位数据输出线。,G,:,数据输入锁存选通信号,该引脚与,74LS373,的,G,端功能相同。,OE*,:,数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中数据输出到数据输出线。当该信号为高电平时,输出线为高阻态。,8.,3,程序存储器,EPROM,的扩展,采用只读存储器,非易失性。,(1)掩膜,ROM,在制造过程中编程。成本较高,因此只适合于大批量生产。,(2)可编程,ROM(PROM),用独立的编程器写入。但,PROM,只能写入一次,且不能再修改。,(,3),EPROM,电信号编程,紫外线擦除的只读存储器芯片。,(4),E,2,PROM(EEPROM),电信号编程,电信号擦除的,ROM,芯片。读写操作与,RAM,几乎没有什么差别,只是写入的速度慢一些。但断电后能够保存信息。,(5),Flash ROM,又称闪烁存储器,简称闪存。,大有取代,E,2,PROM,的趋势。,目前许多公司生产的以,8051,为内核的单片机,在芯片内部大多集成了数量不等的,Flash ROM,。,例如,,,美国,ATMEL,公司,生产的与,51,系列单片机兼容的产品,89C2051/89C51/89C52/89C55,,片内分别有,2KB/4KB/8KB/20KB,的,Flash ROM,,来作为,EPROM,使用。,对于这类单片机,在片内的,Flash ROM,满足要求的情况下,扩展外部程序存储器的工作就可省去。,8.,3.1,常用,EPROM,芯片,典型芯片是27系,列,产品,例如,,2764,(8,KB8)、,27128,(16KB8)、,27256,(32KB8)、,27512,(64KB8)。,“27”后面的数字表示其位存储容量。,随着大规模集成电路技术的发展,大容量存储器芯片的产量剧增,售价不断下降,其性价比明显增高,而且由于有些厂家已停止生产小容量的芯片,使市场上某些小容量芯片的价格反而比大容量芯片还贵。,所以,,在扩展程序存储器设计时,应尽量采用,大容量,芯片。,1.常用的,EPROM,芯片,27,系列,EPROM,芯片的引脚如,图,8-11,所示,参数见,表8-4,(,P143,,略)。,图,8-11,中的,引脚功能如下:,A0A15:,地址线引脚。数目决定存储容量来定,用来进行单元选择。,D7D0:,数据线引脚,CE,*,:,片选输入端,OE*,:,输出允许控制端,PGM*:,编程时,加编程脉冲的输入端,Vpp,:,编程时,编程电压(+12,V,或+25,V),输入端,Vcc:,+5V,,芯片的,工作,电压。,GND:,数字地。,NC,:,无用端,表,8-4,所示为,27,系列,EPROM,芯片的技术参数,其中,V,CC,是芯片供电电压,,V,pp,是编程电压,,I,m,为最大静态电流,,I,s,为维持电流,,T,RM,为最大读出时间。,图,8-11,2.,EPROM,芯片的工作方式,5,种工作方式如,表,8-5,所示。,(1)读出方式,片选控制线为低,同时输出允许控制线为低,,Vpp,为+5,V,,指定地址单元的内容从,D7D0,上读出。,(2)未选中方式,片选控制线为高电平。,(3)编程方式,Vpp,端加上规定高压,CE,*,和,OE,*,端加合适电平(不同的芯片要求不同),就能将数据线上的数据写入到指定的地址单元。,(4)编程校验方式,(5)编程禁止方式,输出呈高阻状态,不写入程序。,8.,3.2,程序存储器的操作时序,1.访问程序存储器的控制信号,(1),ALE,(2),PSEN,*,(3),EA,*,如果指令是从片外,EPROM,中读取,,ALE,用于低8位地址锁存,,PSEN,*,接外扩,EPROM,的,OE,*,脚。,P0,口:,分时低8位地址总线和数据总线,,P2,口:,高8位地址线。,2.操作时序,(1)应用系统中无片外,RAM,图,8-12(a),(2)应用系统中接有片外,RAM,图,8-12(b),由图,8-12(b),可看出:,(1)将,ALE,用作定时脉冲输出时,,执行一次,MOVX,指令就会丢失一个脉冲,。,(2)只有在执行,MOVX,指令时的第二个机器周期期间,地址总线才由数据存储器使用。,8.,3.3 AT89C51,与,EPROM,的接口电路设计,1.硬件接口电路,设计时,由于,EPROM,在正常使用中只能读出,不能写入,故,EPROM,芯片没有写入控制脚,只有读出控制脚,记为,OE*,,它与,89C51,单片机的,PSEN*,相连,地址线、数据线分别与,89C51,的地址线、数据线相连,片选端的控制可采用线选法或译码法。,图,8-13,为,外扩一片,27128,的接口电路图。,图,8-13,3.使用多片,EPROM,的扩展电路,AT89C51,扩展4片27128,。,图,8-14,图,8-14,中的片选控制信号由译码器产生。,4,片,27128,各自所占的地址空间,请读者自己分析。,8.,4,静态数据存储器的扩展,在单片机应用系统中,外扩的数据存储器都采用静态数据存储器(,SRAM,),所以,只讨论,SRAM,与,89C51,的接口,。,所扩展的数据存储器空间地址由,P2,口提供高,8,位地址,,P0,口分时提供低,8,位地址和,8,位双向数据总线。片外数据存储器,RAM,的,读,和,写,由,89C51,的,RD*,(,P3.7,)和,WR*,(,P3.6,)信号控制,而片外程序存储器,EPROM,的输出允许端(,OE*,)由,89C51,的程序存储器读选通信号,PSEN*,控制。,尽管与,EPROM,的地址空间范围都是相同的,但由于控制信号不同,故不会发生总线冲突。,8.,4.1,常用的静态,RAM(SRAM),芯片,典型型号有:,6116,、6264、62128、62256。,+5,V,电源供电,双列直插封装,6116为24引脚封装,6264、62128、62256为28引脚封装,引脚如,图,8-15,。,各引脚功能:,A0,A14:,地址输入线。,D0D7:,双向三态数据线。,CE,*,:,片选信号输入。对于6264芯片,当26脚(,CS),为高电平时,且,CE,*,为低电平时才选中该片。,O,E,*,:读选通信号输入线。,WE,*,:,写允许信号输入线,低电平有效。,图,8-15,Vcc,:,工作电源+5,V,GND,:,地,工作方式有,读出、写入、维持,三种,这些工作方式的操作控制如,表8-6,(,P148),。,8.,4.2,外扩数据存储器的读写操作时序,1.读片外,RAM,操作时序,图,8-16,2.写片外,RAM,操作时序,写是,CPU,主动把数据送上,P0,口总线。故在时序上,,CPU,先向,P0,口总线上送完8位地址后,在,S3,状态就将数据送到,P0,口总线。,图,8-17,8.,4.3 AT89C51,与,RAM,的接口电路设计,图8-,18,为线选法扩展外部数据存储器的电路,。,图,8-18,地址线为,A0A12,,故8031剩余地址线为三根。用线选法可扩展3片6264。3片6264对应的存储器空间如,表,8-7,。,表,8-7,译码选通法扩展,如,图,8-19,所示。,图,8-19,各62128芯片的地址分配见,表8-,8,。,例8-1,编写程序将片外数据存储器中5000,H50FFH,单元全部清零,方法1:,用,DPTR,作为数据区地址指针,同时,使用字节计数器,。,MOV DPTR,#5000H;,设置数据块指针的初值,MOV R7,#00H ;,设置块长度计数器初值,CLR A,LOOP:MOVX DPTR,A,;把某一单元,清零,INC DPTR ;,地址指针加1,DJNZ R7,LOOP;,数据块长度减1,若不为,;,0,则继续清零,HERE:SJMP HERE;,执行完毕,原地踏步,方法2:,用,DPTR,作为数据区地址指针,但不使用字节计数器,而是,比较特征地址,。,MOV DPTR,#5000H,CLR A,LOOP:MOVX DPTR,A,INC DPTR,MOV R7,DPL,CJNE R7,#0,LOOP,;,与末地址+1比较,HERE:SJMP HERE,8.,5 EPROM,和,RAM,的综合扩展,8.,5.1,综合扩展的硬件接口电路,例8-2,采用,线选法,扩展2片8,KB,的,RAM,和2片8,KB,的,EPROM。RAM,选6264,,EPROM,选2764。扩展接口电路见,图,8-20,。,图,8-20,(,1,)控制信号及片选信号,IC2,和,IC4,占用地址空间为2000,H3FFFH,共8,KB。,同理,IC1、IC3,地址范围4000,H5FFFH(P2.6=1、P2.5=0、P2.7=0)。,线选法地址不连续,地址空间利用不充分。,(,2,)各芯片地址空间分配,IC2,和,IC4,占用的地址空间为,A000H,BFFFH,共,8KB,。,同理,IC1,、,IC3,的地址范围为,C000H,DFFFH,。,4,片存储器各自所占的地址空间如,表,8-9,所示。,例8-3,采用,译码器法,扩展,2片8,KB EPROM,2,片8,KB RAM。EPROM,选用2764,,RAM,选用6264,。共扩展4片芯片。扩展接口电路见,图8-2,1,。,图,8-21,各存储器地址范围如下:,表,8-9,可见译码法进行地址分配,各芯片地址空间是连续的。,8.,5.2,外扩存储器电路的工作原理及软件设计,1.单片机片外程序区读指令过程,单片机上电复位后,,PC=0000H,,,CPU,就从,0000H,地址开始取指令,执行程序。,在取指令期间,,PC,地址低,8,位,送往,P0,口,经锁存器锁存输出作为,A0,A7,地址线。,PC,高,8,位,地址送往,P2,口,直接由,P2.0,P2.4,锁存到,A8,A12,地址线上,,P2.5,P2.7,输入给,74LS139,进行译码输出片选。这样,根据,P2,口、,P0,口状态则选中了第一个程序存储器芯片,IC1,(,2764,)的第一个单元地址,0000H,。,然后当,变为低电平,时,把,0000H,中的指令代码经,P0,口读入内部,RAM,中进行译码,从而决定进行何种操作。,取出一个指令字节后,PC,自动加,1,,然后取第二个字节,依次类推当,PC=1FFFH,时,从,IC1,最后一个单元取指令,然后,PC=2000H,,,CPU,向,P2,口、,P0,口送出,2000H,地址时,则选中第二个程序存储器,IC2,,,IC2,的地址范围为,2000H,3FFFH,,读指令过程同,IC1,,不再赘述。,2.单片机片外数据区读,/,写数据过程,例如,,把片外,6000H,单元的数送到片内,RAM 50H,单元,程序如下:,MOV DPTR,#6000H,MOVX A,DPTR,MOV 50H,A,例如,,把片内50,H,单元的数据送到片外,4000H,单元中,程序如下:,MOV A,50H,MOV DPTR,#4000H,MOVX,DPTR,A,AT89C51,单片机读写片外数据存储器中的内容,除用,MOVX A,DPTR,和,MOVX DPTR,A,外,还可使用,MOVX,A,Ri,和,MOVX,Ri,A,。,这时通过,P0,口输出,Ri,中的内容(低8位地址),而,把,P2,口原有的内容作为高8位地址输出。,例8-4,将程序存储器中以,TAB,为首址的32个单元的内容依次传送到外部,RAM,以7000,H,为首地址的区域去。,DPTR,指向标号,TAB,的首地址。,R0,既指示外部,RAM,的地址,又表示数据标号,TAB,的位移量。本程序的循环次数为32,,R0,的值:031,,R0,的值达到32就结束循环。程序如下:,MOVP2,#70H,MOVDPTR,#TAB,MOVR0,#0,AGIN:MOVA,R0,MOVCA,A+DPTR,MOVXR0,A,INCR0,CJNER0,#32,AGIN,HERE:SJMPHERE,TAB:DB,8.,6 ATMEL89C51/89C55,单片机的片内闪烁存储器,AT89C51/89C52/89C55,是低功耗、高性能的,片内含有4,KB/8KB/20KB,闪烁可编程/擦除只读存储器,芯片内的闪存允许在线编程或采用通用的编程器对其重复编程。,8.6.1 89C51,的性能及片内闪烁存储器,89C51,的主要性能,(,1,)片内有4,KB,可在线重复编程的闪烁存储器(,Flash,Memory),(2),存储器可循环写入/擦除,1000次,。,(,3,)存储器,数据保存时间,为,10年,。,(,4,)宽工作电压范围:,Vcc,可为+2.76,V。,(5),全静态工作:可从0,Hz16MHz。,(6),程序存储器具有3级加密保护。,(,7,)空闲状态维持低功耗和掉电状态保存存储器内容。,下面介绍,AT89C51,单片机片内闪烁存储器的主要性能及其编程方法。,AT89C51,单片机的片内程序存储器除由闪烁存储器取代了,87C51,的,EPROM,外,其余部分完全相同。,AT89C51,单片机的引脚与,87C51,的引脚也是完全兼容的。,AT,89C51,的,I/O,口,P0,、,P1,、,P2,和,P3,除具有与,8031,相同的一些性能和用途外,在对,Flash,编程时,,P0,口还可接收代码字节,但在程序校验时需要外加上拉负载电阻。,在,Flash,编程和程序校验期间,,,P1,口,接收低位地址字节,,P2,口,接收高位地址位和一些控制信号,,P3,口,也接收,Flash,编程和校验用的控制信号。此时,,ALE/PROG*,引脚,是编程脉冲输入(,PROG*,)端。,该芯片内有,三个加密位,,其状态可以是编程(,P,)或不编程(,U,),各状态提供的功能见,表,8-11,。,如果加密位,LB1,被编程,则,EA*,脚的电平在复位时被采样并锁存。若器件在加电时不进行复位,那么该锁存器初始化为一随机值,并在复位有效前始终保持该值。,为使器件工作正常,,EA*,的锁存值必须与引脚的当前逻辑电平一致。,AT,89C51,的,三个加密位,可以不被编程(,U,)或被编程(,P,),以获得,表,8-11,所示的特性。,表8-1,1,对,89C51,片内的,Flash,存储器编程,设计者只需在市场上购买相应的编程器。,一种,是购买单片机仿真开发系统时就带有编程器,,另一种,是单独购买编程器。,开发者可按照编程器的说明进行操作,,如想对写入的内容,加密,,只需按照编程器的菜单,选择加密功能选项即可。,编程器,
展开阅读全文