51单片机AD DA转换教程
基于51单片机的AD和DA

基于51单片机的AD和DA本讲内容:介绍AD/DA芯片PCF8591,通过例程讲解AD和DA过程。
AD和DA的概念:AD转换的功能是把模拟量电压转换为数字量电压。
DA转换的功能正好相反,就是讲数字量转换位模拟量。
分辨率的概念:一位数字量所表示的电压值。
对于5V的满量程,采用8位的DAC 时,分辨率为5V/256=19.5mV。
PCF8591简介:PCF8591是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入、一个模拟输出和一个串行IIC总线接口。
3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至IIC总线而不需要额外硬件。
PCF8591管脚图:PCF8591接口电路图:PCF8591的控制寄存器:例程:AD程序/**********************AD转换**********************单片机型号:STC89C52RC*开发环境:KEIL*功能:IIC协议 PCF8591 AD转换**************************************************/#include<reg52.h>#include <intrins.h>#define LCD_Data P0#define Busy 0x80#define uchar unsigned char#define delay0;_nop_();#define AddWr 0x90#define AddRd 0x91sbit RST=P2^4;sbit Sda=P2^0;sbit Scl=P2^1;sbit LCD_RS=P1^0;sbit LCD_RW=P1^1;sbit LCD_E =P2^5;bit ADFlag;uchar code table0[]={" SL-51A "};uchar code table1[]={" AD CONVERT "};uchar code table2[]={"CH1: . V"};uchar code table3[]={"CH2: . V"};uchar code table4[]={"CH3: . V"};uchar code table5[]={"CH4: . V"};uchar TempData[8];void Delay5Ms(void);void delay(int In,int Out); void WriteDataLCD(unsigned char WDLCD);void WriteCommandLCD(unsigned char WCLCD,BuysC);uchar ReadDataLCD(void);uchar ReadStatusLCD(void);void LCDInit(void);void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData);void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData);void Init_Timer1(void);void Start(void);void Stop(void);void Ack(void);void NoAck(void);void Send(unsigned char Data);uchar Read(void);void DAC(unsigned char Data);uchar ReadADC(unsigned char Chl);void info_disp(void);/**********5ms延时函数***************************/void Delay5Ms(void){unsigned int TempCyc=3552;while(TempCyc--);}/********************延迟函数********************/void delay(int In,int Out) {int i,j;for(i=0;i<In;i++){for(j=0;j<Out;j++){;}}}/*------------------------------------------------初始化定时器1------------------------------------------------*/void Init_Timer1(void){TMOD|=0x10;TH1=0xff;TL1=0x00;EA=1;ET1=1;TR1=1;}/*------------------------------------------------启动IIC总线------------------------------------------------*/void Start(void){Sda=1;delay0;Scl=1;delay0;Sda=0;delay0;Scl=0;}/*------------------------------------------------停止IIC总线------------------------------------------------*/void Stop(void){Sda=0;delay0;Scl=1;delay0;Sda=1;delay0;Scl=0;}/*------------------------------------------------应答IIC总线------------------------------------------------*/void Ack(void){Sda=0;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------非应答IIC总线------------------------------------------------*/void NoAck(void){Sda=1;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------发送一个字节------------------------------------------------*/ void Send(unsigned char Data){uchar BitCounter=8;uchar temp;do{temp=Data;Scl=0;delay0;if((temp&0x80)==0x80){Sda=1;}else{Sda=0;}Scl=1;temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);Scl=0;}/*------------------------------------------------读入一个字节并返回------------------------------------------------*/ uchar Read(void){uchar temp=0;uchar temp1=0;uchar BitCounter=8;Sda=1;do{Scl=0;delay0;Scl=1;delay0;if(Sda){temp=temp|0x01;}else{temp=temp&0xfe;}if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}/*------------------------------------------------写入DA数模转换值------------------------------------------------*/ void DAC(unsigned char Data){Start();Send(AddWr);Ack();Send(0x40);Ack();Send(Data);Ack();Stop();}/*------------------------------------------------读取AD模数转换的值,有返回值------------------------------------------------*/ uchar ReadADC(unsigned char Chl){uchar Data;Start();Send(AddWr);Ack();Send(0x40|Chl);Ack();Start();Send(AddRd);Ack();Data=Read();Scl=0;NoAck();Stop();return Data;}/*******************写数据函数*******************/ void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD();LCD_Data=WDLCD;LCD_RS=1;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/*******************写指令函数*******************/ void WriteCommandLCD(unsigned char WCLCD,BuysC) {if(BuysC)ReadStatusLCD();LCD_Data=WCLCD;LCD_RS=0;LCD_RW=0;LCD_E=0;LCD_E=0;LCD_E=1;}/*******************读数据函数*******************/unsigned char ReadDataLCD(void){LCD_RS=1;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;return(LCD_Data);}/*******************读状态函数*******************/unsigned char ReadStatusLCD(void){LCD_Data=0xFF;LCD_RS=0;LCD_RW=1;LCD_E=0;LCD_E=0;LCD_E=1;while (LCD_Data&Busy);return(LCD_Data);}/********************LCD初始化*******************/void LCDInit(void){LCD_Data=0;WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1);WriteCommandLCD(0x08,1);WriteCommandLCD(0x01,1);WriteCommandLCD(0x06,1);WriteCommandLCD(0x0C,1);}/********************清屏函数********************/void LCD_Clear(void){WriteCommandLCD(0x01,1);Delay5Ms();}/**************按指定位置显示一个字符*************/void DisplayOneChar(unsigned char X,unsigned char Y,unsigned char DData) {Y&=0x1;X&=0xF;if(Y)X|=0x40;X|=0x80;WriteCommandLCD(X, 0);WriteDataLCD(DData);}/**************按指定位置显示一串字符*************/void DisplayListChar(unsigned char X,unsigned char Y,unsigned char code *DData) {unsigned char ListLength;ListLength=0;Y&=0x1;X&=0xF;while(DData[ListLength]>=0x20){if(X<=0xF){DisplayOneChar(X, Y, DData[ListLength]);ListLength++;X++;}}}/********************系统初始化*******************/void sys_init(void){LCDInit();delay(5,100);Init_Timer1();DisplayListChar(0,0,table0);DisplayListChar(0,1,table1);}/*------------------------------------------------显示------------------------------------------------*/void info_disp(void){DisplayListChar(0,0,table2);DisplayOneChar(4,0,(0x30+TempData[0]));DisplayOneChar(6,0,(0x30+TempData[1]));DisplayListChar(8,0,table3);DisplayOneChar(12,0,(0x30+TempData[2]));DisplayOneChar(14,0,(0x30+TempData[3]));DisplayListChar(0,1,table4);DisplayOneChar(4,1,(0x30+TempData[4]));DisplayOneChar(6,1,(0x30+TempData[5]));DisplayListChar(8,1,table5);DisplayOneChar(12,1,(0x30+TempData[6]));DisplayOneChar(14,1,(0x30+TempData[7]));}/*------------------------------------------------主程序------------------------------------------------*/void main(){uchar num;uchar ADtemp;sys_init();delay(100,1000);LCD_Clear();while(1){DAC(num);num++;delay(5,100);if(ADFlag){ADFlag=0;ADtemp=ReadADC(0);TempData[0]=(ReadADC(0))/50;TempData[1]=((ReadADC(0))%50)/10; ADtemp=ReadADC(1);TempData[2]=(ReadADC(1))/50;TempData[3]=((ReadADC(1))%50)/10; ADtemp=ReadADC(2);TempData[4]=(ReadADC(2))/50;TempData[5]=((ReadADC(2))%50)/10; ADtemp=ReadADC(3);TempData[6]=(ReadADC(3))/50;TempData[7]=((ReadADC(4))%50)/10; info_disp();}}}/*------------------------------------------------定时器中断程序------------------------------------------------*/void Timer1_isr(void) interrupt 3 using 1{static unsigned int j;TH1=0xfb;TL1=0x00;j++;if(j==200){j=0;ADFlag=1;}}DA程序/******************DA转换LED输出*******************单片机型号:STC89C52RC*开发环境:KEIL*功能:此程序通过IIC协议对DAAD芯片操作, 并输出模拟量,用LED亮度渐变指示***************************************************/#include<reg52.h>#include <intrins.h>#define delay0; _nop_();#define uchar unsigned char#define AddWr 0x90#define AddRd 0x91sbit RST=P2^4;sbit Sda=P2^0;sbit Scl=P2^1;sbit Fm=P2^3;sbit LE1=P2^6;sbit LE2=P2^7;bit ADFlag;uchar code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; data uchar Display[8];/*------------------------------------------------延时程序------------------------------------------------*/void mDelay(uchar j){unsigned int i;for(;j>0;j--){for(i=0;i<125;i++){;}}}/*------------------------------------------------初始化定时器1------------------------------------------------*/void Init_Timer1(void){TMOD|=0x10;TH1=0xff;TL1=0x00;EA=1;ET1=1;TR1=1;}/*------------------------------------------------启动IIC总线------------------------------------------------*/void Start(void){Sda=1;delay0;Scl=1;delay0;Sda=0;delay0;Scl=0;}/*------------------------------------------------停止IIC总线------------------------------------------------*/ void Stop(void){Sda=0;delay0;Scl=1;delay0;Sda=1;delay0;Scl=0;}/*------------------------------------------------应答IIC总线------------------------------------------------*/ void Ack(void){Sda=0;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------非应答IIC总线------------------------------------------------*/ void NoAck(void){Sda=1;delay0;Scl=1;delay0;Scl=0;delay0;}/*------------------------------------------------发送一个字节------------------------------------------------*/ void Send(uchar Data){uchar BitCounter=8;uchar buffer;do{buffer=Data;Scl=0;delay0;if((buffer&0x80)==0x80)Sda=1;else Sda=0;Scl=1;buffer=Data<<1;Data=buffer;BitCounter--;}while(BitCounter);Scl=0;}/*------------------------------------------------读入一个字节并返回------------------------------------------------*/ uchar Read(void){uchar buffer=0;uchar buffer1=0;uchar BitCounter=8;Sda=1;do{Scl=0;delay0;Scl=1;delay0;if(Sda)buffer=buffer|0x01;else buffer=buffer&0xfe;if(BitCounter-1){buffer1=buffer<<1;buffer=buffer1;}BitCounter--;}while(BitCounter);return(buffer);}/*------------------------------------------------写入DA数模转换值------------------------------------------------*/ void DAC(uchar Data){Start();Send(AddWr);Ack();Send(0x40);Ack();Send(Data);Ack();Stop();}/*------------------------------------------------读取AD模数转换的值,有返回值------------------------------------------------*/ uchar ReadADC(uchar Chl){uchar Data;Start();Send(AddWr);Ack();Send(0x40|Chl);Ack();Start();Send(AddRd);Ack();Data=Read();Scl=0;NoAck();Stop();return Data;}void fmg(void){Fm=1;}void cmg(void){LE1=1;P0=0x00;LE1=0;LE2=1;P0=0x00;LE2=0;RST=0;}/*------------------------------------------------主程序------------------------------------------------*/ void main(){uchar num;uchar ADbuffer;Init_Timer1();cmg();fmg();while(1){DAC(num);num++;mDelay(20);if(ADFlag){ADFlag=0;ADbuffer=ReadADC(0);Display[0]=Datatab[(ReadADC(0))/50]|0x80;Display[1]=Datatab[((ReadADC(0))%50)/10];ADbuffer=ReadADC(1);Display[2]=Datatab[((ReadADC(1))/50)]|0x80;Display[3]=Datatab[((ReadADC(1))%50)/10];ADbuffer=ReadADC(2);Display[4]=Datatab[((ReadADC(2))/50)]|0x80;Display[5]=Datatab[((ReadADC(2))%50)/10];ADbuffer=ReadADC(3);Display[6]=Datatab[((ReadADC(3))/50)]|0x80; Display[7]=Datatab[((ReadADC(3))%50)/10]; }}}。
51单片机(AD及DA转换器)

时,LE1 …=0
则数据被锁存
当 WR2 和 XFER 均为低电平时,LE2=1,此时允许D/A转换,否则 LE2
=0,将数据锁存于DAC寄存器中
精选2021版课件
9
DAC 0832 常 见 的 几 种 用 法
(a): DAC寄存器直通方式 (b): 输入寄存器直通方式
(c): 两个寄存器同时选精通选20及21版锁课件存方式
非与门
&
输入全为“0”,输出才为
“1”
输入任一为“1”
输出皆为“0”
直通方式: 输入寄存器和DAC寄存器共用一个地址,同时选通输出。
双缓冲器方式:
输入寄存器和DAC寄存器分配有各自的地址,可分别选通用同时输
出多路模拟信号。
精选2021版课件
11
【例9-6】在图9-30的输出端Vout产生-1.25V的电压输出。 解 Vout=-(D/256)×Vref,而Vref=5V,且XFER、CS和WR信号
常有效,因此使D=64即可输出要求的电压。
汇编程序 MOV P1, #64
C语言程序
#include <reg51.h> P1 = 64;
【例9-7】在图9-31的输出端Vout产生-2.5V的电压输出,设Vref为5V。 解 Vout=-(D/256)×Vref,使D=128可输出要求的电压,且需要进行一次对
三角波
NOP
SS2: INC A
;等速上升
JNZ SS1 SS3: DEC A
MOVX @DPTR,A
同样的编程思路,若要产生 如下的梯形波也很容易:
NOP
NOP
NOP
;等速下降
JNZ SS3
MCS-51单片机与DA转换器的接口和应用

A/D和D/A转换接口技术难点•DAC0832工作方式•ADC0809工作方式要求掌握:•MCS-51单片机与D/A转换器的接口连接•MCS-51单片机与A/D转换器的接口连接•初始化编程及应用了解:•典型D/A转换器芯片DAC0832的管脚功能•典型A/D转换器芯片ADC0809的管脚功能3.1 MCS-51单片机与D/A转换器的接口和应用3.1.1典型D/A转换器芯片DAC0832DAC0832是一个8位D/A转换器芯片,单电源供电,从+5V~+15V均可正常工作,基准电压的范围为±10V,电流建立时间为1μs,CMOS工艺,低功耗20mW。
其内部结构如图9.1所示,它由1个8位输入寄存器、1个8位DAC寄存器和1个8位D/A转换器组成和引脚排列如图1所示。
图1 DAC0832引脚功能该D/A转换器为20引脚双列直插式封装,各引脚含义如下:(1)D7~D0——转换数据输入。
(2)——片选信号(输入),低电平有效。
(3)ILE——数据锁存允许信号(输入),高电平有效。
(4)——第一信号(输入),低电平有效。
该信号与ILE 信号共同控制输入寄存器是数据直通方式还是数据锁存方式:当ILE=1和=0时,为输入寄存器直通方式;当ILE=1和=1时,为输入寄存器锁存方式。
(5)——第2写信号(输入),低电平有效.该信号与信号合在一起控制DAC寄存器是数据直通方式还是数据锁存方式:当=0和=0时,为DAC寄存器直通方式; 当=1和=0时,为DAC寄存器锁存方式。
(6)——数据传送控制信号(输入),低电平有效 。
(7)Iout2——电流输出“1”。
当数据为全“1”时,输出电流最大;为全“0”时输出电流最小。
(8)Iout2——电流输出“2”。
DAC转换器的特性之一是:Iout1 +Iout2=常数。
(9)R fb——反馈电阻端既运算放大器的反馈电阻端,电阻(15KΩ)已固化在芯片中。
因为DAC0832是电流输出型D/A转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,R fb 即为运算放大器的反馈电阻,运算放大器的接法如图2所示。
51单片机AD和DA转换汇编程序

四、实验说明1、D/A 转换是把数字量转换成模拟量的变换,实验台上D /A 电路输出的是模拟电压信号。
要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。
2、产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。
要产生正弦波,较简单的方法是造一张正弦数字量表。
即查函数表得到的值转换成十六进制数填表。
D/A 转换取值范围为一个周期,采样点越多,精度越高些。
本例采用的采样点为256点/周期。
3、8位D/A 转换器的输入数据与输出电压的关系为U(0∽-5V)=Uref/256×N U(-5V ∽+5V)=2·Uref/256×N-5V (这里 Uref 为+5V)五、实验框图六、参考程序xdata unsig n ed char CS 0832 _at_ 0xa000;void Write 0832(unsig n ed char b){CS0832 = b;}void main(){Write 0832(0);Write 0832(0x80);Write 0832(0xff);开始否 是置计数器初值 查表读波形数据 启动D/A 改变计数器及表指针 转换完毕while(1);}/*========================================================== =*/CS0832 equ 0a000hmov dptr, #CS0832mov a, #00hmovx @dptr, amov a, #40hmovx @dptr, amov a, #80hmovx @dptr, amov a, #0c0hmovx @dptr, amov a, #0ffhmovx @dptr, aljmp $end硬件实验十三 A/D 模数转换实验一、实验要求利用实验板上的ADC 0809做A /D 转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,用8255的PA 口输出到发光二极管显示。
51单片机ad、da转换器[精制材料]
![51单片机ad、da转换器[精制材料]](https://img.taocdn.com/s3/m/81279c3b011ca300a6c3906c.png)
(1)分辨率(Res程ol)ut时io所n)需要的时间。
(2)偏移误差(O建ffs立e时tE间rro是r)D/A转换速率快慢的一个重 (3)精度(Accur要速ac参 率y)数越。低很。显不然同,型建号D立A时C间的越建大立,时转间换一
(4)转换速度(co般n从ve几rt个in纳g 秒sp到ee几d个) 微秒不等。若输出
(3)精度(Accuracy)
(4)转换速率/建立时间(converting speed)
(5)温度灵敏度(TemperatureSensitivity)
实操应用
3
二、DAC及其接口
(一)DAC介绍:数模转换,将一个二进制数字信号转换成与 此值成正比的模拟信号。
1.DAC结构:DAC芯片上集成有D/A转换电路和辅助电路。
第三节 A/D、D/A转换器
一、模拟接口概述
在实际系统中,单片机经常要对来自控制现场的各种模拟信 号进行采集和处理,如电压、电流等随时间连续变化的电量, 或者是温度、压力、流量等随时间连续变化的非电量。单片机 要接收这些模拟量,就要通过ADC来实现;如果单片机控制的 对象需要模拟量,则要用到DAC。
(5)温度灵敏度(形Te式m是p电er流at,urDeSAeCn的si建tiv立it时y)间是很短的; 若输出形式是电压,DAC的建立时间主
要是输出运算放大器所需要的响应时间。
实操应用
6
二、DAC及其接口
(一)DAC介绍:数模转换,将一个二进制数字信号转换成与 此值成正比的模拟信号。
1.DAC结构:DAC芯片上集成有D/A转换电路和辅助电路。
差一般可在D/A转换器外部用电位器
调节到实最操应小用 。
4
二、DAC及其接口
《MCS51与DA转换器》PPT课件

根据对DAC分辨率的需要,来选定DAC的位数。
(2)建立时间(Establishing Time)
描述DAC转换快慢的参数,表明转换速度。 定义:为从输入数字量到输出达到终值误差(1/2)LSB (最低有效位)时所需的时间。电流输出时间较短,电压输出的,加上I-V转换的时间,因此建立时间要长一些。快速DAC可达1s以下。
主要特性:
(1)输出电流稳定时间:1s;
(2)基准电压:VREF= -10~ +10V;
第11章 MCS-51与D/A转换器、 A/D转换器的接口
一、作业
二、MCS-51与DAC的接口
D/A转换器的原理及主要技术指标
MCS-51与8位DAC0832的接口
MCS-51与12位DAC1208的接口
非电物理量(温度、压力、流量、速度等),须经传感器转换成模拟电信号(电压或电流),必须转换成数字量,才能在单片机中处理。
DAC0832是使用非常普遍的8位D/A转换器,由于其片内有输入数据寄存器,故可以直接与单片机接口。DAC0832以电流形式输出,当需要转换为电压输出时,可外接运算放大器。属于该系列的芯片还有DAC0830、DAC0831,它们可以相互代换。DAC0832主要特性:
分辨率8位; 电流建立时间1μS; 数据输入可采用双缓冲、单缓冲或直通方式; 输出电流线性度可在满量程下调节; 逻辑电平输入与TTL电平兼容; 单一电源供电(+5V~+15V); 低功耗,20mW。
读P286
例11-2 内部RAM中两个长度为20的数据块,起始地址为分别为addr1和addr2,编写能把addr1和addrr2中 数据从1#和2#DAC0832同步输出的程序。addr1和addr2中的数据,为绘制曲线的X、Y坐标点。
第36章 A D转换实例 51单片机开发与应用技术详解(珍藏版)PPT

• 在测控系统中,经常需要对温度、速度、压力、 电流、电压等模拟量进行采集或者处理。由于单 片机CPU只能对数字信号进行处理,因此,需要首 先将这些模拟量信号转换成数字量信号,然后采 集数据并进行分析。这便需要用到模/数转换器件, 也称为A/D(Analogue/Digital)转换器。目前, 市场上有很多种A/D转换器,其以体积小、功能强、 误差小、功耗低、可靠性高等优点而得到广泛应 用。
• A/D转换精度。对于复杂系统,一般计算系统中各环节的方和根误差。信 号源阻抗、信号带宽、A/D转换器分辨率和系统的通过率都会影响误差的 计算。正常情况下,A/D转换前向通道的总误差应小于等于A/D转换器的量 化误差,否则选取高分辨率A/D转换器也没有实际意义。
• 孔径误差。A/D转换是一个动态的过程,需要一定的转换时间。而输入的 模拟量总是在连续不断变化的,这样便造成转换输出的不确定性误差,即 孔径误差。为了确保较小的孔径误差,则要求A/D转换器具有与之相适应 的转换速度。否则,就应该在A/D转换器前加入采样/保持电路以满足系统 要求。
• 单+5V供电; • 12位A/D转换分辨率,1/2LSB线性度; • 12位并行输出,引脚兼容TTL/CMOS电平; • 8路模拟输入通道; • 4种软件可编程输入量程:0~+5V、0~+10V、-5V~+5V、-
10V~+10V; • 6µs典型转换时间,高达100kSPS的采样速率; • 内部集成4.096V参考电压,也可以采用外部参考电压; • 可选择内部工作时钟或者外部工作时钟, • 可选择使用内部采集控制或者外部采集控制。
• 本章主要介绍了A/D转换的原理,A/D转换器的技 术参数,并介绍了一个典型的8通道电压型A/D转 换器。最后,本章通过一个具体的实例,介绍了 如何使用51系列单片机来控制A/D转换器的读写。
51单片机AD DA转换教程

时间应包括建立时间和上升(或下降)时 间两部分 ,它的最大值为
TTR(max) = tS + VO(max) / SR
其中 VO(max) 为输出电压的最大值 。
10. 2. 5 集成 DAC 0832及其应用
D/A转换器集成电路有多种型号。 下面仅以DAC0832为例来介绍集成电 路 D/A 变换器。
把量化的结果用代码 (二进制或二 - 十 进制 )表示出来,称为 “ 编码 ” 。
3. 采样 - 保持电路
RF
R1
ui
T
CF
+
uo
UL
当 UL为高电平时, MOS管T导通, ui 经电阻 R1和管T向电容 CF充电 。 当 UL为低电平时, MOS管T截止, 忽略各种漏电流,电容CF上的电压得以保持 。
Iout1
11
Iout2
DAC 0832 管脚分布图
D...... 7
八位 输入
寄存器
D0
(1)
ILE
&
CS 1
WR1
XFER
1
WR2
八位 DAC 寄存器
(2)
VCC
UR 八位 Rf B
A/D Iout1 变换器 Iout2
-
u +
+
o
AGND
DGND
运放需 要外接
ADC 0832 简化电路框图
D...... 7
I2 = 4I0
I3 = 8I0
I = I0 + I1 + I2 + I3
I
R/2
-
23R 22R 21R 20R
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全 0 变为全 1 或者由全 1 变为 全 0 ) 输出电压到达某一规定值所需要的时 间定为建立时间 tS 。
这个参数的值越小越好 。
建立时间最短的可达 0. 1? s 。 17
10. 2. 4 D/A转换器的主要技术指标 三、D/A转换器的转换速度
D2
D3
(MSB)
最高位
R/2
-
+
uo
I0 =
VREF 23 R
I1 = 2I 0
I2 = 4I 0
I3 = 8I 0
I = I 0 + I 1 + I 2 +8 I 3
I
R/2
-
23R 22R 21R 20R
+
uo
I0
I1
I2
I3
VREF
D0
D1
(LSB)
D2
D3
(MSB)
I = I0
+ I1 + I2
D0
D1
D2
D3
iI
R
-
+
uo
S0
VREF
S1 I/16
uo =
S2
S3
每个支路
I / 8 I / 4 I / 2 电流的大小,
与有关数字量
的权重密切相
关。
IR 24
( 8 D3 + 4 D2 + 2 D1 + D0 )
11
10. 2. 3 T形解码网络D / A转换器( 以4位为例 )
DR C R BR A
第十章 数 / 模 、 模 / 数 变换器
§10. 1 概述 §10. 2 数 / 模转换器 §10. 3 模 / 数转换器
1
§10.1 概述
模 拟 信 A/D 号
计 算 机
模 拟 D/A 信 号
A / D : Analog to Digital D / A : Digital to Analog
简化原理电路
6
S
1
T1 T2
0
a
D
模拟电子开关的 简化原理电路
当 D = 0 时, T2 管截 止,T1 管饱和导通, S 点与地相通 。
7
当 D3D2D1D0 = 1111时 : I
23R 22R 21R 20R
S0 I 0 S1
I1 S2
I2 S3
I3
VREF
参考
电压 D0
D1
(LSB)
最低位
+ I3
=
VREF 23R
( D3
23 + D2 22
+ D1 21 + D0 20 ) 9
I
R/2
-
23R 22R 21R 20R
+
uo
I0
I1
I2
I3
VREF
D0
D1
(LSB)
D2
D3
(MSB)
uo = - IR / 2
=
-
VREF 24
( 8 D3
+ 4 D2
+ 2 D1
+
D100 )
10. 2. 2 权电流网络型 D / A 转换器 :
D/A转换器集成电路有多种型号。 下面仅以DAC0832为例来介绍集成电 路 D/A 变换器。
I
23R 22R 21R 20R
S0 I0 S1
I1 S2
I2 S3
I3
VREF
D0
D1
(LSB)
D2
D3
(MSB)
R/2
-
+
uo
所谓“权电阻”,
是指电阻值 的大小, 与有 关数字量的权 重密切相关。
4
10. 2. 1 权电阻网络型 D / A 转换器 :
I
23R 22R 21R 20R S0 I0 S1 I1 S2 I2 S3 I3
UR
R3
R2
R1
R0
2R 2R 2R 2R 2R
RF
S3
S2
S1
S0
0 I3 0 I2 1 I1 1 I0
I
D3
D2
D1 D0
?
A+
uo
+
通过详细的推导分析,
即可获得模拟输出电压 uo 与数
字量以及电路中其它参数的关系。
12
DR C R BR A
UR
R3
R2
R1
R0
2R 2R 2R 2R 2R
RF
2. 转换速率 SR 转换速率 SR 以大信号工作状态下
输出模拟电压的变化率表示 。 D/A转换器完成一次转换所需要的
时间应包括建立时间和上升(或下降)时 间两部分 ,它的最大值为
TTR(max) = tS + VO(max) / SR
其中 VO(max) 为输出电压的最大值 。
18
10. 2. 5 集成 DAC 0832及其应用
造成转换误差的原因主要有 : 参考电压 VREF的波动 ; 运算放大器的零点漂移 ;
模拟开关的导通内阻和导通电压 ;
电阻网络中的电阻值偏差 ;…... 16
10. 2. 4 D/A转换器的主要技术指标
三、D/A转换器的转换速度
为了便于定量地描述D/A转换器的转换 速度 ,定义了建立时间 tS 和转换速率 SR两 个参数 。
S3
S2
S1
S0
0 I3 0 I2 1 I1 1 I0
I
D3
D2
D1 D0
-?
A+
uo
+
I = I3 + I2 + I1 + I0
=
UR 2R
D3
+
UR 4R
D2
+
UR 8R
D1
+
UR 16R
D0
=
UR 16R
( 8D3
+
4D2
+
2D1
+ 1D0 )
u o = - UR RF ( 8D3 + 4D2 + 2D1 + 1D0 )
例如,对一个十位D/A转换器来说 ,
1 210 - 1
=
1 1023
= 0. 001
15
7. 2. 4 D/A转换器的主要技术指标
二、转换误差
转换误差通常用输出电压满刻刻度FSR ( Full Scale Range ) 的百分数表示 。 例如 , 给出转换误差为 1 LSB ,这就表示输出模拟 电压的绝对误差等2于输入数字代码为 00…01 时 输出电压的一半 。
VREF
D0
D1
(LSB)
D2
D3
(MSB)
R/2
-
+
uo
电子开关 :
Dn = 1 时, Sn 接VREF ;
Dn = 0 时, Sn 接地端 。
5
S
0
T1 T2
1 当 D = 1 时, T2 管饱
a
和导通, T1 管截止 ,
D
模拟电子开关的
S 点与 a 点相通 ,而 a 点在电路中和VREF 连 。Biblioteka 16R13D0 D1
D2
D3 iI
RF
-?
A+
uo
+
S0
S1
S2
S3
I 16
I 16
I/8 I/4 I/2
2R 2R 2R 2R 2R
倒T型电阻网络 D / A转换器
R
R
R
UR I
14
10. 2. 4 D/A转换器的主要技术指标 一、分辨率
用输入数字量的有效位数来表示分辨率。
此外,也可以用D/A转换器能够分辨出来 的最小输出电压 (此时输入的数字代码只有最 低有效位为 1,其余各位都是 0 ) 与最大输出 电压 (此时输入的数字代码所有各位全是 1 ) 之比来给出分辨率 。
2
§10. 2 数 / 模 转换器 ( DAC ) 10. 2. 1 权电阻网络型 10. 2. 2 权电流型 10. 2. 3 T型电阻网络型 10. 2. 4 D/A变换器的主要技术指标 10. 2. 5 集成 DAC 0832及其应用
3
10. 2. 1 权电阻网络型 D / A 转换器 :