第五章
单片机存储器扩展技术
5.1 存储器系统基本知识
5.1.1 存储器的分类
1,只读存储器 ( ROM)
( 1) 掩模工艺 ROM
( 2) 可一次性编程 ROM( PROM)
( 3) 紫外线擦除可改写 ROM( EPROM)
( 4) 电擦除可改写 ROM( EEPROM或 E2PROM)
( 5) 快擦写 ROM( flash ROM)
2,随机存储器 RAM( 也叫读写存储器 )
( 1) 双极型 RAM
( 2) 金属氧化物 ( MOS) RAM
?静态 RAM( SRAM)
?动态 RAM( DRAM)
?集成 RAM( i RAM)
?非易失性 RAM( NVRAM)
5.1.2 存储器的主要性能指标
1,存贮容量
2,存取时间
3,可靠性
4,功耗
5.2 系统扩展概述
用单片机组成应用系统时, 首先要考虑单片机所具有的各
种功能能否满足应用系统的要求 。 如能满足, 则称这样的系统
为最小应用系统 。
图 5.1(a)为 MCS- 51系列中 8051和 8751单片机的最小系统 。
图 5.1( b) 为由 8031,8032单片机组成的最小系统 。
P2.3
|
P2.0
ALE
P0
PSEN
8031
EA
74LS
373
地址锁存器
高8位 地址线
低8位 地址线
8位 数据线
OE
CE
2732
D7
|
D0
A7
|
A0
A11
|
A8
80C51
87C51
XTAL1
XTAL2
P0
P1
P2
P3
RESET
12MHZ
22uF
1K
200
8
8
8
8
20PF
20PF
+5V
图5,1 MCS -51 系列最小化系统
(a ) (b )
为了使单片机能方便地与各种扩展芯片连接, 应将单片机
的外部连接变为一般的微型机三总线结构形式 。 即地址总线,
数据总线和控制总线 。 对 MCS- 51系列单片机, 其三总线由下
列通道口的引线组成:
地址总线,由 P2口提供高 8位地址线 ( A8――A 15), 此口
具有输出锁存的功能, 能保留地址信息 。 由 P0口提供低 8位地址
线 。 由于 P0口是地址, 数据分时使用的通道口, 所以为保存地
址信息, 需外加地址锁存器锁存低 8位的地址信息 。 一般都用
ALE正脉冲信号的下降沿控制锁存时刻 。
数据总线,由 P0口提供 。 此口是双向, 输入三态控制的通
道口 。
控制总线,扩展系统时常用的控制信号为地址锁存信号
ALE,片外程序存储器取指信号以及数据存储器 RAM和外设接
口共用的读写控制信号等 。
图 5.2为单片机扩展成三总线的结构图 。 扩展芯片与主机相
连的方法同一般三总线结构的微处理机完全一样 。
图 5.2 单片机的三总线结构
P2
ALE
P0
PSEN
RD
WR
8031
EA
74LS
373
地址锁存器
A8 –A1 5
A0 –A7
D0 –D7
控制总线
数字总线
地址总线
高八位
地址总线
低八位
5.3 访问外部程序、数据存储器的时序
5.3.1 访问外部程序存储器时序
操作时序如图 5.3所示, 其操作过程如下 。
( 1) 在 S1P2时刻产生 ALE信号 。
( 2) 由 P0,P2口送出 16位地址, 由于 P0口送出的低 8位地址
只保持到 S2P2,所以要利用 ALE的下降沿信号将 P0口送出的低 8位
地址信号锁存到地址锁存器中 。 而 P2口送出的高 8位地址在整个
读指令的过程中都有效, 因此不需要对其进行锁存 。 从 S2P2起,
ALE信号失效 。
( 3) 从 S3P1开始, 开始有效, 对外部程序存储器进行读操
作, 将选中的单元中的指令代码从 P0口读入, S4P2时刻, 失效 。
( 4) 从 S4P2后开始第二次读入, 过程与第一次相似 。
图 5.3 MCS-51系列单片机访问外部程序存储器的时序图
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2
S1 S2 S3 S4 S5 S6
1 个机器周期
P1 P2
S1
OSC
时钟
ALE
PSEN
P2
P0
A8 ~ A15 A8 ~ A15 A8 ~ A15
指令 A0 ~ A7 指令 A0 ~ A7 指令
5.3.2 访问外部数据存储器时序
下面以读时序为例进行介绍, 其相应的操作时序如图 5.4所示 。
图 5.4 MCS-51系列单片机访问外部数据存储器的时序图
S1 S2 S3 S4 S5 S6
第1 个机器周期
S1 S2 S3 S4 S5 S6
第2 个机器周期
ALE
RD
P2
P0
A15 ~ A8 A15 ~ A8 A15 ~ A8
A0 ~ A7 指令 地址 数据 A0 ~ A7
PSEN
访问外部数据存储器的操作过程如下:
( 1) 从第 1次 ALE有效到第 2次 ALE开始有效期间, P0口送
出外部 ROM单元的低 8位地址, P2口送出外部 ROM单元的高 8
位地址, 并在有效期间, 读入外部 ROM单元中的指令代码 。
( 2) 在第 2次 ALE有效后, P0口送出外部 RAM单元的低 8
位地址, P2口送出外部 RAM单元高 8位地址 。
( 3) 在第 2个机器周期, 第 1次 ALE信号不再出现, 此时
也失效, 并在第 2个机器周期的 S1P1时, 信号开始有效, 从 P0
口读入选中 RAM单元中的内容 。
5.4 存储器扩展的编址技术
5.4.1 线选法
所谓线选法, 就是直接以系统的地址作为存储芯片的片选
信号, 为此只需把高位地址线与存储芯片的片选信号直接连接
即可 。 特点是简单明了, 不需增加另外电路 。 缺点是存储空间
不连续 。 适用于小规模单片机系统的存储器扩展 。
【 例 5-1】 现有 2K*8位存储器芯片, 需扩展 8K*8位存储结构
采用线选法进行扩展 。
扩展 8KB的存储器结构需 2KB的存储器芯片 4块 。 2K的存储
器所用的地址线为 A0~ A10共 11根地址线和片选信号与 CPU的连
接如表 5-1所示 。
表 5-1 80C51与存储器的线路连接
80C51 存储器
P0口经锁存器锁存
形成 A0~ A7
与 A0~ A7相连
P2.0,P2.1,P2.2 与 A8~ A10相连
P0口 与 D0~ D7相连
P2.3 与存储器 1的片选信
号相连
P2.4 与存储器 2的片选信
号相连
P2.5 与存储器 3的片选信
号相连
P2.6 与存储器 3的片选信
号相连
扩展存储器的硬件连接如图 5.5所示。
P2.2
P2.1
P2.0
ALE
P0
EA
74LS
373
D0
|
D7
A7
|
A0
A7
|
A0
A7
|
A0
A7
|
A0
D0
|
D7
D0
|
D7
D0
|
D7
A10
A9
A8
A10
A9
A8
A10
A9
A8
A10
A9
A8
CE1 CE2 CE3 CE4
P2.6
|
P2.3
1 2 3 4
80C51
图 5.5 线选法连线图
这样得到四个芯片的地址分配如表 5-2所示
表 5-2所示 线选方式地址分配表
A15 A14 A13 A12 A11 A10 …,A 0 地址范围
芯片 1 00 11 11 11 00 0 …, 01 …, 1 7000H---77FFH
芯片 2 00 11 11 00 11 0 …,01 …,1 6800H---6FFFH
芯片 3 00 11 00 11 11 0 …,01 …,1 5800H---5FFFH
芯片 4 00 00 11 11 11 0 …,01 …,1 3800H— 3FFFH
5.4.2 译码法
所谓译码法就是使用译码器对系统的高位地址进行译码,
以其译码输出作为存储芯片的片选信号 。 这是一种最常用的存
储器编址方法, 能有效地利用空间, 特点是存储空间连续, 适
用于大容量多芯片存储器扩展 。
常用的译码芯片有,74LS139(双 2- 4译码器)和
74LS138( 3- 8译码器)等,它们的 CMOS型芯片分别是
74HC139和 74HC138。
74LS138译码器
1G 2G
1A
1B
2A
2B
1Y0
1Y2
1Y1
2Y0
1Y3
2Y1
2Y2
2Y3





Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
G1
G2A
G2B
A
B
C





图 5.6 译码器管脚图
【 例 5-2】 现有 2K*8位存储器芯片, 需扩展 8K*8位存储结
构采用译码法进行扩展 。
扩展 8KB的存储器结构需 2KB的存储器芯片 4块。 2K的存
储器所用的地址线为 A0~ A10共 11根地址线和片选信号与 CPU
的连接如表 5-5所示。
表 5-5 80C51与存储器的线路连接
80C51 存储器
P0口经锁存器锁存形成 A0~ A7 与 A0~ A7相连
P2.0,P2.1,P2.2 与 A8~ A10相连
P0口 与 D0~ D7相连
P2.4 P2.3 译码输出与存储器的片选信号连接
0 0 与存储器 1的片选信号相连
0 1 与存储器 2的片选信号相连
1 0 与存储器 3的片选信号相连
1 1 与存储器 4的片选信号相连
P2.3,P2.4作为二 -四译码器的译码地址,译码输出作为扩展 4
个存储器芯片的片选信号,P2.5,P2.6,P2.7悬空。扩展连线图如图
5.7所示。
图 5.7 采用译码器扩展 8KB存储器连线图
4
A7
|
A0
CE
CE CE CE
A7
|
A0
A7
|
A0
A7
|
A0
1 2 3
B
A
Y0
Y1
Y2
Y3
74LS139
1G
A10
A9
A8
A10
A9
A8
A10
A9
A8
A10
A9
A8
P 0 口锁存
输出
P2.2
P2.1
P2.0
P2.4
P2.3
这样得到四个芯片的地址分配如表 5-6所示。
表 5-6 译码方式地址分配表
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 …,P 0 地址范围
芯片 1 00 00 00 00 00 0 …, 01 …, 1 0000H---07FFH
芯片 2 00 00 00 00 11 0 …, 01 …, 1 0800H---0FFFH
芯片 3 00 00 00 11 00 0 …, 01 …, 1 1000H---17FFH
芯片 4 00 00 00 11 11 0 …, 01 …, 1 1800H—1FFFH
5.5 程序存储器( EPROM)的扩展
5.5.1 程序存储器扩展使用的典型芯片
以 2764作为单片机程序存储器扩展的典型芯片为例进行说明
1,2764的引线
2764是一块 8K× 8bit的 EPROM芯片, 其管脚图如图 5.8所示
·A 12~ A0 ?? 13位地址信号输入线, 说明芯片的容量为 8K=
213个单元 。
·D 7~ D0 ?? 8位数据, 表明芯片的每个存贮单元存放一个字节
( 8位二进制数 ) 。
· 为输入信号 。 当它有效低电平时, 能选中该芯片, 故又称
为选片信号 。
· 为输出允许信号 。 当 为低电平时, 芯片中的数据可由
D7~ D0输出 。
· 为编程脉冲输入端 。 当对 EPROM编程时, 由此加入编程
脉冲 。 读时 为高电平 。
OE
CE
PGM
OE
PGM
1
2
3
4
5
6
7
8
9
10
11
12
13
14 15
16
17
18
19
20
21
22
23
24
25
26
27
28 1
2
3
4
5
6
7
8
9
10
11
12
13
14 15
16
17
18
19
20
21
22
23
24
25
26
27
28
Vpp
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
GND D3
D4
D5
D6
D7
CE
A10
OE
A11
A9
A8
VCC
PGM
2764 6264
A12
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
GND D3
D4
D5
D6
D7
CE
A10
OE
A11
A9
A8
WE
VCC
CE2
图 5.8 EPROM2764管脚图 图 5.9 SRAM6264管脚图
2,2764的连接使用
图 5.10为系统扩展一片 EPROM的最小系统。
图 5.10 单片 ROM扩展连线图
P2
ALE
P0
PSEN
80C51
EA
74LS
373
地址锁存器
高5 位地址线
低8 位地址线
8 位数据线
OE
CE
2764
D7
|
D0
A7
|
A0
A12
|
A8
存储器映像分析
分析存储器在存储空间中占据的地址范围, 实际上就是根
据连接情况确定其最低地址和最高地址 。 图 5.10所示, 由于 P2.7、
P2.6,P2.5的状态与 2764芯片的寻址无关, 所以 P2.7,P2.6,P2.5可
为任意 。 从 000到 111共有 8种组合, 其 2764芯片的地址范围是:
最低地址,0000H(A15A14A13A12A11A10A9A8A7A6A5A4A3
A2A1A 0= 0000 0000 0000 0000)
最高地址,FFFFH (A15A14A13A12A11A10A9A8A7A6A5A4A3
A2A1A 0=××× 1 1111 1111 1111) 共占用了 64KB的存储空间,
造成地址空间的重叠和浪费 。
5.6 数据存储器的扩展
5.6.1 数据存储器的扩展概述
单片机与数据存储器的连接方法和程序存储器连接方法大致
相同, 简述如下:
1,地址线的连接, 与程序存储器连法相同 。
2,数据线的连接, 与程序存储器连法相同 。
3,控制线的连接, 主要有下列控制信号:
存储器输出信号和单片机读信号相连即和 P3.7相连 。
存储器写信号 和单片机写信号相连即和 P3.6相连 。
ALE:其连接方法与程序存储器相同 。
使用时应注意, 访问内部或外部数据存储器时, 应分别使用
MOV及 MOVX指令 。
外部数据存储器通常设置二个数据区:
( 1) 低 8位地址线寻址的外部数据区 。 此区域寻址空间为 256
个字节 。 CPU可以使用下列读写指令来访问此存贮区 。
读存储器数据指令,MOVX A, @ Ri
写存储器数据指令,MOVX @ Ri, A
由于 8位寻址指令占字节少, 程序运行速度快, 所以经常采
用 。
( 2) 6位地址线寻址的外部数据区 。 当外部 RAM容量较大,
要访问 RAM地址空间大于 256个字节时, 则要采用如下 16位寻址
指令 。
读存储器数据指令,MOVX A, @ DPTR
写存储器数据指令,MOVX @ DPTR, A
由于 DPTR为 16位的地址指针,故可寻址 64KRAM字节单元
5.6.2 数据存储器扩展使用的典型芯片
1,数据存储器 SRAM芯片
数据存储器扩展常使用随机存储器芯片, 用的较多的是 Intel
公 司的 6116容量为 2KB和 6264容量为 8KB。
下面以 6264芯片为例进行说明, 管脚图如图 5.9所示 。 该芯片
的主要引脚为:
·A 12~ A0 ?? 13根地址线, 说明芯片的容量为 8K= 213个单元 。
·D 7~ D0 ?? 8根数据线 ·,CE2为片选信号 。 当为低电平,
CE2为高电平时, 选中该芯片 。
·为输出允许信号 。 当 OE为低电平时, 芯片中的数据可由
D7~ D0输出 。
·为数据写信号 。 其工作方式如表 5-8所示
2,数据存储器扩展方法
( 1) 单片数据存储器扩展
80C51与 6264的连接如表 5-9所示。
表 5-9 80C51与 6264的线路连接
80C51 6264
P0经锁存器锁存形成 A0~ A7 A0~ A7
P2.0,P2.1,P2.2,P2.3,P2.4 A8~ A12
D0~ D7 D0~ D7
数据存储器扩展的硬件连接如图 5.11所示。
图 5.11 单片 RAM扩展连线图
P2.4
P2.0
ALE
P0
80C51
EA
74LS
373
地址锁存器
低8 位地址线
8 位数据线
RD
WR
G
6264
A12
|
A8
A7
|
A0
D7
|
D0
OE
WE
CS
高五位地址
( 2) 多片数据存储器扩展
例如:用 4片 6116进行 8KB数据存储器扩展, 用译码法实现 。
80C51与 6116的线路连接如表 5-10所示
表 5-10 80C51与 6116的线路连接
存储器扩展电路连接如图 5.12所示。
图 5.12 多片 RAM扩展连线图
4
A10
A9
A8
A0-A7
D0-D7
CS
CS
CS
CS
D0-D7
RD
WE
RD
WE
RD
WE
6116
(1)
B
A
Y0
Y1
Y2
Y3
74LS139
G
6116
(2)
6116
(3)
6116
(4)
P2.2
P2.1
P2.0
ALE
P0
EA
74LS
373
80C51
D0-D7 D0-D7
A10
A9
A8
A10
A9
A8
A10
A9
A8
P2.4
P2.3
RD
WE
RD
WR
5.6.3 闪速存储器及其扩展
1,引脚功能和读写操作
AT 29C256芯片的容量为 32KB,引脚数量为 28条, 其引脚
排列如图 5.13所示 。
主要引脚功能如下:
A0~ A14:地址线 。
I/ 00一 I/ 07:三态双向数据线 。
:片选信号线, 低电平输入有效 。
:输出允许 (读允许 )信号线, 低电平输入有效 。
:写允许信号线, 低电平输入有效 。
(1) 读操作 。 当 =0,=0,=1时, 被选中
单元的内容读出到双向数据线 I/ 00~ I/ 07上 。
当处于高电平, 输出线处于高阻状态 。
(2) 写操作 。
外部数据写入 29C256芯片时,
数据要 先装入其内部锁存器, 装入
时 =0,=1,=0,数据写入以页为单
位进行, 即要改写某一单元的内容,
图 5.13 AT 29C256芯片引脚排列图整
页都要重写, 没有被装入的字节内
容被写成 0FFH,在写入过程中, 在
或上升沿之后的 150ns内, 和要再次
有效, 以便写入新的字节, 整个写
入周期中和应 64次有效 。 当某次和
上升沿后 150ns内, 没有和下降沿,
则装入周期结束, 开始内部写入周
期 。
WE
A12
A7
A6
A5
A4
A3
A2
A1
A0
I / O 0
I / O 1
I / O 2
I / O 3
I / O 4
I / O 5
I / O 6
I / O 7
A8
A9
A10
A11
A13
A14
GND
CE
OE
VCC1
5
10
14 15
20
25
28
图 5.13 AT89C256芯片引脚排列图
3,MCS-51单片机与 AT 29C256的接口
图 5.14是 80C51单片机与 AT 29C256芯片典型的接口电路图 。
图 5.14中,80C51单片机的和相, 与, 后与 AT29C256芯片的
端相连,80C51的与 AT29C256芯片的相连,可实现对 AT29C256
芯片的读写信号的选通,以上扩展的方法与数据存储器的扩展方
法相同,单片机访问它时,也使用 MOVX指令。
P 2, 6
|
P 2, 0
A L E
P0
80C51
EA
74LS
373
地址锁存器
低8位 地址线
8位 数据线
P S E N
RD
WR
G
AT29C256
A 1 4
|
A8
A7
|
A0
I / O 7
|
I / O 0
OE
WE
CS
高七位地址
图 5.14 80C51单片机与 AT29C256芯片的接口电路