山东大学单片机原理与应用05系统扩展
第五章第五章 系统扩展系统扩展5.1 MCS-51的最小系统及系统扩展5.2 MCS-51系统总线扩展技术5.3 存储器扩展5.4 并行I/O扩展5.5 其它扩展5.1 MCS-515.1 MCS-51的最小系统及系统扩展的最小系统及系统扩展最小系统最小系统 使单片机能运行的最少器件使单片机能运行的最少器件构成的系统。构成的系统。对于无对于无ROMROM的单片的单片机芯片如机芯片如80318031必须扩展必须扩展ROMROM,复,复位、晶振电路;而对于有位、晶振电路;而对于有ROMROM芯芯片:片:89C5189C51等,不必扩展等,不必扩展ROMROM,只要有复位、晶振电路即可。只要有复位、晶振电路即可。 通常,采用通常,采用8051/8751/89C518051/8751/89C51的最小系统最能发挥单片机体的最小系统最能发挥单片机体积小、成本低的优点。但很多积小、成本低的优点。但很多情况下,最小系统并不能满足情况下,最小系统并不能满足应用要求。应用要求。 当单片机最小系统不能满足当单片机最小系统不能满足系统功能的要求时系统功能的要求时, , 就需要进就需要进行扩展。行扩展。 首先,为了节省成本,单片机内部所配置的存储器容量首先,为了节省成本,单片机内部所配置的存储器容量一般都比较小(如:一般都比较小(如:80318031内部有内部有128128字节的字节的RAMRAM和和0 0字节的字节的ROMROM),往往满足不了实际应用系统的需要,需要从外部扩),往往满足不了实际应用系统的需要,需要从外部扩展展RAMRAM和和ROMROM以满足实际要求。以满足实际要求。 其次,为了使单片机按照人们的要求工作,就需要将必其次,为了使单片机按照人们的要求工作,就需要将必要的命令和数据输入单片机,单片机也需要把运算的结果以要的命令和数据输入单片机,单片机也需要把运算的结果以一定的方式输出出来,要完成这些工作,仅仅依赖于单片机一定的方式输出出来,要完成这些工作,仅仅依赖于单片机系统原配的接口往往难以胜任,这就需要一定的输入输出接系统原配的接口往往难以胜任,这就需要一定的输入输出接口扩展,还有一些其它方面的扩展。口扩展,还有一些其它方面的扩展。 总之单片机系统的扩展一般包含以下几方面的内容总之单片机系统的扩展一般包含以下几方面的内容: : 外部程序存储器的扩展外部程序存储器的扩展; ; 外部数据存储器的扩展外部数据存储器的扩展; ; 输入输入/ /输出接口的扩展输出接口的扩展; ; 管理功能器件的扩展管理功能器件的扩展( (如定时如定时/ /计数器扩展、中断计数器扩展、中断扩展、通信接口扩展等扩展、通信接口扩展等) )。5.2 MCS-51系统总线扩展技术系统总线扩展技术总线:总线:就是用来连接计算机系统中各扩展部件的一些公共连接就是用来连接计算机系统中各扩展部件的一些公共连接信号线。信号线。 三总线结构:三总线结构:根据总线中各信号线在器件连接中所起的作用不根据总线中各信号线在器件连接中所起的作用不同,将信号线分成了三类:同,将信号线分成了三类: (1 1)地址总线()地址总线(Address BusAddress Bus):):用于实现计算机与外部器件之间地址信号的传递,一方面实现了将这些不同的外部器件分别编入了单片机的不同的外部空间单元(编址编址),另一方面也能实现计算机对这些不同的空间单元访问时形成对这些器件的分别选择(寻址寻址)。(2 2)数据总线()数据总线(Data BusData Bus):):用于实现计算机与外部器件之间的数据信号的传递。(3 3)控制总线()控制总线(Control BusControl Bus):):用于实现计算机与外部器件之间的控制信号(如读写、选通、Ready等)的传递。5.2.1 MCS-515.2.1 MCS-51的系统总线结构的系统总线结构(1)地址总线)地址总线: P2P2口提供地址总线的高口提供地址总线的高8 8位位 P0P0口分时复用,提供地址总线的低口分时复用,提供地址总线的低8 8位位。(但是对于P0 口它一方面作为地址总线的低8位,另一方面还将作为数据总线,所以P0口提供的低8位地址需要外部电路进行锁存)(2)数据总线数据总线: 由由P0P0口提供。口提供。 (3)控制总线)控制总线: 一部分包括一部分包括ALEALE、PSENPSEN、EAEA等,另一部分包括等,另一部分包括 P3 P3 口提供口提供部分扩展系统时常用的控制信号,如部分扩展系统时常用的控制信号,如RDRD和和WRWR等。等。单片机的总线结构图单片机的总线结构图 地址锁存器常常采用带三态缓冲输出的锁存器,如74LS373、74LS273等实现,为地址锁存信号,在其下降沿将口的内容锁存住,而这时口的内容恰好就是外部数据的地址低位,当访问外部程序存储器时和口的时序对应关系如下图所示:利用利用74LS37374LS373构成的外部系统总线如图所示:构成的外部系统总线如图所示:5.2.2 MCS-51的总线驱动的总线驱动 在单片机应用系统中, 扩展的三总线上往往挂接很多负载, 如存储器、并行接口、A/D接口、显示接口等, 但总线接口的负载能力有限(大部分仅仅能够驱动4个TTL电路), 这时便需要通过连接总线驱动器对单片机的系统总线进行驱动。 根据总线信号流通的方向不同,可以将这些总线驱动分成两大类:单向驱动:单向驱动:只有一个传输方向的信号(如地址信号)双向驱动:双向驱动:有两个传输方向的信号(如数据信号) 5.2.2.1 单向驱动单向驱动 单向总线驱动常常选用单向总线驱动常常选用74LS24474LS244来实现。来实现。74LS24474LS244是三态输出的八缓冲器,由是三态输出的八缓冲器,由2 2组、每组四路输入、输出组、每组四路输入、输出构成。每组有一个控制端(构成。每组有一个控制端( 和和 )控制,控制端的)控制,控制端的高或低电平决定该组数据被接通还是断开。高或低电平决定该组数据被接通还是断开。 74LS24474LS244的功能表的功能表 74LS24474LS244在高电平输入时在高电平输入时最大需要最大需要20uA20uA电流,在低电平电流,在低电平输入时最大需要输入时最大需要200uA200uA电流,电流,这对于单片机来讲只是一个这对于单片机来讲只是一个TTLTTL负载的输入要求;而输出负载的输入要求;而输出时,在高电平时可以提供时,在高电平时可以提供15mA15mA的输出电流,在低电平时可以的输出电流,在低电平时可以提供提供24mA24mA的灌入电流,可以驱的灌入电流,可以驱动近动近120120个个TTLTTL负载。可见,使负载。可见,使用用74LS24474LS244使得单片机系统的使得单片机系统的总线驱动能力得到了很大提高。总线驱动能力得到了很大提高。用用74LS244构成的高构成的高8位地址总线驱动电路位地址总线驱动电路 5.2.2.2 双向驱动双向驱动 对于双向总线驱动常常选用74LS245来实现。74LS245是8路双向数据总线驱动芯片,具有双向三态功能,既可以输出,也可以输入数据。常常用来扩展数据总线。74LS245内部结构如图所示:当片选端 低电平有效时,DIR=“0”,信号由 B 向 A 传输;DIR=“1”,信号由 A 向 B 传输;当 为高电平时,A、B均为高阻态。74LS245的功能表 74LS245的输入要求和74LS244一样仅仅是一个TTL负载的要求(高电平时需要20uA,低电平时需要200uA),输出驱动能力也和74LS244一样。这里不再重复。用用74LS24574LS245构成的构成的8 8位数据总线驱动电路位数据总线驱动电路 对于P0口的双线驱动器74LS245,使接地保证芯片一直处于工作状态,而输入/输出的方向控制由单片机的数据存储器的“读”控制引脚( )和程序存储器的取指控制引脚( )通过与门控制DIR引脚实现。这种连接方法保证无论是“读”数据存储器中数据( 有效)还是从程序存储器中取指令( 有效)时,都能保证P0口的输入驱动;除此以外的时间里( 及 均无效)保证P0口的输出驱动。 除了配置总线驱动器以外,在总线上适当安装上拉电阻也可以提高总线上高电平信号的带负载能力(如对发光二极管的驱动便可以考虑用这种方法)。但是,总线驱动器除了增加总线的电路驱动能力外,还能够对负载的波动变化起隔离作用。 同时,考虑总线驱动时,还要根据负载的性质分别加以考虑,在对TTL 负载进行驱动时, 只需考虑驱动电流的大小; 在对MOS负载驱动时, 其负载的输入电流很小, 更多地要考虑对分布电容的电流驱动。 在系统较小的情况下,外围器件尽量采用MOS器件,这样可以减少负载,省去驱动器; 对于较大的系统,当需要MOS和TTL器件混用时,最好把双向总线分为两类,所有的MOS器件接在一类总线上,所有TTL器件接在另一类总线上,以免出现CMOS器件直接驱动多个TTL负载(CMOS器件的驱动能力一般相对较弱)的情况,然后再将两类总线连接到一个公共总线上即可,如图所示:5.2.3 MCS-51外部地址空间的分配外部地址空间的分配 MCS-51具有64KB的片内、片外统一编址的程序存储空间和64KB的片外数据存储空间。 MCS-51没有独立的I/O空间,I/O空间和外部数据空间是统一的,也就是说,外部I/O设备也是编入外部数据空间的,占据外部数据空间的地址段,对这些I/O设备的访问和对外部数据存储器的访问方法也基本上一样(除了可能需要另外设置一些握手信号)。 对于外部扩展的器件可以根据它们本身的性质不同分别编入这些存储空间内,占据不同的地址段,这种地址分配的过程就是单片机系统外部扩展器件的编址。根据编址实现的方式不同,可以将其分成两类:线选法线选法 译码法译码法5.2.3.1 线选法线选法 直接以系统的地址线作为存储器芯片的片选信号直接以系统的地址线作为存储器芯片的片选信号, , 只需只需把用到的地址线与存储器芯片的片选端直接相连即可。把用到的地址线与存储器芯片的片选端直接相连即可。 通过上表我们可以发现EPROM2716共占据了16个地址块,每个地址块的大小都是2KB(即每个存储器单元都分配了16个不同的地址),总共占用了32K的地址空间。 因此,线选法具有以下特点:优点:优点:简单明了,不需要译码电路,成本低。缺点:缺点:浪费了大量的存储空间,所划分的地址空间往往不连续,这种方法只适用于片外扩展不是很多的单片机系统中。5.2.3.2 译码法译码法 使用地址译码器对系统的片外地址进行译码,以其译使用地址译码器对系统的片外地址进行译码,以其译码输出作为存储器芯片的片选信号。码输出作为存储器芯片的片选信号。优点:优点:能有效地利用存储空间 , 适用于大容量多芯片存储器的扩展。 常用的地址译码器芯片有:74S139( 双 2-4 译码器 )、 74LS138(3-8 译码器 ) 及 74LS154(4-16 译码器 ) 等。 用用74LS138译码器构成的编址电路译码器构成的编址电路 地址译码关系图:地址译码关系图:用简单的符号来表示全部地址译码关系的示意图。 例如: “. .”表示该地址线不接。表示该地址线不接。“X X”表示该地址线上的内容可表示该地址线上的内容可能是能是“1 1”也可能是也可能是“0 0” 译码法又分为完全译码和部分译码两种。译码法又分为完全译码和部分译码两种。(1) 完全译码:完全译码:地址译码器使用了全部地址线,地址与存储单元一一对应,也就是 1 个存储单元只占用 1 个唯一的地址。 (2)部分译码:部分译码:地址译码器仅使用了部分地址线,地址与存储单元不是一一对应,而是 1 个存储单元占用了几个地址。 1 根地址线不接,一个单元占用 2个地址;2 根地址线不接,一个单元占用 4个地址;3 根地址线不接,则占用 8个地址;依此类推。 使用部分译码将会大量浪费存储单元,使存储器的实际容量降低。但是对于单片机系统来说,由于实际需要的存储器容量往往大大低于所能提供的容