书城工业技术智能仪器设计基础
13028600000004

第4章 微机系统设计(1)

MCS51系列单片微机的特点之一就是系统结构紧凑,硬件设计简单灵活。对于一般的智能仪表,MCS51的最小系统就能满足要求;对于较复杂的智能仪器,需较大的存储器容量和较多的I/O接口,MCS51单片机可提供很强的扩展功能,直接与外接的存储器和I/O接口电路相连,构成功能很强、规模较大的系统。

2.1最小微机系统

单片机发展的历史不长。1971年,Intel公司首次推出4044单片机(4位机)。1976年,Intel公司推出MCS48单片机(8位机)。1980年,Intel公司推出MCS51单片机(8位机)。在MCS51单片机内核的基础上,Intel、Philip、Siemens等公司又相继推出名目繁多的51派生单片机芯片,这使得51系列单片机成为目前应用最为广泛的单片机。1983年,Intel公司推出MCS96单片机(16位机)。16位单片机主要应用在一些比较复杂特殊的系统中。

MCS51系列单片机包括8031/80C31、8051/80C51、8032/80C32、8751/87C51、8752/87C52、89C51和89C52等。

所谓最小微机系统是指能维护单片机运行的最简单配置系统,含有程序存储器的单片机配以必要的器件就构成了最小微机系统。

80C51/87C51/89C51是片内具有ROM/EPROM/FLASHROM的单片机,因此用这种芯片构成的最小微机系统简单、可靠。80C51/87C51/89C51芯片内部包含有一个8位的CPU、振荡器和时钟电路、4KB的程序存储器(ROM/EPROM/FLASHROM)、128个字节的数据存储器,可寻址外部程序存储器和数据存储器(各64KB)、21个特殊功能寄存器、4个并行I/O口、1个全双工串行口、3个16位定时器/计数器、5个中断源,提供2个中断优先级,可实现二级中断服务程序嵌套,具有位寻址功能,有较强的布尔处理能力。

用80C51/87C51/89C51单片机构成最小微机系统时,只要将单片机接上时钟电路和复位电路即可。其应用特点如下:

(1)有可供用户使用的大量I/O口线。因没有外部存储器扩展,这时EA接高电平,P0、P1、P2、P3都可作用户I/O使用。

(2)内部存储器容量有限。内部ROM/EPROM/FLASHROM为4KB,RAM为128个字节。

(3)用户可对片内4KB的程序存储器进行写入或擦除,并具有保护内部程序存储器不被外部软件破坏和非法复制的措施。

(4)有较高的可靠性和抗干扰能力。

2.2微机系统存储器扩展技术

2.2.1概述

单片微机内部虽然设置了一定容量的存储器,但是有时满足不了实际需要,就必须配置外部存储器,包括程序存储器和数据存储器。

51系列单片微机的程序存储器用于存放经调试正确的应用程序和表格之类的固定常数。由于采用16位程序计数器和16位的地址总线,因此其可扩展的地址空间为64KB,且这64KB是片内外空间连续、统一的。

整个程序存储器可以分为片内和片外两部分,单片微机访问片内和片外存储器,可由EA管脚所接的电平来确定:

EA管脚接高电平时,程序从片内存储器开始执行,即访问片内存储器;当超出片内ROM容量时,会自动转向片外程序存储器空间执行。

EA管脚接低电平时,迫使系统全部执行片外存储器程序。

数据存储器由随机存取存储器RAM构成,用来存放随机数据。

在51系列单片微机中,数据存储器又分为片内数据存储器和片外存储器两部分。

片内数据存储器(IRAM)最高地址只有8位,因而最大寻址范围为256字节。

在51系列单片微机中,设置一个专门的数据存储器的地址指示器-数据指针DPTR,用于访问片外数据存储器(ERAM)。数据指针DPTR也是16位的寄存器。这样,就使51系列单片微机具有64KB的数据存储器扩展能力。

2.2.2存储器的扩展

在存储器扩展设计时,应该考虑以下两个问题:

(1)存储容量的确定原则:这主要根据系统设计要求和选用单片机的功能来选择存储器芯片的型号及所需存储器的片数(即程序存储器和数据存储器),作为扩展外接存储器的空间。

(2)连接方法:存储器与单片机连接主要有两种方法:即线选寻址法和译码寻址法。在实际应用中选哪种方法,主要看用户要求存储器空间的地址是否需要连续,若要求简单的连接方法且地址空间可以不连续时,可采用线选寻址法,否则用译码寻址法连接。

2.2.2.1线选法扩展存储器

4KB的2732EPROM有12根地址线A0~A11,它们分别与89C51的P0口及P2.0~P2.3相连。2KB的6116RAM有11根地址线A0~A10,它们分别与89C51的P0口及P2.0~P2.2相连。89C51的剩余P2口地址线作为片选信号线(P2.4作为2732的片选,P2.5作为6116的片选,P2.6作为8255的片选)。当要选中某个芯片时,P2口对应的片选信号应为低电平,其他引脚一定要为高电平,这样才能保证只选中一个芯片,而不选中其他芯片。

89C51的P0口和P2口中的P2.0、P2.1、P2.2并行地连接到2732和6116的地址线上,实现片内寻址,即程序存储器2732低2KB和数据存储器6116的地址是重叠的。那么会不会出现MCS51访问2732低2KB某单元同时又访问6116的同一单元的情况呢?如果这样,是不会出现错误的。因为虽然两单元的地址是一样的,但是MCS51单片机对EPROM和RAM发出的控制信号不同。如果访问的是外部程序空间,则PSEA信号有效;如果访问外部数据空间,则RD或WR信号有效。以上控制信号是由执行访问外部存储器的指令产生的,任何时刻只能产生两种控制信号中的一种,所以不会产生数据冲突。但应注意,程序存储器与程序存储器、数据存储器与数据存储器之间不能发生地址重叠。

2.2.2.2地址译码法扩展存储器

当线选法所需地址选择线多于可用地址线时,一般采用地址译码法。译码法就是利用译码器对单片机的某些高位地址线进行译码,其译码输出作为存储器(或I/O口)的片选信号。

这种方法存储空间连续,能有效地利用存储空间,适用于多存储器、多I/O口的扩展。

地址译码法必须采用地址译码器,经常使用的地址译码器有74LS138和74LS139。

其中:

A、B、C——译码输入端;

E1、E2、E3——使能端;

Y0~Y7——译码输出端。

三个译码输入端A、B、C组合成8种输入状态,对应每种输入状态,仅允许一个输出端为0电平,其余全为1。74LS138还具有3个使能端E1、E2和E3,必须同时输入有效电平,即E1、E2为低电平且E3为高电平时,译码器才能工作正常,否则译码器输出无效。

2764、6264存储容量均为8KB,均有A0~A12的13根地址线。MCS51的P0口输出的低8位地址经74LS373锁存器与4个存储器的低8位地址A0~A7相连,P2.0~P2.4直接与4个存储器的A8~A12相连,剩余的3根地址线P2.5、P2.6、P2.7与译码器的3个输入端相连。依次用Y0、Y1、Y2和Y3作为2764(Ⅰ)、2764(Ⅱ)、6264(Ⅰ)和6264(Ⅱ)的片选信号。

从本例的硬件连接图可以看出,单片机除了扩展存储器所需的地址线以外,剩余的全部地址线都参加译码,这种译码方式称全译码。利用剩余地址线中的一部分地址线参加译码称为部分译码。部分译码存在地址重叠现象,即一个存储单元对应有若干个地址。本例属于全译码方式。

2.3基本的I/O口扩展技术

在实际应用系统设计时,对单片机I/O口的扩展方法是根据具体应用场合而确定的,对于简单外设的输入输出,如一组开关量的状态输入或并行数据的输入输出等,都可以用简单的I/O接口电路来实现。

在MCS51单片机应用系统中,采用TTL电路或CMOS电路锁存器、三态门等,通过P0口常常可以构成各种类型的基本的输入/输出口。这种I/O接口具有电路简单、成本低、配置灵活方便等特点,在单片机应用系统中被广泛采用。

由于P0口是系统总线口,通过P0口扩展I/O口时,P0口只能分时使用,故输出时接口电路应具有锁存功能,输入时根据输入数据是常态还是暂态的不同,接口电路应能三态缓冲或锁存选通等。数据的输入、输出用读/写信号控制。

2.3.1用74LS244扩展8位并行输入口

对于常态数据的输入,并行口扩展较为简单,只需采用8位三态门控制电路芯片74LS244即可。三态门由P2.7和RD相“或”控制,其数据输入使用以下两条指令即可。

MOVDPTR,#7FFFH;选口地址

MOVXA,@ DPTR;读入数据

74LS373来的地址线A0、A1、A2译码得到8个选通信号,分别和74LS244的控制端相连,RD与74LS138的G2相连,作为该片的选通信号。

2.3.2用74LS373扩展8位并行输入口

对于外界暂态数据的输入应有一个选通信号,锁存输入的数据,并通知单片机以便取数。

当外部设备向单片机输出数据时,连到74LS373锁存器G端的选通信号应产生一个下降沿,将数据锁存的同时向单片机发出中断申请,在中断服务程序中由P0口读取锁存器中的数据。

MOVDPTR,#7FFFH;74LS373口地址

MOVXA,@ DPTR;读取数据

MOV @ R0,A;存入 @ R0中

2.3.3用74LS377扩展8位并行输出口

通过P0口扩展输出口时,锁存器被视为一个外部RAM地址单元,输出控制信号为WR。为了防止单片机在对外部RAM及外围设备输出数据时对它的干扰,应选择带有三态门控制的锁存器芯片。

74LS377为带有允许输出端的8D锁存器,有8个D输入端、8个Q输出端、一个时钟输入端CP和一个锁存允许信号E。当E=0时,CP端的上跳变把8位D输入端的数据打入8位锁存器,此时在Q端将保持D端输入的8位数据。

89C51的P0口与74LS377的D端相连,WR与CP相连,377的允许端作为片选控制和单片机的P2.7相连,故74LS377的口地址为7FFFH,数据输出由如下程序完成:

MOVDPTR,#7FFFH;片选74LS377

MOVA,#data;输出数据→A

MOVX @ DPTR,A;数据输出

2.3.4用74LS273扩展8位并行输出口

74LS273为带清除端的8D触发器,有8个D输入端、8个Q输出端、一个时钟脉冲输入端CK和一个清除端CLR。当CLR=1时,CK端上的上跳变把数据打入锁存器,而当CLR=0时,输出则全部为低电平。输出数据时只需应用MOVX @ Ri,A指令,即将出现在P0.0~P0.7上的累加器A的内容锁存在74LS273中(在WR的上跳变(后沿))。

2.48255可编程I/O接口及扩展技术

要完成某些较复杂的接口动作,仅靠上面所讲的几种简单芯片是不能满足要求的,需要扩展标准的可编程I/O接口。Intel公司的80/85接口电路都可以直接和MCS51接口,较常用的芯片有8255(可编程的通用并行接口电路)、8155(可编程的RAM/IO扩展器)、8253(可编程的定时器/计数器)、8279(可编程的键盘显示器接口)、8251(可编程的串行接口电路)。

2.4.18255A的结构

它由四个部分组成。

2.4.1.1四个端口

8255A有三个8位的数据输入/输出端口:A口、B口和C口。每个端口都可以通过程序控制工作在输入或输出方式下。此外,8255A还有一个可写入的控制口,寄存CPU写入的控制字,控制A口、B口和C口的操作方式。这四个端口各有自己的选择地址。

通常,A口和B口作为I/O数据端口独立使用,C口分成两部分,每部分包含四位,分别与A口和B口配合使用。当A、B端口工作在选通(或应答)方式时,C口用来输出控制信号,或输入状态信息,成为A、B口应答方式中联络信号(或握手信号)的传送口,在控制字的控制下,可对C口中的任一位置位/复位。C口也可单独作为8位数据输入输出口使用。