ADCADC0832及其应用.docx

上传人:b****1 文档编号:10308128 上传时间:2023-05-25 格式:DOCX 页数:16 大小:382.23KB
下载 相关 举报
ADCADC0832及其应用.docx_第1页
第1页 / 共16页
ADCADC0832及其应用.docx_第2页
第2页 / 共16页
ADCADC0832及其应用.docx_第3页
第3页 / 共16页
ADCADC0832及其应用.docx_第4页
第4页 / 共16页
ADCADC0832及其应用.docx_第5页
第5页 / 共16页
ADCADC0832及其应用.docx_第6页
第6页 / 共16页
ADCADC0832及其应用.docx_第7页
第7页 / 共16页
ADCADC0832及其应用.docx_第8页
第8页 / 共16页
ADCADC0832及其应用.docx_第9页
第9页 / 共16页
ADCADC0832及其应用.docx_第10页
第10页 / 共16页
ADCADC0832及其应用.docx_第11页
第11页 / 共16页
ADCADC0832及其应用.docx_第12页
第12页 / 共16页
ADCADC0832及其应用.docx_第13页
第13页 / 共16页
ADCADC0832及其应用.docx_第14页
第14页 / 共16页
ADCADC0832及其应用.docx_第15页
第15页 / 共16页
ADCADC0832及其应用.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

ADCADC0832及其应用.docx

《ADCADC0832及其应用.docx》由会员分享,可在线阅读,更多相关《ADCADC0832及其应用.docx(16页珍藏版)》请在冰点文库上搜索。

ADCADC0832及其应用.docx

ADCADC0832及其应用

DAC0832

一)D/A转换器DAC0832

DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。

如图4-82所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。

运算放大器输出的模拟量V0为:

图4-82

由上式可见,输出的模拟量与输入的数字量(

)成正比,这就实现了从数字量到模拟量的转换。

一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。

输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。

图4-83是DAC0832的逻辑框图和引脚排列。

 

图4-83

D0~D7:

数字信号输入端。

ILE:

输入寄存器允许,高电平有效。

CS:

片选信号,低电平有效。

WR1:

写信号1,低电平有效。

XFER:

传送控制信号,低电平有效。

WR2:

写信号2,低电平有效。

IOUT1、IOUT2:

DAC电流输出端。

Rfb:

是集成在片内的外接运放的反馈电阻。

Vref:

基准电压(-10~10V)。

Vcc:

是源电压(+5~+15V)。

AGND:

模拟地NGND:

数字地,可与AGND接在一起使用。

DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。

实验线路如图4-84所示。

 

图4-85

IN0~IN7:

8路模拟信号输入端。

A1、A2、A0:

地址输入端。

ALE地址锁存允许输入信号,在此脚施加正脉冲,上升沿有效,此时锁存地址码,从而选通相应的模拟信号通道,以便进行A/D转换。

START:

启动信号输入端,应在此脚施加正脉冲,当上升沿到达时,内部逐次逼近寄存器复位,在下降沿到达后,开始A/D转换过程。

EOC:

转换结束输出信号(转换接受标志),高电平有效。

OE:

输入允许信号,高电平有效。

CLOCK(CP):

时钟信号输入端,外接时钟频率一般为640kHz。

Vcc:

+5V单电源供电。

Vref(+),Vref(-):

基准电压的正极、负极。

一般Vref(+)接+5V电源,Vref(-)接地。

D7~D0:

数字信号输出端。

由A2、A1、A0三地址输入端选通8路模拟信号中的任何一路进行A/D转换。

 

ADC0832的封装以及工作模式的选取芯片接口说明:

·CS_片选使能,低电平芯片使能。

·CH0模拟输入通道0,或作为IN+/-使用。

·CH1模拟输入通道1,或作为IN+/-使用。

·GND芯片参考0电位(地)。

·DI数据信号输入,选择通道控制。

·DO数据信号输出,转换数据输出。

·CLK芯片时钟输入。

·Vcc/REF电源输入及参考电压输入(复用)。

ADC0832与单片机的接口电路:

用汇编编写

下面是测试程序,选择CH1,单片机晶振为,18.432MHz

;ADC0832简单测试(改)

A_0832_CSEQUP1.0    ;CS

A_0832_CLKEQUP1.1  ;CLK

A_0832_DIEQUP1.2     ;DI

A_0832_D  EQUP1.3    ;DO

A_0832_T  EQU40H     ;读取时的脉冲计数

A_0832_DAEQU41H   ;数据所存位置

ORG0

LJMPMAIN

ORG30H

MAIN:

  LCALLADC_RD

MOVA,A_0832_DA

AJMP$

ADC_RD:

MOVA_0832_T,#8

CLRA_0832_CLK

CLRA_0832_CS

SETBA_0832_DI  ;START

SETBA_0832_CLK  ;第一个上升沿

NOP

NOP

NOP

CLRA_0832_CLK

NOP

NOP

SETBA_0832_DI  ;选择CH1,通过组合选取通道(SGL/DIF)

NOP

SETBA_0832_CLK  ;第二个上升沿

NOP

NOP

NOP

CLRA_0832_CLK

NOP

NOP

SETBA_0832_DI  ;选择CH1,通过组合选取通道(ODD/SIGN)

NOP

SETBA_0832_CLK  ;第三个上升沿

NOP

NOP

NOP

CLRA_0832_CLK  ;首个下降沿

NOP

NOP

NOP

SETBA_0832_CLK

NOP

NOP

A_0832_RD:

   ;读取前,8位

CLRA_0832_CLK

NOP

NOP

NOP

SETBA_0832_CLK

MOVC,A_0832_D

RLCA

DJNZA_0832_T,A_0832_RD

MOVA_0832_DA,A

RRA

MOVA_0832_T,#7

A_0832_RD1:

   ;读后7位,+前1位

CLRA_0832_CLK

NOP

NOP

NOP

SETBA_0832_CLK

MOVC,A_0832_D

RRCA

DJNZA_0832_T,A_0832_RD1

CJNEA,A_0832_DA,ADC_RD

SETBA_0832_CS

RET

END

 

ADC0832 模数转换例程,用C语言编写

//可调电阻CH0通道

/*

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。

当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号.在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,当前2位数据为"1""0"时,只对CH0进行单通道转换.当2位数据为"1""1"时,只对CH1进行单通道转换.当2位数据为"0""0"时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入.当2位数据为"0""1"时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入.

从第4个脉冲下沉开始由DO,端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据.

*/

#include

#define_rrca_()         CY  =ACC&0x01          //产生RRCA指令

#define_rlca_()         CY  =ACC&0x80          //产生RLCA指令

#definebADcsP3_7

#definebADclP1_6

#definebADdaP1_7

unsignedcharucCH0;

bitbAD_ok;  //AD转换完成

unsignedcharcodedx58[3]_at_0x3b;//保留0x3b开始的3个字节

voidad_change(void)

 unsignedcharcycle;

 bADcs=0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.

 bADcl=0;

 bADda=1;//在第1个时钟脉冲的下沉之前DI端必须是高电平.

 bADcl=1; bADcl=0;//pulse1down

 //ch0dADda=1;

 bADcl=1; bADcl=0;//pulse2down

 bADda=0;

 bADcl=1; bADcl=0;//pulse3down

 for(cycle=8;cycle>0;cycle--)

 {

  bADda=1;

  bADcl=1; bADcl=0;//pulse

  CY=bADda;

  _rlca_();  //RRCA

 }

 B=ACC;

 for(cycle=8;cycle>0;cycle--)

 {

  bADda=1;

  bADcl=1; bADcl=0;//pulse

  CY=bADda;

  _rrca_();  //RLCA

 }

 if(ACC==B)

 {

  ucCH0=B;

  P1_5=0;  //指示灯亮

  bAD_ok=1;

 }

 bADcs=1;//当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束

}

main()

{

 ad_change();

 while

(1);

}

例3

 

ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。

其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。

芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。

独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。

通过DI数据输入端,可以轻易的实现通道功能的选择。

单片机对ADC0832的控制原理:

正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。

但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。

(见图3)当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。

当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。

此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。

在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能,其功能项

见表1。

如表1所示,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。

当2位数据为“1”、“1”时,只对CH1进行单通道转换。

当2位数据为“0”、

“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。

当2位

数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行

输入。

到第3个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI

端则开始利用数据输出DO进行转换数据的读取。

从第4个脉冲下沉开始由DO

端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。

直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。

也正是

从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATD0。

随后输出8位数据,到第19个脉冲时数据输出完成,也标志着一次A/D转换的

结束。

最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

更详细的时序说明请见表2。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。

如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。

但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。

ADC0832芯片接口程序的编写:

ADC0832数据读取程序流程:

为了高速有效的实现通信,我们采用汇编语言编写接口程序。

由于ADC0832的数据转

换时间仅为32μS,所以A/D转换的数据采样频率可以很快,从而也保证的某些场合对A/D

转换数据实时性的要求。

数据读取程序以子程序调用的形式出现,方便了程序的移植。

程序占用资源有累加器A,工作寄存器R7,通用寄存器B和特殊寄存器CY。

通道功能寄

存器和转换值共用寄存器B。

在使用转换子程序之前必须确定通道功能寄存器B的值,其赋值语句为“MOVB,#data”(00H~03H)。

运行转换子程序后的转换数据值被放入B中。

子程序退出后即可以对B中数据处理。

/*-------------------------------------------

子程序名:

ADC0832子程序

编写人:

杜洋

初写时间:

2005年10月10日

程序功能:

将模拟电压量转换成数字量

实现方法:

串行通信。

CPU说明:

MCS-51

植入说明:

占用A、B、CY、R7

-------------------------------------------*/

;以下接口定义根据硬件连线更改

ADCSBITP3.5;使能接口

ADCLKBITP3.4;时钟接口

ADDOBITP3.3;数据输出接口(复用)

ADDIBITP3.3;数据输入接口

;以下语句在调用转换程序前设定

MOVB,#00H;装入通道功能选择数据值

;以下为ADC0832读取数据子程序

;====ADC0832读数据子程序====

ADCONV:

SETBADDI;初始化通道选择

NOP

NOP

CLRADCS;拉低/CS端

NOP

NOP

SETBADCLK;拉高CLK端

NOP

NOP

CLRADCLK;拉低CLK端,形成下降沿

MOVA,B

MOVC,ACC.1;确定取值通道选择

MOVADDI,C

NOP

NOP

SETBADCLK;拉高CLK端

NOP

NOP

CLRADCLK;拉低CLK端,形成下降沿2

MOVA,B

MOVC,ACC.0;确定取值通道选择

MOVADDI,C

NOP

NOP

SETBADCLK;拉高CLK端

NOP

NOP

CLRADCLK;拉低CLK端,形成下降沿3

SETBADDI

NOP

NOP

MOVR7,#8;准备送下后8个时钟脉冲

AD_1:

MOVC,ADDO;接收数据

MOVACC.0,C

RLA;左移一次

SETBADCLK

NOP

NOP

CLRADCLK;形成一次时钟脉冲

NOP

NOP

DJNZR7,AD_1;循环8次

MOVC,ADDO;接收数据

MOVACC.0,C

MOVB,A

MOVR7,#8

AD_13:

MOVC,ADDO;接收数据

MOVACC.0,C

RRA;左移一次

SETBADCLK

NOP

NOP

CLRADCLK;形成一次时钟脉冲

NOP

NOP

DJNZR7,AD_13;循环8次

CJNEA,B,ADCONV;数据校验

SETBADCS;拉高/CS端

CLRADCLK;拉低CLK端

SETBADDO;拉高数据端,回到初始状态

RET

;====子程序结束====

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2