基于AD574模数转换的数据处理程序设计

控制/MCU

1882人已加入

描述

  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的接口电路图[2],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模数转换后数据处理的程序,已应用于温度、压力测量仪器的用户程序,经过现场测试,能够满足使用要求,性能稳定,效果好。该程序的算法简洁,思路清晰,运行速度快,在模拟信号的数据采集中发挥了优势。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分