第六章 MCS-51存储器和 I/O扩展
§ 6-1 存储器扩展
§ 6-2 并行 I/O口扩展
§ 6-1 存储器扩展
一, MCS-51总线扩展结构
1,单片机系统结构
2,单片机总线扩展结构
( 1) 地址线与存储器容量的关系
A7~A0,8根地址线, 有 28=256个单元
A9~A0,10根地址线, 有 210=1KB
A10~A0,11根地址线, 有 211=2K
A11~A0,12根地址线, 有 212=4K
A12~A0,13根地址线, 有 213=8K
等等
( 2) 16位地址 /8位数据的形成
51系列单片机 P0口和 P2口既是通用 I/O口,同时
P0口还是 分时复用 的 双向数据总线 和 低 8位地址总线
(一般需要加一级锁存器),而 P2口则是 高 8位地址总
线 。
低 8位地址和数据的区分,ALE高电平信号与 P0口有
效地址信号同时出现, ALE下降沿 时锁存低 8位地址,
ALE低电平时 P0口为数据 。
高 8 位地址的形成,有 P2 口送出高 8 位地址,
A15~A8,在执行 MOVX,MOVC指令时 P2口数据作
为地址送出, 常用来作为 RAM,ROM的片选信号 。
( 3) 地址锁存器 ---74LS373 ( 8D三态同相锁存器 )
① 引脚功能,
D7~D0,8位并行数据输入端
Q7~Q0,8位并行数据输出端
G,为 1时 D端数据 = Q端数据, 为 0时 Q端数据保持 。
,片选端, 低电平有效 OE
② 74LS373的引脚和示意图,
③ 真值表,G D Q
L H H H
L H L L
L L × 不变
H × × 高阻
OE
3,典型 RAM和 ROM芯片介绍
1) 半导体存储器的分为,RAM和 ROM。 RAM分为 静态
RAM( SRAM) 和 动态 RAM( DRAM) 两种 。 目前计算机内
的主存储器都是 DRAM。 图示为静态 RAM的原理图
2) 6116的引脚结构如下图所示
6116----2K SRAM
6116引脚功能
A0~A10 地址线
CE
选片
OE 读
D0~D7
数据线
A7
A6
A5
A4
A3
A2
A1
A0
D0
D1
D2
GND
Vcc
A8
A9
WE
OE
A10
CE
D7
D6
D5
D4
D3
6116
写 WE
3) ROM的组成结构
典型的 EPROM芯片有 Intel公司的 2716(2K× 8),2732(4?K× 8),
2764(8?K× 8),27128(16?K× 8),27256(32?K× 8),27512(64?K× 8)等 。
2732---4K EPROM
2732引脚功能
A0-A11 地址线
CE
选片
OE/Vpp
输出允许 /
编程电源
O0-O7
数据线
A7
A6
A5
A4
A3
A2
A1
A0
O0
O1
O2
GND
Vcc
A8
A9
A11
OE/Vpp
A10
CE
O7
O6
O5
O4
O3
2732
二, 存储器扩展的基本方法
1,存储器扩展的基本问题 。
1) 扩展容量, 16根地址线最大可扩展到 64K
2) 扩展要解决的问题,地址线, 扩展芯片在 64K
范围内
所占的地址范围
3) 存储器扩展的编址,存储芯片片的选择, 片
内单元的 编址
4) 选择芯片的方法,片选技术
2,存储器扩展的片选技术
一般产生片选有两种方法, 线选法 和 译码法 。
( 1) 线选法
线选法用低 位地址线对片内的存储单元进行寻址, 所需的
地址线由片内地址线决定, 用余下的 高位地址线分别接至芯片
的片选端, 以区分各芯片的地址范围 。 例如要扩展 8K容量的外
RAM,地址线和片选如下,
地址线, log2(8?K)= log2( 213)= 13条 (A12~ A0)
片选线,余下的 A15~ A13分别接至芯片的片选端。 A15~ A13轮流
出现低电平,可保证一次只选一片。
用线选法扩展存储器的缺点
① 各芯片间地址不连续 。 而习惯上使用连续地址,如 24?K范围
地址从 0000H到 5FFFH。
② 有相当数量的地址不能使用,否则造成片选混乱 。
例 6-1 扩展三片 2K存储芯片, 试用线选法给出接线图和地址 。
分析, 显然要 11根地址线和 3根片选线, 分配如下
低位地址线,P0.7~P0.0--A7~A0,P2.2~P2.0--A10~A8,
合成 11根地址线;
高位地址线,P2.5,P2.4,P2.3--A13,A12,A11,作 3片的片选,
余下,P2.7,P2.6不用, 取 00
扩展接线结构如图,
编址,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0 P0.7~P0.0
1号片 0 0 1 1 0 0 0 0 00H
0 0 1 1 0 1 1 1 FFH
2号片 0 0 1 0 1 0 0 0 00H
0 0 1 0 1 1 1 1 FFH
3号片 0 0 0 1 1 0 0 0 00H
0 0 0 1 1 1 1 1 FFH
显然, 三片的地址范围是,
1号片 3000H~37FFH
2号片 2800H~2FFFH
3号片 1800H~1FFFH
( 2) 译码法
译码法将低位地址总线直接连至各芯片的地址线,将高位地
址总线经地址译码器译码后作为各芯片的片选信号 。
一般使用 2/4译码器, 3/8译码器, 对 P2口高位地址线进行译
码, 适用于大规模扩展 。
2/4译码器, 3/8译码器的引脚图:如图所示
74LS139 74LS138
A
B
C
G2A
G2B
G
Y7
GND
Vcc
Y0
Y1
Y2
Y3
Y4
Y5
Y6
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
74LS138
1G
1A
1B
1Y0
1Y1
1Y2
1Y3
GND
Vcc
2G
2A
2B
2Y0
2Y1
2Y2
2Y3
1 16
2 15
3 14
4 13
5 12
6 11
7 10
8 9
74LS139
138 74LS138真值表
例如:在上例中同样扩展三片 2K存储芯片, 采用译码法
低位地址线,同前 P0口 A7~A0,P2口 A10~A8,合成作为
11根地址线
① 2/4译码器作为片选
高位地址线,P2口 A12,A11,作为译码器输入, 利用 2/4译
码输出端 Y0,Y1,Y2作为片选 。
三个信号作为 3片芯片的片选, 实际上可选 4片, 本例只需 3片
扩展接线结构如图,
编址,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0 P0.7~P0.0
1号片 0 0 0 0 0 0 0 0 00H
0 0 0 0 0 1 1 1 FFH
2号片 0 0 0 0 1 0 0 0 00H
0 0 0 0 1 1 1 1 FFH
3号片 0 0 0 1 0 0 0 0 00H
0 0 0 1 0 1 1 1 FFH
显然, 三片的地址范围是,
1号片 0000H~07FFH
2号片 0800H~0FFFH
3号片 1000H~17FFH
② 3/8译码器作为片选
高位地址线,P2口 A13,A12,A11,作为译码器输入, 利用
3/8译码输出端 Y0,Y1,Y2三个信号作为 3片
芯片的片选, 实际上可选 8片, 本例只需 3片
扩展接线结构如图,
编址,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0 P0.7~P0.0
1号片 0 0 0 0 0 0 0 0 00H
0 0 0 0 0 1 1 1 FFH
2号片 0 0 0 0 1 0 0 0 00H
0 0 0 0 1 1 1 1 FFH
3号片 0 0 0 1 0 0 0 0 00H
0 0 0 1 0 1 1 1 FFH
显然, 三片的地址范围是,
1号片 0000H~07FFH
2号片 0800H~0FFFH
3号片 1000H~17FFH
三, 存储器扩展实例
1,扩展外 ROM
1) 扩展一片 4K容量的 EPROM,2732
地址线,A11~A0,共 12根, 接 8031的 P2.3~.P2.0,P0.7~P0.0
片选线,P2.7~P2.4,不用, 取 0值, 2732片选端直接接地, 常选中 。
扩展接线结构如图,
数据线,P0.7~P0.0→ 2732的 D7~D0
控制线,PSEN→ 2732的 OE端, ALE→ 锁存器 74LS373门控端 G
2732的地址范围,0000H~0FFFH
2) 线选法扩展二片 2K容量的 EPROM,2716,共 4K
地址线,A10~A0,共 11根, 接 8031的 P2.2~P2.0,P0.7~P0.0
片选线:利用 P2.3,加一个非门, 接存储芯片的片选端, 既
可完成 2片的选择, 而 P2.7~2.4,取 0值
数据线,P0.7~P0.0→ 分别接 2片 2732的 D7~D0
控制线,PSEN→ 分别接 2片 2732的 OE端
ALE → 锁存器 74LS373的门控端 G
扩展的接线如下页图所示,
2732的地址范围,
1号片 0000H~07FFH
2号片 0800H~0FFFH
扩展的接线如下页图所示,
2,扩展外 RAM
1) 扩展一片 2K容量的 RAM,6116
地址线,A10~A0,共 11根, 接 8031的 P2.2~P2.0,P0.7~P0.0
片选线,P2.7~P2.3,不用, 取 0值, 因为只扩展 1片, 6116片
选端直接接地, 常选中
数据线,P0.7~P0.0→ 6116的 D7~D0
控制线,WR→ 6116的 WE端
RD→ 6116的 OE端
ALE → 锁存器 74LS373的门控端 G
6116的地址范围,0000H~07FFH
2) 线选法扩展二片 2K容量的 RAM,6116,一片 4K容量的
ROM,2716
接线图如下页所示,
扩展一片 2K容量的 RAM,6116
线选法扩展二片 2K容量, 6116,一片 4K容量, 2716
2716,0000H~07FFH
6116( 1),0000H~07FFH
6116( 2),0800H~0FFFH
§ 6-2 并行 I/O口扩展
一, 用 74系列器件扩展并行 I/O口
常用并行 I/O扩展芯片, 如 74LS244,74LS245,273、
74LS377等
1,74LS273
2,74LS244
3,扩展实例
高位地址组合法, 如图所示,
输入,74LS244扩展 K0~K7
并由 P2.0+RD 端, 全 0 时, 74LS244 选通读入
K0~K7状态 。
实现,MOV DPTR,#FEFFH
MOVX A,@DPTR ;读入
输出,74LS273扩展 LED0~LED7
并由 P2.0+WR端, 全 0时, 74LS273将 P0口数据
送出, 控制 LED0~LED7
实现,MOVX @DPTR,A ;输出
二, 可编程并行接口 8255A
1,8255A的基本性能
可编程外设接口电路 ( Programmable Peripheral
Interface)简称 PPI,型号为 8255( 改进型为 8255A及
8255A-5), 具有 24条输入 /输出引脚, 可编程的通用
并行输入 /输出接口电路 。
8255A具有三个相互独立的输入 /输出通道,
通道 A,通道 B,通道 C。
A,B,C三通道可以联合使用, 构成单线, 双线
或三线联络信号的并行接口 。
此时 C口完全服务于 A,B口 。
A口有三种工作方式:方式 0,方式 1,方式 2。
B口有两种工作方式:方式 0,方式 1。
2,8255A内部结构
8255A内部结构由以下四部分组成,
数据端口 A,B,C; A组控制和 B组控制; 读 /写控制逻
辑电路; 数据总线缓冲器 。 结构如图所示
端口 A,包括一个 8 位的数据输出锁存 /缓冲器和一个 8位的数
据输入锁存器, 可作为数据输入或输出端口, 并工作于三种
方式中的任何一种 。
端口 B,包括一个 8 位的数据输出锁存 /缓冲器和一个 8位的
数据输入缓冲器, 可作为数据输入或输出端口, 但不能工作
于方式 2。
端口 C,包括一个 8 位的数据输出锁存 /缓冲器和一个 8位的
数据输入缓冲器, 可在方式字控制下分为两个 4位的端口 ( C
端口上和下 ), 每个 4位端口都有 4位的锁存器, 用来配合端
口 A与端口 B锁存输出控制信号和输入状态信号, 不能工作于
方式 1或 2。
A组和 B组控制的作用如下,
A 组控制逻辑控制端口 A 及端口 C 的上半部;
B组控制逻辑控制端口 B及端口 C的下半部 。
方式选择控制字,
C端口置 1置 0控制字,
端口 C的数位常常作为控制位来使用, 所以, 在
设计 8255A芯片时, 应使端口 C中的各位可以用置 1置 0
控制字来单独设置 。 其具体格式如下图所示 。
注意,C端口置 1置 0控制字尽管是对端口 C进行操
作, 但此控制字必须写入控制口, 而不是写入 C端口 。
工作方式,
1) 方式 0
是一种基本输入或输出方式, 它适用于无需握手信号的
简单输入输出应用场合, 端口 A,B,C都可作为输入或输出
数据使用, 输出有锁存而输入无锁存 。
2) 方式 1
也称选通的输入 /输出方式 。 在这种方式下, 无论是输入
还是输出都通过应答关系实现, 这时端口 A或 B用作数据口,
端口 C的一部分引脚用作握手信号线与中断请求线 。
若端口 A工作于方式 1,则 B可工作于方式 0;
· 若端口 B工作于方式 1,则 A可工作于方式 0或余下的 13位可
工作于方式 0;
· 若端口 A和 B同时工作于方式 1,端口 C余下的两位还可用于
传送数据或控制信号 。
3) 方式 2
也称选通的双向 I/O方式, 仅适用于端口 A,这时 A口的
PA7-PA0作为双向的数据总线, 端口 C有 5条引脚用作 A的握
手信号线和中断请求线, 而 B口和 C口余下的 3位仍可工作于
方式 0或 1。 它可以认为是方式 1输出和输入的组合但有以下不
同,
(1)当 CPU将数据写入 A口时, 尽管 OBF变为有效, 但数据
并不出现在 PA7-PA0上, 只有外设发出 ACKA 信号时, 数据
才进入 PA7-PA0。
(2)输出和输入引起的中断请求信号都通过同一引脚输出,
CPU必须通过查询 OBF和 IBF状态才能确定是输入引起的中断
请求还是输出引起的中断请求 。
(3) ACKA 和 STBA 信号信号不能同时有效, 否则将出现
数据传送, 冲突, 。
3,MCS-51和 8255A的接口方法
如图所示为 MCS-51和 8255A的一种接口逻辑 。
PA口, PB口, PC口, 控制口的地址分别为,7FFCH、
7FFDH,7FFEH,7FFFH。
假设图中 8255A的 PA口接一组开关, PB接一组指示灯,
如果, 要将 MCS-51的寄存器 R2的内容送指示灯显示, 将开关状
态读入 MCS-51的累加器 A,则 8255初始化和输入 /输出程序如下,
ORG 1000H
R8255,MOV DPTR,#7FFFH;
MOV A,#98H
MOVX @DPTR,A
MOV DPTR,#7FFDH
MOV A,R2
MOV @DPTR,A
MOV DPTR,#7FFCH
MOVX A,@DPTR
RET
*三、可编程并行接口芯片 8155
与 8255A相比, 8155具有更强的 功能, 可
以扩展单片机的 I/O口, 定时器, 外部数据存储
器 RAM。
1,8155芯片的构成
1) 逻辑结构
2) 引脚图
3) 接口信号
8155芯片的内部结构
256B
静态
RAM
A
定时器
B
C
口 A
PA0~PA7
口 B
PB0~PB7
PC0~PC5
口 C
IO/ M
AD0~AD7
CE
ALE
RD
WR
RESET
定时器输入
定时器输出













8155引脚功能
PC3
PC4
PC5
IO/ M
CE
RD
WR
ALE
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
Vss
Vcc
PC2
PC1
PC0
PB7
PB6
PB5
PB4
PB3
PB2
PB1
PB0
PA7
PA6
PA5
PA4
PA3
PA2
PA1
PA0
8155
TIMER IN
RESET
TIMER OUT
AD0-AD7 三态地址 /数据线
IO/ M
端口 /存储
器选择
RD

ALE
地址锁存
允许

WR
选片 CE
定时器输

TIMER IN
定时器输

TIMER OUT
PA0-PA7 A口端口线
PB0-PB7 B口端口线
PC0-PC5 C口端口线
PA0-PA7
端口 A的 I/O线( 8位,接外设)
PB0-PB7
端口 B的 I/O线( 8位,接外设)
PC0-PC5
端口 C的 I/O线( 6位,接外设)
AD0-AD7
三态地址 /数据复用线( 8位,一般接单片机 P0
口,CPU与 8155之间的地址、数据、命令、状
态等信号都通过它来传送)
端口 /存储器 选择控制, 0”选择片内 RAM
,1”选择片内 I/O口
TIMER IN
8155片内定时器 /计数器的计数脉冲输入引脚
TIMER OUT
8155片内定时器 /计数器的计满回零输出引脚
分别是对 8155片内的 RAM或 I/O口的的读、写控
制信号
ALE
地址锁存引脚
选片
RESET
复位引脚
IO/ M
RD,WR
CE
2,8155的 RAM和 I/O口地址
RAM地址 ----当 IO/ M 加低电平,
此时 AD0-AD7上得到的地址值是指 8155的某
一 RAM单元的地址,地址范围是,
0000 0000--1111 1111
分别指向 8155 RAM 的 256个存储单元。
I/O口地址 ----当 IO/ M 加高电平,
此时 AD0-AD7 (仅用到低三位 AD2,AD1、
AD0)上得到的地址值是指 8155的某一 I/O口 的
地址,具体端口地址分配是,
8155的 RAM和 I/O口编址
AD7 AD6 AD5 AD4 AD3 AD2 AD1AD0
I/O端口
╳ ╳ ╳ ╳ ╳ 0 0 0
命令 /状态寄存器
╳ ╳ ╳ ╳ ╳ 0 0 1
PA口
╳ ╳ ╳ ╳ ╳ 0 1 0
PB口
╳ ╳ ╳ ╳ ╳ 0 1 1
PC口
╳ ╳ ╳ ╳ ╳ 1 0 0
计数器低 8位
╳ ╳ ╳ ╳ ╳ 1 0 1
计数器高 6位
3,8155的使用
1) 8155内 RAM的使用,
与一般外部数据存储器的使用基本一样,
唯一区别是 事先要使 IO/ M 为低电平 。
2) 8155各端口的使用,
A,B,C各端口可工作于不同的工作方式,
使用前要进行初始化(写命令字到命令口)。
4,扩展电路的连接实例
1) 以高位地址直接作为 IO/M信号扩展, 接口电路
非常简单, 基本上是相同信号对接, 如图,
8031 8155
RESET
RD
WR
ALE
P2.4
P0.0
P0.1
P0.2
P.03
P0.4
P0.5
P0.6
P0.7
RESET
RD
WR
ALE
IO/M
CE
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
口 A
PA0~PA7
口 B
PB0~PB7
PC0~PC5
口 C
2) 多芯片扩展
8031
373
G
2716 6116(2) 6116(1)
8155
P0
P2.2--P2.0 PSEN
ALE
WR
RD
A
B
C
G2A
G2B
G1
P1.0
A0~A7 A8~A10
D7~D0 D7~D0 D7~D0 CE CE
CE
OE
A0~A7 A8~A10
WE WE
OE OE
WE
RD
ALE
AD0~AD7
CE
Y2
Y1
Y0
+5V
IO/ M
PA
PB
PC
P2.3
P2.4
P2.5
P2.6
P2.7
上图中的各扩展地址分别为,
8155,0000H,0001H,……, 0005H
8031的 P2.7-P2.3=00000时,选中 8155,在此前提下,当
8031的 P0口输出地址是 XXXXX000-XXXXX101,且 IO/ M=1时,选
中 8155的各端口,即,
当 IO/ M=0时,选中 8155的 RAM单元,所以,
其内部 RAM地址范围是,0000H--00FFH 。
P2.7 ………………… P2.0 P0.7 ……… ………… P0.0 端口
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ( 0000H) 命令口
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ( 0001H) PA口
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 ( 0002H) PB口
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 ( 0003H) PC口
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 ( 0004H)计数器低
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 ( 0005H)计数器高
6116( 1),0800H-0FFFH
6116( 2),1000H-17FFH
分析,
根据 74LS138,8031的 P2.7-P2.3=00001时,选中
6116( 1),在此前提下,
加上 P2.2-P2.0,P0.7-P0.0低位地址,既有,
6116( 1) 的地址范围是,
0000 1 000 0000 0000-0000 1 111 1111 1111
即,8000H-FFFFH。
6116( 2) 同理可得,1000H-17FFH,
3) 常用 I/O口综合扩展
线选法
8031
6116
CE
8255
CS
8155
IO/M CE
CE
8253
CS
0832
P2.3
P2.4
P2.0
P2.5
P2.6
P2.7
线选法译码地址
外围器件 地址选择线( A15~A0) 片内地址
单元 数
地址编码
6116 1111 0AAA AAAA AAAA 2K F000~F7FFH
8255 1110 1111 1111 11AA 4 EFFC~EFFFH
8155 RAM 1101 111 0 AAAA AAAA 256 DE00~DEFFH
8155 I/O 1101 1111 1111 1AAA 6 DFF8~DFFDH
0832 1011 1111 1111 1111 1 BFFFH
8253 0111 1111 1111 11AA 4 7FFC~7FFFH
8031
6264
CE
8255
CS
8155
IO/M CE
CE
8253
CS
0832
P2.5
P2.6
P2.7
P2.0
A
B
C
G2A
G2B
G1
Y0
Y1
Y2
Y3
Y4
+5V
138
译码法
译码法译码地址
外围器件 地址选择线( A15~A0)
片内地
址 单元

地址编码
6264 000A AAAA AAAA AAAA 8K 0000~1FFFH
8255 0011 1111 1111 11AA 4 3FFC~3FFFH
8155 RAM 0101 111 0 AAAA AAAA 256 5E00~5EFFH
8155 I/O 0101 1111 1111 1AAA 6 5FF8~5FFDH
0832 0111 1111 1111 1111 1 7FFFH
8253 1001 1111 1111 11AA 4 9FFC~9FFFH
本章小结
1,程序存储器扩展设计, EPROM外特性介绍
( 2716,2732,2764), 8031单片机最小系统
设计, 扩展设计
2,数据存储器和外部 I/0端口扩展设计, RAM外
特性介绍 ( 6116,6264), 扩展设计
3,外部 I/0端口扩展技术介绍
重点:存储器扩展电路设计及连线, 译码地址和
译码范围, MCS-51 单片机 P0,P1口的功能 。
难点:译码地址和译码范围, 端口的灵活应用 。