第 11章 MCS-51与 D/A转换器、
A/D转换器的接口非电物理量 (温度、压力、流量、速度等),须经传感器转换成模拟电信号(电压或电流),必须转换成数字量,才能在单片机中处理。
A/D转换器 ( ADC),模拟量 → 数字量的器件,
D/A转换器 ( DAC),数字量 → 模拟量的器件 。
数字量,也常常需要转换为模拟信号。
只需 合理选用商品化 的大规模 ADC,DAC芯片,了解引脚及功能以及与单片机的接口设计。
11.1 MCS-51与 DAC的接口
11.1.1 D/A转换器概述
1,概述输入:数字量,输出:模拟量 。
转换过程,送到 DAC的各位二进制数按其权的大小转换为相应的模拟分量,再把各模拟分量叠加,其和就是 D/A转换的结果。
使用 D/A转换器时,要注意区分,
* D/A转换器的输出形式 ;
* 内部是否带有锁存器。
(1) 输出形式两种输出形式,电压输出 形式与 电流输出 形式。
电流输出的 D/A转换器,如需模拟电压输出,可在其输出端加一个 I-V转换 电路。
( 2) D/A转换器内部是否带有锁存器
D/A转换需要一定时间,这段时间内 输入端的数字量应稳定,为此应在数字量输入端的前设置锁存器,
以提供数据锁存功能。根据芯片内是否带有锁存器,
可分为 内部无锁存器的 和 内部有锁存器 的两类。
* 内部无锁存器的 D/A转换器可与 P1,P2口 直接相接(因 P1口和 P2口的输出有锁存功能)
。但与 P0口 相接,需增加锁存器。
* 内部带有锁存器的 D/A转换器内部不但有锁存器,还包括地址译码电路,有的还有双重或多重的数据缓冲电路,可与 MCS-51的 P0口直接相接。
2.主要技术指标
(1)分辨率输入给 DAC的 单位数字量变化 引起的模拟量输出的变化,通常 定义为输出满刻度值与 2n之比。显然,二进制位数越多,分辨率越高。
例如,若满量程为 10V,根据定义则分辨率为
10V/2n。 设 8位 D/A转换,即 n=8,分辨率为 10V/2n
=39.1mV,该值占满量程的 0.391%,用符号 1LSB表示。
同理,10位 D/A,1 LSB=9.77mV=0.1% 满量程
12位 D/A,1 LSB=2.44mV=0.024% 满量程根据对 DAC分辨率的需要,来选定 DAC的位数。
(2)建立时间描述 DAC转换快慢的参数,表明转换速度。
定义,为从输入数字量到输出达到终值误差 (1/2)LSB
(最低有效位 )时所需的时间。 电流输出时间较短,电压输出的,加上完成 I-V转换的时间,因此建立时间要长一些。快速 DAC可达 1?s以下。
(3)精度理想情况,精度与分辨率基本一致,位数越多精度越高。但由于电源电压、参考电压、电阻等各种因素存在着误差。 严格讲精度与分辨率并不完全一致。
位数相同,分辨率则相同,但相同位数的不同转换器精度会有所不同。 例如,某型号的 8位 DAC精度为
0.19%,另一型号的 8位 DAC精度为 0.05%。
11.1.2 MCS-51与 8位 DAC0832的接口
1,DAC0832芯片介绍
(1)DAC0832的特性美国国家半导体公司产品,具有两个输入数据寄存器的 8位 DAC,能直接与 MCS-51单片机相连。主要特性如下:
* 分辨率为 8位;
* 电流输出,稳定时间为 1?s;
* 可双缓冲输入、单缓冲输入或直接数字输入;
* 单一电源供电( +5~ +15V);
( 2) DAC0832的引脚及逻辑结构引脚:
DAC0832的逻辑结构如下:
引脚功能:
DI0~ DI7,8位数字信号输入端
CS*,片选端。
ILE,数据锁存允许控制端,高电平有效。
WR1*,输入寄存器写选通控制端。当 CS*=0,ILE=1、
WR1*=0时,数据信号被锁存 在 输入寄存器中。
XFER*,数据传送控制。
WR2*,DAC寄存器写选通控制端。当 XFER*=0,WR2* =0
时,输入寄存器状态传入 DAC寄存器中。
IOUT1,电流输出 1端,输入数字量全,1” 时,IOUT1最大,输入数字量全为,0” 时,IOUT1最小。
IOUT2,D/A转换器电流输出 2端,IOUT2+IOUT1=常数。
Rfb,外部反馈信号输入端,内部已有反馈电阻 Rfb,
根据需要也可外接反馈电阻。
Vcc,电源输入端,可在 +5V~+15V范围内。
DGND,数字信号地。
AGND,模拟信号地。
,8位输入寄存器,用于存放 CPU送来的数字量,使输入数字量得到缓冲和锁存,由 LE1*控制;
,8位 DAC寄存器,存放待转换的数字量,由 LE2*控制;
,8位 D/A转换电路,由 T型电阻网络和电子开关组成,
T
型电阻网络输出和数字量成正比的模拟电流。
2.DAC的应用接口与 DAC的具体应用有关。
(1) 单极性电压输出单极性模拟电压输出,可采用图 11-5或图 11-9所示接线。输出电压 Vout与输入数字量 B的关系,
Vout = - B*( VREF/256)
式中,B=b7·27+ b6·26+…… + b1·21+ b0·20;
VREF/256为一常数。
B为 0时,Vout也为 0,输入数字量为 255时,Vout为最大值,输出电压为单极性。
( 2)双极性电压输出双极性电压输出,采用图 11-3接线:
Vout =( B- 128) *( VREF/128)
由上式,在 选 用 +VREF时,( 1)若输入数字量 b7= 1,
则 Vout为正;( 2)若输入数字量 b7= 0,则 Vout为负。
在选用 -VREF时,Vout与 +VREF时极性相反。
( 3) DAC用作程控放大器
DAC还可作程控放大器,见图 11-4。
DAC的输出和输入之间的关系,
Vout = -(Vin/B) *256
256/B看作 放大倍数 。但输入数字量 B不得为,0” 。
3,MCS-51与 DAC0832的接口电路
(1)单缓冲方式
DAC0832内部的两个数据缓冲器有 一个处于直通方式,
另一个处于受控的锁存方式。
在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步的情况下,
可采用单缓冲方式。
单缓冲方式的接口如图 11-5:
由图,WR2*和 XFER*接地,故 DAC0832的,8位 DAC
寄存器,(图 11-2) 处于 直通方式 。,8位输入寄存器
” 受 CS*和 WR1*端控制,且由译码器输出端 FEH送来
(也可由 P2口的某一根口线来控制)。因此,8031执行如下两条指令就可在 WR1*和 CS*上产生低电平信号,使
0832接收 8031送来的数字量。MOV R0,#0FEH ; DAC地址 FEH→R0
MOVX @R0,A ; WR*和译码器 FEH输出端有效现举例说明 DAC0832单缓冲方式的应用。
例 11-1 DAC0832用作波形发生器。分别写出产生 锯齿波、三角波 和 矩形波 的程序。
(1) 锯齿波的产生
ORG 2000H
START:MOV R0,#0FEH ; DAC地址 FEH→ R0
MOV A,#00H ; 数字量 → A
LOOP,MOVX @R0,A ; 数字量 → D/A转换器
INC A ; 数字量逐次加 1
SJMP LOOP
输入数字量从 0开始,逐次加 1,为 FFH时,加 1则清 0,模拟输出又为 0,然后又循环,输出锯齿波,如图 11-6。
每一上升斜边分 256个小台阶,每个小台阶暂留时间为执行后三条指令所需要的时间 。
(2) 三角波的产生
ORG 2000H
START,MOV R0,#0FEH
MOV A,#00H
UP,MOVX @R0,A ; 三角波上升边
INC A
JNZ UP
DOWN,DEC A ; A=0时再减 1又为 FFH
MOVX @R0,A
JNZ DOWN ; 三角波下降边
SJMP UP
(3) 矩形波的产生
ORG 2000H
START,MOV R0,#0FEH
LOOP,MOV A,#data1
MOVX @R0,A ; 置矩形波上限电平
LCALL DELAY1 ; 调用高电平延时程序
MOV A,#data2
MOVX @R0,A ; 置矩形波下限电平
LCALL DELAY2 ; 调用低电平延时程序
SJMP LOOP ; 重复进行下一个周期
DELAY1,DELAY2为两个延时程序,决定矩形波高、
低电平时的持续 时间 。 频率也可采用延时长短来改变。
( 2)双缓冲方式多路 同步输出,必须采用双缓冲同步方式。接口电路如图 11-9:
1#DAC0832因和译码器 FDH相连,占有两个 端口地址
FDH和 FFH。
2#DAC0832的两个 端口地址 为 FEH和 FFH。 其中,
FDH和 FEH分别为 1#和 2#DAC0832的数字量输入控制端口地址,而 FFH为启动 D/A转换的端口地址。
图 11-9中 DAC输出的 VX和 VY信号要同步,控制 X-Y
绘图仪绘制的曲线光滑,否则绘制的曲线是阶梯状。
控制程序如下:
例 11-2 内部 RAM中两个长度为 20的数据块,起始地址为分别为 addr1和 addr2,编写能把 addr1和 addrr2中数据 从 1#和 2#DAC0832同步输出 的程 序。 addr1和 addr2
中的数据,为绘制曲线的 X,Y坐标点。
DAC0832各端口地址:
FDH,1#DAC0832数字量输入控制端口
FEH,2#DAC0832数字量输入控制端口
FFH,1#和 2#DAC0832启动 D/A转换端口工作寄存器 0区的 R1指向 addr1; 1区的 R1指向 addr2;
0区的 R2存放数据块长度; 0区和 1区的 R0指向 DAC端口地址。程序为:
ORG 2000H
addr1 DATA 20H ; 定义存储单元
addr2 DATA 40H ; 定义存储单元
DTOUT,MOV R1,#addr1 ; 0区 R1指向 addr1
MOV R2,#20 ; 数据块长度送 0区 R2
SETB RS0 ; 切换到工作寄存器 1区
MOV R1,#addr2 ; 1区 R1指向 addr2
CLR RS0 ; 返回 0区
NEXT,MOV R0,#0FDH ; 0区 R0指向 1#DAC0832数;字量控制端口
MOV A,@R1 ; addr1中数据送 A
MOVX @RO,A ; addr1中数据送 1#DAC0832
INC R1 ; 修改 addr1指针 0区 R1
SETB RS0 ; 转 1区。
MOV R0,#0FEH ; 1区 R0指向 2#DAC0832数字量; 控制端口
MOV A,@R1 ; addr2中数据送 A
MOVX @R0,A ; addr2中数据送 2#DAC0832
INC R1 ; 修改 addr2指针 1区 R1
INC R0 ; 1区 R0指向 DAC的启动 D/A转换端口
MOVX @R0,A ; 启动 DAC进行转换
CLR RS0 ; 返回 0区
DJNZ R2,NEXT ; 若未完,则跳 NEXT
LJMP DTOUT ; 若送完,则循环
END
11.1.3 MCS-51与 12位 DAC1208的接口
8位 DAC分辨率不够,可采用 12位 DAC。 常用的有
DAC1208系列与 DAC1230系列。
1.DAC1208系列的结构引脚及特性双缓冲结构。不是用一个 12位锁存器,而是用一个 8位锁存器和一个 4位锁存器,以便和 8位数据线相连。
引脚功能:
CS*,片选信号。
WR1*,写信号,低电平有效
BYTE1/BYTE2*,字节顺序控制信号。 1,开启 8位和 4位两个锁存器,将 12位全部打入锁存器。 0,仅开启 4位输入锁存器。
XFER*,传送控制信号,与 WR2*信号结合,将输入锁存器中的 12位数据送至 DAC寄存器。
WR2*,辅助写。该信号与 XFER*信号相结合,当同为低电平时,把锁存器中数据打入 DAC寄存器。当为高电平时,DAC寄存器中的数据被锁存起来。
DI0-DI11:12位数据输入 。
IOUT1,D/A转换电流输出 1。当 DAC寄存器全 1时,输出电流最大,全 0时输出为 0
IOUT2,D/A转换电流输出 2。 IOUT1+IOUT2=常数
RFB,反馈电阻输入
VREF,参考电压输入
VCC,电源电压
DGND,AGND,数字地和模拟地主要特性:
( 1)输出电流稳定时间,1?s;
( 2) 基准电压,VREF= -10~ +10V;
( 3) 单工作电源,+5~ +15V;
( 4) 低功耗,20mW。
2,接口电路设计及软件编程
(1) 接口电路设计
8031与 DAC1208转换器的接口如图 11-11。
高 8位输入寄存器端口地址,4001H;
低 4位寄存器端口地址,4000H;
DAC寄存器的端口地址,6000H。
由于 8031的 P0.0分时复用,所以用 P0.0与 DAC1208
的 BYTE1/BYTE2*相连时,要有锁存器 74LS377。
外接 AD581做 10V基准电压源。模拟电压输出接为双极性。
采用双缓冲方式。先送高 8位数据 DI11~ DI4,再送入低 4位数据 DI3~DI0,而不能按相反的顺序传送。如先送低 4位后送高 8位,结果会不正确。
在 12位数据分别正确地进入两个输入寄存器后,再打开 DAC寄存器。
单缓冲方式不合适,在 12位数据不是一次送入的情况下,边传送边转换,会使输出产生错误的瞬间毛刺。
图中 DAC1208的电流输出端外接两个运放 LF356,其中 运放 1用作 I/V转换,运放 2实现 双极性电压输出 ( -10V
~+10V)。
电位器 W1定零点,电位器 W2定满度。
2.软件编程设 12位数字量存放在内部 RAM的两个单元,12位数的 高 8位 在 DIGIT单元,低 4位 在 DIGIT+1单元的低 4位 。
按图 11-11的电路将 12位数据送到 DAC1208去转换,D/A
转换程序如下:
MOV DPTR,#4001H ; 8位输入寄存器地址
MOV R1,#DIGIT ; 高 8位数据地址
MOV A,@R1 ; 取出高 8位数据
MOVX @DPTR,A ; 高 8位数据送 DAC1208
DEC DPL ; DPTR修改为 4位输入寄;存器地址
INC R1 ; 低 4位数据地址
MOV A,@R1 ; 取出低 4位数据
MOVX @DPTR,A ; 低 4位数据送 DAC1208
MOV DPTR,#6000H ; DAC寄存器地址
MOVX @DPTR,A ; 12位同步输出完成 12位 D/A转换
11.1.4 MCS-51与 12位 DAC1230系列的接口
DAC1230内部结构和应用特性与 DAC1208完全相似,
只不过 DAC1230系列的低 4位数据线在片内与高 4位数据线相连,在片外表现为 8位数据线,故比 DAC1208少四个引脚,20脚 DIP封装。
内部结构及引脚如图 11-12。
DAC1230与 8位单片机的接口比 DAC1208还要简单;
但 DAC1208系列与 16位单片机连接更方便 。
11.2 MCS-51与 ADC的接口
11.2.1 A/D转换器概述模拟量转换成数字量,便于计算机进行处理。
随着超大规模集成电路技术的飞速发展,大量结构不同、性能各异的 A/D转换芯片应运而生。
1,A/D转换器的分类根据转换原理可将 A/D转换器分成 两大类 ( 1) 直接型 A/D转换器 ( 2) 间接型 A/D转换器。
A/D转换器的分类如下,
目前使用较广泛的有,逐次比较式转换器、双积分式转换器,Σ -Δ 式转换器和 V/F转换器。
逐次比较型,精度、速度和价格都适中,是最常用的 A/D转换器件。
双积分型,精度高、抗干扰性好、价格低廉,但转换速度慢,得到广泛应用。
Σ -Δ 型,具有积分式与逐次比较式 ADC的双重优点。
对工业现场的串模干扰具有较强的抑制能力,不亚于双积分 ADC,它比双积分 ADC的转换速度快,与逐次比较式 ADC相比,有较高的信噪比,分辨率高,线性度好,
不需采样保持电路。因此,Σ -Δ 型得到重视。
V/F转换型,适于转换速度要求不太高,远距离信号传输。
2,A/D转换器的主要技术指标
(1)转换时间和转换速率
A/D完成一次转换所需要的时间。转换时间的倒数为转换速率。
并行式 转换时间最短约为 20~50ns,速率为 50~20M
次 /s( 1M=106); 逐次比较式 转换时间约为 0.4?s,速率为 2.5M次 /s。
(2) 分辨率习惯用输出二进制位数或 BCD码位数表示。 例如
AD574 A/D转换器,输出二进制 12位,即用 212个数进行量化,其分辨率为 1LSB,用百分数表示 1/212=0.24‰ 。
又如 双积分式输出 BCD 码的 A/D转换器 MC14433,其分辨率为三位半。若满字位为 1999,用百分数表示其分辨率为 1/1999× 100%=0.05%。
量化过程引起的误差为 量化误差,是由于有限位数字对模拟量进行量化而引起的误差。量化误差理论上规定为 1个单位分辨率,提高分辨率可减少量化误差。
( 3)转换精度定义为一个实际 ADC与一个理想 ADC在量化值上的差值。可用绝对误差或相对误差表示。
3,A/D转换器的选择按输出代码的有效位数分,8位,10位,12位等。
按转换速度分为 超高速 ( ≤1 ns),高速 ( ≤1?s)
中速 ( ≤1 ms),低速 ( ≤1 s) 等。
为适应系统集成需要,将多路转换开关、时钟电路、基准电压源、二 /十进制译码器和转换电路集成在一个芯片内,为用户提供方便。
( 1) A/D转换器位数的确定系统总精度涉及的环节较多,传感器变换精度、
信号预处理电路精度和 A/D转换器及输出电路、控制机构精度,还包括软件控制算法。
A/D转换器的位数至少要比系统总精度要求的最低分辨率高 1位,位数应与其他环节所能达到的精度相适应。只要不低于它们就行,太高无意义,且价高。
8位以下,低分辨率,9~12位,中分辨率,13位以上,高分辨率 。
( 2) A/D转换器转换速率的确定从启动转换到转换结束,输出稳定的数字量,需要一定的时间,这就是 A/D转换器的转换时间。
低速,转换时间从几 ms到几十 ms 。
中速,逐次比较型的 A/D转换器的转换时间可从几?s~
100?s左右。
高速,转换时间仅 20~100ns。 适用于雷达、数字通讯、
实时光谱分析、实时瞬态纪录、视频数字转换系统等。
如用转换时间为 100?s的集成 A/D转换器,其转换速率为 10千次 /秒。根据采样定理和实际需要,一个周期的波形需采 10个点,最高也只能处理 1kHz的信号。把转换时间减小到 10?s,信号频率可提高到 10kHz。
( 3)是否加采样保持器直流和变化非常缓慢的信号可不用采样保持器。
其他情况都要加采样保持器。
根据分辨率、转换时间、信号带宽关系,可得到如下数据作为是否要加采样保持器的参考:如果
A/D转换器的转换时间是 100ms,ADC是 8位、没有采样保持器时,信号的允许频率是 0.12Hz; 如果 ADC是
12位,该频率为 0.0077Hz。 如果转换时间是 100?s,
ADC是 8位时,该频率为 12Hz,12位时是 0.77Hz。
( 4)工作电压和基准电压选择使用单一 +5V工作电压的芯片,与单片机系统共用一个电源就比较方便。
基准电压源是提供给 A/D转换器在转换时所需要的参考电压,在要求较高精度时,基准电压要单独用高精度稳压电源供给。
11.2.2 MCS-51与 ADC 0809( 逐次比较型)的接口
1,ADC0809引脚及功能逐次比较式 8路模拟输入,8位输出的 A/D转换器。
引脚如图 。
共 28脚,双列直插式封装。主要引脚功能如下:
(1)IN0~IN7,8路模拟信号输入端。
(2)D0~D7,8位数字量输出端。
(3)C,B,A,控制 8路模拟通道的切换,C,B,A=
000~111分别对应 IN0~IN7通道。
(4)OE,START,CLK,控制信号端,OE为输出允许端,
START为启动信号输入端,CLK为时钟信号输入端。
(5)VR(+)和 VR(-),参考电压输入端。
2,ADC0809结构及转换原理结构如图 11-15。
0809完成 1次转换需 100?s左右,可对 0~5V信号进行转换。
3.MCS-51与 ADC0809的接口单片机如何来控制 ADC?
首先用指令选择 0809的一个模拟输入通道,当执行 MOVX @DPTR,A时,单片机的 WR*信号有效,产生一个启动信号给 0809的 START脚,对选中通道转换。
转换结束后,0809发出转换结束 EOC信号,该信号可供查询,也可作为向单片机发出的中断请求信号 ;当执行指令,MOVX A,@DPTR,单片机发出 RD*信号,加到
OE端高电平,把转换完毕的数字量读到 A中。
查询和中断控制两种工作方式。
(1)查询方式
0809与 8031单片机的接口如图 11-16。
ALE信号经 D触发器二分频作为时钟信号,如时钟频率为 6MHz,则 ALE脚的输出频率为 1MHz,二分频后为 500kHz,符合 0809对时钟频率的要求。
0809具有输出三态锁存器,8位数据输出引脚可直接与数据总线相连。
地址译码引脚 C,B,A分别与地址总线 A2,A1,A0
相连,以选通 IN0~IN7中的一个。 P2.7( A15) 作为片选信号,在启动 A/D转换时,由 WR*和 P2.7控制 ADC的地址锁存和转换启动,由于 ALE和 START连在一起,因此
0809在锁存通道地址的同时,启动并进行转换。
在读取转换结果时,用低电平的读信号和 P2.7脚经 1级或非门后,产生的正脉冲作为 OE信号,用以打开三态输出锁存器 。
下面程序采用软件延时的方式,对 8路模拟信号轮流采样一次,并依次把结果转储到数据存储区的转换程序。
MAIN,MOV R1,#data ;置数据区首地址
MOV DPTR,#7FF8H;端口地址送 DPTR,P2.7=0,; 且指向通道 IN0
MOV R7,#08H ;置转换的通道个数
LOOP,MOVX @DPTR,A ;启动 A/D转换
MOV R6,#0AH ;软件延时,等待转换结束
DELAY,NOP
NOP
NOP
DJNZ R6,DELAY
MOVX A,@DPTR ;读取转换结果
MOV @R1,A ;存储转换结果
INC DPTR ;指向下一个通道
INC R1 ;修改数据区指针
DJNZ R7,LOOP ;8个通道全采样完否?未完则继续
……
(2)中断方式只需将图 11-16中的 EOC脚经一非门连接到 8031的
INT1*脚即可。转换结束时,EOC发出一个脉冲向单片机提出中断申请,单片机响应中断请求,由外部中断
1的中断服务程序读 A/D结果,并启动 0809的下一次转换,外中断 1采用跳沿触发。
程序如下:
INIT1,SETB IT1 ; 外部中断 1初始化编程
SETB EA ; CPU开中断
SETB EX1 ; 选择外中断为跳沿触发方式
MOV DPTR,#7FF8H; 端口地址送 DPTR
MOV A,#00H ;
MOVX @DPTR,A ; 启动 0809对 IN0通道转换
… ; 完成其他的工作中断服务程序,
PINT1,MOV DPTR,#7FF8H ; A/D结果送内部 RAM单元 30H
MOVX A,@DPTR
MOV 30H,A
MOV A,#00H ; 启动 0809对 IN0的转换
MOVX @DPTR,A;
RETI
11.2.3 MCS-51与 AD574( 逐次比较型)的接口
8位分辨率的 ADC常常不够,必须选择分辨率大于 8
位的芯片,如 10位,12位,16位 A/D转换器。
12位 A/D转换器 AD574。
1.AD574简介
12位逐次比较型 A/D转换器。 转换时间为 25?s,转换精度为 0.05%,片内有三态输出缓冲电路,可直接与各种 8位或 16位的微处理器相连,而无须附加逻辑接口电路,且能与 CMOS及 TTL电平兼容。
AD574为 28脚双列直插式封装,其引脚如图 11-17。
引脚的功能如下:
CS*,片选信号端。
CE,片启动信号。
R/C*,读出 /转换控制信号。
12/8*,数据输出格式选择。
1,12条数据线同时输出转换结果,
0,转换结果为两个单字节输出,即只有高 8位或低 4位有效。
A0,字节选择控制线。分 转换期间、读出期间在转换期间,
0,进行 12位转换(转换时间为 25?s);
1,进行 8位转换(转换时间为 16?s) 。
在读出期间:
结果的高 8位 结果的低 4位 +4位尾 0
0:高 8位数据有效;
1:低 4位数据有效,中间 4位为,0”,高 4位为三态。
因此当两次读出 12位数据时,12位数据遵循 左对齐原则,如下所示:
上述五个控制信号组合的真值表如表 11-1所示,
CE CS* R/C* 12/8* A0 操 作
0
X
1
1
1
1
1
X
1
0
0
0
0
0
X
X
0
0
1
1
1
X
X
X
X
+5V
地地
X
X
0
1
X
0
1
无操作无操作初始化为 12位转换初始化为 8位转换允许 12位并行输出允许高 8位输出允许低 4位 +4位尾 0输出表 11-1 AD574控制真值表
STS,转换结束状态引脚。
转换完成时为低电平。 可作为状态信息被 CPU查询,
也可用它的下跳沿向 CPU发出中断申请,通知 A/D转换已完成,可读取转换结果。
2,AD574的工作特性工作状态由 CE,CS*,R/C*,12/8*,A0五个 控制信号决定,当 CE=1,CS*=0同时满足,才处于 转换 状态 。
AD574处于工作状态时,R/C*=0,启动 A/D转换; R/C*=1
为数据读出。 12/8*和 A0端用来控制转换字长和数据格式。 A0=0按 12位 转换方式启动转换; A0=1按 8位 转换方式启动转换。
当 AD574处于 数据读出( R/C*=1) 状态时,A0和 12/8*
成为数据输出格式控制端。 12/8*=1对应 12位并行输出 ;
12/8*=0对应 8位的双字节输出 。其中 A0=0时输出高 8位。
A0=1时输出低 4位,并以 4个 0补足尾随的 4位。
注意,12/8*端与 TTL电平不兼容,故只能直接接 +5V
或地。另外 A0在数据输出期间不能变化。
3,AD574的单极性和双极性输入特性图 11-18(a)为 单极性转换电路,可实现,0~ 10V
或 0~ 20V的转换。
图 11-18(b)为 双极性转换电路,可实现,-5~ +5V或
-10~ +10V的转换。
4,MCS-51与 AD574的接口设计见图 11-19,AD574片内有时钟,无须外加。
单极性方式,对 0~ 10V或 0~ 20V模拟信号进行转换。
结果的高 8位从 DB11~ DB4输出,低 4位从 DB3~ DB0输出
,并直接和单片机的数据总线相连。如遵循左对齐原则,DB3~ DB0应接单片机数据总线的高半字节。
为实现启动 A/D转换和结果读出,片选信号由地址线 A1提供。
读结果时,A1=0; CE信号由单片机的 WR*和 A7经一级或非门提供,R/C*由 RD*和 A7经一级或非门产生,A7应为低电平。输出状态信号 STS接 P3.2,供单片机查询 A/D
转换是否结束。 12/8*端接 +5V,AD574的 A0由地址总线
A0控制,实现全 12位转换,并将 12位数据分两次送入数据总线上。
完成一次 A/D转换的程序如下:
(假定结果高 8位在 R2中,低 4位在 R3中,按左对齐原则):
MAIN,MOV R0,# 7CH ; 选择 AD574,并令 A0=0
MOVX @R0,A ; 启动 A/D转换
LOOP,NOP
JB P3.2,LOOP ; 查询转换是否结束
MOVX A,@R0 ; 读取高 8位
MOV R2,A ; 存入 R2中
MOV R0,# 7DH ; 令 A0=1
MOVX A,@R0 ; 读取低 4位地
MOV R3,A ; 存入 R3中
11.2.4 MCS-51与 A/D转换器 MC14433( 双积分型)
的接口双积分型由于两次积分时间比较长,所以转换速度慢,但 精度可以做得比较高 ;对周期变化的干扰信号积分为零,抗干扰性能也较好。
常用的有 3?位 双积分 A/D转换器 MC14433( 精度相当于 11位二进制数)和 4?位 双积分 A/D转换器 ICL7135
( 精度相当于 14位二进制数)。
1,MC14433A/D转换器简介
MC14433是 3?位双积分型 A/D转换器,优点,精度高、抗干扰性能好等,缺点,转换速度慢,约 1~10次
/秒。与国内产品 5G14433完全相同,可互换。
被转换电压量程为 199.9mV或 1.999V。 转换完的数据以 BCD码的形式分四次送出。
( 1) MC14433的引脚功能说明
MC14433A/D转换器引脚如图 11-20:
各引脚的功能如下:
( 1)电源及共地端
VDD,主工作电源 +5V。
VEE,模拟部分的负电源端,接 -5V。
VAG,模拟地端。
VSS,数字地端。
VR,基准电压输入端。
( 2)外接电阻及电容端
R1,积分电阻输入端,转换电压 VX=2V时,
R1=470Ω ; VX=200mV时,R1=27kΩ 。
C1,积分电容输入端,一般取 0.1?F。
R1/C1,R1与 C1的公共端。
CLKI,CLKO,外接振荡器时钟调节电阻 RC,RC一般取 470Ω 左右。
( 3)转换启动 /结束信号端
EOC,转换结束信号输出端,正脉冲有效。
DU,启动新的转换,若 DU与 EOC相连,每当 A/D转换结束后,自动启动新的转换。
( 4)过量程信号输出端
OR*,当 |VX|< VR,输出低电平。
( 5)位选通控制端
DS4~DS1,分别为个、十、百、千位输出的选通脉冲,DS1对应千位,DS4对应个位 。每个选通脉冲宽度为 18个时钟周期,两个相应脉冲之间间隔为 2个时钟周期。如图 11-21所示
( 6) BCD码输出端
Q0~ Q3,BCD码数据输出线。 Q3为最高位,Q0为最低位。
当 DS2,DS3和 DS4选通期间,输出三位完整的 BCD
码数,但在 DS1( 千位)选通期间,输出端 Q0~ Q3除了表示个位的 0或 1外,还表示被转换电压的正负极性
( Q2=1为正)、欠量程还是过量程,具体含义如表 11
-2所示。
表 11-2 DS1选通时 Q3~ Q0表示的结果
Q3 Q2 Q1 Q0 表 示 结 果
1 × × 0
0 × × 0
× 1 × 0
× 0 × 0
0 × × 1
1 × × 1
千位数为 0
千位数为 1
结果为正结果为负输入过量程输入欠量程由表 11-2可知:
( 1) 在 Q0=“0”的条件下,Q3=0表示千位( 1/2位)
为 1,“Q3=1”表示千位为 0。
( 2) Q2表示极性,“1”为正极性,“0”为负极性。
( 3) Q0=“1”表示过量程或欠量程,Q3=0 表示过量程,
Q3=1表示欠量程。
2,MC14433与 8031单片机的接口如图 11-12,MC1403( 与 5G1403相同)为 +2.5V精密基准源。 DU端与 EOC端相连,即选择连续转换方式,每次转换结果都送至输出寄存器。 EOC,转换结束输出标志。
读取 A/D转换结果可采用中断方式或查询方式。采用中断方式时,EOC端与 8031外部中断输入端 INT0*
或 INT1*相连。采用查询方式 EOC端可与任一 I/O口线相连。
若用中断方式读取结果,应选用跳沿触发方式。
如果转换结果存放到 8031内部 RAM的 20H,21H单元中,
存放格式如图 11-23所示。
初始化程序开放 CPU中断,允许外部中断 1中断请求,置外部中断 1为跳沿触发方式。
每次 A/D转换结束,都向 CPU请求中断,CPU响应中断,执行中断服务程序,读取 A/D转换的结果。
程序如下:
ORG 001BH
LJMP PINT1 ; 跳外部中断 1的中断服务程序
ORG 0100H
INITI,SETB IT1 ; 选择外中断 1为跳沿触发方式
MOV IE,# 84H ; CPU开中断,允许外部中断 1
……
PINT1,MOV A,P1 ; 外部中断 1服务程序
JNB Acc.4,PINT1; 等待 DS1选通信号的到来
JB Acc.0,Per ; 是否过、欠量程,是则转向 Per处理
JB Acc.2,PL1 ; 判结果极性,为正,跳 PL1
SETB 07H ; 结果为负,符号位 07H置 1
AJMP PL2 ;
PL1,CLR 07H ; 结果为正,符号位清 0
PL2,JB Acc.3,PL3 ; 千位为 0,跳 PL3
SETB 04H ; 千位为 1,把 04H位置 1
AJMP PL4 ;
PL3,CLR 04H ; 千位为 0,把 04H位清 0
PL4,MOV A,P1 ;
JNB Acc.5,PL4 ; 等待百位的选通信号 DS2
MOV R0,# 20H ; 指针指向 20H单元
XCHD A,@R0 ; 百位 →20 H单元低 4位
PL5,MOV A,P1;
JNB Acc.6,PL5 ; 等待十位数的选通信号 DS3的到来
SWAP A ; 读入十位,高低 4位交换
INC R0 ; 指针指向 21H单元
MOV @R0,A ; 十位数的 BCD码送入 21H的高 4位
PL6,MOV A,P1
JNB Acc.7,PL6 ; 等待个位数选通信号 DS4的到来;
XCHD A,@R0 ; 个位数送入 21H单元的低 4位
RETI
PEr,SETB 10H ; 置过量程、欠量程标志
RETI ; 中断返回
11.3 MCS-51与 V/F转换器的接口在既要求数据 长距离传输 又要求精确度较高的场合,可使用 V/F转换器代替 A/D器件。
V/F转换器是 把电压信号转变为频率信号 的器件,
有良好的精度、线性,此外,电路简单,外围元件性能要求不高,适应环境能力强,转换速度不低于一般的双积分型 A/D器件,且价格低,因此 V/F转换技术广泛用于非快速 A/D过程中。
11.3.1 用 V/F转换器实现 A/D转换的原理工作原理:
把 V/F转换器输出的频率信号作为计数脉冲,进行定时计数,这样计数器的计数值与 V/F转换器输出的脉冲频率信号之间的关系为:
f=D/T
D:计数值,T:计数时间,就可求出 V/F转换器的输出频率,从而知道输入电压 V,这就实现了 A/D转换。
定时 /计数器可用单片机内部的定时器 /计数器,
也可使用外部扩展的定时器 /计数器,用单片机把计数值取入内存即可进行数据处理。
11.3.2 常用 V/F转换器 LMX31简介常用 LMX31系列 。
LMX31系列包括 LM131/LM231/LM331,适用于 A/D转换器、高精度 F/V变换器、长时间积分器、线性频率调制或解调器等电路。
1.主要特性
( 1)频率范围,1~ 100KHz
( 2) 低的非线性:± 0.01%
( 3)单电源或双电源供电
( 4)单电源供电电压为+ 5V时,可保证转换精度
( 5)温度特性:最大± 50ppm/?C
( 6) 低功耗,Vs=5V时为 15mw
有两种封装形式,如图 11-24所示。
2.电特性参数:
( 1)电源电压:+ 15V
( 2) 输入电压范围,0~ 10V
( 3) 输出频率,10Hz~ 11KHz
( 4) 非线性失真,± 0.03%
3,LMX31的 V/F转换外部接线
LMX31的 V/F转换外部接线如图 11-25所示。
11.3.3 V/F转换器与 MCS-51单片机接口被测电压转换为与其成比例的频率信号后送入单片机进行处理。
( 1)直接与 MCS-51接口。接口简单,频率信号接入单片机的定时器 /计数器输入端即可。如下图。
( 2)在一些电源干扰大、模拟电路部分容易对单片机产生电气干扰等恶劣环境中,可采用光电隔离的方法使
V/F转换器与单片机无电信号联系,如图 11-27。
( 3)与单片机之间距离较远时需要采用驱动电路以提高传输能力。可采用串行通讯的驱动器和接收器来实现。
例如使用 RS-422的驱动器和接收器时,允许最大传输距离为 120m,如图 11-28所示。其中 SN75174/75175是
RS-422标准的四差分线路驱动 /接收器。
( 4)采用光纤或无线传输时,需配以发送、接收装置。
如图 11-29、图 11-30所示。
11.3.4 LM331应用举例本例使用 LM331和 8031的内部定时器构成 A/D转换电路,具有使用元件少、成本低、精度高的特点。
1.接口电路
MCS-51与 LM331的接口电路如图 11-31:
V/F转换器最大输出频率为 10KHz,输入电压为 0~
10V。 由于 V/F输出频率较低,因此采用测周期的方法。
V/F输出的频率经 D触发器二分频后接至 INT0*,作为 T0计数信号。 T0置定时器方式 1,将 TMOD.3( T0的
GATE位)置 1,就由 INT0*和 TR0来共同决定计数器是否工作。
2.软件设计包括 初始化 和 计数 两部分。
初始化,T0为方式 1定时,并将 GATE位置 1。
计数,首先判断 INT0*电平,为低时,打开 TR0位准备计数;变为高时,启动计数,再为低时停止计数并清 TR0,读出数据,将 T0的时间常数寄存器 TH0,TL0
清 0,准备下一次计数。程序如下:
BEGIN,NOP
MOV TMOD,# 09H ; 定时器 T0初始化
MOV TL0,# 00H
MOV TH0,# 00H
LOOP1,NOP
JB P3.2,LOOP1
SETB TR0
LOOP2,NOP
JNB P3.2,LOOP2
LOOP3,NOP
JB P3.2,LOOP3
CLR TR0
MOV B,TH0 ; 高位? B
MOV A,TL0 ; 低位? A
MOV TL0,# 00H
MOV TH0,# 00H
AJMP LOOP1
本程序将计数结果高位存入 B,低位存入 A,以便后期处理。