单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单片机存储器扩展原理包括外设接口方式等,单片机存储器扩展原理包括外设接口方式等单片机存储器扩展原理包括外设接口方式等第八章 单片机应用系统扩展设计基础MCS-51单片机虽然在一块芯片上集成了计算机的基本功能部件已具备了很强的功能。但在比较复杂的应用场合,其存储器I/O端口或中断源等往往略显不够、所以往往要根据需要对单片机系统进行功能扩展。特别是对8051型这种内部无程序存储器单片机必须有外部扩展程序存储器EPROM,才可用于实际应用系统。,本章重点介绍常用扩展接口电路及其设计方法。,第八章 单片机应用系统扩展设计基础,MCS-51单片机虽然在一块芯片上集成了计算机的基本功能部件已具备了很强的功能。但在比较复杂的应用场合,其存储器I/O端口或中断源等往往略显不够、所以往往要根据需要对单片机系统进行功能扩展。特别是对8051型这种内部无程序存储器单片机必须有外部扩展程序存储器EPROM,才可用于实际应用系统。,本章重点介绍常用扩展接口电路及其设计方法。,81程序存储器扩展,MCS-51单片机的8051/8751片内有4KB的ROM或EPROM,而8031片内无ROM,若在应用中使用片内ROM容量不够或选用8031时,需要扩展外部程序存储器。片内、片外的ROM空间是统一编址的在这一节中主要通过典型的实例介绍8031外接EPROM和EEPROM芯片扩展程序存储器的设计方法。,8.1.1 EPROM程序存储器扩展设计,单片机的存储器扩展一般有二种设计方法;线选法和译码法。所谓线选法就是将存储器的片选线CE 接P2口的某位地址线。译码法需要用地址译码器,这样可以充分利用地址资源。,可作为扩展的典型产品有2716(2KB)、2732(4KB)、2764(8KB)、27128(16KB)、,27256(32KB)等。这些芯片是可用紫外线电擦除可编程只读存储器EPROM。,例8-1:扩展2KB/4KB程序存储器。2716(2K)/2732(4KB)的引脚如表8.1。,表8.1 2716(2K)/2732(4KB)的引脚,A0A10(2716),A0A11(2732),地址线,D0D7,数据输出线,CE/PGM,片选/编程脉冲输入,OE/VPP,数据输出选通线/编程电源,2716/2732与单片机的连接如图8.1:,2716是2K8位的EPROM芯片,有11根地址线A0A10。它们分别与8031单片机的P0口(P0.0P0.7)和P2口的P2.0P2.2连接。2716的21脚VPP(编程电源端)接+5V,OE与PSEN连接,CE 接地,当PSEN =0选通信号为低电压时,选通读出2716的指令码。PSEN=1,则2716数据线输出为高阻态。2716的地址范围为0000H07FFH。,2716/2732与单片机的连接如图8.1:,8.1.1 EPROM程序存储器扩展设计,2732是4K8的EPROM。引脚排列与2716基本一致其A0A11分别接8031的P0.0P0.7和P2.0P2.3。20脚OE/UPP与PSEN 相连,CE接地。2732的地址范围为0000H0FFFH。,在扩展中,有一个问题要在设计中提请注意:P2口除被使用的口线外,多余的引脚不宜作通用I/O线,否则会给软件设计和使用上带来麻烦。,多片的存储器扩展设计:它的设计方法可用P2的高位地址线连接各片存储器的片选线CE。而后求出它们的不同的地址范围,图8.2 扩展2KB/4KB程序存储器,例8-3:用一片27128 EPROM扩展16KB的程序存储器。,27128具有14根地址线A0 A13可选中片内16KB程序存储器空间中任一单元,按照图8.3的接法:片选信号CE由P2.7送出低电平有效。则27128的地址范围是4000H7FFFH。,8.1.2扩展E,2,PROM,E,2,PROM(即EEPROM)是一种电擦除电可编程的只读存储器。其特点是能在线擦除和改写存储单元内容。具有在断电情况下能保持存储单元的内容的性能E,2,PROM还像静态RAM一样,可以在线进行读写操作。下面仅对2864A E,2,PROM进行介绍。,图,8.4,所示为,8031,外扩一片,8KB E,2,PROM 2864A,组成的三片系统。,2864A,的引脚与,6264,相同并兼容。在读工作方式时,2864A的引脚及功能与2764相同。图中,2864A的片选端CE与高位地址线P2.7连接,P2.7=0时才能选中2864A。所以,2864的地址范围为0000H1FFFH。这8KB存储器既可用作程序存储器,也可以用作数据存储器(掉电时,数据不易失)。,结合硬件电路,编写一个写入一页(16个字节)数据到2864AE*EPROM的子程序。设被写入的数据取自8031内部RAM40H开始的源数据区中。写入程序如下:,SOURCE DATA 40H ;源数据区首地址,OBJECT DATA 0000H ;E,2,PROM首地址,LENGTH DATA 10H ;一页数据长度,MOV R0,#SOURCE ;取源地址,MOV R1,#LENGTH ;取数据块长度,MOV DPTR,#OBJECT ;取目的地址,LOOP:MOV A,R0 ;取源数据,MOVX DPTR,A ;写入E2PROM中,MOV R2,DPL ;暂存目的地址指针,MOV R3,DPH,INC R0 ;源地址指针指向下一个单元,INC DPTR ;目的地址指针向下一单元,DJNZ R1,LOOP ;字节数未满,转移,DEC R0 ;源地址指针指向最后页尾,MOV DPL,R2 ;目的地址指针指向最后一个字节,MOV DPH,R3,CHECK:MOVX A,DPTR ;读出E*ERPOM最后写入的字节,XRL A,R0 ;与原数据比较,JB ACC.7,CHECK ;最高位不同,继续查询,RET ;最高位相同,一页写完,82数据存储器扩展设计,由于8051单片机的片内RAM仅有128B,当系统需要较大容量RAM时就需要片外扩展数据存储器RAM,最大可扩展64KB,常用的RAM芯片分静态和动态两种,一般采用静态RAM较方便,如6116(2K*8),6264(8K*8),动态RAM有DPRM2164(8KB)等,与动态RAM相比,静态RAM无须考虑保持数据而设置刷新电路,故扩展电路较简单。,扩展数据存储器的地址空间同外扩程序存储器一样,用P2口提供高8位地址,P0口分时提供低8位地址和8位数据,片外数据存储器RAM的读和写由8051的RD(P3.7)和WR(P3.6)信息控制。,注意:虽然所扩展RAM和EPROM会共处同一地址,由于片外程序存储器EPROM的输出允许端(OE)受PSEN信号控制,控制信号及使用的指令不同,故两者不会发生总线冲突。,有时数据系统设计需要,可同时扩展多个不同芯片,CPU选择扩展的芯片的过程称片选。片选在电路形式上有两种,一种叫线选法,另一种叫译码法。,下面分列予以介绍,1 线选法,线选法是把单片机高位地址分别与要扩展的芯片的片选端相连,控制选择各条线的电路以达到选片目的,其优点是接线简单,适用于扩展芯片较少的场合,缺点是芯片的地址不连续,地址空间的利用率低。,例如,选用8051单片机扩展2片8KB数据存储器6264和2片8KB的程序存储器2764芯片,采用线选法电路如图8.6所示,图中数据线地址线及控制线连接方法与前面电路相同,不再重复。,(1)片选线和控制信号,地址线P2.5直接接到IC1(2764)和IC3(6264)的片选CE端,P2.6直接接到IC2(2764)和IC4(6264)的片选CE端。当P2.6=0,P2.5=1时,IC2和IC4的片选端CE为低电平,IC1和IC3的CE端全为高电平。当P2.6=1,P2.5=0时IC1和IC3的CE端都是低电平,每次同时选中两个芯片,具体哪个芯片工作还要通过PSEN,WR,RD控制线控制。当片外程序存储区读选通信号PSEN为低电平,肯定到ROM中读程序;当读、写选通信号RD或WR为低电平则到RAM中读数据或往里写入数据。由于都用P0口作为数据线,所以PSEN、WR、RD三个信号时序上是分开的,不可能同时有效。,(2)各芯片的地址范围,有上图当P2.6=1,P2.5=0时,IC1和IC3的地址范围,当A,15,=0时,,1 译码法,译码法是通过译码电路来选择扩展芯片的片选端,常用的译码电路有74LS138,74LS139等,(1)74LS138与74LS139译码器工作原理,74LS138,是一个“,3,8,”译码器,即它有,3,个输入端,,A,,,B,,,C,和,8,个输出端,Y0Y7,,输出端,Y0Y7,,输出端可分为扩展芯片的片选端相连。,3,个输入端可组成,8,种输入状态,分别对应,8,种输出状态,,8,种输出中每一种只能有一位是“,0,”,其余,7,位全是“,1,”。只有片选端和,74LS138,输出端为“,0,”的接口相连的芯片被选中,保证了每个芯片地址的唯一性。,74LS138,的引脚图如图,8.7,(,a,)所示,(2)采用74LS138译码电路举例,图8.8是一个采用74LS138译码扩展8块2716 2K的存储器,共16K。,根据74LS138的功能分析,当P2.5、P2.4、P2.3全为0时,Y0=0,选中2716(0),2716(0)的地址为:即:8000H87FFH。同理可得:2716(1)的地址:8800H8FFFH;2716(2)的地址:9000H97FFH;2716(3)的地址:9800H9FFFH;2716(4)的地址:A000HA7FFH;2716(5)的地址:A800HAFFFH;2716(6)的地址:B000HB7FFH;2716(7)的地址:B800HBFFFH。2716(0)2716(7)在空间上是完全连续的。,A15,A14,A13,A12,A11,A10,A9,A8,A7,A6,A5,A4,A3,A2,A1,A0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,(2)采用74LS139译码电路举例,图8.9是一个采用74LS139译码扩展4个芯片的电路,图中74LS139的4个输出端Y0Y3分别连接4个芯片IC1,IC2,IC3,IC4的片选端。Y0Y3每次只能有一位是“0”,其他三位全为“1”,输出为“0”的一端所连接的芯片被选中。,译码法地址分配,首先要根据译码芯片真值表确定译码芯片的输入状态,由此再判断其输出端选中芯片的地址。如图,所以可以看出,IC1,的地址范围方法如下:,则,IC1,为:,0000H1FFFH,,其中,A15,,,A14,,,A13,为,000,是根据,139,的真值表所确定的。同理可求出:,IC2 2000H3FFFH,;,IC3 4000H5FFF,;,IC4 6000H7FFF,;,其地址空间是连续的。,A15,A14,A13,A12,A11,A10,A9,A8,A7,A6,A5,A4,A3,A2,A1,A0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,8.3并行I/O扩展设计,从前面学习中知道8051在系统扩展时,P0,P2口常被用为地址线,P0又被兼做数据线,P3口被专用线占用,只有P1口可以用做I/0接口,所以只有一个8位I/O接口往往是不够的,故I/O接口也需要扩展,本节重点介绍I/O接口扩展方法及应用实例。,I/O接口一般有二种扩展方法:总线扩展法,串行口扩展法。总线扩展又可分为简单I/0接口扩展和可编程I/O接口扩展。简单I/O接口扩展常用芯片有T