首页 百科知识 数据存储器扩展

数据存储器扩展

时间:2022-10-22 百科知识 版权反馈
【摘要】:本章主要介绍存储器扩展技术掌握单片机总线构造及存储器结构,掌握存储器类型及对应芯片型号,能够将给定的存储器芯片按要求设计内存,深刻理解存储器的构成原理。本章重要知识点有单片机最小系统的构成,单片机片外程序存储器和片外数据存储器的扩展方法,单片机I/O接口的扩展方法等。另外,MCS-51系列单片机的片内数据存储器仅有128B,对某些应用程序可能不够,也需对内部数据存储器进行外部扩展,最大至64KB。

第7章 存储器接口扩展

【教学目的】

本章主要介绍存储器扩展技术掌握单片机总线构造及存储器结构,掌握存储器类型及对应芯片型号,能够将给定的存储器芯片按要求设计内存,深刻理解存储器的构成原理。

【教学要求】

本章要求了解怎样构成单片机的最小系统,掌握单片机片外程序存储器和片外数据存储器的扩展方法,掌握系列单片机I/O接口的扩展方法。

【重点难点】

本章重点是学习和掌握单片机最小系统的构成,单片机片外程序存储器和片外数据存储器的扩展方法,片机I/O接口的扩展方法,难点是单片机片外程序存储器和片外数据存储器的扩展方法。

【知识要点】

本章重要知识点有单片机最小系统的构成,单片机片外程序存储器和片外数据存储器的扩展方法,单片机I/O接口的扩展方法等。

7.1 系统扩展概述

MCS-51系列单片机在一块半导体芯片上集成了一台微型计算机系统的基本部分,具有体积小、重量轻、价格便宜、耗电少等优点。但在实际应用中,由于8051和8751片内只有4KB的程序存储器,8031片内无程序存储器,当采用8051、8751而程序超过4KB或采用8031时,就需对程序存储器进行扩展,最多可至64KB。另外,MCS-51系列单片机的片内数据存储器仅有128B,对某些应用程序可能不够,也需对内部数据存储器进行外部扩展,最大至64KB。

由于大多数微型计算机CPU外部都有独立的系统总线,但是MCS-51系列单片机由于引脚数少,其数据线和地址线是分时复用的,而且I/O口线兼用。为了将复用线分离出来,以便同单片机片外的芯片正确地连接,需要在单片机外部增加地址锁存器,扩展系统的三总线,从而构成完整的系统总线,如图7-1所示。

图7-1 单片机的三总线结构

1.数据总线

数据总线用于传送数据。MCS-51单片机数据总线的位数与处理数据的字长一致,均为8位,由P0口提供。数据总线是双向的,实现数据的输出(写出)和输入(读入)。

2.地址总线

地址总线用于传送地址信号,以便进行存储单元和I/O端口的选择。它是单向的,只能由单片机发出。MCS-51单片机地址线最多为16根,其中高8位地址线由P2口提供,因为P2口具有输出锁存的功能,能保持高8位地址信息;低8位地址线由P0口提供,因为P0口是地址/数据分时复用的通道口,所以不能保存低8位地址信息,需要外接地址锁存器,可用ALE信号的下降沿作为锁存信号。地址总线的数目决定了可直接访问的存储单元的数目,因此存储器扩展最多可达64KB。

3.控制总线

控制总线是单片机发出的一组用于片外RAM、ROM和I/O口读/写操作控制的信号线。扩展系统时常用的控制信号有:

ALE:地址锁存信号,用于实现对低8位地址的锁存;

:外部程序存储器选通信号;

:片外数据存储器读信号;

:片外数据存储器写信号。

7.1.1 扩展后的单片机结构框图

MCS-51系列单片机系统的扩展主要包括存储器的扩展和I/O口的扩展,图7-2为AT89S52单片机扩展后的结构框图。扩展能力为:

(1)片外程序存储器可扩展至64KB。

(2)片外数据存储器和I/O端口可扩展至64KB。

图7-2 扩展后的单片机结构框图

7.1.2 地址锁存器

在进行系统扩展时,经常使用74LS373、74LS273、8282、8212等芯片作为地址锁存器。但后三者的接法稍繁,多用硬件且价格稍贵,因此MCS-51单片机系统中,经常采用74LS373作为地址锁存器使用。

74LS373是一种带输出三态门的8D锁存器,其芯片引脚如图7-3所示。

其中1D~8D为8个输入端,接至单片机的P0口;1Q~8Q为8个输出端,提供的是地址的低8位;G为数据打入端,接至单片机的地址锁存信号ALE,为1时锁存器输出状态同输入状态;由1变0时数据打入锁存器中;OE为输出允许端,为0时三态门打开,为1时三态门关闭,输出呈高阻状态。

74LS377是一种8D触发器,它的E端是控制端、CLK端是时钟端,当它的端为低电平时只要在CLK端产生一个正跳变,0D~7D将被锁存到0Q~7Q端输出,在其他情况下0Q~7Q端的输出保持不变。其芯片引脚如图7-4所示。

图7-3 74LS373引脚图

图7-4 74LS377引脚图

7.1.3 总线驱动器

单片机应用系统中,通常要在扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示器接口等。但总线端口的驱动能力是有限的,一般只能驱动几个LSTTL负载或十几个MOS电路负载,因此常常需要进行总线驱动。

在系统总线中,地址总线和控制总线是单向的,地址总是从CPU的控制器向外发送,每一个控制信号的方向也是唯一确定的,因此地址总线和控制总线的驱动器可以选用单向的,如单向驱动器74LS244。74LS244芯片内部有2个4位的三态缓冲器,一片74LS244可以扩展一个8位输入口。

系统中的数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245是一种三态输出的8总线收发驱动器,无锁存功能。它的G端和DIR端是控制端,当它的=0时,如果DIR=1,则74LS245将A端数据传送至B端;如果DIR=0,则74LS245将B端数据传送至A端。在其他情况下不传送数据,并输出高阻态。74LS244和74LS245的芯片引脚如图7-5所示。

图7-5 常用驱动器的引脚图

可采用P2口外接单向的总线驱动器74LS244,如图7-6(a)所示。74LS244的2个控制端均接地,相当于8个三态门均打开,驱动器输入线与P2口对应相连。

P0口与74LS245输入线对应相连,控制端接地,保证数据线畅通。8051的信号经与门后接到DIR端,使得CPU读外部数据存储器或外部程序存储器时74LS245输入,其他时间输出,如图7-6(b)所示。

图7-6 常用驱动器的具体连接图

7.2 程序存储器扩展

MCS-51系列单片机的程序存储器通常由ROM、EPROM或EEPROM电路构成。其特点是掉电以后,内部的程序信息不会丢失,因而提高了系统的可靠性。当采用8051、8751型单片机而程序超过4KB,或采用8031型单片机时,就需要进行程序存储器的扩展。

7.2.1 存储器扩展概述

单片机的程序存储器扩展使用只读存储器芯片。只读存储器ROM中的信息一旦写入之后就不能随意更改,即不能在程序运行过程中写入新的内容,而只能读存储单元内容。因为掉电后ROM中存放的数据不会丢失,所以ROM适宜存放程序、常数、表格等。ROM读出一个数据的时间为数百纳秒;有时ROM也可以改写,但写入一个数据的时间长达数十毫秒,因此在计算机运行时只能执行读操作。

RAM内容的存取是以字节为单位的,为了区别各个不同的字节,给每个字节的存储单元赋予一个编号,该编号就称为这个存储单元的地址。存储单元是存储的最基本单位,不同的单元有不同的地址。在进行读/写操作时,可以按照地址访问某个单元。

由于集成度的限制,目前单片RAM容量很有限,对于一个大容量的存储系统,往往需要若干RAM组成,而读/写操作时,通常仅能操作其中一片(或几片),这就存在一个片选问题。RAM芯片上特设了一条片选信号线,在片选信号线上加入有效电平,芯片即被选中,可进行读/写操作,未被选中的芯片不工作。片选信号仅解决芯片是否工作的问题,而芯片执行读还是写则还需有一根读写信号线来控制,所以芯片上必须设读/写控制线。

存储器扩展的核心问题是存储器的编址问题。所谓编址就是给存储单元分配地址。由于存储器通常由多片芯片组成,因此存储器的编址分为两个层次,即存储器芯片的选择和存储器芯片内部存储单元的选择。

7.2.1 存储器编址技术

编址就是给存储单元分配地址。使用系统提供的地址线,通过适当的连接,使得一个地址唯一对应存储器中一个存储单元。存储器芯片的选择有两种方法:线选法和译码法。

1.线选法

线选法就是直接以系统的地址作为存储芯片的片选信号,为此只需把高位地址线与存储芯片的片选信号直接连接即可。线选法的优点是简单明了,不需增加额外电路,适用于小规模单片机系统的存储器扩展;缺点是存储空间不连续。

2.译码法

译码法是使用译码器对系统的高位地址进行译码,以其译码输出作为存储芯片的片选信号。这是一种最常用的存储器编址方法,能有效地利用空间,特点是存储空间连续,适用于大容量多芯片存储器扩展;缺点是硬件设计需要增加译码器。

译码法又分为完全译码和部分译码两种。

(1)完全译码

地址译码器使用全部地址线,地址与存储单元一一对应,也就是1个存储单元只占用1个唯一的地址。

(2)部分译码

地址译码器仅使用部分地址线,地址与存储单元不是一一对应,而是1个存储单元占用了几个地址。在实际的编程中,通常将不用的地址信号线按0处理,得到这个芯片的基本地址范围。部分译码会大量浪费寻址空间,对于要求存储器空间大的微机系统,一般不采用。但对于单片机系统,由于实际需要的存储容量不大,采用部分译码可简化译码电路。

3.常用译码器介绍

常用的译码器芯片有:74LS139(双2~4译码器)和74LS138(3~8译码器)等,它们的CMOS型芯片分别是74HC139和74HC138。74LS138的芯片引脚图如图7-7所示。

图7-7 74LS138管脚图

74LS138是3-8译码器,即对3个输入信号进行译码,得到8个输出状态。其中G1、为使能端,用于引入控制信号。低电平有效,G1高电平有效。74LS138的真值表如表7-1所示。

表7-1 74LS138真值表

7.2.3 EPROM接口设计

1.EPROM的概述

紫外线擦除电可编程只读存储器EPROM的一个重要特点就在于它可以反复擦除,它们可作为MCS-51系列芯片的外部程序存储器,其典型的产品有2716(2K×8)、2732(4K×8)、2764(8K×8)、27 128(16K×8)和27 256(32K×8)等。这些芯片上均有一个玻璃窗口,在紫外光下照射5~20分钟左右,存储器中的各位信息均变为1。此时,可以通过相应的编程器将工作程序固化到这些芯片中。下面介绍一下EPROM2764存储器,其他芯片类似。

2.EPROM2764简介

2764是一种8K×8位的紫外线擦除电可编程只读存储器,单一+5V供电,工作电流为100mA,维持电流为50mA,读出时间最大为250ns。2764为双列直插式28引脚的标准芯片,容量为8K×8位。其引脚如图7-8所示。

2764在使用时,只能将其所存储的内容读出。即首先送出要读出的单元地址,然后使均有效(低电平),则在芯片的D0~D7数据线上就可以输出要读出的内容。其过程的时序关系如图7-9所示。

图7-8 2764引脚

图7-9 2764时序图

3.程序存储器扩展举例

例1: 试用EPROM2716构成8031的最小系统。

解:对于国内使用较多的8031机型来说,片内不含程序存储器,必须添加片外程序存储器,再用到地址锁存器,才能构成一台完整的计算机。因此严格说,它称不上是“单片”机。8031本身、片外程序存储器与地址锁存器组成了一个真正可用的、未曾扩展的最小系统,如图7-10所示。

图7-10 8031的最小系统

最小系统中只有一片2716,则片选信号可直接接地(低电平有效)。将单片机的连接至2716的OE端,则只要单片机执行,肯定是从2716中取出执行的。

2716有11根地址线,分别由P0.0~P0.7、P2.0~P2.2提供,P2.3~P2.7没有使用。

  A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

最高地址 X X X X X 0 0 0 0 0 0 0 0 0 0 0

最低地址 X X X X X 1 1 1 1 1 1 1 1 1 1 1

其中X表示任意电平。假设未用地址线取0,则2716的基本地址范围:0000H~07FFH。另外,由于单片机的P2.3~P2.7均未连接,所以2716的编址也可以认为是0800H~0FFFH或1000H~17FFH或……或F800H~FFFFH。

MCS-51单片机访问外部程序存储器时所使用的控制信号有ALE(低8位地址锁存信号)和(外部程序存储器读取控制)。在外部存储器取指期间,P0和P2口输出地址码(PCL、PCH),其中P0口地址信号由ALE选通进入地址锁存器后,变成高阻,等待从程序存储器中读取指令码。访问外部存储器的时序如图7-11所示。

从时序图中可以看出,MCS-51的CPU在一个机器周期内,ALE出现两个正脉冲,出现两个负脉冲。说明CPU在一个机器周期内可以两次访问外部程序存储器。应用ALE的下降沿锁存地址信息,在的有效期读取信息。

图7-11 最小系统工作时序

例2:采用线选法,使用两片2764,一共构成8K×2=16K的有效地址。

解:2764有13根地址线,分别由P0.0~P0.7、P2.0~P2.4提供,系统的P2.5~P2.7没有用,采用2片2764构成系统,则可以使用P2.5~P2.7中的任何2根作为线选线,在本设计中采用P2.5和 P2.6作为线选线,则可分析得到这2块芯片的基本地址范围。

2764(1)A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

最高地址 X 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

最低地址 X 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1

假设未用地址线取0,则2764(1)的基本地址范围:4000H~5FFFH。

2764(2)A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

最高地址 X 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0

最低地址 X 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1

假设未用地址线取0,则2764(2)的基本地址范围:2000H~3FFFH。扩展电路如图7-12所示。

图7-12 线选法片选的扩展电路

例3:用EPROM2764扩展生成24KB的程序连续存储空间,采用74LS138译码,要求该24KB的地址空间从8000H开始编码。

解:由于1块2764芯片是8KB,所以要生成24KB的程序存储空间需要3块2764芯片;由于生成的是连续的存储空间,所以采用译码法。地址空间要求从8000H开始编码,则:

2764(1)的基本地址范围:8000H~9FFFH。

2764(1)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 1 1 1 1 1 1 1 1 1 1 1 1 1

2764(2)的基本地址范围:A000H~BFFFH。

2764(2)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 1 1 1 1 1 1 1 1 1 1 1 1 1 1

所以2764(3)的基本地址范围:C000H~DFFFH。

2764(3)A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

最高地址 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

最低地址 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1

观察3块芯片的高位地址线A15~A13,并考虑74LS138译码器的输入与输出之间的关系可知,3块2764芯片应依次接Y4、Y5、Y6输出端。扩展电路图如图7-13所示。

图7-13 译码法片选的扩展电路

7.2.4 EEPROM接口设计

电擦除可编程只读存储器EEPROM是近年来国外厂家推出的新产品,它的主要特点是能在计算机系统中进行在线修改,并能在断电的情况下保持修改的结果。因此,在智能化仪器仪表、控制装置、终端机、开发装置等各种领域中受到极大的重视。

常用的EEPROM芯片有2816(2K×8)、2816A、2817(2K×8)、2817A、2864(8K ×8)、2864A等。

2816A的存储容量为2K×8位,单一+5V供电,不需要专门配置写入电源。2816A能随时写入和读出数据,其读取时间完全能满足一般程序存储器的要求,但写入时间较长,需9~15ms,写入时间完全由软件控制。

2816A和2817A均属于5V电擦除可编程只读存储器,其容量都是2K×8位。2816A与2817A的不同之处在于:2816A的写入时间为9~15ms,完全由软件延时控制,与硬件电路无关,其引脚如图7-14(a)所示;2817A利用硬件引脚来检测写操作是否完成。

2864A是8K×8位EEPROM,单一+5V供电,最大工作电流160mA,最大维持电流60mA,典型读出时间250ns。由于芯片内部设有“页缓冲器”,因而允许对其快速写入。2864A内部可提供编程所需的全部定时,编程结束可以给出查询标志。2864A的封装形式为DIP28,其引脚如图7-14(b)所示。

图7-14 常见EEPROM芯片管脚图

图7-15 用2816A EEPROM的扩展电路

使用EEPROM芯片的扩展电路与使用EPROM芯片的类似,不同之处在于单片机应添用控制线WR,连到EEPROM的写允许线WE。图7-15为使用2816A的扩展电路图。

从上面的几个例子中我们可以看到扩展程序存储器的一般方法。程序存储器与单片机的连线分为三类:

(1)数据线,通常有8位数据线,由P0口提供。

(2)地址线,地址线的条数决定了程序存储器的容量。低8位地址线由P0口提供,高8位由P2口提供,具体使用多少条地址线根据扩展容量以及所采用的片选方法而定。

(3)控制线,存储器的读允许信号与单片机的取指信号相连;存储器片选线的接法决定了程序存储器的地址范围,当只采用一片程序存储器芯片时,可以直接接地,当采用多片时要使用译码器来选中。

7.3 数据存储器扩展

MCS-51芯片的RAM存储器可以作为工作寄存器、堆栈、软件标志和数据缓冲器。但在实时数据采集和处理应用系统中,仅靠片内RAM存储器的128字节是远远不够的,因而必须扩展外部数据存储器。常用的数据存储器有静态RAM和动态RAM两种。在单片机应用系统中为避免动态RAM的刷新问题,通常使用静态RAM。下面主要讨论静态RAM 与MCS-51的接口。

7.3.1 数据存储器概述

数据存储器即随机存取存储器(Random Access Memory),简称RAM,用于存放可随时修改的数据信息。与ROM不同,RAM可以进行读、写两种操作。RAM为易失性存储器,断电后所存信息立即消失。

按其工作方式,RAM又分为静态(SRAM)和动态(DRAM)两种。静态RAM只要电源加上,所存信息就能可靠保存。 DRAM必须在一定的时间内不停地刷新才能保持其中存储的数据。

7.3.2 静态RAM芯片简介

目前,常用的SRAM芯片有6116(2K×8)、6264(8K×8)、62 128(16K×8)、62 256 (32K×8)等。

1.6116简介

6116芯片为24引脚双列直插封装,其管脚图如图7-16(a)所示。其中A0~A10为地址线,为写选通信号,D0~D7为数据线,Vcc表示电源(+5V),是片选信号,低电平有效,GND接地,为数据输出允许信号。

2.6264简介

6264是8K×8位的静态RAM,它采用CMOS工艺制造,单一+5V供电,额定功耗200mW,典型读取时间200ns,封装形式为DIP28,其管脚图如图7-16(b)所示。其中A0~A12为地址输入线,D0~D7为三态双向数据线,是片选信号输入线,低电平有效,OE是读选通信号输入线,低电平有效,是写选通信号输入线,低电平有效。

图7-16 常见RAM芯片引脚图

7.3.3 数据存储器扩展举例

扩展数据存储器和扩展程序存储器的方法类似,由P2口提供高8位地址,P0口分时提供低8位地址和8位数据总线。访问片外数据存储器的指令有:

MOVX A,@Ri

MOVX A,@DPTR

MOVX @Ri,A

MOVX @DPTR,A

执行前两条指令将在单片机的端输出有效的低电平脉冲信号;执行后两条指令将在单片机的端输出有效的低电平信号。

例4:使用一片6116实现的2KB RAM扩展。

解:因为6116是2K×8位的RAM芯片,按题意需扩展2KB的RAM,只需要一块6116芯片即可,片选信号可直接接地(低电平有效)。将单片机的连接至6116的端,单片机的连接至6116的OE端,如图7-17所示。

图7-17 单片RAM扩展电路图

6116有11根地址线,分别由P0.0~P0.7、P2.0~P2.2提供,系统的P2.3~P2.7没有用。在实际的编程中,通常将不用的地址信号线按0处理,得到这个芯片的基本地址范围。

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

最高地址 X X X X X 0 0 0 0 0 0 0 0 0 0 0

最低地址 X X X X X 1 1 1 1 1 1 1 1 1 1 1

假设未用地址线取0,则6116的基本地址范围:0000H~07FFH。

MCS-51单片机读写外部数据存储器的时序如图7-18所示。在图7-18(a)的外部RAM读周期中,P2口输出高8位地址,P0口分时传送低8位地址和数据。ALE的下降沿将低8位地址打入地址锁器后,P0口变为输入方式。的有效选通外部RAM,相应存储单元的内容送到P0口,由CPU读入累加器。

外部RAM写操作时,时序如图7-18(b)所示。其操作过程与读周期类似。写操作时,在ALE下降为低电平后,信号才有效,P0口上出现的数据写入相应的存储单元。

图7-18 片外RAM的工作时序图

例5:分析如图7-19所示的电路图中2块6264芯片的基本地址范围。

图7-19 用2片RAM的扩展电路

解:此电路图是由2块6264芯片,在片外扩展16K个单元数据存储器的扩展电路。接P1.7引脚来进行片选。6264(1)和6264(2)的编址都是8KB,基本地址范围都自0000H 到1FFFH(假设未用地址线取0),因为它们所接的地址完全相同。

2764 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

最高地址 X X X X X 0 0 0 0 0 0 0 0 0 0 0

最低地址 X X X 1 1 1 1 1 1 1 1 1 1 1 1 1

7.3.4 全地址范围的存储器最大扩展系统

一个比较复杂的单片机应用系统可能兼有片外ROM和片外RAM,如图7-20所示。图中地址总线和数据总线公用;片选的接法则与存储器芯片的编址有关,图中2764(1)和6264(1)的地址都是2000H~3FFFH;2764(2)和6264(2)的地址都是0000H~1FFFH。尽管RAM和ROM的地址空间范围相同,但是不会发生程序和数据地址冲突,这是因为控制总线中除了ALE外,片外ROM用到,片外RAM用到;在程序中,访问程序存储器使用的是MOVC指令,访问外部数据存储器使用的是MOVX指令。

图7-20 兼有片外ROM和片外RAM的扩展电路

7.4 MCS-51单片机并行I/O接口的扩展

7.4.1 概述

在单片机系统中主要有两类数据传送操作,一类是单片机和存储器之间的数据读写操作;另一类则是单片机和其他设备之间的数据输入/输出(I/O)操作。

单片机和存储器之间的连接十分简单,主要包括地址线、数据线、读写选通信号。

单片机与控制对象或外部设备之间的数据传送却十分复杂,存在速度不匹配、电平不一致、信号需要转换等问题。在单片机应用系统中,单片机本身的资源如I/O口、定时/计数器、串行口往往不能满足要求,使用扩展的I/O接口电路可以较好地解决这些问题。

1.速度协调

由于速度不匹配,使得单片机的I/O数据传送只能以异步方式进行。设备是否准备好,需要通过接口电路产生或传送设备的状态信息获知,以此实现单片机与设备之间的速度协调。

2.输出数据锁存

在单片机应用系统中,数据输出都是通过系统的公用数据通道(数据总线)进行的,单片机的工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速输出设备的需要。在扩展I/O接口电路中应具有数据锁存器,以保存输出数据直至能被输出设备接收。

3.输入数据三态缓冲

数据输入时,输入设备向单片机传送的数据要通过数据总线,但数据总线是系统的公用数据通道,上面可能“挂”着多个数据源,工作比较繁忙。为了维护数据总线上数据传送的“秩序”,只允许当前时刻正在进行数据传送的数据源使用数据总线,其余数据源都必须与数据总线处于隔离状态。为此要求接口电路能为数据输入提供三态缓冲功能。

4.数据转换

单片机只能输入和输出数字信号,但是有些设备所提供或所需要的并不是数字信号形式。为此,需要使用接口电路进行数据信号的转换,其中包括模/数转换和数/模转换。

MCS-51单片机常用的扩展器件有如下三类:

(1)常规逻辑电路、锁存器,如74LS377,74LS245。

(2)MCS-80/85并行接口电路,如8255。

(3)RAM/IO综合扩展器件,如8155。

7.4.2 简单I/O口的扩展

由于单片机的P0口经常用作数据线或低8位地址线;P2口用作高8位地址线,P3口的第2功能更为重要,所以只有P1口能作为真正的数据I/O口来使用,但是,在很多场合,仅使用P1口来作为数据I/O口是不够的,这是就需要扩展I/O口。

当所需扩展的外部1/O口数量不多时,可以使用常规的逻辑电路、锁存器进行扩展。这一类的外围芯片一般价格较低而且种类较多,常用的如:74LS377、74LS245、74LS373、74LS244、74LS273、74LS577、74LS573。

1. 简单输入接口扩展方法

例6:图7-21是利用74LS244进行简单输入接口扩展的连接图。

从图中可以看出,当P2.5和同时为低电平时,74LS244才能将输入端的数据送到8051的P0口,其中P2.5决定了74LS244的地址为:XX0X XXXX XXXX XXXXB。通常,我们选择的地址是DFFFH,则接口的输入操作程序如下:

图7-21 74LS244系统扩展图

MOV DPTR,#0DFFFH

MOVX A,@DPTR

2. 简单输出接口扩展方法

例7:图7-22是利用74LS377进行简单输出接口扩展的连接图。

图中利用P2.6(即A14)和A0对2块74LS377芯片进行选择。当P2.6=1、A0=0时选中74LS377(1);当P2.6=1、A0=l时选中74LS377(2)。假设未用的地址线为“1”,则74LS377 (1)的地址为0FFFEH,74LS377(2)的地址为0FFFFH。

74LS377(1)输出数据的操作指令如下:

MOV DPTR,#0FFFEH

MOV A,#DATA

MOVX @DPTR,A

图7-22 74LS377系统扩展图

7.4.3 可编程并行I/O接口芯片8255A

Intel 8255A是一种可编程通用并行接口芯片,适用于多种微处理器的8位并行输入/输出。它具有两个8位(A口和B口)和两个4位(C口高/低4位)并行I/O端口,能适应CPU与I/O接口之间的多种数据传送方式的要求,芯片内部主要由控制寄存器、状态寄存器、数据寄存器组成,能独立编程,有3种工作方式。使用8255A可实现多种数据传送方式的要求。

1.8255A的结构

8255A由三部分组成,结构如图7-23所示。

图7-23 8255A内部结构图

(1)与外设接口部分

8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作为输入或输出,但功能上各有特色:

端口A:由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲/锁存器组成。

端口B:由一个8位的数据输出缓冲/锁存器和一个8位的数据输入缓冲器组成。

端口C:由一个8位数据输出锁存/缓冲器和一个8位数据输入缓冲器组成。

(2)与微处理器接口部分

这部分主要完成数据传送及逻辑控制。

(3)内部控制部分

由A、B两组控制电路组成。主要作用是根据CPU送来的控制字决定两组端口(A组为A口、C口的高4位,B组为B口和C口的低4位)的工作方式,也可根据控制字的要求对C口按位进行置位或复位。

2.8255A的引脚功能

8255A的引脚如图7-24所示。它采用双列直插40脚封装,40条引脚可分为两组。

(1)RESET:复位信号,输入高电平有效。当RESET端出现高电平后,8255A将复位到初始状态。

(2)D0~D7:数据总线,双向、三态。D0~D7是8255A与CPU交换数据、控制字/状态字的总线,通常与系统数据总线连接。

(3):片选信号,输入、低电平有效。当为低电平时,该8255A被选中,D7~D0可以与CPU交换信息,否则D7~D0处于高阻态。

(4):读信号,输入、低电平有效。控制8255A送出数据或状态信息到数据总线。

(5):写信号,输入、低电平有效。控制把数据总线的数据或控制信息写入8255A。

(6)A1、A0:端口选择信号,输入。根据A1、A0的不同,将数据总线与不同的输入/输出端口、控制寄存器和状态寄存器相连。详见表7-2。

图7-24 8255A芯片引脚图

使用时一般将A1、A0与地址总线的低2位相连,故一片8255A占用4个I/O端口地址,分别对应端口A、端口B、端口C和控制寄存器。

表7-2 8255A端口地址及基本操作

3.8255A与MCS-51系列单片机的连接

图7-25是8255A与MCS-51单片机的一种连接方法。

图7-25 8255A与单片机连接图

图中8255A的CS接到单片机的P2.7端,A1、A0接到锁存后的P0.1、P0.0端。在这种接法下,8255A各端口的地址如下(假设未用地址线取1):

A口:7FFCH;B口:7FFDH;C口:7FFEH;控制口:7FFFH。

4.8255A的控制字

8255A有三种工作方式:

方式0:基本输入/输出方式;方式1:选通输入/输出方式;方式2:双向传送方式。8255A的工作方式控制字格式如表7-3所示。

表7-3 8255A的工作方式控制字格式

表7-3 8255A的工作方式控制字格式

8255A还有一个C口置/复位控制字,用来设置C口某位的状态,而不影响其他位。C口置/复位控制字的格式如表7-4所示,其D7=0是位控字的标志位。

表7-4 8255A的C口置/复位控制字格式

5.8255A三种工作方式的功能及应用举例

三种基本的工作方式:

(1)方式0:基本输入/输出方式

方式0不使用联络信号,也不使用中断,A口和B口可定义为输入或输出口,C口分成两个部分(高4位和低4位),C口的两个部分也可分别定义为输入或输出。在方式0时,所有口输出均有锁存,输入只有缓冲,而无锁存,C口还具有按位将其各位清0或置1的功能。

利用8255A作为无条件输出接口,可以实现报警电路的设计,如图7-26所示。

图7-26 报警接口电路图

(2)方式1:选通输入/输出方式

A口借用C口的一些信号线作控制和状态线,形成A组;B口借用C口的一些信号线用作控制和状态线,组成B组。在方式1下,A口和B口的输入输出均带有锁存。

① 方式1输入联络信号

A口工作于方式1且用作输入口时,C口的PC4线用作选通输入信号线,PC5用作输入缓冲器满输出信号线IBFA,PC3用作中断请求输出信号线INTRA。B口工作于方式1且用作输入口时,C口的PC2线用作选通输入信号线,PC1用作输入缓冲器满输出信号线IBFB,PC0用作中断请求输出信号线INTRB。输入时联络信号线如图7-27所示。

图7-27 方式1输入时联络信号线定义

② 方式1输出联络信号

当A口工作于方式1且用作输出口时,C口的PC7线用作输出缓冲器满信号,PC6用作外设收到数据后的响应信号,PC3用作中断请求输出信号线INTRA。当B口工作于方式l且用作输出口时,C口的PC1线用作输出缓冲器满信号,PC2用作外设收到数据后的响应信号,PC0用作中断请求输出信号线INTRB。1方式下输出时的联络信号线如图7-28所示。

图7-28 方式1下输出时的联络信号线定义

利用8255A用作查询输入接口,可以实现外部输入装置与CPU的连接,如图7-29所示。

图7-29 输入装置与CPU接口示意图

(3)方式2:双向输入/输出工作方式

方式2是A组独有的工作方式。外设既能在A口的8条引线上发送数据,又能接收数据。此方式也是借用C口的5条信号线作控制和状态线,A口的输入和输出均带有锁存。2方式下的联络信号线定义如图7-30所示。

图7-30 方式2下的联络信号线定义

7.4.4 8155可编程接口及扩展技术

8155具有3个可编程I/O口,其中2个口为8位,1个口为6位,有256单元的RAM 和1个14位计数结构的定时器/计数器。8155可以直接和MCS-51系列单片机连接,而不需要增加硬件电路,它是单片机应用系统中常用的一种接口芯片。

1.8155芯片结构

8155内部结构图如图7-31所示。它的A口、B口均为8位,C口为6位。A口、B口既可以作为基本的I/O口,也可以作为选通I/O口;C口除了可以用作基本的I/O口使用外,还可以用作A口、B口的应答控制联络信号线。

图7-31 8155内部结构图

8155的引脚如图7-32所示,它采用双列直插40脚封装。主要引脚的功能如下:

(1)AD7~AD0:地址数据复用线。

(2)ALE:地址锁存信号。除进行AD7~AD0的地址锁存控制外,还用于把片选信号CE和IO/等信号进行锁存。

(3):读选通信号。

(3):写选通信号。

(4):片选信号。

(5)IO/:I/O与RAM选择信号。IO/=0对RAM进行读写;IO/=l时I/O口进行读写。

(6)RESET:复位信号。8155以600ns的正脉冲进行复位,复位后A、B、C口均置为输入方式。

图7-32 8155芯片引脚图

2.RAM单元及I/O口编址

8155共有256个RAM单元,加上6个可编址的端口,这6个端口是:命令/状态寄存器、PA口、PB口、PC口、定时器/计数器低8位以及定时器/计数器高8位。8155引入8位地址AD7~AD0,无论是RAM还是可编址口都使用这8位地址进行编址。其中地址的前5位AD7~AD3是事先规定其数值的,后3位AD2~AD0可用于选中其中的一个寄存器,如表7-5所示。

表7-5 8155各寄存器端口表

3.8155的命令字及状态字的格式及用法

8155的命令字和状态字寄存器共用一个地址,命令字寄存器只能写不能读,状态字寄存器只能读不能写。对命令/状态寄存器写入命令字,可规定8155的工作方式。命令字的格式如表7-6所示。

表7-6 8155命令字格式

4.8155的定时器/计数器

(1)定时器/计数器的计数结构

8155的定时器/计数器是一个14位的减法计数器,由两个8位寄存器构成。分别是高8位和低8位。

(2)定时器/计数器的使用

8155的定时器/计数器与MCS-51单片机芯片内部的定时器/计数器在功能上是完全相同的,即同样具有定时和计数两种功能,但是在使用上却与MCS-51的定时器/计数器有许多不同之处。具体表现在以下几点:

① 8155的定时器/计数器是减法计数,MCS-51的定时器/计数器是加法计数。确定计数初值的方法是不同的。

② MCS-51的定时器/计数器有多种工作方式。8155的定时器/计数器则只有一种固定的工作方式,即14位计数,通过软件方法进行计数值加载。

③ MCS-51的定时器/计数器有两种计数脉冲。当定时器工作时,由芯片内部按机器周期提供固定频率的计数脉冲;当计数器工作时,从芯片外部引入计数脉冲。8155的定时器/计数器,不论是定时工作还是计数工作,都由外部提供计数脉冲,其信号引脚就是TIMERIN。

④ MCS-51的定时器/计数器,计数溢出自动置位TCON寄存器的计数溢出标志位(TF),供用户以查询或中断方式使用;但8155的定时器/计数器,计数溢出时向芯片外边输出一个信号(TIMEROUT)。这一信号还有脉冲和方波两种形式,供用户进行选择。具体由定时器高字节寄存器D7、D6两位定义。4种输出形式以及输出波形如表7-7所示。

表7-7 8155输出波形

5.8155与MCS-51单片机的连接

如图7-33所示是用8155扩展I/O接口与片外RAM的一个扩展电路。图中只画了8155 与AT89S52的连接。

图7-33 AT89S52与8155连接图

若A口定义为基本的输入方式,B口定义为基本的输出方式,对输入脉冲进行200分频,则由图可以分析得知:

RAM字节地址:7E00H~7EFFH(P2.0=0)

I/O接口地址:

命令状态口:7F00H

PA口:7F01H

PB口:7F02H

PC口:7F03H

定时器低8位:7F04H

定时器高8位:7F05H

8155的1/O初始化程序如下:

在同时需要扩展RAM和I/O口及计数器的MCS-51应用系统中选用8155是很方便的。8155的RAM可以作为数据缓冲器,8155的I/O口可以接外设的控制信号的输入输出。8155的定时器可以作为分频器或定时器。

【本章小结】

单片机虽然具有广泛的应用空间,但是由于系统结构的限制,单片机的资源,包括存储器、输入输出接口等都有一定的限制。为了更好地应用单片机,需要对单片机的相关资源进行扩展。本章重点学习单片机和接口的扩展,扩充单片机的应用资源,从而使单片机具有更大的应用空间。

7.5 习题

1. 为什么外扩存储器时,P0口要外接锁存器,而P2口却不接?

2. 试编写一个程序(例如将01H和09H拼为19H),设原始数据放在片外数据区4001H单元和4002H单元中,按顺序拼装后的单字节数放入4002H。

3. 在MCS-51单片机系统中,外接程序存储器和数据存储器共16位地址线和8位数据线,为何不会发生冲突?

4. 如何区分MCS-51单片机片外程序存储器和片外数据存储器?

5. 现有8031单片机、74LS373锁存器、2片2716EPROM和2片6116RAM,请使用它们组成的一个单片机系统,要求:

(1)画出硬件电路连线图,并标注主要引脚;

(2)指出该应用系统程序存储器空间和数据存储器空间各自的地址范围。

6. 8255A的方式控制字和C口按位置位/复位控制字都可以写入8255A的同一控制寄存器,8255A是如何区分这两个控制字的?

7. 对图7-25中的8255A编程,使其各口工作于方式0,A口用作输入,B口用作输出,C口高4位作输出,低4位作输入。

8. MCS-51的并行接口的扩展有多种方式,在什么情况下,采用扩展8155比较合适?什么情况下,采用扩展8255A比较适合?

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈