第四章 mcs-51 单片机的系统扩展
DESCRIPTION
第四章 MCS-51 单片机的系统扩展. 本章主要介绍 51 系列单片机系统扩展问题,在本章中要研究较多的 硬件 方面及 硬软 结合方面的问题,本章与第一章关系密切,在学习本章内容之前,要先明确 51 系列单片机本身的系统资源,可先复习一下 第一章 的有关单片机硬件组成方面的内容。. 本章将介绍以下具体内容: 系统扩展的含义、单片机的地址总线和数据总线 、常见 系统扩展电路举例. 一、系统扩展的含义 - PowerPoint PPT PresentationTRANSCRIPT
第四章 MCS-51 单片机的系统扩展
本章主要介绍 51 系列单片机系统扩展问题,在本章中要研究较多的硬件方面及硬软结合方面的问题,本章与第一章关系密切,在学习本章内容之前,要先明确 51系列单片机本身的系统资源,可先复习一下第一章的有关单片机硬件组成方面的内容。
本章将介绍以下具体内容: 系统扩展的含义、单片机的地址总线和数据总线、常见系统扩展电路举例
一、系统扩展的含义
单片机中虽然已经集成了 CPU 、 I/O 口、定时器、中断系统、存储器等计算机的基本部件(即系统资源),但是对一些较复杂应用系统来说有时感到以上资源中的一种或几种不够用,这就需要在单片机芯片外加相应的芯片、电路,使得有关功能得以扩充,我们称为系统扩展(即系统资源的扩充)。 需要解决的问题是单片机与相应芯片的接口电路连接(即地址总线、数据总线、控制总线的连接)与编程。
二、单片机的地址总线和数据总线
51 系列单片机没有专用的对外地址总线和数据总线,其 P0 口和 P2 口既是通用 I/O 口,同时 P0 口还是分时复用的双向数据总线和低 8 位地址总线(一般需要加一级锁存器),而 P2 口则是高 8 位地址总线。
三、常见系统扩展电路
系统扩展 ---- 单一功能的系统扩展、综合功能 的扩展。1. 单一功能的系统扩展 ( 1 )存储器的扩展(程序存储器、数据存储 器、 E2PROM )
( a )程序存储器的扩展
. 程序存储器的作用 ---- 存放程序代码或常数表格
. 扩展时所用芯片 ---- 一般用只读型存储器芯片(可以是
EPROM 、 E2PROM 、 FLASH 芯片等)。
. 扩展电路连接 ---- 用 EPROM 2732 扩展程序存储器。
. 存储器地址分析 ---- 究竟单片机输出什么地址值时,可以
指向存储器中的某一单元。
2732----4K EPROM
2732 引脚功能
A0-A11 地址线
CE 选片
OE/Vpp输出允许 /编程电源
O0-O7 数据线
A7A6A5A4A3A2A1A0O0O1O2GND
VccA8A9A11OE/VppA10CEO7O6O5O4O3
2732
. 扩展时所用芯片
. 扩展电路连接
图 4.2 扩展电路
单片机 8031
P2.0P2.1P2.2P2.3 A8
A9A10A11
ALE PSEN
74LS373
G
2732
A7A6A5A4A3A2A1A0
O0O1O2O3O4O5O6O7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
OE
CE
Q0Q1Q2Q3Q4Q5Q6Q7
D0D1D2D3D4D5D6D7
8031 2732
数据总线的连接:P0.0-P0.7 (数据总线) ----------------------------------------O0-O7 地址总线的连接:P0.0-P0.7 (地址总线低 8 位) ---------------------------------- A0-A7P2.0-P2.3 (地址总线高 8 位中的 4 位) --------------------------- A8-A11
控制总线的连接: PSEN (程序存储器允许,即读指令) -------------------------- OE ALE (地址锁存允许) ------------------------------------- 接 373 的使能端 G
经过锁存器 373
1 2 3
一个机器周期
ALE
PSEN
P2
P0
地址 A8~A15 地址 A8~A15
A0~A7 A0~A7
指令码 指令码
图 4.1 从外存取指令时序图
P2.0P2.1P2.2P2.3 A8
A9A10A11
ALE PSEN
74LS373
G
2732
A7A6A5A4A3A2A1A0
O0O1O2O3O4O5O6O7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
OE
CE
Q0Q1Q2Q3Q4Q5Q6Q7
D0D1D2D3D4D5D6D7
一个机器周期
ALE
PSEN
P2
P0
地址 A8~A15 地址 A8~A15
A0~A7 A0~A7
指令码 指令码
单片机 8031
.存储器地址分析 ---- 究竟单片机输出什么地址值时,可以指向存储器中的某一单元。
8031 P2.3 ……… P2.0 P0.7………………………… P0.0 (2732 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0) 选中单元 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 1 ( 0001H ) 1 0 0 0 0 0 0 0 0 0 0 1 0 ( 0002H ) 2 0 0 0 0 0 0 0 0 0 0 1 1 ( 0003H ) 3 0 0 0 0 0 0 0 0 0 1 0 0 ( 0004H ) 4 . . . 1 1 1 1 1 1 1 1 1 1 1 1 ( 0FFFH ) 4K-1 可见,当单片机输出地址 0000H~0FFFH 时,选中 2732 的 0~4K-1 号单元,即按照上面电路扩展的 4K 存储器的地址范围是 0000H~0FFFH (共 4K 字节)。
请思考:请同学们结合图 4.1 来分析图 4.2 中 373 的作
用,并说明没有它行不行?为什么?
. 扩展时所用芯片
. 程序存储器的作用
. 扩展电路连接
. 存储器地址分析
程序存储器的扩展
( b )数据存储器的扩展
. 数据存储器的作用 ---- 存放数据,可改写
. 扩展时所用芯片 ---- 一般用静态读写型存储器芯片 SRAM ,
也可以用 E2PROM 、 FLASH 芯片等
. 扩展电路连接 ---- 用 SRAM 6116 扩展程序存储器。
. 存储器地址分析 ---- 究竟单片机输出什么地址值时,可
以指向存储器中的某一单元。
6116----2K SRAM
6116 引脚功能A0~A1
0地址线
CE 选片
OE 读
D0~D7 数据线
A7A6A5A4A3A2A1A0D0D1D2GND
VccA8A9WEOEA10CED7D6D5D4D3
6116
. 扩展时所用芯片
写 WE
. 扩展电路连接
图 4.5 扩展电路
8031 6116
数据总线的连接:P0.0~P0.7 (数据总线) ----------------------------------------D0~D7 地址总线的连接:P0.0~P0.7(地址总线低 8位) ---------------------------------- A0~A7P2.0~P2.2(地址总线高 8位中的 3位) --------------------------- A8~A10
控制总线的连接: RD (读外部数据) ------------------------------------------- OE WR (写外部数据) ------------------------------------------- WE ALE (地址锁存允许) ------------------------------------- 接 373 的使能端 G
经过锁存器 373
单片机 8031
P2.0P2.1P2.2
A8A9A10
ALE
RD
74LS373
G
6116
A7A6A5A4A3A2A1A0
O0O1O2O3O4O5O6O7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
OE
CE
Q0Q1Q2Q3Q4Q5Q6Q7
D0D1D2D3D4D5D6D7
WEWR
P2.7
一个机器周期
ALE
PSEN
P2
P0
地址 A8~A15
A0~A7
三态
数据 D0~D7 入
图 4.4 读外部数据 RAM 时序图
RD
一个机器周期
ALE
PSEN
P2
P0
地址 A8~A15
A0~A7
数据 D0~D7 出
图 4.4 写外部数据 RAM 时序图
WR
单片机 8031
P2.0P2.1P2.2
A8A9A10
ALE
RD
74LS373
G
6116
A7A6A5A4A3A2A1A0
O0O1O2O3O4O5O6O7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
OE
CE
Q0Q1Q2Q3Q4Q5Q6Q7
D0D1D2D3D4D5D6D7
WEWR
P2.7
一个机器周期
ALE
PSEN
P2
P0
地址 A8~A15
A0~A7 三态
数据 D0~D7 入
RD
图 4.4 读外部数据 RAM 时序图
.存储器地址分析 ---- 究竟单片机输出什么地址值时,可以指向存储器中的某一单元。
8031 P2.7…………… P2.2 P2.1 P2.0 P0.7………………………… P0.0 选中单元(6116 CE A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0) 0 X X X X 0 0 0 0 0 0 0 0 0 0 0 ( 0000H ) 0 0 X X X X 0 0 0 0 0 0 0 0 0 0 1 ( 0001H ) 1 0 X X X X 0 0 0 0 0 0 0 0 0 1 0 ( 0002H ) 2 0 X X X X 0 0 0 0 0 0 0 0 0 1 1 ( 0003H ) 3 0 X X X X 0 0 0 0 0 0 0 0 1 0 0 ( 0004H ) 4 . . . 0 X X X X 1 1 1 1 1 1 1 1 1 1 1 ( 07FFH ) 2K-1 可见,当单片机输出地址 0000H~07FFH 时,选中 6116 的 0~2K-1 号单元,即按照上面电路扩展的 4K 存储器的地址范围是 0000H~07FFH (共 2K 字节)。
请注意,与扩展程序存储器相比较,有以下不同点:ⅰ. 存储器芯片为可读可写的静态 RAM 芯片,有读写控制引脚OE 和 WE 。ⅱ. 单片机输出的对数据存储器的读写控制信号分别是 RD (而不再是读程序存储器时的 PSEN )和 WR 。
. 扩展时所用芯片
. 程序存储器的作用
. 扩展电路连接
. 存储器地址分析
数据存储器的扩展
( c ) E2PROM 的扩展 2864----8K E2PROM
2864 引脚功能A0~A1
2地址线
CE 选片
OE 读
D0~D7 数据线
N.CA12A7A6A5A4A3A2A1A0D0D1D2GND
VccWEN.CA8A9A11OEA10CED7D6D5D4D3
2864
.扩展时所用芯片
写 WE
单片机 8031
P2.4
P2.0 A8
A12
ALE
RD
74LS373
G
2864
A7A6A5A4A3A2A1A0
D0D1D2D3D4D5D6D7
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7
OE
CE
Q0Q1Q2Q3Q4Q5Q6Q7
D0D1D2D3D4D5D6D7
WEWR
P2.7
PSEN &
图 4.9 扩展 2864
★ 请思考:什么情况下图 4.9 中的与门输出低电平,使 E2PRAM 的内容可以被读出,读出的是什么方面的内容?图中扩展的 E2PRAM 是外部数据存储器?外部程序存储器?两者都扩展了?
( 2 )外部中断源的扩展 ----51 系列单片机有两个外部中断源( INT0 、 INT1 ),中断源的扩展可用与存储器扩展类似的方法,外接中断控制芯片(如 8259 )来进行扩展;也可以利用单片机中的定时器 T0 、 T1 来扩展(见第一章习题 1.20 );还可以外接门电路配合相应的查询软件进行简单的扩展。这里我们研究最后一种方法。
8031
1
1
1
1
P1.0P1.1P1.2P1.3
INT0ITS4
ITS3
ITS2
ITS1
+5V
图 4.22 扩展外部中断源
R
要注意的是:ⅰ. 图 4.22 中的非门是 OC (即集电极开路)门,图中的电阻是这些非门的上拉负载电阻,注意只有 OC 门才可以象图中那样采取线与方式连接。ⅱ. 此处是将一个外部中断源( INT0 )扩展成了 4 个( ITS1-ITS4 ),同理还可以将 INT1 进行扩展。ⅲ. 由于经过一级反相,这 4 个中断源是上升沿或高电平引起中断。ⅳ. 不管这 4 个中断源中的哪一个或哪几个申请中断,都是通过 INT0 申请中断,因此处理程序入口地址只有一个即 INT0 的入口地址( 0003H )。
中断处理程序PINT0 : PUSH PSW JB P1.0 , PIS1 ;查询 ITS1 有无中断请求 JB P1.1 , PIS2 ;查询 ITS2 有无中断请求 JB P1.2 , PIS3 ;查询 ITS3 有无中断请求 JB P1.3 , PIS4 ;查询 ITS4 有无中断请求REP : POP PSW RETIPIS1 : … . ;进入 ITS1 中断处理程序 AJMP REP PIS2 : … . ;进入 ITS2 中断处理程序 AJMP REPPIS3 : … . ;进入 ITS3 中断处理程序 AJMP REPPIS4 : … . ;进入 ITS4 中断处理程序 AJMP REP
★★ 请思考:请思考:查询软件的作用是什么?没有 查询软件的作用是什么?没有 它行不行?它行不行?
2. 综合功能的扩展:使用具有综合功能的芯片、
使用多个芯片扩展。( 1 )综合功能芯片扩展 ---- 8155 使用具有综合功能的可编程芯片 8155 来同时扩展单片
机的 I/O 口、定时器、外部数据存储器 RAM 。ⅰ.关于 8155 芯片
8155 芯片的内部结构
256B静态RAM
A
定时器
B
C
口 A
PA0~PA7
口 B
PB0~PB7
PC0~PC5
口 C
IO/ M
AD0~AD7
CEALE
RDWR
RESET定时器输入定时器输出
接单片机
接外设
接外设
接外设
图 4.24b
8155 引脚功能
PC3PC4
PC5
IO/ MCERD
WRALEAD0AD1AD2AD3AD4AD5AD6AD7Vss
VccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA0
8155
TIMER INRESET
TIMER OUT
AD0-AD7
三态地址 /数据线
IO/ M 端口 / 存储器选择
RD 读
ALE地址锁存
允许
写 WR
选片 CE
定时器输入
TIMER IN
定时器输出
TIMER OUT
PA0-PA7
A 口端口线
PB0-PB7
B 口端口线
PC0-PC5
C 口端口线 图 4.24a
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
OUT8155 片内定时器 /计数器的计满回零输出引
脚分别是对 8155 片内的 RAM 或 I/O 口的的读、
写控制信号ALE 地址锁存引脚
选片RESET 复位引脚
IO/ M
RD 、WR
CE
I/O 口地址 ----当 IO/ M 加高电平时
ⅱ. 8155 的 RAM 和 I/O 口地址
RAM 地址 ----当 IO/ M 加低电平时此时 AD0-AD7 上得到的地址值是指 8155 的某一 RAM 单元的地址,地址范围是 0000 0000--1111 1111分别指向 8155 RAM 的 256 个存储单元。
此时 AD0-AD7 (仅用到低三位 AD2 、 AD1 、 AD0 )上得到的地址值是指 8155 的某一 I/O 口的地址,具体端口地址分配是:
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 I/O 端口
╳ ╳ ╳ ╳ ╳ 0 0 0 命令 /状态口
╳ ╳ ╳ ╳ ╳ 0 0 1 A 口
╳ ╳ ╳ ╳ ╳ 0 1 0 B口
╳ ╳ ╳ ╳ ╳ 0 1 1 C 口
╳ ╳ ╳ ╳ ╳ 1 0 0 计数器低 8 位
╳ ╳ ╳ ╳ ╳ 1 0 1 计数器高 6 位
8155 的 RAM 和 I/O 口地址分配
ⅲ. 8155 的使用(分二种情况:片内 RAM 的使用 各端口的使用)
8155 内 RAM 的使用:
与一般外部数据存储器的使用基本一样,唯一区别是事先要使 IO/ M 为低电平(见 p91例 1 )。
8155 各端口的使用:A 、 B、 C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。
8155命令字含义
PAPBPC1PC2IEAIEBTM1TM2
PB、 PA—A 口、 B口数据传送方向0—输入
1—输出
00—C 口输入, A 、 B口基本 I/O 方式11—C 口输出, A 、 B口基本 I/O 方式01—PC3-PC5 输出, A 口选通方式, B口基本 I/O方式10—A 、 B口选通方式
PC2 、 PC1—C 口数据传送方向及 AB口工作方式
IEA 、 IEB — A 、 B口中断允许控制0—禁止
1—允许TM1 、 TM2—计数器控制
ⅳ. 扩展电路的连接举例 ---- 见图 4.25 ,接口电路非常简单,基本上是相同信号对接。
8031 8155
RESETRDWRALEP2.4
P0.0P0.1P0.2P.03P0.4P0.5P0.6P0.7
RESETRDWRALEIO/M
CE
AD0AD1AD2AD3AD4AD5AD6AD7
口 A
PA0~PA7
口 B
PB0~PB7
PC0~PC5
口 C
图 4.25
★ 请思考:对比图 4.2 ( 2732 的扩展),为什么图 4.25 中扩展 8155 时,单片机 P0 口输出的地址信号没有经过 373 锁存而是直接接到 8155 的地址 / 数据复用线上了?ⅴ. 应用举例 ---- (见教材 p91例 1 、例 2 ) 作业 4.10 、 4.11
需要弄清以下几个问题:ⅰ. 选片问题 ----
选片信号的功能是:当某个芯片的选片信号接低电平时,意味着该芯片被选中,而当其接高电平时,意味着该芯片没有被选中,此时就好象该芯片没有连接到电路中(实际上是其各引脚处于高阻态)。(在这部分以前所有扩展电路中所用的芯片的选片信号引脚 CE ,都是直接接地或者接某一 P2 口线的。)
图 4.28 中的芯片 138 是 3 : 8译码器,它在这里的作用是输出选片信号:其输出端 Y0 、 Y1 、 Y2 分别用来选择8155 、 6116 ( 1 )、 6116 ( 2 )。 138 的引脚及功能见下表:
( 2 )多芯片扩展(见教材 p92-93 ,图 4.28 ) ---- 使用多个芯片来进行综合功能扩展。
ⅱ. 译码器问题 ----
控 制 引 脚 输 入 引 脚 输 出 引 脚
G1 G2A G2B C B A Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
1 0 0 0 0 0 1 1 1 1 1 1 1 0
1 0 0 0 0 1 1 1 1 1 1 1 0 1
1 0 0 0 1 0 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 0 0 1 1 1 0 1 1 1 1
1 0 0 1 0 1 1 1 0 1 1 1 1 1
1 0 0 1 1 0 1 0 1 1 1 1 1 1
1 0 0 1 1 1 0 1 1 1 1 1 1 1
138 功能表
ⅲ. 扩展电路
8031
373
G2716
6116(2) 6116(1)
8155
P0
P2.2--P2.0PSEN
ALE
WRRD
ABCG2AG2BG1
P1.0
A0~A7 A8~A10
D7~D0 D7~D0 D7~D0 CECE
CSOE
A0~A7 A8~A10
WE WEOE OE
WERD
ALE
AD0~AD7
CE
Y2
Y1
Y0
+5V
IO/ M
PA
PB
PC
P2.3P2.4P2.5P2.6P2.7
138
图 4.28 多芯片扩展电路
★ 请思考:
b. 为什么图中 6116 ( 1 )的地址范围是 0800H-0FFFH ?而 6116 ( 2 )的地址范围是 1000H-17FFH ?
a. 为什么图 4.28 中的 8155 的各端口地址分别是 0000H 、 0001H 、……、 0005H , 而其内部 RAM 地址范围是 0000H--00FFH ?
a. 由图 4.28 可知 图中 8155 的 CE 接 138 的 Y0 , 138 的 G2B、 G2A 和 CBA 分别 接到 8031 的 P2.7-P2.3 ,所以要选中 8155 , 即要 CE=0 ,则必有 Y0=0 , 由 Y0=0得到必有 G1=1 ,且 G2A=G2B=0 , CBA=000 , 即 8031 的 P2.7-P2.3=00000 时,选中 8155 ,在此前提下, 当 8031 的 P0 口输出地址是 XXXXX000-XXXXX101 ,且 IO/ M=1 时,选中 8155 的各端口, 即:
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 )计数器高
所以 8155 的各端口地址分别是
0000H 、 0001H 、……、 0005H 。
且当 IO/ M=0 时,选中 8155 的 RAM 单元,所以其内部 RAM地址范围是 0000H--00FFH 。
b. 同理可得 6116 ( 1 )和 6116 ( 2 )的地址范围分别是 0800H-0FFFH 和 1000H-17FFH :ⅰ. 图中 6116 ( 1 )的 CE 接 138 的 Y1 ,所以要选中 61
16 ( 1 ),
则必有 Y1=0 ,由 Y1=0得 必有
G1=1 ,且 G2A=G2B=0 , CBA=001 ,
即 8031 的 P2.7-P2.3=00001 时,选中 6116 ( 1 ),
在此前提下,当 8031 的 P2.2-P2.0 , P0.7-P0.0 输出地址
000 0000 0000 -111 1111 1111 时,选中 6116 ( 1 )中的某一个单元,也即 6116 ( 1 ) 的地址范围是:
0000 1000 0000 0000-0000 1111 1111 1111 即
8000H-FFFFH (共 2K )。
ⅱ 同样分析可知 6116 ( 2 )的地址范围是 1000H-17FFH
第四章 小结
具体内容
常见系统扩展电路举例
系统扩展的含义
单片机的地址总线和数据总线存储器的扩展
外部中断源的扩展
综合功能的扩展
本章主要介绍 51 系列单片机接口技术问题,本章与第四章关系密切,是第四章的扩充,本章内容较多,由于学时限制我们只要求掌握其中的基本内容,具体是要掌握以下三点并要求了解第四点:
第五章 MCS-51 单片机的接口技术
接口是连接单片机与外围电路、芯片、设备(如 I/O 设备、 A/D 、 D/A 设备)的中间环节,它牵涉到很多问题(包括外围电路、设备、芯片的结构、使用方法、时序要求;单片机本身的硬件、软件资源等)。
一、接口的概念 ----
---- 用于接口的指令、产生的信号、数据交换方 式、端口地址的分配。
1. 接口指令---- 单片机没有专用的接口指令,而是用外部数
据操作指令( 4四条)实现数据的 I/O ,即MOVX A ,@DPTR ;读外部 RAM ,即输入MOVX A ,@Ri ;读外部 RAM ,即输入MOVX @DPTR , A ;写外部 RAM ,即输出MOVX @Ri, A ;写外部 RAM ,即输出
二、接口技术要解决的问题
一个机器周期
ALE
PSEN
P2
P0
地址 A8~A15
A0~A7 三态
数据 D0~D7 入
RD
图 4.4 读外部数据 RAM 时序图 即执行MOVX A ,@DPTR
MOVX A ,@Ri
指令执行时序
2. 接口时序
----就是执行上述MOVX 类指令的时序(分读 / 写两种情况,见教材 p96 图 5.1 ,也就是第四章中的 p72图 4.3 和 4.4 )
一个机器周期
ALE
PSEN
P2
P0
地址 A8~A15
A0~A7
数据 D0~D7 出
WR
图 4.4 写外部数据 RAM 时序图 即执行MOVX @DPTR ,A
MOVX @Ri, A
指令执行时序
3.I/O 数据交换方式
---- 一般有无条件传送方式
延时等待方式
查询方式
中断方式等。
以 A/D转换为例说明
8031 A/D
P0 D7~D0
P1. x START
延时等待方式
单片机由 P1 口某口线 P1. x发出启动转换信号给 A/D后,延时一段时间(假设经过这段时间 A/D转换结束),然后单片机从 P0 口读入转换好的数据。
延时等待方式 ----
8031 A/D
P0 D7~D0
P1. x START
P1.y EOC
查询方式
查询方式 ----
由单片机的 P1 口某口线 P1. x发出启动转换信号给 A/D ,然后单片机由 P1 口某口线 P1. y不断输入转换结束信号EOC 并进行检测,发现 EOC 有效时,说明转换结束,单片机即可从 P0 口读入转换好的数据。
中断方式
INT0
8031 A/D
P0 D7~D0
P1. x START
EOC&
中断方式 ----由单片机的 P1 口某口线 P1. x发出启动转换信号给 A/D后,就可以做别的工作了,当转换结束 EOC 有效时,向单片机发出中断请求,单片机即可在中断处理程序中从P0 口读入转换好的数据。
4. 端口地址的分配---- 单片机的 I/O 端口和外 RAM统一编址,也即外 RAM单元和 I/O 端口加起来最多不能超过 64K 个,确定 I/O端口地址的方法有两种:
★ 请思考:以上各种数据交换方式各有什么利弊。
线选法 ---- 单片机的单根地址线直接接到外部电路芯片 (设备)的片选端( P98 图 5.3 )
8031 6116CE
8255CS
8155IO/M CE
CE8253
CS0832
P2.3P2.4P2.0P2.5P2.6P2.7
图 5.3 线选法译码地址
线选法译码地址
外围器件 地址选择线( 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
译码法 ---- 用译码器将单片机的(高位)地址线进行译码,译码输出信号作为外部电路芯片(设备)的片选信号( P99 图 5.4 ) 。
80316264CE
8255CS
8155IO/M CE
CE8253
CS0832
P2.5P2.6P2.7
图 5.4 译码法译码地址
P2.0
ABC
G2AG2B
G1
Y0Y1Y2Y3Y4
+5V
138
控 制 引 脚 输 入 引 脚 输 出 引 脚
G1 G2A G2B C B A Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0
1 0 0 0 0 0 1 1 1 1 1 1 1 0
1 0 0 0 0 1 1 1 1 1 1 1 0 1
1 0 0 0 1 0 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 0 0 1 1 1 0 1 1 1 1
1 0 0 1 0 1 1 1 0 1 1 1 1 1
1 0 0 1 1 0 1 0 1 1 1 1 1 1
1 0 0 1 1 1 0 1 1 1 1 1 1 1
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
★ 请思考:以上两种确定 I/O 端口的方法各有什么利弊?什么是全译码?部分译码?什么是地址重叠?什么时候会发生地址重叠?
线选法:接线简单,地址重叠较多,地址空间没有得到充分利用,当单片机外围芯片较少时采用。
译码法:需要硬件(译码器),电路稍复杂,但地址空间可以得到充分利用,地址重叠少。全译码:所有(高位)地址线全部参与译码,没有地址重叠问题。部分译码:部分(高位)地址线全部参与译码,有部分地址重叠。什么时候会发生地址重叠—当存在未用到的地址线时发生。因为这些地址线可设为“ 1”,也可设为“ 0”。
三.几种常用接口电路举例
D/A 电路一般是作成集成电路芯片,使用时要注意 2 个问题:一个是转换时间及转换精度;另一个是转换出来的模拟量的形式是什么(电流量还是电压量)。
1.D/A转换电路接口技术
----D/A转换即是将数字量转换成相应的模拟量,常用于控制系统中。如单片机输出不同的数字量经 D/A转换后加给直流电机,即可控制电机的转速。
a. D/A转换原理 --倒 T 型电阻网络 D/A转换电路原理
图 5.6 ( a)倒 T 型电阻网络 D/A转换原理图
R 2R 2R 2R 2R
R R R R
D0 D1 D2 D3
节点 3节点 2节点 1节点 0
I VREF
+
- VOUT
I3I2I1I0
图中 D3 D2 D1 D0 是 4 位二进制数字量输入,当 D3 D2 D1 D0 中的某一位状态为 1 时,图中开关打向右方,为 0 时,开关打向左方。
RFIOUT1
IOUT2
VREF 为基准电压输入,Vout是电压模拟量输出。由运算放大器概念可知:
Vout=-RF•Iout1
Iout1 是开关打向右端的各支路电流 Ii之和,实际上
(其中 就是数字量 D3 D2 D1 D0 的某一位)Di
图 5.6 ( b) 等效电路图
R 2R 2R 2R 2R
R R R R
D0 D1 D2 D3
节点 3节点 2节点 1节点 0
I VREFI3I2I1I0
由等效电路图 5.6 ( b)可知,各支路电流分别为:
ii
iR
VFOUT DRV REF
3
016 2
上式右边 ii
i D
3
0
2
表示的就是数字量 D3 D2 D1 D0 的值(按权展开),而左边是模拟量输出值,可见模拟量输出正比于数字量输入,即实现了 D/A转换。
★ 请思考:倒 T 型电阻网络相对于权电阻网络有什么优势?
b.DAC0832 与单片机的接口ⅰ.DAC0832 的引脚
0832----8 位 D/A
0832 引脚功能
IOUT2电流输出
2 CS 选片
WR1 输入写
DI0~DI7
数据线
CSWR1AGNDDI3DI2DI1DI0VREF
RFR
DGND
VccILEWR2XFERDI4DI5DI6DI7IOUT2
IOUT1
0832DAC 写 WR2
IOUT1电流输出
1
数据锁存 ILE
数据传送 XFER
ⅱ.DAC0832 的结构
输入寄存器
DAC寄存器
D/A转换器
ILE
CS
WR1WR2
XFER
IOUT1
IOUT2
DI7~DI0
RFR
VREF
ⅲ.DAC0832 与单片机的接口①单缓冲方式接口电路---- 将两级寄存器的控制信号并接在一起,相当于控制一级寄存器(线选译码地址 00FEH )。
8031WR
ALE
P0
DI7~DI0
CS
XFERWR1
WR2
DAC0832
IOUT2
IOUT1
+
-
RFRA0
373G A7~A0
图 5.9 DAC0832 单缓冲方式接口电路图
ILE
+5V
采用单缓冲方式输出锯齿波、矩形波、三角波、梯形波等的 D/A转换程序(见教材 p103~105 )
锯齿波
ORG 2000H
START : MOV DPTR , #00FEH ;选中 0832MOV A , #00H ; D/A 数据初值
LP : MOVX @DPTR , A ;转换INC A ;修改 D/A 数据SJMP LP ;循环,输出连续模拟量
A=00
A=0FFH
三角波 ORG 2000H
START : MOV DPTR , #00FEH ;选中 0832MOV A , #00H ; D/A 数据初值
UP : MOVX @DPTR , A ;转换INC A ;修改 D/A 数据(上升)
JNZ UP ;未上升到最大值,继续DOWN : DEC A ;否则,修改 D/A 数据(下降)
MOVX @DPTR , A ;转换JNZ DOWN ;未下降到最小值,继续
SJMP UP ;一个周期结束,继续
A=00
A=0FFH
A=00
A=0FFH
②双缓冲方式 ----略