1、D/A转换器转换器(Digital to Analog Converter)能把数字量转换为模拟量的电子器件(简称为DAC)。A/D转换器转换器(Analog to Digital Converter)能把模拟量转换成相应数字量(简称为ADC)。单片机测控系统中的ADC和DAC 7.3 A/D与与D/A的的C51编程编程7.3.1 D/A转换器基础转换器基础 电流输出型电流输出型D/A转换原理RVIREF总电流分支电流2iniIIRBRRVVDDDDVIIREFREFREFnininiiniiniiiDDID256256)2222(001166771010100122转换电流DAC0832外接
2、放大器反馈电阻转换电压25625601VBVBRIVREFREFfboRR转换电压与VREF和B成正比(与R无关),转换电压转换电压Vo与与VREF和和(D0D7)成正比。成正比。DAC的性能指标:1、分辨率分辨率通常将DAC能够转换的二进制的位数能够转换的二进制的位数n称为分辨率称为分辨率;一般n=8位、10位、12位、16位等;有时也将最小输出电压叫做分辨率分辨率 n 一定时,最小输出电压Vmin与VREF成正比;例如 n=8时,若VREF=10V,则Vmin=10V/25639.1mV;若VREF为5V,则Vmin19.5.1mV2、转换时间转换时间将一个数字量转换为稳定模拟信号所需的时
3、间称为转换时间;一般DAC的转换时间在几十纳秒(ns)几微秒(s)。DA转换芯片:DAC083220只引脚主要特性参数主要特性参数8位DA转换器分辨率 19.5mV(VREF=5V)转换时间 1s电流输出型数字量并行输入方式参考电压 -10V10V工作电压 5V15V功耗 20m VREF8GND3VCC20CS1WR12DI34DI25DI16DI07RFB9GND10IOUT111IOUT212DI713DI614DI515DI416XFER17WR218ILE(BY1/BY2)19DAC0832DAC0832的结构内部组成:1个8位输入锁存器1个8位DAC寄存器1个8位D/A转换器5个控
4、制端(2级控制)工作过程工作过程:8位并行数据到达输入锁存器输入锁存器输入端;1级控制允许后,数据到达DAC寄存器寄存器输入端;2级控制允许后,数据达到D/A转换器;转换器;s后,转换电流由Iout1引脚输出。第1级第2级【例【例7-4】DAC0832单缓冲方式举例。单缓冲方式举例。通过电压表测量通过电压表测量DAC0832转换转换输出的电压值。输出的电压值。#include#include#define uchar unsigned char#define DAC0832 XBYTE0 x7fff /DAC032的端口地址为7FFFHvoid main()P1=0 xff;/P1口为输入口w
5、hile(1)DAC0832=P1;/P1口的内容作为D/A转换器的输入【例【例7-5】双缓冲器工作方式示例双缓冲器工作方式示例。两路模拟量同步输出电路原理图#include#define INPUTR1 XBYTE0 xdfff#define INPUTR2 XBYTE0 xbfff#define DACR XBYTE0 x7fff#define uchar unsigned charvoid delay()unsigned int i;for(i=0;i2500;i+);void main()while(1)INPUTR1=0 x80;/第一个值送入1#DAC0832 INPUTR2=0
6、xff;/第二个值送入2#DAC0832 DACR=0;/两值同时输出 delay();INPUTR1=0 x00;INPUTR2=0 x00;DACR=0;delay();【例例7-6】生成阶梯波。生成阶梯波。#include#include#define uchar unsigned char#define DAC0832 XBYTE0 x7fffvoid main()uchar i=0;while(1)for(i=0;i256;i+)DAC0832=i;/从0开始到0FFH 【例例7-7】产生三角波。产生三角波。#include#include#define uchar unsigned
7、 char#define DAC0832 XBYTE0 x7fff /DAC0832端口地址7FFFHvoid main()uchar i=0;while(1)for(i=0;i0;i-)DAC0832=i;/下降阶段 【例例7-8】生成矩形波。生成矩形波。#include#include#define uchar unsigned char#define DAC0832 XBYTE0 x7fffvoid delay1()uchar j;for(j=0;j250;j+);void delay2()uchar j;for(j=0;j250;j+);void main()uchar i=0;whi
8、le(1)DAC0832=0 xff;delay1();DAC0832=0;delay2();【例例7-9】生成正弦波。生成正弦波。#include#include#define uchar unsigned char#define DAC0832 XBYTE0 x7fffcode uchar sintab=0 x7f,0 x89,0 x94,0 x9f,0 xaa,0 xb4,0 xbe,0 xc8,0 xd1,0 xd9,0 xe0,0 xe7,0 xed,0 xf2,0 xf7,0 xfa,0 xfc,0 xfe,0 xff;void delay()uchar j;for(j=0;j25
9、0;j+);void main()uchar data i=0,k;while(1)for(i=0;i0;i-)DAC0832=sintabi;/第2个1/4周期 for(i=0;i0;i-)DAC0832=sintabi;/第4个1/4周期 逐次逼近型逐次逼近型双积分型-型并行比较型/串行比较型压频变换型A/D转换器的分类:按转化原理按转化速度超高速(转换速度1ns)高速(转换速度20s)中速中速(转换速度转换速度1ms)低速(转换速度1s)8位位12位14位16位按转化位数ADC0809:8位中速逐次逼近型ADC7.3.2 A/D转换器基础转换器基础 逐次逼近式ADC的工作原理:逐次逼近寄
10、存器SAR天平秤重过程若有四个砝码分别为8、4、2、1克。设待秤重物为13克,称量步骤:顺序顺序 砝码重砝码重 比较判断比较判断 暂时结果暂时结果 1 8g 8g13g 保留 8g 2 8+4g 12g13g 撤消 2g 4 8+4+1g 13g=13g 保留 13gN位寄存器最高位=1,其余位=0 VN=1/2Vref;比较Vin与VN:若VinVN,最高位保持1,次高位置1 Vn=3/4Vref;反之最高位=0,次高位=1 Vn=1/4Vref;以此类推直至Vin=VN,或误差小于预期值;N位寄存器结果锁存缓存器EOC。ADC的性能指标:1、分辨率、分辨率用系统可分辨的最小模拟电压表示AD
11、转换分辨率 一般以1个bit对应的模拟电压大小作为评判基准通常也以转换后输出的二进制位数n表示分辨率 一般n=8位、10位、12位、16位等;2、转换时间、转换时间完成一次AD转换所需要的时间称为转换时间 逐次逼近型ADC的典型值为1200s 主要特性参数主要特性参数分辨率 位 转换时间 100s 逐次比较型模数转换工作量程 05V功耗 15m工作电压 +5V具有锁存控制的8路模拟开关输出与TTL电平兼容 A/D转换芯片:ADC0809VREF8GND3VCC20CS1WR12DI34DI25DI16DI07RFB9GND10IOUT111IOUT212DI713DI614DI515DI416
12、XFER17WR218ILE(BY1/BY2)19DAC08322-1MSB21ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START62-58EOC7OUTPUT ENABLE9CLOCK10VCC112-220GND132-7142-6152-8LSB172-4182-319IN228IN127IN026ALE22ADC0809OUT121ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220
13、OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22ADC080828只引脚VREF8GND3VCC20CS1WR12DI34DI25DI16DI07RFB9GND10IOUT111IOUT212DI713DI614DI515DI416XFER17WR218ILE(BY1/BY2)19DAC08322-1MSB21ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START62-58EOC7OUTPUT ENABLE9CLOCK10VCC112-220GND132-7142-61
14、52-8LSB172-4182-319IN228IN127IN026ALE22ADC0809OUT121ADD B24ADD A25ADD C23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22ADC0808 8路模拟开关外接IN0IN7 共8路模拟信号,具有8选1功能;地址锁存译码采用三根地址线A、B、C编码模入通道;8路AD转换器采用SAR原理;三态输出锁存器可实现转换结果的锁存/隔离;START启动A
15、D转换,CLK转换时钟,VR+/VR-参考电压,EOC结束标志,OE输出使能,ALE地址锁存使能ADC0809的结构组成:工作时序ALE锁存ADDA、ADDB、ADDCSTART正脉冲启动AD转换 EOC由高变低(AD启动后)保持低电平(转换期间)由低变高(转换结束)OE正脉冲,打开三态门输出【例例7-10】采用采用ADC0809芯片实现芯片实现1路模拟路模拟输入输入A/D转换。转换。#include#include#define uchar unsigned char#define ADC08090 XBYTE0 x78ffsbit P33=P33;void delay()uchar j;f
16、or(j=0;j250;j+);/*void main()/无条件方式 while(1)ADC08090=0;/delay();P1=ADC08090;*/*void main()/查询方式 while(1)ADC08090=0;l1:P33=1;if(P33=0)P1=ADC08090;else goto l1;void main()/中断方式 EA=1;EX1=1;IT1=1;ADC08090=0;while(1);void int0()interrupt 2 P1=ADC08090;/读取数据 ADC08090=0;/启动A/D【例【例7-11】8路模拟输入路模拟输入A/D转换示例转换示例。#define uchar unsigned charxdata uchar *ad;uchar i=0;uchar data adtab8;addv()interrupt 2adtabi=*ad;/读入转换数据 ad=ad+0 x100;/指向下一通道 i+;*ad=0;/启动转换void main()EA=1;EX1=1;IT1=1;ad=0 x78ff;/置地址指针 *ad=0;/启动转换 while(i8)/8路未转换完,继续等待 EA=0;