W78E58与MAX1247/MAX525接口及软件设计

2006-05-07 15:49:40来源: 互联网

单片机构成的4入、4出A/D和D/A测控系统,并给出详细的编程软件、使用者可以将该软件直接嵌入自己的应用系统中。

接口 单片机 接口软件

MAX1247是4通道模拟输入12位串行输出A/D转换器,MAX525是4通道模拟输出12位串行输入D/A转换器。这两种芯片特性有很多相似之处,可以和单睡机构成一个完整的4通道测控系统。由于是串入、串出,解决了单片机口线资源不足的缺点,适当的选择外围电路,能取代工控机组成的测控系统。

一、两种芯片的主要特性

(1)单电源供电,MAX1247电源从+2.7~+5.25V,MAX525为+5V。

(2)MAX1247为4通道单端或2通道差分模拟信号输入。MAX525为单通道二进制数据输入、4通道模拟信号输出

(3)接口标准与SPI、QSPI或Microwire兼容,因此,两种芯片仅需7条口线(MAX1247为4条,MAX525为3条)即可完成4路模拟量输入、4路模拟量输出的数据采集和控制。

(4)均可由软件设定为低功耗模式。

(5)两种芯片的典型参考电压均为2.5V。

二、工作原理

1.引脚排列及功能

MAX525为D/A转换器,20引脚,SSOP封装如图1所示。

各引脚功能如下。

(1)AGND、DGND:模拟地和数字地。

(2)OUTA~OUTD:DAC的A~D通道模拟电压输出端。

(3)FBA~FBD:DAC的A~D通道模拟放大器负反馈端。

(4)REFAB、REFCD:AB和CD通道参考电压输入端,取值范围从0V到VDD-1.4V,典型值为2.5V。模拟输出电压为Vref×(NB/4096)×G(NB)为输入待转化的二进制数据,G为增益),因此,AB、CD端的参考电压不同,满度输出的电压范围也不同。

(5)SCLK:串行时钟输入端。

(6)DIN:串行二进制数据输入端。

(7)DOUT:串行二进制数据输出端。该数据为MAX525移位寄存器的数据,CPU可以读此数据,校正DAC转换结果。

(8)UPO:应用编程逻辑输出。

(9)PDL:电源关闭端。如果接低电平,写入控制命令字(1100XXXXXXXXXX)以后,参考电压输入和输出放大器全部为高阻状态,正常使用为高电平。

(10)CS:片选输入端(低电平有效)。CL:复位端,低电平时,清除所有DAC寄存器和输入寄存器,复位所有的输出放大器为低电平输出。

MAX1247为A/D转换器,16引脚,QSOP封装,如图2所示。

各引脚功能如下:

(1)VDD:正电源电压端。

(2)CH0~CH3:采样模拟输入端。

(3)COM:模拟地。

(4)SHDN:三级关闭输入端。当其接地时,芯片处于低拉耗模式;当其接高电平时,内部缓冲放大器处于内部补偿模式;当其浮置时,内部缓冲放大器处于外部补偿模式。

(5)VREF:参考电压输入端。

(6)SCLK:串行时钟输入端。

(7)CS:芯片选择,低有效。

(8)DOUT:串行数据输出端。

(9)AGND:模拟地。

(10)DGND:数字地。

(11)REFADJ:参考缓冲放大器输入端。若接VDD,则内部缓冲放大器无效。

(12)DIN:串行二进制数输入端。

(13)SSTRB:转换结束信号。在内部时钟模式下,开始转换时,SSTRB变为低电平,转换结束后变高。在外部时钟模式下,当CS为高电平时,SSTRB为高阻;当CS为低电平时,在控制字节最后一位之后以及在转换成二进制数的最高有效之前,SSTRB为高电平。工作命令字及原理可参考《电测与仪表》杂志2000年第2期。

2.控制格式

每一路DAC是由1个输入寄存器和1个DAC寄存器组成双缓冲输入,串行数据控制格式是由16位组成,如表1所列。

表1 命令字格式

  MSB                                                                                   LSB
16位串行数据
地址位 控制位 数据位
A1              A0 C1              C0 A11              D0

表2 串口编程命令

16位串行字 功     能
A1      A0 C1  C0 D11  D0
0        0
0        1
1        0
1        1
0        1
0        1
0        1
0        1
12位数据
12位数据
12位数据
12位数据
A寄存器装载数据,DAC寄存内容不改变
B寄存器装载数据,DAC寄存内容不改变
C寄存器装载数据,DAC寄存器内容不改变
D寄存器装载数据,DAC寄存内容不改变
0        0
0        1
1        0
1        1
1        1
1        1
1        1
1        1
12位数据
12位数据
12位数据
12位数据
A寄存器装载数据,所有DAC寄存内容刷新
B寄存器装载数据,所有DAC寄存内容刷新
C寄存器装载数据,所有DAC寄存内容刷新
D寄存器装载数据,所有DAC寄存内容刷新
0        1 0        0 XXXXXXXX 数据从各自输入寄存器移入DAC寄存器
1        0 0        0 12位DAC数据 从移位寄存装入所有DAC寄存器
1        1 0        0 XXXXXXXX 关闭模式(PDL=1)
0        0 1        0 XXXXXXXX UPO变低
0        1 1        0 XXXXXXXX UPO变高
0        0 0        0 XXXXXXXX DAC寄存器空操作
1        0 1        0 XXXXXXXX 模式0时,DOUT在SCLK下降沿输出时钟信号
1        1 1        0 XXXXXXXX 模式1时,DOUT在SCLK上升模块输出时钟信号

表2给出各种工作时的命令格式工,供用户编程参考。

3.电路连接方式

MAX1247和MAX525与单片机V78E58连接方式如图3所示。W78E58为台湾华邦公司生产的8位单片机,内含32KB Flash/EEPROM,其引脚功能与8051系列单片机完成兼容。图3中4个三极管为恒流源变换,可将DAC输出的模拟信号变换成4~20mA的恒流,由P1~P4输出,24V外接电源。两种芯片的参考电压输入端一般为2.5V,须另外由电路提供。

注意:MAX525有两种参考电压输入端:REFCD、REFAB,其值可以不同。

三、软件

下面给出C语言编程的系统软件,见dacdaclel(MAX1247A/D转换子程序)和dacdac(MAX525DAC子程序)。

#include /*绝对地址访问函数*/

#include

#include /*各种不同类型的数字函数*/

#define uchar unsigned char

sbit P1_0=P1^0; /*定义P1~7为W78E58的P1口*/

sbit P1_1=P1^1;

sbit P1_2=P1^2;

sbit P1_3=P1^3;

sbit P1_4=P1^4;

sbit P1_5=P1^5;

sbit P1_6=P1^6;

sbit P1_7=P1^7;

void dcadac(unsigned long dacdata 1,dacdata2)

{uchar ee=0;

unsigned long xdata dacdatatransfer=0;

P1_6=0;

Resetdog(); /*调用看门狗复位子程序*/

P1=P1&0xdf; /*片选CS置低电平*/

for(ee=0;ee<4;ee++){

P1_6=0;

P1=P1&0xef;

dacdatatransfer=dacdata1;

dacdatatransfer=((dacdatatransfer>>(3-ee))&0x01)<<3;

P1=P1ldacdatatransfer;

P1_6=1;

}

P1_6=0;

For(ee=0;ee<12;ee++){

P1_6=0;

resetdog();

P1=P1&0xef;

dacdatatransfer=dacdata2;

dacdatatransfer=((dacdatatransfer>>(11-ee))&0x01)<<3;

P1=P1ldacdatatransfer;

P1_6=1;

}

P1_6=0;

P1=P1l0x20;

}

该子程序可完成两路DAC模拟电压输出,欲转换的12位二进制数据已经分别存放于变量dacdac1、dacdac2中。

/*流量A/D转换一次,其中P1-1为片选端,P1-0为时钟输入端,P1-2为数据输入,P1-3为数据输出*/

void adcadc() {

P1_1=0;

P1_0=0;

adaddress=0x9e; /*送控制命令字:启动、选择1通道,单极性转化、单极性模拟输入方式*/

for(l=0;l<8;l++){

adaddresstransfer=adaddress;

adaddresstransfer=(adaddresstransfer>>(7-1))&0x01;

P1_3=adaddresstransfer; /*右移动1次,以后送到P1-2口*/

P1_0=0; /*此处为送时钟信号*/

for(kkl=0;kkl<2;kkl++); /*空操作*/

P1_0=1;

for(kkl=0;kkl<2;kkl++);

P1_0=0; /*时钟信号周期等于等于4条指令时间*/

}

P1_1=0;

for(l=0;l<6;l++);

P1_1=0;

lldatatransfer=0;

P1_0=1;

for(l=0;l<12;l++){

P1_0=0;

P1_0=1;

lldatatransfer=P1_2; /*读出串行12位数据*/

lldatatransfer=lldatatransfer<<(11-l);

lldata[lldatacounter]=lldata[lldatacounter]lldatatransfer;

}

lldatatransfer=lldata[lldatacounter];

for(l=0;l<4;l++){

P1_0=0;

P1_0=1;

}

P1_1=1;

}

/*该子程序完成4路A/D变换,结果存放在变量lldatatransfe中*/

四、应用

在石油系统,需要在线测量石油的含水、含气及流量、温度等。本文所述内容,已应用于新型DRH原油含水、含气分析仪二次智能仪表,达到设计指标要求。

关键字:接口

编辑: 引用地址:http://www.eeworld.com.cn/gykz/qrsxt/200605/4026.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
接口

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved