老古开发网首页
导航:老古开发网首页文章索引文章分类另类其他→[W78E58与MAX1247/MAX525接口及软件设计]
| -文章搜索 - 最新文章 - |

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

发布时间:2006年5月11日 点击次数:429
来源:单片机与嵌入式系统应用   作者:华北航天工业学院 张盛福 王喜斌 廊坊食品工程学院 张 鹏
 

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

    关键词: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<absacc.h> /*绝对地址访问函数*/

#include<reg51f.h>

#include<math.h> /*各种不同类型的数字函数*/

#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原油含水、含气分析仪二次智能仪表,达到设计指标要求。


欢迎进入老古论坛进行讨论
[另类其他] 相关文章:
一种三MCU系统的硬件实现
简介:
摘要: 介绍以两片80C196KC为主处理MCU、一片89C51进行动态LED显示的三MCU系统。两80C196KC之间通过互访数据存储器进行数据交换,80C196KC与89C51的通讯使用串行口。 关键词: 单片机 多处理器 总线控制 存储器共享 ......

USB总线的体系结构
提高实时系统数据采集质量的研究
VFD专用驱动芯片M35500原理及应用
基于ISA总线的高速同步数据采集系统设计
MIC2778和MIC2545在USB双限流开关中的应用
CF卡在数字音频系统中的应用
AD7874--四通道十二位同步数据采集器结构及特点
I2C总线通信接口的CPLD实现
DSP芯片与触摸屏的接口控制
 
下一个:[通信网络]基于MC33591/MC33592的315MHz/434MHz OOK/FSK
简介:
MC33591/MC33592是一个单片集成接收器,该芯片内含660kHz的中频带通滤波器、完整的VCO、可消除镜像的混频器、曼彻斯特编码时钟再生电路以及完整的SPI接口。可用于设计315MHz/434MHz OOK/FSK接收电路。 1 MC33591/ MC33592的引脚功能 MC33591采用LQFP24封装形式,其引脚排列如图1......
 

上一个:[另类其他]便携系统的用户接口设计

老古开发网版权所有 2006年9月 asp.Net V2.0 设计:老古
页面缓存:10分钟 执行时间:16毫秒