AT89S51单片机最小系统组成及存储器的扩展Word格式文档下载.docx
- 文档编号:20869776
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:34
- 大小:622.46KB
AT89S51单片机最小系统组成及存储器的扩展Word格式文档下载.docx
《AT89S51单片机最小系统组成及存储器的扩展Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《AT89S51单片机最小系统组成及存储器的扩展Word格式文档下载.docx(34页珍藏版)》请在冰豆网上搜索。
如果是个单字节指令,在S4仍会读一次,但这次读到的内容将被忽略或丢弃。
在任何情况下,指令都是在S6P2执行完毕。
单周期、单字节指令和单周期、双字节指令的取指、执行过程如图5.2的(A)、(B)所示。
AT89S51单片机的指令中,大多数指令都是单周期或双机器周期指令,只有乘法指令(MUL,multiply)和除法指令(DIV,divide)需要四个机器周期才能完成。
单字节双周期指令的取指、执行时序如图5.2(C)所示。
共有四次取指,但只有第一次是有效的,后三次都被丢弃。
在这类指令中,有一个例外,即MOVX指令,它的取指和执行时序如图5.2(D)所示,当读取和执行MOVX指令时,在第二个机器周期的没有了两次取指操作,并且,在第二个机器周期的S1P2、S2P1期间,ALE信号也不会出现。
5.2.2单片机访问外部存储器的时序
单片机外部的存储器可分成两种,即程序存储器和数据存储器,程序存储器一般都是只读,而数据存储器则可读、写。
由于单片机系统中外部数据存储器和I/O端口是统一编址的,读、写外部数据存储器的时序和读写I/O端口的时序完全一样。
AT89S51单片机片内有4k可在线编程的程序存储器,当程序超过4K时,就必须扩展外部程序存储器,AT89S51单片机最大可扩展64K的外部程序存储器。
当单片机CPU从外部程序存储器取指令时,PCH(A15~A8)由P2口输出;
PCL(A7~A0)由P0口输出,读取的指令代码也由P0口输入,此时,P0分时复用作地址/数据总线,为了将P0口的地址/数据信息分开,单片机同时输出一个地址锁存允许信号ALE(AddressLatchEnable),用于锁存P0口的地址信息。
AT89S51单片机外部程序存储器的读时序可分成两种情况,即读MOVX类指令时的情况和读其它类指令的情况,具体的时序如图5.3(a)、(b)所示。
当读取的不是MOVX类指令时,读外部程序存储器时序如图5.3(a)所示。
每一个机器周期中,地址锁存允许信号ALE两次有效,在ALE由高变低时,出现在P0口的信息总是有效地址PCL,可用外部地址锁存器将PCL锁存起来,形成地址总线的A7~A0;
/PSEN(programstoreenable)也是每个机器周期两次有效,用于选通外部程序存储器,使指令送到P0总线上,由CPU取入;
P2口输出PCH,形成地址总线的高8位,即A15~A7;
P0口交替出现地址信息PCL和指令代码,即在ALE的下降沿出现地址信息,在/PSEN有效时出现的是指令代码。
这种情况下,若专用功能寄存器AUXR中的DISALE位为0,ALE有效信号会以振荡器频率(的1/6)的恒定速率出现在引脚上。
ALE信号,主要有两个功能,一个是用于锁存出现在P0口的PCL,另一个是用来作为外部时钟或定时脉冲。
当读取的指令是MOVX类指令时,读外部程序存储器时序如图5.3(b)所示。
MOVX类指令是单字节双周期指令,即需要两个机器周期才能完成。
在第一个周期的S5状态,ALE由高变低,P0总线上出现的将不再是有效的PCL值,而是一个有效的地址信息,若执行的是MOVX@DPTR类指令,则此有效的地址信息为地址DPL的值,同时,在P2口出现的信息是有效的DPH值;
若执行的是MOVX@Ri类指令,此有效的地址信息为Ri的内容,同时在P2口线上出现的将是特殊功能寄存器P2口内锁存器的内容。
在第一个机器周期的S6状态,/PSEN信号将不再出现,且下一个机器周期的第一个ALE有效信号也不再出现。
从图5.3可以看出,执行MOVX类指令需要两个机器周期,ALE信号出现三次,比读非MOVX类指令时少了一次;
/PSEN信号出现了两次,比非MOVX类指令少了两次。
读到MOVX指令操作码后,在执行阶段,/RD、/WR)会有效,这时,在P0总线上将出现有效的输入(或输出)数据。
5.3单片机系统中的半导体存储器
存储器是单片机系统的一个重要组成部分,其功能主要是存放程序或数据。
存储器有很多种分类方法,如按照制造工艺不同可分为双极型晶体管电路和MOS电路两种,双极型存储器的存取速度快,但集成度低、功耗大;
MOS型存储器正好相反,集成度高,功耗低,但速度较慢。
按功能不同,存储器又可分为随机存取存储器(简称RAM,RandomAccessMemory)、只读存储器(ROM,ReadOnlyMemory)以及可读写ROM三大类,如图5.4所示。
5.3.1随机存取存储器(RAM)
随机存取存储器(RAM)在单片机系统中主要用于存放数据,用户程序可随时对RAM进行读或写操作,断电后,RAM中的信息将丢失。
RAM可分为静态RAM(StaticRAM,SRAM)和动态RAM(DynamicRAM,DRAM)两种。
SRAM中的内容在加电期间存储的信息不会丢失;
而DRAM在加电使用期间,当超过一定时间时(大约2ms),其存储的信息会自动丢失。
因此,为了保持存储信息不会丢失,必须设置刷新电路,每隔一定时间对DRAM进行一次刷新。
与SRAM相比,DRAM具有集成度高、功耗低、价格低等优点,但因为其需要刷新电路,与CPU进行联接时比SRAM复杂。
静态RAM虽然集成度低、功耗高、但由于和CPU的接口电路简单,在单片机系统中被广泛采用。
SRAM在单片机系统中主要用作数据存储器,常见的芯片有6116、6264、628128
等。
5.3.2只读存储器(ROM)
只读存储器(ROM)在单片机系统中主要用作外部程序存储器,其中的内容只能读出,不能被修改,断电情况下,ROM中的信息不会丢失。
按照制造工艺的不同,ROM可分为如下几种:
(1)掩膜ROM。
掩膜ROM是在工厂生产的时候,通过“掩膜”技术将需存储的程序等信息由厂家固化在芯片内,这种ROM制成后便无法改变其中内容,掩膜ROM的成本低,适用于做成固定的、成批生产的程序存储芯片。
(2)紫外线擦除的可编程ROM又称EPROM(ErasablePROM)。
这种芯片上开有一个小窗口,紫外线通过小窗口照射内部电路可以擦除内部的信息,芯片内的信息被擦除后可重新进行编程,常见的芯片有27C32、27C64、27C128、27C512等,EPROM在单片机系统中常用作外部扩展的程序存储器。
(3)OTP型PROM。
OTP(One
Time
Programmable)型PROM(ProgrammableROM)在出厂时不写入信息,用户可根据自己的需要将信息写入其中,但只能写入一次,即一次写入后不能再写入,这种存储器常被集成到单片机内部,目前有许多OTP型的单片机,OTP型的存储器很少见。
5.3.3非易失性随机存储器(NVRAM)
非易失性(Nonvolatile)随机存储器(NVRAM)是指可电擦除的存储器,它们具有RAM
的可读、写特性,又具有ROM停电后信息不丢失的优点,在单片机系统中既可作程序存储器,也可作数据存储器用。
这类芯片主要有EEPROM或EEPROM(ElectricallyErasablePROM)和Flash。
按接口方式不同,NVRAM又可分成两种,即并行接口和串行接口。
并行接口的芯片因需要封装很多条的数据线和地址线,容量一般较小。
串行接口的芯片一般只用二条或三条线和CPU交换数据,因此,容量一般很大。
并行接口的芯片在单片机系统中即可用作程序存储器,也可用作数据存储器,而串行接口的芯片只能用作数据存储器。
5.3.4存储器的主要参数
存储器的主要性能参数有三个,即存储容量、存取周期和功耗。
(1)存储容量。
存储器是由许多存储单元组成,每个存储单元又由若干存储元组成,每个存储元存放1位二进制代码。
存储容量是表示存储器存放信息量的指标。
存储容量越大,所能存储的信息就越多。
一个存储器芯片的容量常用有多少个存储单元以及每个存储单元可存放多少位二进制数来表示。
例如,某存储器芯片有1024个单元,每个存储单元可存放4位二进制数,则常以1024×
4表示该存储器芯片的容量。
容量的单位用K表示,1K即表示1024(210)个存储单元,这样,上述存储器芯片的容量便可记作1K×
4。
在单片机系统中,存取数据时常以字节(Byte)为单位,一个字节规定由8个二进制位组成,因此,单片机中的数据存储器一般情况下每个单元都是由8个存储元组成,表示存储器容量时更常见的是KB。
(2)存取周期。
存储器从接收到寻找存储单元的地址码开始,到它取出或存入数据所需要的时间,称为存取周期,这是用以表示存储器工作速度的重要指标。
MOS型存储器的存取周期约为100~300ns。
(3)功耗。
每个存储器芯片的功率称为功耗,单位为mW/芯片。
功耗又分为工作功耗和维持功耗。
维持功耗是存储器未选通时,处于低功耗、高输出阻抗、后备状态下时的功耗,芯片被选通后,它能自动进入读/写工作状态,对DRAM而言,维持功耗要比工作功耗小1~2
个数量级。
有时功耗的单位为μW/b(每存储位的功耗)。
5.3.5存储器容量的计算
芯片存储容量的识别与计算。
对于并行接口的存储器芯片,由地址线的条数可以确定芯片包含的存储单元数,由数据线的条数可以确定每个单元包含的存储元的数量。
如SRAM芯片6264,它有13条地址线,则其包含的存储单元数为213=23×
210=8K,8条数据线表明其每个单元包含了8个存储元,则6264的容量为8K×
8=8KB;
对于串行接口芯片,从芯片的型号基本上就可以看出容量,不同厂商的有各自的编号。
5.4单片机系统存储器的扩展
AT89S51单片机的内部集成了CPU、RAM、程序存储器、定时/计数器、I/O接口以及串行通信接口等、使用非常方便,对于简单的控制及检测系统利用一片单片机就够了,但对于一些较大的复杂应用系统,往往还需要扩展一些外围芯片,如存储器、A/D、D/A以及各种接口芯片等以补充片内硬件资源的不足。
本章主要介绍外部存储器的扩展方法,其它的接口芯片在将在下一章中讨论。
单片机外部的存储器分为(程序)存储器和数据存储器,它们使用不同的读信号,地址互相重叠,都为64K的地址空间。
5.4.1单片机系统地址、数据和控制总线的产生
AT89S51单片机是一种基于总线的单片机,外部存储器和端口的扩展实际上就是地址、数据和控制总线如何连接的问题。
如前所述,当单片机系统有外扩的存储器或端口时,P0口分时复用为低8位地址(A7~A0)和数据总线(D7~D0),P2口提供高8位的地址(A15~A8),单片机通过/RD、/WR控制信号对外部数据存储器或I/O端口进行读、写,外部程序存储器只有读操作,通过/PSEN实现。
显然,P0口即是数据总线;
只要把P0口的低8位地址信息分离并锁存下来,便可以和P2口一起构成地址总线。
为此,单片机专门输出一个地址锁存允许(ALE)信号,其作用就是锁存P0口的地址信息,单片机P0口的地址/数据分离方法如图5.5所示。
图中的地址锁存器常用带三态输出的74LS373、74LS573或者8282等实现,74LS373是三态输出并有锁存功能的的8D触发器,其引脚分布如图5.6(a)所示。
/OE为输出允许,LE为锁存允许,D0~D7为D型触发器的输入端,O0~O7为SN74LS373的输出端,从输入D端到输出O端的逻辑电路如图5.6(b)所示,其中n=0~7。
当输出允许信号(/OE)为高电平时,输出端Qn为高阻状态,正常工作时,/OE接地;
LE为锁存允许信号,当其为高电平时,信号可以从D端传输至Q端,即Q端的信号会随着D端信号的变化而变化;
当LE从高电平跳变到低电平时,跳变时D端的信号就被锁存到Q端,以后只要LE为低电平,不论D端的信号如何改变,Q端的电平都不会发生变化。
单片机系统中,通常将ALE信号接到LE端,由图5.3(程序存储器的读时序)可知,每当ALE由高变低时,P0口的信息正好是PCL(非MOVX指令时)或有效的地址(MOVX指令时),这样就可以利用ALE信号把通过SN74LS373把P0口的址址信息锁存下来,形成地址总线的低8位,实现地址/数据分离。
SN74LS373的真值表如表5.1所示:
SN74LS573的功能与SN74LS373完全一样,但两者的引脚分布不同。
SN74LS373的输入端D
和输出端O分布在芯片两侧,而SN74LS573的引脚分布如图5.7所示,所有输入端D位于同一侧,而输出端O位于芯片的另一侧,这样绘制PCB印制电路板图时,连线会更方便。
实际应用系统中,还可以用SN74HC373或SN74HC573,HC系列的芯片速度比LS系列要快。
5.4.2单片机系统程序存储器(EPROM/E2PROM/Flash)扩展
AT89S51单片机内部有4KBFlash,当程序大于4KB时,就需要扩展程序存储器。
由于AT89S51是基于总线的单片机,因此,作为程序存储器的芯片首先必须是并行接口的芯片,其次,程序存储器还须具有系统掉电后信息不会丢失的特性,所以,前面讨论的并行接口EPROM、EEPROM、Flash芯片都可以作为程序存储器。
单片机系统中最常见的程序存储器是用紫外线擦除的27系列EPROM芯片,如27C64(8KB)、27C128(16KB)、27C256(32KB)以及27C512(64KB)等。
27系列芯片上一般都有一个小窗口,用于擦除其中的信息,当写入调试好的程序后,一定要将小窗口用不透明的胶纸帖上,否则,阳光中的紫外线可能会破坏其中的信息;
在一些特殊的场合,可能需要系统有在线编程功能,这时就只能用EEPROM和Flash作为程序存储器。
很多厂商都生产E2PROM和Flash芯片,如ATMEL公司的AT28C64(8KBE2PROM)、AT28C256(32KBE2PROM)以及AT29C256(32KBFlash)、AT29C512(64KBFlash)等。
程序存储器的“片选(/CE)”信号一般都是直接接地,不存在译码的问题。
单片机系统最多可扩展64KB的外部程序存储器。
扩展32K程序存储器的电路如图5.8(a)所示:
单片机扩展程序存储器,/EA引脚必须接地;
由P2口和锁存器共同组成16位的地址总线;
P0为数据总线;
/PSEN为控制总线。
27C256是一个容量为32KBEPROM芯片,引脚定义如图5.8(b)所示,它共有28个引脚,分别是:
电源(VCC)、数字地(GND)、地址引脚(A14~A0)、数据引脚(O7~O0)、/片选信号(/CE)、输出允许(/OE)和编程电源Vpp。
27C256作为程序存储器时,其地址引脚A14~A0分别接地址总线的A14~A0;
数据引脚D7~D0分别接数据总线的D7~D0;
片选信号/CE接地;
输出允许(/OE)接程序选通允许/PSEN。
VCC接+5V电源;
GND接数字地;
Vpp接+5V电源。
5.4.3单片机系统数据存储器(SRAM/EEPROM/Flash)的扩展
单片机系统扩展数据存储器按存储器接口类型可分为两种,即扩展并行接口的数据存储器和扩展串行接口的数据存储器。
传统的扩展数据存储器的方法即是指扩展并行接口的数据存储器,扩展串行接口数据存储器的方法见后面的章节。
并行数据存储器的扩展和程序存储器的扩展方法基本相同,即地址总线和数据总线的连接和程序存储器完全一样,访问数据存储器时的控制总线主要由/RD、/WR等组成。
SRAM、E2PROM、Flash芯片都可以作为数据存储器,单片机系统最常见的SRAM型数据存储器有6264(8KB)、62256(32KB)628128(128KB),前面提到的AT28C64、AT28C256、AT29C256等也都可用作外部RAM,但用E2PROM和FLASH芯片作外部RAM时,写操作的速度要比SRAM慢得多。
系统扩展8KB外部RAM的电路如图5.9(a)、(b)所示:
由于数据存储器可读、可写,所以,数据存储器芯片与程序存储器芯片的最大区别是它都有一个写信号引脚,图5.9(a)为扩展6264的原理图。
SRAM6264的容量为8KB,有28个引脚,即电源和地引脚(Vcc、GND)、13个地址引脚(A12~A0)、8个数据引脚(O7~O0)、2个片选引脚(/CE1、CE2)、1个写信号引脚(/WE)、1个输出允许(/OE)信号引脚,具体的引脚定义如图5.9(b)所示。
一般情况下,当存储器的“片选(/CE)”信号无效时,O7~O0为三态输出。
从图5.8和5.9可以看出,并行接口的存储器芯片引脚基本相同,大容量的芯片地址线增加,除了电源和地外,其余的引脚可分成三类,即接地址总线的引脚(An~A0)、接数据总线的引脚(O7~O0)以及接控制总线的引脚(/OE、/WE、/CE、/RD)等。
单片机数据存储器最大可扩展64KB,可以用多片SRAM芯片实现,也可以用一片64KB容量的芯片实现,但需要注意,一般的单片机系统除了扩展外部RAM,可能还需要扩展各种端口,如A/D、D/A转换或用于键盘或显示的I/O端口等,由于单片机系统的外部RAM和端口是统一编址的,即是说如果一个地址用作外部存储器单元,则将不能再用作端口地址,反之亦然,所以,实际应用中很少有扩展64KB外部RAM的,如果实际应用系统确实需要64KB或更大的外部RAM空间,则可以通过存储器分页技术或采用扩展串行接口的外部RAM解决。
5.5译码电路的设计方法
外围扩展电路可以大大增强单片机的功能,实际应用中,单片机应用系统中一般都包含了许多外围接口芯片,所有的外围并行接口芯片都是通过三组总线和单片机相连,任何时刻,单片机只能和选中的其中一个进行数据交换,而未选中的芯片为输出为高阻状态,换句话说,在任何时候,单片机系统中的所有外围接口芯片只能有一个的片选信号(/CE或/CS)为低电平,其余的均为高电平,实现这种功能的电路被称为“译码电路”,各外围芯片的地址由译码电路决定。
译码电路的输入为地址和控制信号,输出为各外围接口芯片的片选信号。
单片机系统中常见的译码方法有二种,即线选法和全地址译码法,前者直接用高位地址作为片选信号,后者用专用的译码逻辑电路如74LS138或GAL16V8和GAL20V8等实现译码。
5.5.1线选法进行译码
线选法就是把高位地址线单独接到外围接口芯片的片选(/CE、/CS)端,只要高位地址线为低电平即可选取中芯片,如图5.10所示。
在图5.10中,共扩展了五个外围芯片,即两片RAM芯片(6116),1个并行I/O接口芯片,1个A/D转换芯片(ADC0809)和1个D/A转换芯片,其地址如表5.2所示。
使用线选法时,要注意几个问题。
线选法中有非常严重的地址重叠现象。
如图5.10中,只要向A12为0的地址写数据,一定能写到DAC0832中,只要向A15为0的单元写数据则一定能写到第一片6116中,那么,如果向6800H地址单元写数据,这时,A15为0,则第一片6116被选中,而A12也为0,则0832也同时被选中,这时就会出数据冲突和发生错误,因此,用线选法时,一定要把没用到的地址位取1,如表5.2所示,这样才不会出现混乱。
用线选法时,虽然硬件简单,但所用的片选线只能是高位地址线,如果将图5.10中的数据存储器芯片换成6264(8KB),由于6264有13条地址线(A12~A0),则只剩下三条线P2.7、P2.6、P2.5可用于片选信号,即系统最多只能扩展3个包含6264在内的外围芯片,这主要是因为高位地址线的权重很大,图5.10中用P2.7作为第一片6116的片选,占用了低32K的空间,而6116实际上只用了2KB,剩余的30K被浪费掉了。
为了解决线选法存在的问题,在实际应用中,常采用全地址译码法,用专门的译码器如74LS139(双2―4译码器)、74LS138(3―8译码器)以及74LS154(4―16译码器)等产生片选信号。
5.5.2使用专用译码器74LS138进行译码
74LS138为3―8译码器,即它有3个地址输入端(C、B、A),3个控制端(/E1、/E2、E3)和8个输出端(Y7~Y0),其引脚定义如图5.11所示,其真值表如表5.3所示:
利用74LS138可以把一块存储器空间分成8个连续的小块。
例如,利用74LS138可把64KB的外部RAM分成8个8KB的空间,如图5.12所示:
那么,用74LS138能不能产生4K的空间呢?
答案是肯定的,这时相当于把32K的空间分成了8块,例如把高32KB的分成8个4KB存储器块的连接方法如图5.13所示:
经次类推,如果74LS138的C、B、A引脚分别接到地址总线的A2、A1和A0,则译出的地址为0000H~0007H。
一片74LS138只能产生8个片选信号,当单片机应用系统外围接口芯片很多时,可以采用多片74LS138(74LS139或74LS154等)分级进行译码。
【例5.1】设某单片机应用系统有4片SRAM6264、4片8255、1片8279、和1片DAC0832,试用74LS138设计译码电路。
解:
由于系统有10个外围芯片,故用两个译码器实现,具体电路如图5.12所示;
各芯片地址如表5.4。
【例5.2】假设系统包含一片SRAMHM6264(8KB)、一片Flash存储器AT29C256(32KB)、一片用于连接打印机的并行接口芯片8255、一片键盘显示器接口芯片8279、一片实现D/A转换的芯片DAC0832,一片用于系统时钟芯片DS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- AT89S51 单片机 最小 系统 组成 存储器 扩展
![提示](https://static.bdocx.com/images/bang_tan.gif)