1、单片机原理与应用实验 信通学院 李北明 D/AD/A转换概述转换概述一、一、D/A(Digit to Analog)转换器:转换器:为把数字量转换成模拟量,在为把数字量转换成模拟量,在D/AD/A转换转换芯片中要有解码网络:芯片中要有解码网络:权电阻网络;权电阻网络;倒倒T T型电阻网络。型电阻网络。D/AD/A转换器的原理:转换器的原理:把输入数字量中每位都按其权值分别转换成模拟量,并通把输入数字量中每位都按其权值分别转换成模拟量,并通过运算放大器求和相加。根据克希荷夫定律,如下关系成立:过运算放大器求和相加。根据克希荷夫定律,如下关系成立:I I0 0=2=20 0 I I1 1=2=21
2、 1 I I2 2=2=22 2 I I3 3=2=23 3n位数字量与模拟量的关系式:位数字量与模拟量的关系式:VO=VREF(数字码(数字码/2n)(VREF 参考电压参考电压)二、二、D/AD/A输出形式:输出形式:电压;电压;电流电流 运算放大器运算放大器 电压。电压。注:因使用反相比例放大器来实现电流注:因使用反相比例放大器来实现电流到电压的转换,所以输出模拟信号到电压的转换,所以输出模拟信号(VO)的极性与参考电压的极性与参考电压(VREF)极性相反。极性相反。与与P1、P2接口:不需加锁存器,直接接口。接口:不需加锁存器,直接接口。无锁存器无锁存器 与与P0接口:因接口:因P0的
3、特殊功能,需加锁存器。的特殊功能,需加锁存器。D/A内内 如:如:DAC800DAC800、AD7520AD7520、AD7521AD7521等。等。有锁存器:最好与有锁存器:最好与P0直接接口。直接接口。如:如:DAC0832DAC0832、DAC1230DAC1230等。等。1、分辨率(、分辨率(Resolution)是指是指D/A转换器能分辨的转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。最小输出模拟增量,取决于输入数字量的二进制位数。2、建立时间(、建立时间(Establishing Time)是描述是描述D/A转转换速度的快慢。换速度的快慢。3、转换精度(、转换精度(
4、Conversion Accuracy)指满量程指满量程时时DAC的实际模拟输出值和理论值的接近程度。的实际模拟输出值和理论值的接近程度。4、偏移量误差(、偏移量误差(Offset Error)偏移量误差是指输偏移量误差是指输入数字量为零时,输出模拟量对零的偏移值。入数字量为零时,输出模拟量对零的偏移值。5、线性度(、线性度(Linearity)线性度是指线性度是指DAC的实际转换的实际转换特性曲线和理想直线之间的最大偏移差。特性曲线和理想直线之间的最大偏移差。1 1、分辨率、分辨率(Resolution):):对对D/AD/A转换器输入量变化敏感程度进行描述,转换器输入量变化敏感程度进行描述
5、,与输入数字量的位数有关。与输入数字量的位数有关。若数字量的位数为若数字量的位数为n n,则分辨率为,则分辨率为2 2n n。数字量位数越多,分辨率就越高。数字量位数越多,分辨率就越高。应用时,应根据分辨率的需要选定转换器的位数。应用时,应根据分辨率的需要选定转换器的位数。注:注:BCDBCD码输出的码输出的A/DA/D转换器用位数表示分辨率。转换器用位数表示分辨率。2 2、建立时间、建立时间(Establishing Time):):(转换速度)转换速度)描述描述D/AD/A转换速度的快慢。转换速度的快慢。输出形式为电流的转换器比电压的建立时间短。输出形式为电流的转换器比电压的建立时间短。D
6、/AD/A转换速度远高于转换速度远高于A/DA/D转换。转换。3 3、转换精度(转换精度(Conversion Accuracy):):指满量程时指满量程时DAC的实际模拟输出值和理论值的接的实际模拟输出值和理论值的接近程度。近程度。8 8位双缓冲器结构的位双缓冲器结构的D/AD/A转换器。转换器。DIDI0 07 7:转换数据输入(:转换数据输入(8 8位);位);CSCS:片选信号(输入);:片选信号(输入);ILEILE:数据锁存允许信号(输入);:数据锁存允许信号(输入);XFERXFER:数据传送控制信号(输入);:数据传送控制信号(输入);WRWR1 1:第一写信号(输入),与:第
7、一写信号(输入),与ILEILE共同控制输入寄存器是数据直通方式还是共同控制输入寄存器是数据直通方式还是 数据锁存方式;数据锁存方式;WRWR2 2:第:第2 2写信号(输入),与写信号(输入),与XFERXFER共同控制共同控制DACDAC寄存器是数据直通方式还是寄存器是数据直通方式还是 数据锁存方式;数据锁存方式;8位位DACDAC寄存器寄存器输入输入寄存器寄存器-+IOUT2IOUT1RfbVODI07AGNDILECS与与与WR1WR2XFERLE1LE2l l DAC用作单极性电压输出用作单极性电压输出;l l DAC用作双极性电压输出用作双极性电压输出;l l DAC用作控制放大器
8、。用作控制放大器。输入数字量输入数字量Bb7 b6 b5 b4 b3 b2 b1 b0Vout(理想值)(理想值)+VREF时时-VREF时时1 1 1 1 1 1 1 1|VREF|-LSB-|VREF|+LSB1 1 0 0 0 0 0 0|VREF|/2-|VREF|/21 0 0 0 0 0 0 0000 1 1 1 1 1 1 1-LSBLSB0 0 1 1 1 1 1 1-|VREF|/2-LSB|VREF|/2+LSB0 0 0 0 0 0 0 0-|VREF|VREF|例:例:D/AD/A转换程序,用转换程序,用DAC0832DAC0832输出输出0 0+5V+5V锯齿波,锯齿
9、波,电路为电路为直通方式直通方式。设。设V VREFREF=-5V=-5V,若,若DAC0832DAC0832地址地址 为为00FEH00FEH,脉冲周期要求为,脉冲周期要求为100100msms。100msDACSDACS:MOVMOVDPTRDPTR,#00FEH#00FEH;0832 0832 I/OI/O地址地址MOVMOVA A,#00H#00H;开始输出;开始输出0 0V VDACLDACL:MOVXMOVXDPTRDPTR,A A;D/AD/A转换转换INCINCA A;升压;升压ACALLACALL DELAYDELAY;AJMPAJMPDACLDACL;连续输出;连续输出DE
10、LAYDELAY:;延时子程序;延时子程序阶梯波形图 START:MOV A,00H ;MOV DPTR,7FFFH ;0832 的地址送DPTR MOV R1,0AH ;台阶数为 10LP:MOVX DPTR,A ;送数据至 0832 CALL DELAY ;1 ms延时 DJN2 R1,NEXT ;不到 10 台阶转移 SJMP STRT ;产生下一个周期NEXT:ADD A,10 ;台阶增幅 SJMP LP ;产生下一台阶DELAY:MOV 20H,249 ;1 ms延时程序AGAIN:NOP NOP DJNZ 20H,AGAIN 80C5180C51例:例:D/AD/A转换程序,用转换
11、程序,用DAC0832DAC0832输出输出0 0+5V+5V三角波,三角波,电路为电路为单缓冲方式单缓冲方式。设。设V VREFREF=-5V=-5V,若,若DAC0832DAC0832地地 址为址为00FEH00FEH,脉冲周期要求为(,脉冲周期要求为(100100msms)。)。100msORGORG2000H2000HSTARSTAR:MOVMOVDPTRDPTR,#00FEH#00FEH;DAC0832DAC0832地址地址MOVMOVA A,#00H#00H;开始输出;开始输出0 0V VUPUP:MOVXMOVXDPTRDPTR,A A;D/AD/A转换转换INCINCA A;产
12、生上升段电压;产生上升段电压;上升到;上升到A A中为中为FFHFFH(A A00跳)跳)DOWNDOWN:DECDECA A;产生下降段电压;产生下降段电压MOVXMOVXDPTRDPTR,A A;下降到;下降到A A中为中为0000H H;重复;重复#include#include#define DAC0832 XBYTE0 x00FE#define uchar unsigned char#define unit unsigned int void stair(void)uchar i;while(1)for(i=0;i=255;i=i+)/*形成锯齿波输出值,最大形成锯齿波输出值,最大2
13、55*/DAC0832=i;/*D/A转换输出转换输出*/例:例:用用DAC0832DAC0832实现驱动绘图仪,电路为实现驱动绘图仪,电路为双缓冲方式双缓冲方式。1#1#和和2#DAC08322#DAC0832地址分别为地址分别为00FEH00FEH和和0000FDHFDH。则绘图仪的驱动程序为:则绘图仪的驱动程序为:ORGORG2000H2000HMOVMOVDPTRDPTR,#00FEH#00FEH ;选中;选中1#08321#0832(的输入寄存器):(的输入寄存器):A A0 0=0=0MOVMOVA A,#Datax#DataxMOVXMOVXDPTRDPTR,A A ;Datax
14、Datax写入写入1#08321#0832输入寄存器输入寄存器MOVMOVDPTRDPTR,#00FDH#00FDH ;选中;选中2#08322#0832(的输入寄存器):(的输入寄存器):A A1 1=0=0MOVMOVA A,#Datay#DatayMOVXMOVXDPTRDPTR,A A ;DatayDatay写入写入2#08322#0832输入寄存器输入寄存器MOVMOVDPTRDPTR,#00FBH#00FBH ;选中;选中1#1#和和2#08322#0832的的DACDAC寄存器:寄存器:A A2 2=0=0MOVXMOVXDPTRDPTR,A A ;1#1#和和2#2#输入寄存器
15、的内容同时输入寄存器的内容同时 传送到传送到DACDAC寄存器中寄存器中#include#include#define INPUTR1 XBYTE0 x00FE#define INPUTR2 XBYTE0 x00FD#define DACR XBYTE0 x00FB#define uchar unsigned char void dac2b(data1,data2)uchar data1,data2;INPUTR1=data1;/*数据送到一片数据送到一片DAC0832*/INPUTR2=data2;/*数据送到另一片数据送到另一片DAC0832*/DACR=0;/*启动两路启动两路D/A同时
16、转同时转换换*/一、实验目的二、实验说明三、实验仪器四、实验内容六、实验报告要求五、思考题1、了解、了解D/A转换的基本原理。转换的基本原理。2、了解、了解D/A转换芯片转换芯片0832的性能及编程方的性能及编程方法。法。3、了解单片机系统中扩展、了解单片机系统中扩展D/A转换的基本方转换的基本方 法。法。1、利用利用DAC0832,编制程序产,编制程序产生锯齿波、三角波、正弦波。三种生锯齿波、三角波、正弦波。三种波轮流显示,用示波器观看。波轮流显示,用示波器观看。计算机计算机 伟福实验箱(伟福实验箱(lab2000P)示波器示波器 1、D/A转换是把数字量转换成模拟量的变换,实验台上D/A电
17、路输出的是模拟电压信号。要实现实验要求,比较简单的方法是产生三个波形的表格,然后通过查表来实现波形显示。2、产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要分段来产生。要产生正弦波,较简单的方法是造一张正弦数字量表。即查函数表得到的值转换成十六进制数填表。D/A转换取值范围为一个周期,采样点越多,精度越高些。本例采用的采样点为256点/周期。3、8位D/A转换器的输入数据与输出电压的关系为 U(0-5V)=Uref/256N U(-5V+5V)=2Uref/256N-5V (这里 Uref为+5V)CS0832 equ 0a000h mov dptr,#CS0832 mov
18、 a,#0 movx dptr,a mov a,#40h movx dptr,a mov a,#80h movx dptr,a mov a,#0c0h movx dptr,a mov a,#0ffh movx dptr,a ljmp$end 1、改变输出波形的周期和幅度,、改变输出波形的周期和幅度,缩小或者提高;缩小或者提高;2、程序改为查表方式输出;如何、程序改为查表方式输出;如何计算出数据表;计算出数据表;3、手动按键改变三种方式轮换输、手动按键改变三种方式轮换输出。出。1、实验目的和内容、实验目的和内容 2、记录下对原程序修改的地方,分析原理、记录下对原程序修改的地方,分析原理3、写清相关程序运行结果,并详细说明结果、写清相关程序运行结果,并详细说明结果 的正确性的正确性