1、第八章 单片机系统扩展8.1 程序存储器扩展8.2 数据存储器扩展 8.3 并行 I/O口扩展8.1 程序存储器扩展8.1.1 单片机程序存储器概述单片机应用系统由硬件和软件组成,软件的载体就是硬件中的程序存储器。对于 MCS-51系列 8位单片机,片内程序存储器的类型及容量如表 8.1所示。表 8.1 MCS-51系列单片机片内程序存储器一览表单片机型号 片内程序存储器类型 容量 /B8031无 8051 ROM 4K8751EPROM4K8951Flash4K对于没有内部 ROM的单片机或者当程序较长、片内ROM容量不够时,用户必须在单片机外部扩展程序存储器。 MCS-51单片机片外有 1
2、6条地址线,即 P0口和 P2口,因此最大寻址范围为 64 KB( 0000H FFFFH)。这里要注意的是, MCS-51单片机有一个管脚 跟程序存储器的扩展有关。如果 接高电平,那么片内存储器地址范围是 0000H 0FFFH( 4 KB), 片外程序存储器地址范围是 1000H FFFFH( 60 KB)。 如果 接低电平,不使用片内程序存储器,片外程序存储器地址范围为 0000H FFFFH( 64 KB)。8031单片机没有片内程序存储器,因此 管脚总是接低电平。扩展程序存储器常用的芯片是 EPROM( Erasable Programmable Read Only Memory)
3、型(紫外线可擦除型), 如2716( 2K8)、 2732( 4K8)、 2764( 8K8)、 27128( 16K8)、 27256( 32K8)、 27512( 64K8) 等。另外,还有 +5 V电可擦除 EEPROM,如 2816( 2K8)、 2864( 8K8) 等等。如果程序总量不超过 4 KB, 一般选用具有内部 ROM的单片机。 8051内部 ROM只能由厂家将程序一次性固化,不适合小批量用户和程序调试时使用,因此选用 8751、 8951的用户较多。如果程序超过 4 KB, 用户一般不会选用 8751、 8951,而是直接选用 8031,利用外部扩展存储器来存放程序。 8
4、.1.2 EPROM程序存储器扩展实例紫外线擦除电可编程只读存储器 EPROM是国内用得较多的程序存储器。 EPROM芯片上有一个玻璃窗口,在紫外线照射下,存储器中的各位信息均变 1,即处于擦除状态。擦除干净的 EPROM可以通过编程器将应用程序固化到芯片中。例 8.1 在 8031单片机上扩展 4 KB EPROM存储器。(1) 选择芯片。本例要求选用 8031单片机,内部无 ROM区,无论程序长短都必须扩展程序存储器(目前较少这样使用,但扩展方法比较典型、实用)。在选择程序存储器芯片时,首先必须满足程序容量,其次在价格合理情况下尽量选用容量大的芯片。这样做的话,使用的芯片少,从而接线简单,
5、芯片存储容量大,程序调整余量也大。如估计程序总长 3 KB左右,最好是扩展一片 4 KB的 EPROM 2732, 而不是选用 2片 2716( 2 KB)。在单片机应用系统硬件设计中应注意,尽量减少芯片使用个数,使得电路结构简单,提高可靠性,这也是 8951比 8031使用更加广泛的原因之一。(2) 硬件电路图。8031单片机扩展一片 2732程序存储器电路如图 8.2。图 8.2 单片机扩展 2732 EPROM电路(3) 芯片说明。 74LS373。 74LS373是带三态缓冲输出的 8D锁存器,由于片机的三总线结构中,数据线与地址线的低 8位共用 P0口,因此必须用地址锁存器将地址信号
6、和数据信号区分开。74LS373的锁存控制端 G直接与单片机的锁存控制信号 ALE相连,在 ALE的下降沿锁存低 8位地址。 EPROM 2732。 EPROM 2732的容量为 4 K8位。 4 K表示有 41024( 22210=212)个存储单元, 8位表示每个单元存储数据的宽度是 8位。前者确定了地址线的位数是 12位( A0A11), 后者确定了数据线的位数是 8位( O0 O7)。 目前,除了串行存储器之外,一般情况下,我们使用的都是 8位数据存储器。 2732采用单一 +5 V供电,最大静态工作电流为 100 mA, 维持电流为 35 mA, 读出时间最大为 250 ns。 2732的封装形式为 DIP24, 管脚如图 7.3所示。 图 8.3 EPROM 2732管脚及说明 其中, A0 A11为地址线; O0 O7为数据线; 为片选线; /VPP为输出允许 /编程高压。除了 12条地址线和 8条数据线之外, 为片选线,低电平有效。也就是说,只有当 为低电平时, 2732才被选中,否则, 2732不工作。 /VPP为双功能管脚,当 2732用作程序存储器时,其功能是允许读数据出来;当对 EPROM编程(也称为固化程序)时,该管脚用于高电压输入,不同生产厂家的芯片编程电压也有所不同。当我们把它作为程序存储器使用时,不必关心其编程电压。