第 12章 MCS-51单片机系统扩展与接口技术经济适用的单片机应用系统,必然包含合适的外围器件。外围器件与单片机的接口是单片机应用系统至关重要的环节。
本章主要讲述 MCS-51单片机与常见的程序存储器、数据存储器、数字 I/O通道的接口技术,模拟输入输出通道和单片机的接口技术下章讲述。
12.1 存储器的扩展
MCS-51的程序存储器的扩展
MCS-51的程序存储器寻址空间为
64KB。 其中 8051/8751片内包含 4KB的
ROM或 EPROM,8031片内不带 ROM。 当片内 ROM不够使用或采用 8031芯片时,需扩展程序存储器 。
图 12-1给出了 MCS-51外扩 16K字节
EPROM的 27128的电路图 。
2 6
2 5
2 4
2 3
2 2
2 1
P 2,5
P 2,4
P 2,3
P 2,2
P 2,1
P 2,0
P 0,7
P 0,6
P 0,5
P 0,4
P 0,3
P 0,2
P 0,1
P 0,0
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
1 8
1 7
1 4
1 3
8
7
4
3
1 9
1 6
1 5
1 2
9
6
5
2
D 7
D 6
D 5
D 4
D 3
D 2
D 1
D 0
7
4
L
S
3
7
3
3
4
5
6
7
8
9
1 0
2 0
1 4
2 6
2
2 3
2 1
2 4
2 5
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
1 9
1 8
1 7
1 6
1 5
1 3
1 2
1 1
D 7
D 6
D 5
D 4
D 3
D 2
D 1
D 0
8 0 3 1
3 1
2 9
3 0
E A
P S E N
A L E
G
O E
O E
2 2
+ 5 V
V
P P
V
C C
P G M
2 8
2 7
1
C E
2 7 1 2 8
( 1 6 K × 8 )
G N D
+ 5 V
2 0
1 0
图 1 2 - 3 8 0 3 1 外 接 2 7 1 2 8.
1 1 1
图 12-1 8031外接 27128 扩展图
MCS-51数据存储器扩展数据存贮器的扩展方法大体上分为两种:
扩展容量为 256B的 RAM,这时可采用
MOVX @ Ri指令访问外部 RAM,只用
P0口传送 8位地址;
扩展容量大于 256B而小于 64KB的
RAM,访问外部 RAM时采用 MOVX @
DTPR指令,同时用 P0和 P2口传送 16
位地址 ;
接口实例
( 1)外扩 256B的 RAM。市面上并不出售容量为
256B的 RAM芯片,在下图 12-2的线路中采用了
Intel公司的专用芯片 8155作为外扩器件。
8 0 3 1
E A
P A 7 - 0
P B 7 - 0
P C 5 - 0
I O / M
C E
8 1 5 5
R E S E T
+ 5 V
1 0 μ F / 1 6 V
8,2 k
f
晶
P 2,0
P 2,7
2 4 分 频
T i m e r o u t
图 1 2 - 5 利 用 8 1 5 5 外 扩 2 5 6 B 的 存 储 器输 出
T i m e r i n
( 2)大于 256B的 MCS-51数据存储器扩展。在
8031单片机应用系统中,最常用的数据存储器 RAM芯片有 6116 (2k× 8)和 6264(8k × 8)两种。图 12-3为扩展单片 6116的电路图
8 0 3 1
1 7
1 6
2 4
2 3
2 2
2 1
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
1 8
1 7
1 4
1 3
8
7
4
3
1 9
1 6
1 5
1 2
9
6
5
2
1
2
3
4
5
6
7
8
3 1
3 0
E A
A L E
1 1
1
2 0
2 1
1 8
1 9
2 2
2 3
6 1 1 6
2 k × 8
G N D
2 4
1 2
+ 5 V
P 2,3
P 2,2
P 2,1
P 2,0
P 0,0
P 0,1
P 0,2
P 0,3
P 0,4
P 0,5
P 0,6
P 0,7
WRRD
D 7
D 6
D 5
D 4
Q 6
Q 3
Q 0
D 1
Q 5
Q 2
D 0
D 2
Q 7
Q 4
Q 1
D 3
D 7
D 6
D 5
D 4
D 1
D 0
D 2
D 3
A 7
A 6
A 5
A 4
A 1
A 0
A 2
A 3
7
4
L
S
3
7
3
A 1 0
A 9
A 8
WRCEOEV C C
1 7
1 6
1 5
1 4
1 3
1 1
1 0
9
图 12-3为扩展单片 6116的电路图
12.2 MCS-51的 I/O接口扩展
I/0接口的功能
1.实现和不同外设的速度匹配
2.输出数据锁存
3.输入数据三态缓冲
端口的编址常用的 I/O端口编址有两种方式,一种是独立编址方式,另一种是统一编址方式 。
I/O数据的几种传送方式
1.无条件传送方式 无条件传送类似于单片机和外部数据存储器之间的数据传送,比较简单。当外设速度能和单片机的速度相比拟时,常常采用无条件传送方式。
2.查询方式 查询式传送方式下,单片机需要 I/0接口为外设提供状态和数据两个端口,单片机通过状态口查询外设,准备好,后就进行数据传送。
3.中断传送方式 中断传送方式是利用单片机本身的中断功能和 I/0
接口的中断功能来实现 I/O数据的传送。采用中断方式可使单片机和外设并行工作。单片机只有在外设准备好后才中断主程序,
而进入外设的中断服务程序,中断服务完成后又返回主程序继续执行。
可编程并行 I/O芯片 8255A
8255A是 Intel公司生产的可编程的并行 I/O接口芯片,
它具有 3个 8位的并行 I/O口,三种工作方式,可通过编程改变其功能,因而使用灵活方便,通用性强,可作为单片机与多种外围设备连接时的中间接口电路。 8255A的引脚及内部的结构如图 12-4和图 12-5所示。
图 12-4 8255A的引脚 图 12-5 8255A的内部结构
工作方式选择控制字及 C口置位/复位控制字
8255有三种基本工作方式:方式 0:基本输入输出;方式 1:选通输入输出;方式 2:双向传送。
(1)三种工作方式由写入控制字寄存器的方式控制字来决定。方式控制字的格式如图 12-6所示。三个端口中 C口被分为两个部分,上半部分随 A口称为
A组,下半部分随 B口称为 B组。其中 A口可工作于方式 0,l和 2,而 B口只能工作在方式 0和 1。
D 0
D 1
D 2D 7 D 6 D 5 D 4 D 3
B 组
0,输 出
1,输 入
0,输 出
1,输 入
0,方 式 0
1,方 式 1
C 口低 4 位
B 口方 式选 择
A 组
0,输 出
1,输 入
0,输 出
1,输 入
C 口高 4 位
A 口方 式选 择
0 0,方 式 0
0 1,方 式 1
1 ×,方 式 2
方 式 标 志,1 ( 有 效 )
图 12-6 8255A的方式控制字
(2)C口 8位中的任一位,可用一个写入控制口的置位/复位控制字来对 C口按位置,1”或清,0”。这个功能主要用于位控。
C口按位置位/复位控制字的格式如图 12-7所示。
D 00 D 3 D 2 D 1
× ××
D 0
0
1
置 位 复 位 控 制复 位置 位
C 口 位 选 择
D 3 D 2 D 1
0 0 0
1 1 1
1 1 0
1 0 1
1 0 0
0 0 1
P C 0
P C 1
P C 2
P C 3
P C 4
P C 5
P C 6
P C 7
0 1 0
0 1 1
图 12-7 C口按位置位/复位控制字格式实例编程在实际的应用系统中,必须根据外围设备的类型选择
8255A的操作方式,并在初始化程序中把相应控制字写入控制口。下面根据图 12-8,举例说明 8255A的编程方法。
图 12-8 8031与 8255A 接口电路如要求 8255A工作在方式 0,且 A口作为输入,B口,C口作为输出,则程序如下:
MOV A,# 90H ; A口方式 0输入,B口,C口输出的方式控制字 → A
MOV DPTR,# OFF7FH ;控制寄存器地址 → DPTR
MOVX @DPTR,A ;方式控制字 → 控制寄存器
MOV DPTR,# OFF7CH ; A口地址 → DPTR
MOVX A,@DPTR ;从 A口读数据
MOV DPTR,# OFF7DH ; B口地址 → DPTR
MOV A,# DATA1 ;要输出的数据 DATA1→ A
MOVX @DPTR,A ;将 DATA1送 B口输出
MOV DPTR,# OFF7EH ; C口地址 → DPTR
MOV A,# DATA2 ; DATA2→ A
MOVX @ DPTR,A ;将 DATA2送 C口输出
8255A的 C口 8位中的任一位,均可用指令来置位或复位。例如,如果想把 C口的 PC5置 1,相应的控制字为 00001011B= OBH(关于 8255A的 C口置位/复位的控制字说明参见图 12-7),程序如下:
MOV DPTR,# OFF7FH ;控制口地址 → DPTR
MOV A,# OBH ;控制字 → A
MOVX @DPTR,A ;控制字 → 控制口,PC5=1
用串行口扩展并行 I/O口
1.用并行置入 8位移位寄存器 74LS165扩展输入口 图 12-9是利用 3根口线扩展为 16根输入口线的实用电路。
L/S
S I N
S I N
1 11 2
1 3
1 45 3
4
6
C L K
7 4 L S 1 6 5 7 4 L S 1 6 5
1 11 2
1 3
1 45 3
4
6
8 0 5 1
P 3,0
P 3,1
P 1,0
图 12-9 利用串行口扩展输入口
2,用 74LS164扩展并行输出口 74LS164是 8位串入并出移位寄存器。图 12-10是利用 74LS164
扩展两个 8位并行输出口的接口电路。
A,B
1,2
7 4 L S 1 6 4
7 4 L S 1 6 4
1,2
A,B
C L R C P
7
1 4
C L R
C P 7
1 4
+ 5 V
8
9
9
8
+ 5 V
P 3,0
P 3,1
P 1,0
8 0 3 1
3 1 31 0 1 1
1 2
654
3 1 31 0 1 1
1 2
654
Q
A
Q
H
Q
G
Q
F
Q
E
Q
D
Q
C
Q
B
Q
A
Q
H
Q
G
Q
F
Q
E
Q
D
Q
C
Q
B
图 12-10 利用 74LS164扩展并行输出口
本章主要讲述 MCS-51单片机与常见的程序存储器、数据存储器、数字 I/O通道的接口技术,模拟输入输出通道和单片机的接口技术下章讲述。
12.1 存储器的扩展
MCS-51的程序存储器的扩展
MCS-51的程序存储器寻址空间为
64KB。 其中 8051/8751片内包含 4KB的
ROM或 EPROM,8031片内不带 ROM。 当片内 ROM不够使用或采用 8031芯片时,需扩展程序存储器 。
图 12-1给出了 MCS-51外扩 16K字节
EPROM的 27128的电路图 。
2 6
2 5
2 4
2 3
2 2
2 1
P 2,5
P 2,4
P 2,3
P 2,2
P 2,1
P 2,0
P 0,7
P 0,6
P 0,5
P 0,4
P 0,3
P 0,2
P 0,1
P 0,0
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
1 8
1 7
1 4
1 3
8
7
4
3
1 9
1 6
1 5
1 2
9
6
5
2
D 7
D 6
D 5
D 4
D 3
D 2
D 1
D 0
7
4
L
S
3
7
3
3
4
5
6
7
8
9
1 0
2 0
1 4
2 6
2
2 3
2 1
2 4
2 5
A 1 3
A 1 2
A 1 1
A 1 0
A 9
A 8
1 9
1 8
1 7
1 6
1 5
1 3
1 2
1 1
D 7
D 6
D 5
D 4
D 3
D 2
D 1
D 0
8 0 3 1
3 1
2 9
3 0
E A
P S E N
A L E
G
O E
O E
2 2
+ 5 V
V
P P
V
C C
P G M
2 8
2 7
1
C E
2 7 1 2 8
( 1 6 K × 8 )
G N D
+ 5 V
2 0
1 0
图 1 2 - 3 8 0 3 1 外 接 2 7 1 2 8.
1 1 1
图 12-1 8031外接 27128 扩展图
MCS-51数据存储器扩展数据存贮器的扩展方法大体上分为两种:
扩展容量为 256B的 RAM,这时可采用
MOVX @ Ri指令访问外部 RAM,只用
P0口传送 8位地址;
扩展容量大于 256B而小于 64KB的
RAM,访问外部 RAM时采用 MOVX @
DTPR指令,同时用 P0和 P2口传送 16
位地址 ;
接口实例
( 1)外扩 256B的 RAM。市面上并不出售容量为
256B的 RAM芯片,在下图 12-2的线路中采用了
Intel公司的专用芯片 8155作为外扩器件。
8 0 3 1
E A
P A 7 - 0
P B 7 - 0
P C 5 - 0
I O / M
C E
8 1 5 5
R E S E T
+ 5 V
1 0 μ F / 1 6 V
8,2 k
f
晶
P 2,0
P 2,7
2 4 分 频
T i m e r o u t
图 1 2 - 5 利 用 8 1 5 5 外 扩 2 5 6 B 的 存 储 器输 出
T i m e r i n
( 2)大于 256B的 MCS-51数据存储器扩展。在
8031单片机应用系统中,最常用的数据存储器 RAM芯片有 6116 (2k× 8)和 6264(8k × 8)两种。图 12-3为扩展单片 6116的电路图
8 0 3 1
1 7
1 6
2 4
2 3
2 2
2 1
3 2
3 3
3 4
3 5
3 6
3 7
3 8
3 9
1 8
1 7
1 4
1 3
8
7
4
3
1 9
1 6
1 5
1 2
9
6
5
2
1
2
3
4
5
6
7
8
3 1
3 0
E A
A L E
1 1
1
2 0
2 1
1 8
1 9
2 2
2 3
6 1 1 6
2 k × 8
G N D
2 4
1 2
+ 5 V
P 2,3
P 2,2
P 2,1
P 2,0
P 0,0
P 0,1
P 0,2
P 0,3
P 0,4
P 0,5
P 0,6
P 0,7
WRRD
D 7
D 6
D 5
D 4
Q 6
Q 3
Q 0
D 1
Q 5
Q 2
D 0
D 2
Q 7
Q 4
Q 1
D 3
D 7
D 6
D 5
D 4
D 1
D 0
D 2
D 3
A 7
A 6
A 5
A 4
A 1
A 0
A 2
A 3
7
4
L
S
3
7
3
A 1 0
A 9
A 8
WRCEOEV C C
1 7
1 6
1 5
1 4
1 3
1 1
1 0
9
图 12-3为扩展单片 6116的电路图
12.2 MCS-51的 I/O接口扩展
I/0接口的功能
1.实现和不同外设的速度匹配
2.输出数据锁存
3.输入数据三态缓冲
端口的编址常用的 I/O端口编址有两种方式,一种是独立编址方式,另一种是统一编址方式 。
I/O数据的几种传送方式
1.无条件传送方式 无条件传送类似于单片机和外部数据存储器之间的数据传送,比较简单。当外设速度能和单片机的速度相比拟时,常常采用无条件传送方式。
2.查询方式 查询式传送方式下,单片机需要 I/0接口为外设提供状态和数据两个端口,单片机通过状态口查询外设,准备好,后就进行数据传送。
3.中断传送方式 中断传送方式是利用单片机本身的中断功能和 I/0
接口的中断功能来实现 I/O数据的传送。采用中断方式可使单片机和外设并行工作。单片机只有在外设准备好后才中断主程序,
而进入外设的中断服务程序,中断服务完成后又返回主程序继续执行。
可编程并行 I/O芯片 8255A
8255A是 Intel公司生产的可编程的并行 I/O接口芯片,
它具有 3个 8位的并行 I/O口,三种工作方式,可通过编程改变其功能,因而使用灵活方便,通用性强,可作为单片机与多种外围设备连接时的中间接口电路。 8255A的引脚及内部的结构如图 12-4和图 12-5所示。
图 12-4 8255A的引脚 图 12-5 8255A的内部结构
工作方式选择控制字及 C口置位/复位控制字
8255有三种基本工作方式:方式 0:基本输入输出;方式 1:选通输入输出;方式 2:双向传送。
(1)三种工作方式由写入控制字寄存器的方式控制字来决定。方式控制字的格式如图 12-6所示。三个端口中 C口被分为两个部分,上半部分随 A口称为
A组,下半部分随 B口称为 B组。其中 A口可工作于方式 0,l和 2,而 B口只能工作在方式 0和 1。
D 0
D 1
D 2D 7 D 6 D 5 D 4 D 3
B 组
0,输 出
1,输 入
0,输 出
1,输 入
0,方 式 0
1,方 式 1
C 口低 4 位
B 口方 式选 择
A 组
0,输 出
1,输 入
0,输 出
1,输 入
C 口高 4 位
A 口方 式选 择
0 0,方 式 0
0 1,方 式 1
1 ×,方 式 2
方 式 标 志,1 ( 有 效 )
图 12-6 8255A的方式控制字
(2)C口 8位中的任一位,可用一个写入控制口的置位/复位控制字来对 C口按位置,1”或清,0”。这个功能主要用于位控。
C口按位置位/复位控制字的格式如图 12-7所示。
D 00 D 3 D 2 D 1
× ××
D 0
0
1
置 位 复 位 控 制复 位置 位
C 口 位 选 择
D 3 D 2 D 1
0 0 0
1 1 1
1 1 0
1 0 1
1 0 0
0 0 1
P C 0
P C 1
P C 2
P C 3
P C 4
P C 5
P C 6
P C 7
0 1 0
0 1 1
图 12-7 C口按位置位/复位控制字格式实例编程在实际的应用系统中,必须根据外围设备的类型选择
8255A的操作方式,并在初始化程序中把相应控制字写入控制口。下面根据图 12-8,举例说明 8255A的编程方法。
图 12-8 8031与 8255A 接口电路如要求 8255A工作在方式 0,且 A口作为输入,B口,C口作为输出,则程序如下:
MOV A,# 90H ; A口方式 0输入,B口,C口输出的方式控制字 → A
MOV DPTR,# OFF7FH ;控制寄存器地址 → DPTR
MOVX @DPTR,A ;方式控制字 → 控制寄存器
MOV DPTR,# OFF7CH ; A口地址 → DPTR
MOVX A,@DPTR ;从 A口读数据
MOV DPTR,# OFF7DH ; B口地址 → DPTR
MOV A,# DATA1 ;要输出的数据 DATA1→ A
MOVX @DPTR,A ;将 DATA1送 B口输出
MOV DPTR,# OFF7EH ; C口地址 → DPTR
MOV A,# DATA2 ; DATA2→ A
MOVX @ DPTR,A ;将 DATA2送 C口输出
8255A的 C口 8位中的任一位,均可用指令来置位或复位。例如,如果想把 C口的 PC5置 1,相应的控制字为 00001011B= OBH(关于 8255A的 C口置位/复位的控制字说明参见图 12-7),程序如下:
MOV DPTR,# OFF7FH ;控制口地址 → DPTR
MOV A,# OBH ;控制字 → A
MOVX @DPTR,A ;控制字 → 控制口,PC5=1
用串行口扩展并行 I/O口
1.用并行置入 8位移位寄存器 74LS165扩展输入口 图 12-9是利用 3根口线扩展为 16根输入口线的实用电路。
L/S
S I N
S I N
1 11 2
1 3
1 45 3
4
6
C L K
7 4 L S 1 6 5 7 4 L S 1 6 5
1 11 2
1 3
1 45 3
4
6
8 0 5 1
P 3,0
P 3,1
P 1,0
图 12-9 利用串行口扩展输入口
2,用 74LS164扩展并行输出口 74LS164是 8位串入并出移位寄存器。图 12-10是利用 74LS164
扩展两个 8位并行输出口的接口电路。
A,B
1,2
7 4 L S 1 6 4
7 4 L S 1 6 4
1,2
A,B
C L R C P
7
1 4
C L R
C P 7
1 4
+ 5 V
8
9
9
8
+ 5 V
P 3,0
P 3,1
P 1,0
8 0 3 1
3 1 31 0 1 1
1 2
654
3 1 31 0 1 1
1 2
654
Q
A
Q
H
Q
G
Q
F
Q
E
Q
D
Q
C
Q
B
Q
A
Q
H
Q
G
Q
F
Q
E
Q
D
Q
C
Q
B
图 12-10 利用 74LS164扩展并行输出口