1、引言
A/D 转换是单片机应用系统中非常重要的环节,AD574 以精度高、转换速度快、使用方便等特点被广泛应用于仪器仪表中,其分辨率为 12 位,转换时间为 15~35μs,芯片内包含高精度的参考电压源和时钟电路,不需要任何外接电路和时钟信号即可完成 A/D 转换功能。AD574 有单极性和双极性两种模拟信号转换方式,可实现 0~10V 或 0~20V 的转换,通过相应引脚的外接电路来实现。改变 AD574 相应管脚的电平可选择 A/D 转换方式(8 位或 12 位的转换),以及读取数据的方式(12 位并行输出或 8 位双字节输出)。
根据 AD574 的工作特性,其 12 位转换遵循左对齐输出格式,那么输出数据与信号的实际值相比大 16 倍,因此输出数据必须经过数据处理程序才能进行下一步的标度变换、滤波和显示等程序。由于转换的数据是从 0000H~0FFFH,数据从单字节到三字节,若均采用常用的多字节除法,势必延长运行时间。本文以单极性 0~10V 模拟信号,转换结果分高 8 位、低 4 位输出,单片机采用延时方式为例,介绍转换数据处理程序的设计方法,其算法简洁,运行时间短。
 
2、AD574 与单片机的接口电路
图(1)为 AD574 与单片机 89C52 的接口电路图,0~10V 的模拟信号经 10Vin 送 AD574,和 REFOUT、REFIN、BIPOFF 端连接的外电路为单极性输入方式,也可让 BIPOFF 悬空;转换结果分为高 8 位、低 4 位输出,故 12/8 端接地;AD574 启动、转换及结果输出时,要求 CE 为高电平,故 89C52 的 WR、RD 端通过与非门与 AD574 的 CE 端相连;CS、A0、R/C 在读取转换结果时保持相应的电平,故用 74LS373 锁存后接入,AD 转换器的地址是 FF00H。为了提高抗干扰能力,可在模拟电源 VCC 和 AG、VEE 和 AG 之间接入 10μF 的钽电容,数字电源 VL 和 DG 之间接入 0.01μF 的瓷片电容。
 
图 1   AD574 与单片机的接口电路
 
3、数据处理程序的编程
AD574 和单片机的接口程序包括根据相应的端口地址启动 A/D 转换、延时等待、分高 8 为和低 4 位读取以及数据处理几部分。根据接口电路和 AD574 的工作特性,启动 A/D 时要求 CS=0,A0=0,R/C=0,高 8 位地址没有使用,因此启动 A/D 的端口地址为 FF00H;读取高 8 位转换数据时要求,CS=0,A0=0,R/C=1,端口地址为 FF71H;低 4 位转换时要求 CS=0,A0=1,R/C=1,端口地址为 FF73H。等待 A/D 转换结束的延时程序采用循环程序即可。数据处理程序不是采用除法子程序,而是采用了逻辑运算,先处理高 8 位数据,通过与运算保留高 8 位数据的 D7~D4,D3~D0 置 0,再半字节交换指令即可得到转换数据高 8 位的真实值;低 4 位数据同样采用这样的算法和思路,使用与指令和半字节交换,最终把高 8 位数据的 D3~D0 位和低 4 位数据的 D7~D4 位合并,即是转换数据低 8 位的真实值。此算法简洁,思路清晰,运行速度快。
 
程序如下:
ADZH:MOVDPTR,#0FF00H;送 A/D 转换器地址
 
MOVX@DPTR,A;启动 A/D
 
LCALLDELAY;等待转换结束并设置采样速度
 
MOVDPTR,#0FF71H;送高 8 位数据的端口地址
 
MOVXA,@DPTR;读高 8 位数据
 
MOV60H,A;高 8 位数据存入 60H 单元
 
MOVDPTR,#0FF73H;送低 4 位数据的端口地址
 
MOVXA,@DPTR;读低 4 位数据
 
MOV61H,A;低 4 位数据存入 61H 单元
 
LCALLSJCL;调用数据处理子程序
 
……
 
SJCL:MOVA,#00H
 
MOVA,60H
 
ANLA,#0F0H
 
SWAPA
 
MOV64H,A;转换数据真实值的高 8
 
位存入 64H 单元
 
MOVA,60H
 
ANLA,#0FH
 
SWAPA
 
XCHA,61H
 
SWAPA
 
ANLA,#0FH
 
ORLA,61H
 
MOV65H,A;转换数据真实值的低 8
 
位存入 65H 单元
 
RE
 
4、结束语
本文介绍的 AD574 模数转换后数据处理的程序,已应用于温度、压力测量仪器的用户程序,经过现场测试,能够满足使用要求,性能稳定,效果好。该程序的算法简洁,思路清晰,运行速度快,在模拟信号的数据采集中发挥了优势。