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

[复制链接]
278|0
手机看帖
扫描二维码
随时随地手机跟帖
qwe890asd|  楼主 | 2017-12-22 12:51 | 显示全部楼层 |阅读模式
基于AD574模数转换的数据处理程序设计

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


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

455

主题

583

帖子

5

粉丝