第 13章 MCS-51与 D/A,A/D的接口在单片机的实时控制和智能仪表等应用系统中,控制或测量对象的有关变量,往往是连续变化的模拟量,如温度、压力、流量、速度等物理量。这些模拟量必须转换成数字量后才能输入到单片机中进行处理。单片机处理的结果,也常常需要转换为模拟信号。若输入的是非电信号,还需经过传感器转换成模拟电信号。实现模拟量转换成数字量的器件称为模数转换 (ADC),数字量转换成模拟量的器件称为数模转换器( DAC)
13.1 MCS-51与 DAC的接口
D/A转换器概述
D/A(数/模 )转换器输入的是数字量,经转换后输出的是模拟量。转换过程是先将各位数码按其权的大小转换为相应的模拟分量,然后再以叠加方法把各模拟分量相加,
其和就是 D/A转换的结果。
MCS-51与 8位 DAC0832的接口
DAC0832芯片是具有两个输入数据寄存器的 8位
DAC,它能直接与 MCS-51单片机相连接,其分辨率为 8
位;电流输出;稳定时间为 1μs;可双缓冲、单缓冲或直接数字输入;只需在满量程下调整其线性度;单一电源供电(+ 5~+ 15V);低功耗,20 mW。其逻辑结构如图
13-1所示
MCS-51与 DAC0832的接口电路 MCS-51与
DAC0832接口时,可以有三种连接方式:直通方式、单缓冲方式和双缓冲方式。
由于直通方式下工作的 DAC0832常用于不带微机的控制系统中,下面仅对单缓冲方式和双缓冲方式作以介绍。
V
C C
I L E
W R 2
X F E R
D I 4
D I 0
D I 1
D I 2
D I 3
D I 7
D I 6
D I 5
I
O U T 1
I
O U T 2
A G N D
V
R E F
R
f b
D G N D
W R 1
C S
7
3
1
6
2
4
9
1 0
8
5
D A C 0 8 3 2
1 8
1 7
1 6
1 5
1 4
1 3
1 2
1 1
1 9
2 0
R
f b
8 位 输 入寄 存 器
8 位 D A C
寄 存 器
8 位 D /A
转 换 电 路
L E
1
L E
2
图 13-1 DAC0832原理框图
(1) 单缓冲方式是指 DAC0832内部的两个数据缓冲器有一个处于直通方式,另一个处于受 MCS-51控制的锁存方式。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步的情况下,
就可采用单缓冲方式。
单缓冲方式的接口电路如图 13-2所示。
D A C 0 8 3 2
V
R E F
9
R
f b
O A
W R
8 0 3 1
A L E
P 0,0 ~ 0,7
E A
锁存器译码器
D I 7 ~ D I 0
8
V
O U T
1 1
1 2
1 9
I L E
I
O U T 1
I
O U T 2
+ 5 V
G
W R 2
W R 1
C S
2
X F E R
0 F E H
V
R E F
图 13-2单缓冲方式下的 DAC0832
(2) 对于多路 D/A转换,要求同步进行 D/A转换输出时,必须采用双缓冲同步方式。在此种方式工作时,数字量的输入锁存和 D/A转换输出是分两步完成的。
图 13-3 8031和两片 DAC0832的接口(双缓冲)
13.2 MCS-51与 ADC器件接口
A/D转换原理在微型计算机的数据采集系统和控制系统中,大多采用低、中速的大规模集成 A/ D转换芯片。对于低、中速 A
/ D转换器,这类芯片常用的转换方法有计数 — 比较式、
双斜率积分式和逐次逼近式 3种。计数比较式器件简单、
价格便宜,但转换速度慢,较少采用。双斜率积分式精度高,但速度慢。由于逐次逼近式 A/ D转换技术能很好地兼顾速度和精度,故它在 16位以下的 A/ D转换器件中得到了广泛的应用。
逐次逼近式 A/ D转换电路框图如图 13-4所示。它主要由逐次逼近寄存器 SAR、数字 /模拟电压转换器、比较器、时序及控制逻辑等部分组成。
我们参阅图 13-4,我们以 4位 A/ D转换器为例,用图 13-5
说明其逐次逼近过程的原理。
模 拟 输 入 电 压比 较 器
V
x
V
f
基 准 电 源数 字 量输 出
D /A 转 换 器
S A R
时 序 及 控 制 逻 辑转 换 命 令状 态 线第 一 次预 测第 二次预 测第 三 次预 测第 四 次预 测电 压模 拟电 压终 值时 间
D 0
D 1D 2D 3
图 13-5 逐次逼近过程原理图?图 13-4 逐次逼近式 A/D转换电路框图
A/ D转换器及其与 MCS-51的接口
ADC0809是与微处理器兼容的 8通路 8位 A
/ D转换器。它主要由逐次逼近式 A/ D转换器和 8路模拟开关组成。
ADC0809的特点是,可直接与微处理器相连,不需另加接口逻辑;具有锁存控制的 8路模拟开关,可以输入 8个模拟信号;分辨率为 8
位,总的不可调误差为 ± 1LSB;输入、输出引脚电平与 TTL电路兼容;当模拟电压范围为 0~
5V时,可使用单一的 +5V电源;基准电压可以有多种接法,且一般不需要调零和增益校准。
图 13-6是 ADC0809引脚及其在系统中的典型连接方法。
A
D
C
0
8
0
9
G N D
R E F (+ )
V C C
C L O C K
O E
D 3
E O C
S T A R T
IN 7
IN 6
IN 5
IN 4
IN 3
1
2
3
4
5
6
7
8
9
1 0
1 1
1 2
1 3
1 4
D 2
D 4
D 0
D 6
D 7
A L E
A D D C
A D D B
A D D A
1 5
1 6
1 7
1 8
1 9
2 0
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
D 1
R E F(-)
D 5
IN 0
IN 1
IN 2
S T A R T
C L O C K
D 0
D 7
A D D A
A D D B
A D D C
I N 0
I N 7
数字输出模拟输入图 13-6 ADC0809 引脚及其在系统中的典型连接方法
a) ADC0809 引脚 b) ADC0809 在系统中的典型连接方法图 13-7是 ADC0809与 8051系列单片机的接口电路,ADC0809输出端有三态锁存器,可以与单片机直接接口。
I N 0
I N 7
D 7
D 0
C L O C K
分频器模拟量输入
A D C
0 8 0 9
8 0 5 1
8 0 3 1
A
B
C
E O C
G N D
O E
S T A R T
A L E
A L E
P 0,0
P 0,7
P 2,0
P 2,6
W R
R D
I N T 0
( 0 ~ 5 V )
图 13-7 ADC0809与 8031的接口对图 13-7的接口,可编出相应的程序。在主程序中要对外部中断进行预置,然后启动 ADC0809进行 A/D转换。设由 IN0路开始,8路模拟量轮流输入。转换结束后,转入中断服务子程序,把转换结果读入 8031的累加器,并存入相应缓冲存储单元 50H-57H,再由主程序对这些数据进行处理或移入外部
RAM各自的缓冲区中。
转换程序如下:
ORG 2000H
SETB IT0 ;置 为下降沿触
SETB EA ;总中断开放
SETB EX0 ;开放 中断;启动 ADC0809
MOV DPTR,#4100H ; ADC0809口地址
MOV R0,# 50H ; R0作存数缓冲器指针
MOV R1,# 00H ; R1作通道数指针
MOV A,R1 ;从 IN0路开始
MOVX @DPTR,A ;启动转换
… … ;继续主程序,等待中断;中断子程序
ORG 0003H ;中断向量地址
AJMP RDDAT ;转移至读入数据处
RDDAT,MOVX A,@ DPTR ;读入数据
MOV @R0,A ;存入缓冲器
INC R0 ;增量缓冲器指针
INC R1 ;指向下一通道
REP,MOV A,R1
MOVX @ DPTR,A ;启动下一路转换
CJNE A,# 07H,RMP0 ;所有路都转换过吗?
MOV R1,# 00H ;是,重新从 IN0路开始
SJMP REP
RMP0,RETI ;否,返回主程序
0INT
0INT