1、第8章 单片机的系统扩展8.1 相关知识相关知识链接链接一、概述MCS-51单片机提供了完整的外部数据总线、地址总线和控制总线。很多接口电路做成了标准通用接口芯片,有其独立的总线。用户根据系统的需要,选择适当的接口芯片与单片机的总线对应接好,然后通过程序设定其工作方式,便能组成满足用户需求的单片机应用系统。值得注意的是,MCS-51单片机的地址总线和数据总线是分时复用的,共同用一组I/O口,即P0口。在应用中,为了能正确分离出从P0口送出的地址信号和数据信号,需要在P0口外部加上地址锁存器,将P0口送出的地址信号锁存,这样就构成了一般的微处理器所具有的独立的数据、地址、控制三大总线,如图8-1
2、所示。在图8-1中,由8031单片机的P0口送出的低8位地址是在ALE锁存信号变高的同时出现的,并在ALE由高到低变化时将P0口的地址信号锁存到外部的地址锁存器中,直到下一次ALE变高,地址总线的数据才发生变化。8.1 相关知识相关知识链接链接1.单片机的总线所谓总线是连接系统中各扩展部件的一组公共信号线。按照功能通常把系统总线分成地址总线、数据总线、控制总线。(1)地址总线地址总线用于传送单片机的地址信号,以便进行存储单元和I/O口的选择。地址总线是单向传输,只能从单片机向外部端口发送。地址总线的数目决定了可以直接访问的存储单元的数目。若有n条地址总线,则具有2n个编码状态,对应2n个存储单
3、元地址编码,所能访问的最大地址空间为02n-1。MCS-51单片机共有16根地址总线,所能寻址的地址编码范围为065535,即通常所说的64KB。(2)数据总线数据总线用于单片机与存储器之间或单片机与I/O之间传送数据。数据总线的位数与单片机的数据处理长度一致。如MCS-51单片机是8位字长,故其数据总线的位数也是8位。数据总线是双向传输,可以从单片机到存储器、I/O口,也可以从存储器、I/O口传送到单片机内部。8.1 相关知识相关知识链接链接(3)控制总线控制总线是单片机发出的以控制片外ROM、RAM和I/O口读写操作的一组控制线。2.扩展方法(1)数据总线由于MCS-51单片机没有提供专门
4、的数据总线,而是与P0口共用。P0口既可以用作低8位地址线,又可以用作系统的数据总线,地址和数据信号分时从P0口输出。在实际使用中,通常在P0口外接一个锁存器,用以在ALE信号下降沿到来时锁存住低8位地址信号,之后P0口输出数据,此时因为ALE无下降沿信号,P0口送出的数据信号不会送到锁存器的输出,故不会影响地址信号。数据线直接和外部端口的数据线相连即可。8.1 相关知识相关知识链接链接(2)地址总线在MCS-51单片机中,除了P0口的低8位地址线,还有P2口的高8位地址线,它们共同组成16位地址线,以实现连续的64KB RAM的寻址。P2口具有锁存功能,输出的高8位地址信号在整个寻址过程中保
5、持不变。P2口有8根数据线,在实际中应根据实际情况,选择满足寻址空间所需的P2口的地址线条数。(3)控制总线在单片机系统扩展中,CPU除了提供数据信号、地址信号之外,还需要提供控制信号。MCS-51单片机除了提供专门的控制信号线,如:ALE、等,还提供了P3口的第二功能控制线,具体如下:ALE锁存信号,用于进行P0口地址线和数据线的分离。片外程序存储器“读选通”控制信号。外部数据存储器的读选通控制信号。-外部数据存储器的写选通控制信号。程序存储器访问控制信号。当它为低电平时,对程序存储器的访问仅限于外部存储器;为高电平时,对程序存储器的访问从单片机的内部存储器开始,超过片内程序存储器地址时自动
6、转向外部存储器。8.1 相关知识相关知识链接链接3.存储器的介绍存储器是组成计算机系统的重要部分,用来存放程序和数据。按照存储器的内部结构划分,可以分为随机存储器和只读存储器。按使用属性分,可将半导体存储器分为RAM和ROM。(1)随机存储器根据RAM的结构和功能,RAM又分为两种类型:静态随机存储器(SRAM)和动态随机存储器(DRAM)。SRAM依靠双稳态触发器的两个稳定状态保存信息。每个双稳态电路存储一位二进制代码0或1,一块存储芯片上包含许多个这样的双稳态电路。双稳态电路是有源器件,需要电源才能工作,只要电源正常,就能长期稳定的保存信息,所以称为静态存储器。如果断电,信息将会丢失,属于
7、易失性存储器。而DRAM存储电路以电容为基础,靠芯片内部电容电荷的有无来表示信息,为防止由于电容漏电所引起的信息丢失,就需要在一定的时间间隔内对电容进行充电,这种充电的过程称为DRAM的刷新。8.1 相关知识相关知识链接链接静态随机存储器(SRAM):读写速度快,生产成本高,多用于容量较小的高速缓冲存储器。动态随机存储器(DRAM):读写速度较慢,集成度高,生产成本低,多用于容量较大的主存储器。(2)只读存储器只读存储器是一种只能读出而不能写入和修改信息的存储器,其存储的信息是在制作该存储器时就被写入的。在计算机工作过程中,ROM中的信息只能被读出,而不能写入新的内容。计算机断电后,ROM中的
8、信息不会丢失,即在重新加电后,其中保存的信息仍然是断电前的信息,仍然可以被读出。ROM通常用来存放一些固定的程序、数据和系统软件等,如检测程序等。只读存储器除了ROM外,还有PROM、EPROM、EEPROM等类型。PROM是可编程只读存储器,它在制造时不写入数据和程序,而是由用户根据需要用专用设备自行写入,一旦写入就不能再次修改。EPROM是可擦除可编程只读存储器。与PROM相比,EPROM是可以用专用设备反复多次擦除和写入内容的只读存储器。但EPROM中的内容的擦除方法是用紫外线照射。EEPROM是电可擦除可编程只读存储器,在擦除与编程方面更加方便。不论哪种ROM,其中存储的信息不受断电的
9、影响,具有永久保存的特点。8.1 相关知识相关知识链接链接8.2 程序存储器程序存储器扩展扩展一、典型的只读存储器芯片Intel 2764Intel 2764是一种+5v的8KB存储器芯片。其中,27是系列号,64与它的存储容量有关。这个系列的产品与存储容量的对应关系如表所示,此处只对Intel 2764进行介绍。1.引脚功能2764是28引脚的EPROM,存储容量为8KB,其引脚如图所示。2764的第26脚为NC,表示不用。A0A12是13根地址线。D0D7是8根数据线,也有标为O0O7的。是输出允许信号,由用户控制。高电平时,使数据线处于高阻态;低电平时,数据线处于读出状态。是片选信号,用
10、于控制本芯片是否工作。高电平时,本芯片不工作;低电平时,选中本片工作。是编程脉冲输入线。用于控制本芯片处于正常工作状态还是编程状态。高电平时,本芯片处于正常工作状态。若给它一个50ms的负脉冲,则它与Vpp引脚上的21V高压配合使芯片处于编程状态。8.2 程序存储器程序存储器扩展扩展2.工作方式2764共有五种工作方式,下表列出了2764的工作状态和相应引脚线上电平的关系。8.2 程序存储器程序存储器扩展扩展二、单片机与2764的连线1.8031的引脚P0.0P0.7不经过锁存器与2764的数据线D0D7相连,完成数据线扩展。2.8031的引脚P0.0P0.7经过锁存器与2764的地址线A0A
11、7相连,P2.0P2.4直接与2764的地址线A8A12相连,完成地址线扩展。3.8031的程序存储器访问控制端 与2764的输出允许端 相连完成控制线的扩展。4.8031的引脚P2.6经非门与2764片选端 相连,进行片选控制。这种接法称为线选法。5.8031没有片内程序存储器,对程序的访问完全在片外进行,因此将其 端接地。扩展后的逻辑结构如下图所示。8.2 程序存储器程序存储器扩展扩展8.2 程序存储器程序存储器扩展扩展三、确定存储器的地址范围根据图8-3的电路接法,P2.5、P2.7与寻址无关,均设为“1”。P2.6经非门与片选端相连,当它为“1”时,可使得片选端有效。这种利用一根地址线
12、与存储器的片选端相连的方法称为线选法。根据图中的接线分析,此片2764的地址范围是0E000H0FFFFH。地址范围的分析参见表8-3。表8-3 2764的地址范围分析表中第一行代表单片机的地址线。表中第二行代表2764的引脚与单片机对应引脚相连,N代表无关。表中第三行代表2764工作时单片机应该输出电平,对应最小地址0E000H。表中第四行代表2764工作时单片机应该输出电平,对应最大地址0FFFFH。其余在最小地址和最大地址之间的地址(0E000H0FFFFH),变化的只是A0A12地址线的数值。在确定芯片的地址范围时,对未使用的P2口线可以任意设置,这就出现了多个地址对应同一个存储单元的
13、情况,称为地址重复。8.2 程序存储器程序存储器扩展扩展四、程序举例【例题8-1】按照图8-3的接法,外部扩展一片EPROM 2764,检验查表指令的运行。读取2764中从地址1000H单元开始的30个字节的数据,存放入片内RAM中,从地址40H开始存放,然后转入片外2764中地址1000H处执行程序。2764中程序的功能是,在P1口输出0F不断变化的数据,用数码管显示这个数据。程序如下:ORG 0000H MOV R7,#30 ;转移30个字节的数据 MOV R0,#40H MOV A,#00H MOV DPTR,#1000H LP:MOVC A,A+DPTR MOV R0,A INC R0
14、 INC DPTR MOV A,#00H DJNZ R7,LP8.2 程序存储器程序存储器扩展扩展下面程序的功能是:在P1口输出0F不断变化的数据 LJMP 1000H END ORG 1000H MOV R2,#00H MOV A,R2 STAR:MOV P1,A INC R2 MOV A,R2 ANL A,#0FH SJMP STAR END8.2 程序存储器程序存储器扩展扩展8.3 数据存储器数据存储器扩展扩展一、典型的随机存取存储器芯片Intel 6264Intel 6264是一种静态RAM芯片。其中,62是系列号,64与它的存储容量有关,是说明其中有64K位的存储容量,8K字节。这个
15、系列的产品有62128,16K字节;62256,32K字节。此处重点介绍Intel 6264芯片。1.引脚功能6264、62128、62256都是28引脚的静态RAM,其引脚如图所示。u6264的存储容量为8KB,有13根地址线A0A12。62128的存储容量为16KB,是6264的2倍,比6264多1根地址线,62128的第26脚为A13。62256的存储容量为32KB,是6264的4倍,比6264多2根地址线,62256的第26脚为A13、第1脚为A14。uD0D7是6264的8根数据线。u 是输出允许信号,控制从6264中读出的数据是否送到数据线上,低电平有效。u 是写选通信号,控制62
16、64是否处于写状态,低电平有效。u CS1和 是片选信号,用于控制本芯片是否工作。CS1为高电平、为低电平时,选中本片工作;否则本片不工作。8.3 数据存储器数据存储器扩展扩展2.工作方式6264有五种工作方式,表8-4列出了6264的工作状态和相应引脚线上电平的关系。8.3 数据存储器数据存储器扩展扩展二、数据存储器扩展下面以8051单片机扩展1片6264为例,说明单片数据存储器扩展。如图8-5所示。1.逻辑连线(1)8051的引脚P0.0P0.7不经过锁存器与6264的数据线D0D7相连,完成数据线扩展。(2)8051的引脚P0.0P0.7经过锁存器与6264的地址线A0A7相连,P2.0
17、P2.4直接与6264的地址线A8A12相连,完成地址线扩展。(3)8051数据存储器访问控制端 与6264的输出允许控制端 相连,数据存储器写访问控制端 与6264的写选通信号端 相连完成控制线的扩展。(4)片选信号,直接连接固定电平。8.3 数据存储器数据存储器扩展扩展2.地址范围P2.5与P2.7与寻址无关,均设为“1”。因此,此片6264的地址范围是0E000H0FFFFH。如果把P2.6设为1,P2.5设为0,P2.7设为1,则其地址为C000HCFFFH。这三位还可以设为另外的值,地址就不同了。这就出现了重复地址,使用哪一个都可以,效果相同。3.程序举例【例题8-2】外部数据存储器
18、中有一个数据块,首地址为SOUSE,将该数据块传送到内部数据区以DIST开始的单元,直到遇到*结束(*也要传递,*的ACSII是2AH)。程序如下:ORG 1000H MOV R0,#DIST MOV DPTR,#SOUSE LOOP:MOVX A,DPTR MOV R0,A INC DPTR INC R0 CJNE A,#2AH,LOOP SJMP$8.3 数据存储器数据存储器扩展扩展8.4 输入输出口扩展技术输入输出口扩展技术一、简单I/O口扩展1.用并行口扩展I/O口只要根据“输入三态,输出锁存”与总线相连的原则,选择73LS系列的TTL电路或MOS电路既能组成简单的扩展I/O口。例如采
19、用8位三态缓冲器74LS244组成输入口,采用8D锁存器74LS273,74LS373,74LS377等组成输出口。由于MCS-51单片机是将外部I/O口和外部RAM统一编址的,每个扩展的接口相当于一个扩展的外部RAM单元。因此,访问外部接口和访问外部RAM一样使用MOVX类指令。所以,在连接芯片时,可利用执行MOVX类指令时产生的 和 信号参加片选。图8-6给出了一种简单的输入、输出口扩展电路。输出控制信号由P2.7和 来合成,当两者同时为低电平时,“或”门输出低电平,将P0口数据锁存到74LS273,其输出控制发光二极管LED。当某线输出为低电平时,该线上的LED发光。输入控制信号由P2.
20、7和 合成,当两者同为低电平时,选通74LS244,将外部信息输入到总线。无键按下时,输入全为1;若按下某键,则所在线输入为0。可见,输入和输出都是在P2.7为0时有效,虽然输入口和输出口占有相同的地址空间,但由于它们分别由 和 信号控制,仍然不会发生冲突。对于图8-6来说,如果需要实现的功能是按下任意一个键,对应的LED发亮,则程序如下:LOOP:MOV DPTR,#07FFFH ;数据指针指向I/O口地址 MOVX A,DPTR ;从74LS244读入按键数据 MOVX DPTR,A ;向74LS273输出数据,驱动LED SJMP LOOP ;循环8.4 输入输出口扩展技术输入输出口扩展
21、技术2.用串行口扩展I/O口当MCS-51单片机串行口工作在方式0时,使用移位寄存器芯片可以扩展一个或多个8位并行I/O口。这种方法不会占用片外RAM地址,而且可以节省单片机的硬件开销。缺点是操作速度较慢,扩展芯片越多,速度越慢。当应用系统中串行口别无它用时,常采用这种扩展方法。图8-7和图8-8分别给出了利用串行口扩展2个8位并行输入口和扩展2个8位并行输出口的接口电路。8.4 输入输出口扩展技术输入输出口扩展技术二、可编程I/O扩展在微机接口中,常使用一些结构复杂的接口芯片,以完成各种复杂的操作。这类芯片一般具有多种功能,在使用前,必须由CPU对其编程,以设定其工作方式,之后才能使芯片按设
22、定的方式进行操作,这就是可编程接口。常用可编程接口芯片如表8-5所示。如何正确使用这些芯片,使之成为微机扩展接口,除保证正确的硬件接线外,关键在于控制字的设定与修改。下面通过对8155的使用重点说明这个问题。表8-5 常用Intel系列可编程接口芯片8.4 输入输出口扩展技术输入输出口扩展技术1.8155的结构和技术性能在8155内部具有:(1)256字节的静态RAM,存取时间为400ns。(2)三个通用的输入/输出口。其中A口和B口是8位口,C口是6位口。C口可做为状态口,这时,A口和B口能在应答式的输入/输出方式下工作。(3)一个14位的可编程定时/计数器(4)地址锁存器及多路转换的地址和
23、数据总线。(5)单一+5V电源,40脚双列直插式封装。8.4 输入输出口扩展技术输入输出口扩展技术8155的RAM和I/O地址编码当8155作为单片机的扩展芯片时,是按外部数据存储器统一编址的,为16位地址数据。其高8位由片选线 提供,而低8位地址为片内地址。当IO/=0时,单片机对8155片内RAM读写,RAM低8位编址为00H0FFH;当IO/=时,单片机对8155的I/O口进行读写。8155共有6个I/O寄存器,它们各自占有的地址如下表8.4 输入输出口扩展技术输入输出口扩展技术2.8155的工作方式与基本操作8155可作为I/O口、片外256字节数据存储器及定时器使用。(1)作为片外2
24、56字节RAM使用。此时8155的IO/脚应置为低电平,其RAM地址的高8位由片选线决定,低8位为00H0FFH。与应用系统中其它数据存储器统一编址。使用的读/写操作指令为MOVX。(2)作扩展I/O口使用。此时8155的IO/脚应置为高电平,PA、PB、PC口的口地址的低8位分别为01H、02H、03H(设地址无关为0)。I/O口的工作方式的选择完全依靠对8155命令寄存器设定的命令控制字来实现。而I/O口状态的查询可以通过对8155状态寄存器的操作来完成。命令/状态寄存器共用一个口地址,写入为命令,读出为状态。8.4 输入输出口扩展技术输入输出口扩展技术命令控制字的格式如图8-10所示。8
25、.4 输入输出口扩展技术输入输出口扩展技术 其中C口工作方式如表8-7所示。8.4 输入输出口扩展技术输入输出口扩展技术状态格式如图8-11所示。8.4 输入输出口扩展技术输入输出口扩展技术用好8155 I/O口的关键在于正确理解各个I/O口每一位的功能意义,据此编写准确的控制字,并写入命令寄存器。例如,假定要求选择8155的PA口为基本输入口,PB口为基本输出口,PC口为输出口,并立即启动计数器工作,则向命令寄存器写的控制字为0CEH,即:(3)作定时器使用。8155的定时器由两个8位寄存器组成。实际上是一个14位的减法计数器,另两位用于确定输出方式。其低位字节的I/O地址为:100B,高位
26、字节的I/O地址为101B,其格式如图8-12所示。在TIMERIN端输入计数脉冲,当计数满时由TIMEROUT端输出脉冲或方波。当TIMERIN接外脉冲时为计数方式;接系统时钟时,可作为定时方式,但需注意芯片的最高计数频率(4MHZ)。8.4 输入输出口扩展技术输入输出口扩展技术8.4 输入输出口扩展技术输入输出口扩展技术定时器的操作分两步。第一步由写入命令寄存器的控制字确定定时器的启动、停止或装入计数(见命令控制字),第二步由写入到定时器的两个寄存器的内容确定计数长度和输出方式。计数器的计数长度可为0002H3FFFH。任何时候都可以置定时器的长度和工作方式,然后必须将启动命令写入命令寄存
27、器。硬件复位后并不能将定时器预置成任何工作方式和计数长度,只能使计数停止。因此,必须注意给予启动命令。1.MCS-51单片机与8155的接口与操作MCS-51单片机可直接和8155连接而不需要任何外加逻辑,可以直接为系统增加256字节外部RAM、22根I/O线及一个14位定时器。其基本硬件连接方法如图8-13所示。P0口直接与8155的AD0AD7相连,即作低8位地址线又做数据线,地址锁存信号使用单片机的ALE,高8位地址由 及IO/控制线决定。8.4 输入输出口扩展技术输入输出口扩展技术8.4 输入输出口扩展技术输入输出口扩展技术按图中连接状态的地址编码为:RAM地址:7E00H7EFFHI
28、/O地址:命令状态口 7F00H PA口 7F01H PB口 7F02H PC口 7F03H 定时器低8位 7F04H 定时器高8位 7F05H 对8155的操作控制应按上述地址编码进行。例如,设8155的PA口为基本输入口,PB口为基本输出口,PC口为输出口,定时器作方波发生器,对输入脉冲进行24分频。要求从PA口读入数据存入8155的5FH单元,PA口数据取反后从PB口输出,屏蔽高两位后再从PC口输出。则8155的操作如下:MOV DPTR,#7F04H ;指向定时器低8位MOV A,#18H ;计数常数24MOVX DPTR,A ;装入低8位计数常数INC DPTR ;指向定时器高8位M
29、OV A,#40H ;设定时器输出为连续方波MOVX DPTR,A ;定时器高8位装入MOV DPTR,#7F00H ;指向命令/状态口MOV A,#0CEH ;设定命令控制字MOVX DPTR,A ;装入命令控制字,设定各口方式并启动定时器INC DPTR ;指向PA口8.4 输入输出口扩展技术输入输出口扩展技术MOVX A,DPTR ;读入PA口内容MOV R2,A ;PA口数据暂存R2CPL A ;PA口数据取反INC DPTR ;指向PB口MOVX DPTR,A ;向PB口输出ANL A,#3FH ;屏蔽高两位INC DPTR ;指向PC口MOVX DPTR,A ;向PC口输出MOV DPTR,#7E5FH ;指向8155 RAM 5FH单元MOV A,R2MOVX DPTR,A ;PA口数据送存8.4 输入输出口扩展技术输入输出口扩展技术