第八章MCS51与DA、AD接口

Download Report

Transcript 第八章MCS51与DA、AD接口

第八章 MCS51与DA、AD接口
8.1 MCS-51单片机与DAC的接口
8.1.1 DA转换器概述
一、D/A(Digit to Analog)转换器
单片机处理的是数字量。
D/A转换器是将数字量转换成相应的模拟量(电流、电压等)的电
子器件,是应用广泛的集成电路芯片。
二、D/A转换器的原理
按权展开,然后相加;
即D/A转换器能把输入数字量中的每位都按其权值分
别转换成模拟量,并通过运算放大器求和相加。
D/A转换器内部必须有一个解码网络,以实现按权值
分别进行D/A转换。
解码网络有两种:二进制加权电阻网络和T型电阻网
络。
二进制加权电阻网络
R/2
Vo
20 R
21 R
22 R
23 R
+
VREF
D3
D2
D1
D0
R
1
R
1
R 1
R
1
Vo =   3  D0VREF   2  D1VREF   1  D2VREF   0  D3VREF
2 2 R
2 2 R
2 2R
2 2 R
=
1
1
1
1
1
 VREF ( 3 D0  2 D1  1 D2  0 D3 )
2
2
2
2
2
=

VREF 3
2
1
0
(
2
D

2
D

2
D

2
D0 )
3
2
1
4
2
3
2
1
0
D
(
其中
D

2
D

2
D

2
D

2
D0 )
= VREF
3
2
1
4
2
T型电阻网络
D3
D2
D1
D0
Vo  I out1  R f
I out1  I 3  D3  I 2  D2  I1  D1  I 0  D0
VREF
I3 
2R
I 2 VREF
I1   3
2 2 R
I 3 VREF
I2   2
2 2 R
I1 VREF
I0   4
2 2 R
I out1  I 3  D3  I 2  D2  I1  D1  I 0  D0
VREF 3
2
1
0
 4 (2  D3  2  D2  2  D1  2  D0 )
2 R
VREF
3
2
1
0
U o   4 R f (2  D3  2  D2  2  D1  2  D0 )
2 R
VREF
 4 D
2
( R f  R)
n位数字量与模拟量的关系式:
VO = -VREF×(数字码 / 2n)
(VREF —— 参考电压)
注:因使用反相比例放大器来实现电流到电压的转换,
所以输出模拟信号(VO)的极性与参考电压(VREF)极性
相反。
三、D/A转换器的性能指标
分辨率
指能分辨的的最小输出模拟增量,是对输入变化敏
感程度的描述,取决于输入数字量的二进制位数。
若数字量的位数是n,则D/A转换器的分辨率为2-n。
数字量位数越多,分辨率也越高,即转换器对输入
量变化的敏感度也就越高。
实际应用时,应根据分辨率的要求来选定转换器的
位数。
转换精度
指满量程时DAC的实际转换值和理论值的接近程度。
转换精度和分辨率是两个不同的概念。
例如满量程时的理论输出值为10V,实际输出值是在
9.99~10.01之间,其转换精度为±10mV。
分辨率很高的D/A转换器并不一定具有很高的精度。
偏移量误差

指输入数字量为零时,输出模拟量对零的偏移值。

可通过DAC外接UREF和电位器加以调整。
建立时间

指从输入数字量变化到输出达到终值的1/2LSB(最低
有效位)时所需的时间。

通常以建立时间表明转换速度。

D/A转换速度远高于A/D转换。
8.1.2 典型的D/A转换芯片DAC0832
一、DAC0832芯片内部结构
基准电压输入
电流输出线
数字量输入
D0~D7
8位输入
寄存器
8位DAC
寄存器
8位D/A
转换器
VREF
IOUT2
IOUT1
Rfb
允许数字量输入
ILE
&
片选信号
CS
WR1
WR2
XFER
M1
&
M2
Rfb
LE1
LE2
LE1=1,输入
LE2=1,输入
LE1=0,锁存
LE2=0,锁存
反馈电阻端
输入寄存器写选通信号
DAC寄存器写入信号
&
M3
DAC寄存器输入控制线
DAC0832内部由三部分电路组成
“8位输入寄存器”。用于存放CPU送来的数字量,
使输入数字量得到缓冲和锁存,由LE1控制。
“8位DAC寄存器”。用于存放待转换的数字量,由
LE2控制。
“8位D/A转换电路”。由8位T型电阻网络和电子开
关组成,电子开关受DAC寄存器的控制。T型网络能
输出和数字量成正比的模拟电流。因此,DAC0832需
外接运放才能得到模拟电压。
二、DAC0832芯片引脚
DAC0832有20引脚,双列直插式封装。
DI0~DI7(DI0为最低位):8位数字量输入端。
ILE:数据允许控制输入线,高电平有效。
/CS:片选信号。
/WR1:写信号线1。
/WR2:写信号线2。
/XFER:数据传送控制信号输入线,低电平有效。
IOUT1:模拟电流输出线1。它是数字量输入为“1”的
模拟电流输出端。
IOUT2:模拟电流输出线2,它是数字量输入为“0”的
模拟电流输出端,采用单极性输出时,IOUT2常常接地。
Rfb:片内反馈电阻引出线,反馈电阻制作在芯片内部,
用作外接的运算放大器的反馈电阻。
VREF:基准电压输入线。电压范围为-10V~+10V。
VCC:工作电源输入端,可接+5V~+15V电源。
AGND:模拟地。
DGND:数字地。
三、DAC0832与单片机接口
1、直通方式
DAC0832
P1
80C51
8
D7~0 Rfb
WR1
WR2
XFER
CS
IOUT1
IOUT2
ILE
+
VO
VCC
MOV P1,A
当引脚/WR1、/WR2、/CS、/XFER直接接地,ILE接电源,
DAC0832工作于直通方式,此时,8位输入寄存器和8位DAC寄存
器都直接处于导通状态,8位数字量到达DI0~DI7,就立即进行
D/A转换,从输出端得到转换的模拟量。
直通方式仿真图
方波
ORG 0000H
LOOP: MOV A,#0
MOV P1,A
ACALL DELAY
MOV A,#0FFH
MOV P1,A
ACALL DELAY
SJMP LOOP
DELAY: MOV R4,#20
D2: MOV R5,#20
DJNZ R5,$
DJNZ R4, D2
RET
END
锯齿波
LOOP:
A=0FFH
A=00
ORG 0000H
MOV P1,A
INC A
SJMP LOOP
END
三角波
A=0FFH
A=00
2、单缓冲方式
DAC0832只实现一次数据锁存。实现方法有3种:
“8位输入寄存器”锁存,“8位DAC寄存器”直通。
/LE1=0:ILE=+5V,/CS接地址线,/WR1接/WR
/LE2=1: /WR2、/XFER接地
“8位输入寄存器”直通,“8位DAC寄存器”锁存。
/LE1=1:ILE=+5V,/CS接地址线,/WR1接地
/LE2=0: /XFER接地, /WR2接/WR
“8位输入寄存器” 与“8位DAC寄存器”同时直通与
锁存。
ILE=+5V, /XFER接地,/CS接地址线
/WR1与/WR2同时接/WR
单缓冲方式之一
3、双缓冲方式
“8位输入寄存器”与“8位DAC寄存器”的锁存信号分
开连接。适用于多路模拟量需要同步输出的系统。
两个 ILE=+5V,两个 /WR1与/WR2全部接/WR
两个/CS接不同地址线
两个 /XFER接同一个地址线
双缓冲方式接口电路
双缓冲方式仿真图
工作原理
两个“8位输入寄存器”地址不同;
两个“8位DAC寄存器”地址相同;
编程时,先分别对两个芯片的“8位输入寄存器”进
行操作,即将待转换的数据分别送入“8位输入寄存
器”。然后再同时启动两个“8位DAC寄存器”。
完成两路D/A同步输出的程序:
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOVX
DPTR,#7FFFH
A,#data1
@DPTR,A
DPTR,#0BFFFH
A,#data2
@DPTR,A
DPTR,#0DFFFH
@DPTR,A
;指向0832(1)输入锁存器
;data1送入0832(1)输入锁存器
;指向DAC0832(2)输入锁存器
;data2送入0832(2)输入锁存器
;同时启动0832 (1)、0832(2)
;完成D/A转换输出
8.2 MCS-51单片机与ADC的接口
8.2.1 AD转换器概述
---- A/D转换是把输入的模拟电压或电流变成与它
成正比的数字量,常用于数据采集系统,外界的模
拟信号经A/D转换后,读入单片机内部以便进行处理。
---- 常见A/D转换电路有逐次逼近式等。
一、逐次逼近式ADC的工作原理
VN
模拟输入
VX
D/A转换器
N位D/A转换器
比较器
时钟
启动
时序与控制
逻辑电路
N位寄存器
EOC
输
出
缓
冲
器
N位数字
量输出
OE
逐次逼近A/D转换器原理图
N位寄存器用来存放N位二进制数码。
当VX≥VN,则保留DN-1=1,否则清0。其余类推。
启动信号作用后,在时钟信号控制下,首先使寄存
器的DN-1=1;
N位寄存器的数字量一方面作为输出用,另一方面经
D/A转换器转换成模拟量UN后,送到比较器;
UN与被转换的模拟量Ux进行比较,控制逻辑电路根
据比较器的输出进行判断;
若Ux≥UN,保留这一位;若Ux<UN,则DN-1=0。
DN-1位比较完后,再对DN-2位进行比较,直到D0位为
止。此时N位寄存器的值即为Ux对应的数字量。
二.A/D转换器的主要性能指标
1、分辨率
 ADC的分辨率是指使输出数字量变化一个相邻数码
所需输入模拟电压的变化量。常用二进制的位数表示。

分辨率=满刻度值/2N
2、转换时间
 A/DC转换器完成一次转换所需的时间。一般常用的
8位ADC的转换时间为几十至几百微秒。
8.2.2 ADC0809与单片机接口
一、ADC0809芯片内部结构及管脚功能
START
EOC
CLK
IN0
·
·
8路
模拟量
开关
IN7
A
B
C
ALE
D0
8位A/D
转换器
三态
输出
锁存器
地址
锁存与
译码
·
·
D7
VR(+) VR(-)
OE
管脚功能
IN0~IN7: 8路模拟电压输入线;
ADDC、ADDB、ADDA: 地址输入线,为
000~111分别选中IN0~IN7;
ALE:地址锁存允许信号,高电平有效;
CLOCK:时钟输入线;
START: 启动脉冲输入线,上升沿清除内部
寄存器,下降沿启动ADC工作;
EOC:转换结束信号。EOC=0,正在进行转
换;EOC=1,一次转换完成。
D7~D0:8位数字量输出端;
OE:输出允许,高电平有效,三态门打开。
VRE F(+)、VREF(-):正负基准电压输入端。
决定输入模拟量的范围。典型值分别为+5V和
0V。
ADDC、ADDB、ADDA:3位地址输入线。
ADDC ADDB
0
0
0
0
0
1
ADDA
ADDC
ADDB
ADDA 选择通道
0
IN0
1
IN1
0
IN2
0
1
1
1
0
0
1
0
1
IN3
IN4
IN5
1
1
1
1
0
1
IN6
IN7
二.ADC0809的工作时序
二、ADC0809与单片机的接口
1、查询方式
ALE
80C31
EA
WR
P2.7
RD
P3.5
P3.5
G
D7
:
:
D0
74LS373
P0
CK
D
OE
Q7
:
:
Q0
Q
Q
CLK
ADC
0809
IN7
C
B
A
D0~D7
+
+
1
START
ALE
OE
EOC
IN0
地址分配
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
0 ×
×
×
×
×
×
×
×
×
×
×
×
0
0
1
1
IN0~IN7的地址为:7FF8H~7FFFH
ALE=START= WR+P2.0
CPU写操作时 ALE=START=1,起动A/D转换
写:MOVX @DPTR,A
DPTR为通道地址,起启动作用
OE=RD+P2.0
CPU执行读操作时,则OE=1,0809送出转换后的数据
读:MOVX A,@DPTR
转换后数据送A中
0
1
时钟和转换时间
ALE为1/6 CPU时钟,若晶振为6MHZ,则ALE为
1MHz,二分频后使转换时钟CLK为500HZ,转换时
间100us左右。
D
CP
EOC
经反相后为
表示转换结束
,可作中断源接8031的INTX端
例:对8路模拟信号轮流采样一次,并依次把转换
结果存储到片内RAM以DATA为起始地址的连续单
元中。
MAIN:MOV R1,#DATA
;置数据区首地址
MOV DPTR,#7FF8H ;指向0通道
MOV R7,#08H
;置通道数
LOOP:MOVX @DPTR,A
;启动A/D转换
HER:JNB P3.5,HER
;查询A/D转换结束
MOVX A,@DPTR
;读取A/D转换结果
MOV @R1,A
;存储数据
INC DPTR
;指向下一个通道
INC R1
;修改数据区指针
DJNZ R7,LOOP
;8个通道转换完否?
……
2、中断方式
ALE
80C31
EA
G
D7
:
:
D0
74LS373
P0
CK Q
Q
D
OE
Q7
:
:
Q0
ADC
0809
IN7
C
B
A
D0~D7
WR
+
P2.7
RD
P3.3
P3.2
CLK
+
1
START
ALE
OE
EOC
IN0
ORG 0000H
SJMP MAIN
ORG 0003H
SJMP INT0
MAIN: MOV R1,#30H
MOV R7,#08H
SETB IT0
SETB EA
SETB EX0
MOV DPTR,#7FF8H
LOOP: MOVX @DPTR,A
HERE: SJMP HERE
;设立数据存储区指针
;设置8路采样计数值
;设置外部中断0为边沿触发方式
;CPU开放中断
;允许外部中断0中断
;送入口地址并指向IN0
;启动A/D转换,A的值无意义
;等待中断
INT0: MOVX
MOV
INC
INC
DJNZ
CLR
CLR
RETI
NEXT: MOVX
RETI
;读取转换后的数字量
;存入片内RAM单元
;指向下一模拟通道
;指向下一个数据存储单元
;8路未转换完,则继续
;已转换完,则关中断
;禁止外部中断0中断
;中断返回
;再次启动A/D转换
;中断返回
A,@DPTR
@R1,A
DPTR
R0
R7,NEXT
EA
EX0
@DPTR,A