单片机的系统扩展.ppt
第4章 单片机的系统扩展,学习目标,掌握51单片机扩展总线的结构及组成掌握并行总线的逻辑与时序掌握并行总线扩展的地址译码方法掌握51单片机扩展存储器的方法掌握51单片机扩展I/O接口的方法,主要内容,第4章单片机的系统扩展 4.1 51系列单片机扩展总线基础 4.1.1 51系列单片机的扩展总线的结构和组成 4.1.2 51系列单片机扩展总线的逻辑关系和时序分析 4.1.3 总线扩展的地址译码方法 4.1.4 扩展总线设计接口电路时应该考虑的问题 4.2 51存储器的扩展 4.2.1 存储器基础知识 4.2.2 程序存储器的扩展 4.2.3 数据存储器的扩展4.3 51并行IO接口的扩展 4.3.1 简单I/O扩展 4.3.2 采用专用芯片扩展I/O接口,4.1 51单片机扩展总线基础,单片机中一般集成了CPU、I/O口、定时器、中断系统、存储器等计算机的基本部件,外加电源、复位和时钟等简单的辅助电路即构成一个能够正常工作的最小系统,下图是一个89C52的最小系统。,4.1.1 51系列单片机的扩展总线的结构和组成 51系列单片机为了减少引脚数量,扩展总线中的数据线和地址线(低8位)采用了分时复用技术,即P0口分时传送地址总线信号的低8位(A0A7)和数据总线信号(D0D7),P0口在某一时刻传送的是低8位地址信号还是数据信号由ALE来指明,如图4-2所示。,4.1.1 51系列单片机的扩展总线的结构和组成 在实际使用时往往需要把地址和数据信号分离开来,一般采用外接一个8位锁存器的方法来实现。图4-3为采用8位锁存器74LS373实现地址和数据分离的电路原理图。,4.1.151系列单片机的扩展总线的结构和组成 51系列单片机的扩展总线信号包括:16位地址总线信号A0A15;8位数据总线信号为D0D7;控制总线信号由ALE、组成。扩展总线信号名、信号的含义及与单片机引脚信号定义的对应关系见下表。,4.1.2 51系列单片机扩展总线的逻辑关系和时序分析1.访问外部程序存储器模式 51系列单片机在访问外部程序存储器时,控制总线仅由ALE、和 组成。当或单片机要访问的程序存储器超出片内程序存储器的范围时,“MOVC A,A+DPTR”是单片机访问外部程序存储器时执行的一条指令。指令执行过程中控制信号的逻辑关系和时序图如图4-4所示。,4.1.2 51系列单片机扩展总线的逻辑关系和时序分析 2.访问外部数据存储器或数据端口模式(读XRAM)51系列单片机在访问外部数据存储器时,其控制总线由ALE、组成。,4.1.2 51系列单片机扩展总线的逻辑关系和时序分析 2.访问外部数据存储器或数据端口模式(写XRAM)51系列单片机在访问外部数据存储器时,其控制总线由ALE、组成。当执行MOVX Ri,A指令或MOVX DPTR,A指令时,进行写外部数据RAM的操作。,4.1.3总线扩展的地址译码方法 所谓地址空间分配是把64KB的寻址空间通过地址译码的方法分成若干个大小相同的页面,其中低位地址线用来选择页内单元,高位地址线则用于页面的选择,不同的外部设备占用不同的页面。地址译码要解决的问题就是:如何产生页面选择信号使外部设备占用一个存储空间页面(页面译码),并使外部设备内的每一个存储单元或数据端口与页内的存储单元对应起来(页内译码)。地址译码的方法一般采用全地址译码、部分地址译码和线选法。,4.1.3总线扩展的地址译码方法1.全地址译码 所谓全译码是指所有的地址线都参与译码,所得到的地址空间是连续的,每一个数据单元与地址是一一对应的。全译码电路的结构一般比较复杂。若页面的大小为8KB,要把64KB的存储空间分成8个页面,则所有高位地址A13A15都必须参与译码,产生8个独立的页面选择信号,形成一个连续的地址段。一般采用38译码器来实现,如图4-7所示。,4.1.3总线扩展的地址译码方法2.部分地址译码 所谓部分译码是指只有一部分地址参与译码,所得到的地址空间是非连续的地址段,没有覆盖整个可寻址空间,一个数据单元可能与几个地址对应。,4.1.3总线扩展的地址译码方法 3.线选法 所谓线选法是部分地址译码的特殊形式,即对地址线不进行译码,直接用地址线来选通数据单元,其得到的地址空间也是非连续的。比如,不用外加译码电路,仅用高位地址线就把64KB的寻址空间区分成若干区,如图4-9所示。,4.1.3总线扩展的地址译码方法 经过以上分析,我们可以把地址译码电路的设计归纳总结为如下几点:1.地址译码电路是一个典型的组合逻辑电路,可以采用组合逻辑电路的设计方法来设计。2.采用页面技术,地址译码分为页面译码和页内译码,两者的基本原理一致。页面译码产生页面选择信号,页内译码产生页内数据单元的选择信号。3.全地址译码为系统内各个数据单元分配一个唯一的地址,其电路设计比较复杂,适合用于页面比较大的应用情况。,4.1.3总线扩展的地址译码方法4.部分地址译码是仅对使用到的存储空间进行译码处理,对不使用的地址空间采用重叠、忽略等方法来处理,从而简化译码电路的设计。部分地址译码适合用于页面较小,且有些存储空间不用的情况。5.线选法是最简单的一种译码方式,适合于使用的页面较少的情况。特别要注意线选法往往需要软件的配合才能唯一地确定对应页面。6.当系统设计中需要用到不同的页面时,可以采用多级译码技术把整个存储空间划分为若干个大小不同的页面。,4.1.4扩展总线设计接口电路时应该考虑的问题地址空间分配 总线驱动能力 电平的匹配 控制时序和逻辑的匹配 速度的协调状态信号的处理 51系列单片机采用总线扩展方式可以实现:存储器扩展;输入/输出接口扩展;功能部件(如定时器、计数器、键盘、显示器等)的扩展;A/D和的D/A扩展;,4.2.1存储器基础知识 1.半导体存储器的分类,4.2.1存储器基础知识 3.常用SRAM简要介绍,4.2.1存储器基础知识 常用存储器参数比较,4.2.2程序存储器的扩展 当单片机不含片内程序存储器或片内程序存储器不够使用时才需要进行程序存储器的扩展,程序存储器的扩展一般采用总线扩展。程序存储器的扩展主要考虑以下几个问题:,地址线的连接数据线的连接控制信号的连接译码电路的设计,4.2.2程序存储器的扩展 例7-1若单片机为8031,试采用2764扩展8KB的程序存 储器。,4.2.2程序存储器的扩展 例7-2若单片机为8031,试采用2764扩展32KB的程序存储器。,4.2.3数据存储器的扩展 扩展外部数据存储器空间地址分配与扩展外部程序存储器的设计方法基本一样,但所用的控制信号不同,片外数据存储器的读/写由单片机的(P3.7)和(P3.6)信号控制,而片外程序存储器的输出允许端()则由读选通信号 控制。,4.2.3数据存储器的扩展例7-4 若单片机为8031,试采用SRAM芯片把外部数据存储器扩展为32KB。分析:由于没有指定SRAM的具体型号,外部数据存储器扩展为32KB有多种设计方案。方案一:62256 的存储容量为32KB,可以采用1片62256来设计。方案二:62128的存储容量为16KB,可以采用2片62128来设计。方案三:6264的存储容量为8KB,可以用4片6264来设计。方案四:6116的存储容量为2KB,可以用16片6116来设计方案五:可以用1片62128和2片6264来设计。方案六:可以用1片62128和8片6264来设计。一般来说,采用大容量的SRAM芯片来扩展外部数据存储器会使使用的芯片数量减少,译码电路的复杂性降低。因此方案一和方案二是比较合理的设计方案。,4.2.3数据存储器的扩展例7-4 若单片机为8031,试采用SRAM芯片把外部数据存储器扩展为32KB。,4.2.3数据存储器的扩展例7-4 若单片机为8031,试采用SRAM芯片把外部数据存储器扩展为32KB。,4.3 51并行IO接口的扩展,常用的并行I/O接口扩展方法主要有简单扩展、专用接口芯片扩展和串行扩展三种扩展方法。所谓简单扩展就是利用74LS377、74LS373、74LS244、74LS245等锁存器、三态门或双向缓冲器构造一个简单的输入/输出端口;专用接口芯片扩展是采用8155、8255等具有特殊功能的专用接口芯片来扩展输入/输出端口;串行扩展是利用串口控制器的功能来扩展并行输入/输出端口。,4.3 51并行IO接口的扩展,具体扩展时需要注意以下几点:51系列单片机扩展的并行I/O口和外部数据存储器统一编址,采用相同的控制信号,相同的寻址方式和相同的指令(采用MOVX指令),因此,扩展方法和外部数据存储器相同。系统中所有并行I/O口扩展芯片均应按照“输入三态、输出锁存”的原则与总线相连。特别注意P0口的负载问题 在I/O口扩展时必须考虑与之相连的外设硬件电路特性,如驱动功率、电平、干扰抑制及隔离等因素。,4.3.1简单I/O扩展 1.采用锁存器扩展简单的8位输出口,OUT377:MOV DPTR,#7FFFH MOV A,#data MOVX DPTR,A RET,/E:为低电平时,为正常逻辑状态;CP(CLK):触发端,上升沿触发,即当CP从低到高电平时,D0D7的数据通过芯片将数据锁存,D0D7的数据不变。,4.3.1简单I/O扩展 2.用三态门扩展8位输入并行口,IN244:MOV DPTR,#0BFFFH MOVX A,DPTR RET,4.3.1简单I/O扩展 3.采用锁存器扩展选通输入的8位并行口,INT0373:MOV DPTR,#0BFFFH MOVX A,DPTR RETI,4.3.2专用芯片扩展IO接口,1.8155的引脚定义及结构,4.3.2专用芯片扩展IO接口,2.8155的RAM和I/O口地址编码 8155内部I/O寄存器编址,4.3.2专用芯片扩展IO接口,2.8155的RAM和I/O口地址编码表7-12 81555操作控制逻辑关系表,4.3.2专用芯片扩展IO接口,3.8155的命令字和状态字 8155命令字格式:,4.3.2专用芯片扩展IO接口,3.8155的命令字和状态字 8155状态字格式:,4.3.2专用芯片扩展IO接口,4.8155的定时器/计数器,4.3.2专用芯片扩展IO接口,5.8155A与51单片机的接口方法,4.3.2专用芯片扩展IO接口,5.8155A与51单片机的接口方法 用C51编程时,对8155的操作可描述为以下几个方面:#include#define STATE8155 XBYTE0 x7F00#define IOA XBYTE0 x7F01H#define IOB XBYTE0 x7F02#define IOC XBYTE0 x7F03STATE8155=x;/写命令字寄存器 x=STATE8155;/读状态寄存器IOA=x;/写A口 x=IOB;/读B口 XBYTE0 x3F20=35;/写8155的RAM单元(20H)x=XBYTE0 x3F65;/读8155的RAM单元(65H),4.3.2专用芯片扩展IO接口,例7-9 8155控制打印机,4.3.2专用芯片扩展IO接口,例7-9 8155控制打印机,#include#include#define unchar unsigned char#define STATE8155 XBYTE0 x7F00/*定义8155各口*/#define PA8155 XBYTE0X7F01#define PC8155 XBYTE0X7F03sbit BUSY=P10;/*打印机状态位*/void printf_string(unchar*p0)while(*p0!=0)while(BUSY);PA8155=*p0;/*送打印字符*/PC8155=0 x00;/*产生STB低电平*/PC8155=0 x01;/*产生STB上升沿*/p0+;,4.3.2专用芯片扩展IO接口,void main(void)/*置命令字,决定8155工作状态*/STATE8155=0 x0F;/*设置要打印的字符串*/unchar idata string_to_p1=“football!”;/*设置要打印的字符串*/unchar idata string_to_p2=“basketball!”;/*打印字符串*/printf_string(string_to_p1);printf(“n”);/*打印字符串*/printf_string(string_to_p2);while(1);,END,