1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,7.3.1 D/A,转换器概述,7.3.2 D/A,转换器的性能指标,7.3.3 D/A,转换器的原理,7.3.4,DAC0832,与,MCS-51,的接口,7.3 D/A,接口技术,1,单片机广泛应用于检测及过程的自动控制中,必须先把外部采集到的模拟量,例如电压、电流、温度、压力、速度、加速度等通过,A/D,转换器,(analog to digital converter,ADC),转换成数字量,送到计算机进行处理。所得结果再通过,D/A,转换器,(digital to analog converter,
2、DAC),转换为与输入数字量成正比的模拟量(电压、电流或脉冲宽度等),去驱动执行部件完成对被控参数的控制。所以,ADC,、,DAC,也是单片机在工控中不可缺少的部分。,2,3,7.3.1 D/A,转换器概述,D/A,转换器的基本功能是将一个用二进制形式表示的数字量转换成相应的模拟量,为单片机在模拟环境中的应用提供了一种数据转换接口。,1,、,D/A,转换器的输入方式,串行方式,:适用于要求转换速度不高的系统中,占用接口资源少,方便连接。,并行方式,:适用于转换数据量较大,且要求转换速度较高的系统中。,4,2,、,D/A,转换器的输出形式,电压输出,:输出的模拟量为电压信号。,电压输出又有单极性
3、0V5V,、,0V12V,等,),和双极性,(5V,、,12V,等,),之分,可根据需要选择。,电流输出,:输出的模拟量为电流信号。,在实际应用中如需要模拟电压,对于电流输出的,D/A,,,可在其输出端加运算放大器,通过运算放大器构成电流,-,电压转换电路。,5,3,、,D/A,转换器的锁存器,由于,D/A,转换总是需要一定的时间,在这段时间内待转换的数字量应保持稳定,因此,DAC,对输入端是否具有锁存功能也是必须考虑的因素之一,它直接关系到,DAC,与单片机的接口设计。,内部无锁存功能的,DAC,:可直接与具有锁存功能的,I/O,接口相连。(如,DAC800,),内部有锁存功能的,DAC
4、内部都附加有地址译码器,有的还具有双重或多重数据缓冲电路。(如,DAC0832,、,AD7542,),6,7.3.2 D/A,转换器的性能指标,DAC,性能指标是选用,DAC,芯片型号的依据,也是衡量芯片质量的重要参数。,DAC,性能指标很多,主要有以下四个:,1,、分辨率(,resolution,),2,、转换精度(,conversion accuracy,),3,、偏移量误差(,offset error,),4,、线性度(,linearity,),7,1,、分辨率,是指,D/A,转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。一个,n,位的,DAC,所能分辨的最小电压增量
5、定义为满量程值的 倍。,例如:满量程为,10V,的,8,位,DAC,芯片的分,辨率为,10V =39mV,;,一个同样量程的,16,位,DAC,的分辨率高达,10V =153,V,2,-n,2,-8,2,-16,8,简单的说:,设,n,为输出数字量的位数,,Vmax,为输入模拟电压的,满度值,(,满量程,),,则分辨率定义为:,9,2,、转换精度,转换精度是指满量程时,DAC,的实际模拟输出值和理论值的接近程度。,例如:满量程时理论输出值为,10V,,实际输出值是在,9.9910.01V,之间,其转换精度为,10mV,。,通常,,DAC,的转换精度为分辨率的一半,即,LSB/2,。,10,3,
6、偏移量误差,是指输入数字量为零时,输出模拟量对零的偏移值。,这种误差通常可以通过,DAC,的外接,V,REF,(,参考电压,),和电位计加以调整。,11,4,、线性度,是指,DAC,的实际转换特性曲线和理想直线之间的最大偏差。,通常线性度不应超出,1/2LSB,。,12,D/A,转换器的原理很简单,可总结为:,“按权展开,然后相加”,即:它将数字量的每位按权值分别转换成模拟量,再通过运算放大器求和相加,因此,D/A,转换器内部必须有一个解码网络,以实现按权值分别进行,D/A,转换。,7.3.3 D/A,转换器的原理,13,(,1,),D/A,转换器内部结构,电阻解码网络,二进制数字开关,基准
7、电源,运算放大器,(,2,)解码网络,解码网络通常有两种:,二进制加权电阻网络,T,型电阻网络,14,二进制加权电阻网络型,D/A,转换器,V,out,15,在二进制加权电阻网络中,每位二进制的,D/A,转换是通过相应位加权电阻实现的,这必然导致加权电阻阻值差别极大,尤其在,DAC,位数较大时。,例如:若某,DAC,转换器有,12,位,则最高位加权电阻为,10K,时的最低位加权电阻应当是:,10K,=20M,2,11,16,为什么现代,D/A,转换器多采用,T,型电阻网络?,在二进制加权电阻网络中,每位二进制的,D/A,转换是通过相应位加权电阻实现的,这必然导致加权电阻阻值差别极大,尤其在,D
8、AC,位数较大时。,这么大的电阻值在,VLSI,技术中很难制造出来,即便制造出来,其精度也很难符合要求。,因此,现代,D/A,转换器几乎毫无例外地采用,T,型电阻网络,进行解码活动。,17,现以,4,位,D/A,转换器为例说明,T,型电阻网络原理。下图是其原理图。桥上电阻为,R,,桥臂电阻为,2R,,,OA,为运算放大器,,A,点为虚拟地,,V,REF,为参考电压,,S3S0,为电子开关,受,4,位,DAC,寄存器中的,b3b2b1b0,控制。为了分析问题,设,b3b2b1b0,全为“,1”,,故,S3S2S1S0,全部和“,1”,端相连,根据,克希荷夫定律,,关系式,(1)(4),成立。,1
9、8,T,型电阻网络型,D/A,转换器,19,(,1,),(,2,),(,3,),(,4,),克希荷夫定律:,从电路中任何一接点来看,流入接点电流总量等于流出的电流总量。,20,事实上,,S3S0,的状态是受,b3b2b1b0,控制的,并一定全为“,1”,。若它们中有些位为“,0”,,,S3S0,中相应的开关与“,0”,端相接而无电流流入,A,点。因此,可以得到公式(,5,)。,(,5,),选取,R,f,=,R,,,并考虑,A,点为虚地,故,(,6,),3,21,对于,n,位,T,型电阻网络,可得:,上述讨论表明:,D/A,转换过程主要由解码网络实现,而且是并行工作的。,换句话说,,D/A,转换
10、器并行输入数字量,每位代码也是同时被转换成模拟量。这种转换方式的速度快,一般为微秒级,有的可达几十毫微秒。,22,7.3.4,DAC0832,与,MCS-51,的接口,1,、典型,D/A,转换器芯片,DAC0832,DAC0832,是一个,8,位并行、电流型,D/A,转换芯片,价格低廉、接口简单,在单片机控制系统中得到了广泛应用。,(,内部解码网络采用的就是,T,型电阻网络,),DAC0832,转换器芯片为,20,引脚,双列直插式封装,其引脚排列如图,1,所示。,23,图,1 DAC0832,引脚图,24,DAC0832,内部结构,DAC0832,内部结构框图如图,2,所示。该转换器内部由三部
11、分电路组成:,8,位输入寄存器,:存放,CPU,送来的数字,量,由,LE1,加以控制。,8,位,DAC,寄存器,:存放待转换数字量,由,LE2,加以控制。,8,位,D/A,转换电路,:由,8,位,T,型电阻网络和电子开关组成,电子开关受“,8,位,DAC,寄存器”输出控制。,25,图,2 DAC0832,内部结构框图,26,引脚功能,(1),数字量输入线,DI7,DI0,(,8,条):,常和,CPU,数据总线相连,用于输入待,转换数字量。,(2),控制线(,5,条):,CS,:片选线,低电平有效。,ILE,:数据锁存允许信号,高电平有效。,WR1,:第,1,写信号,低电平有效。,27,其中:,
12、ILE,和 控制,8,位输入寄存器是数据直通方式还是数据锁存方式,,当,ILE=1,和,=0,时,为直通方式,当,ILE=1,和,=1,时,为寄存器锁存方式,WR2,:第,2,写信号,低电平有效。,XFER,:传送控制输入线,低电平有效。,上述两个信号控制,DAC,寄存器是数据直通方式还是数据锁存方式,,当,=0,和,=0,时,为直通方式;,当,=1,和,=0,时,为锁存方式。,28,(3),输出线(,3,条):,Iout1,:,电流输出,1,。,Iout2,:,电流输出,2,。,Rfb,:,反馈电阻端。,DAC0832,是电流输出,为了取得电压输出,需在电压输出端接运算放大器,,Rfb,即为
13、运算放大器的反馈电阻端。,29,运算放大器接法,30,(4),电源线(,4,条):,Vref,:基准电压(参考电压),范围是,-10 V,+10 V,。,VCC,:电源输入线,DGND,:数字地,AGND,:模拟地。,31,2,、,DAC0832,与,MCS-51,的接口,有三种连接方式:,直通方式(两级直通),单缓冲方式(一级锁存,一级直通),双缓冲方式(两级锁存),32,采用哪种方式取决于:,当,LE1,、,LE2,为,0,时:,输入数据被锁存,当,LE1,、,LE2,为,1,时:,锁存器的输出跟随输入,如图,2,所示,33,直通方式,此时,LE1,、,LE2,均衡为,1,,,DI7,DI
14、0,上的信号可直接通过前两级寄存器到达,D/A,转换器,进行,D/A,转换。,因此,,ILE,接,+5V,,,CS,、,XFER,、,WR1,、,WR2,接地,,DAC0832,就可在直通方式下工作。,如图,2,所示,34,单缓冲方式,是指,DAC0832,内部的两个寄存器有一个处于直通方式,,而另一个处于受控的锁存方式。,在实际应用中,如果只有一路模拟量输出,或虽有几路模拟量但并不要求,同步输出,时,就可采用单缓冲方式,。,35,WR,74LS373,G,DAC0832,DI70,CS,XFER,WR1,WR2,V,cc,ILE,V,ref,Rfb,Iout1,Iout2,AGND,DGND
15、5V,P,2.7,ALE,P0,8051,o,o,o,V,out,为使,DAC,寄存器处于直通方式,应使,WR2,、,XFER,这两个信号,固定接地,。把,WR1,接,8051,的,WR,,,ILE,接高电平,,CS,接高位地址线或地址译码输出,由单片机控制,输入寄存器,。,图,3 DAC0832,单缓冲方式接口,36,单缓冲方式应用举例,1.,锯齿波电压发生器,MOV A,,,#00H,;取下限值,MOV DPTR,,,#7FFFH,;指向,0832,口地址,MM,:,MOVX DPTR,,,A,;输出,INC A,;延时,NOP,NOP,NOP,SJMP MM,;反复,假定输入
16、寄存器地址为,7FFFH,程序如下:,37,D/A,转换产生的锯齿波,请思考:,(,1,)真的是平滑锯齿波吗?,(,2,)要改变信号频率,如何处理?,(,3,)负向锯齿波,如何处理?,(,4,)不是满幅度输出,如何处理?,38,几点说明:,(1),程序每循环一次,,A,加,1,,因此实际上锯齿波的上升边是由,256,个小阶梯构成的,但由于阶梯很小,所以宏观上看就如图中所画的线性增长锯齿波。,39,(,2,)可通过循环程序段的机器周期数,计算出锯齿波的周期。并可根据需要,通过延时的方法来改变波形周期。若要改变锯齿波的频率,可在,SJMP MM,指令前加入延迟程序即可。延时较短时可用,NOP,指令
17、实现(本程序就是如此),需要延时较长时,可以使用一个延长子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。,40,(,3,)通过,A,加,1,,可得到正向的锯齿波,反之,A,减,1,可得到负向的锯齿波。,(,4,)程序中,A,的变化范围是,0,255,,因此得到的锯齿波是满幅度的。如要求得到非满幅锯齿波,可通过计算求的数字量的初值和终值,然后在程序中通过置初值和终值的方法实现。,41,单缓冲方式应用举例,2.,矩形波电压发生器,ORG 1100H,START:MOV DPTR,#00FEH,;送,DAC0832,口地址,LOOP:MOV A,#dataH,;送高电平数据,MOVX DPT
18、R,A,LCALL DELAYH,;调用延时子程序,MOV A,#dataL,;送低电平数据,MOVX DPTR,A,LCALL DELAYL,;调用延时子程序,SJMP LOOP,假定输入寄存器地址为,00FEH,程序如下:,42,D/A,转换产生的矩形波,43,(,2,)改变延时子程序,DELAYL,和的,DELAYH,延时时间,就可改变矩形波上下沿的宽度。,若,DELAYL=DELAYH,(,两者延时一样),则输出的是方波。,(,3,)改变上限值或下限值便可改变矩形波的幅值;单极性输出时为,0,-5V,或,0,+5V,;,双极性输出时为,-5V,+5V,。,几点说明:,(,1,)以上程序
19、产生的是矩形波,其低点平的宽度由延时子程序,DELAYL,所延时的时间来决定,高电平的宽度则由,DELAYH,所延时的时间决定。,44,单缓冲方式应用举例,3.,三角波电压发生器,MOV A,#00H,;取下限值,MOVX DPTR,#FEFFH,;指向,0832,口地址,SS1,:,MOVX DPTR,A,;输出,NOP,;延时,NOP,NOP,SS2:INC A,;转换值增量,JNZ SS1,;未到峰值,则继续,SS3:DEC A,;已到峰值,则取后沿,MOVX DPTR,A,;,输出,NOP,;延时,NOP,NOP,JNZ SS3,;未到谷值,则继续,SJMP SS2,;已到谷值,则反复
20、45,双缓冲方式,是指,DAC0832,内部的两个寄存器即“,8,位输入寄存器”和“,8,位,DAC,寄存器”,都,接成受控锁存方式,。,CPU,必须通过,LE1,来锁存待转换的数字量,通过,LE2,启动,D/A,转换。,如图,3,所示,46,图,3 8031,与,DAC0832,双缓冲方式接口电路,例:图,3,为两片,DAC0832,与,8031,的双缓冲方式连接,电路,编写实现两路同步输出的程序。,47,DAC0832,的逻辑结构,D7,D6,D5,D4,D3,D2,D1,D0,D7,D6,D5,D4,D3,D2,D1,D0,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,Q7,Q6,Q
21、5,Q4,Q3,Q2,Q1,Q0,D7,D6,D5,D4,D3,D2,D1,D0,48,WR,CS,八位,输入,寄存器,八位,DAC,寄存器,八位,D/A,转换器,DI,0,DI,7,ILE,1,WR,2,I,LE1,I,LE2,XFER,AGND,R,fb,I,OUT2,I,OUT1,V,REF,49,实现两路同步输出的程序如下:,MOV DPTR,,,#0DFFFH,;送,0832,(,1,)输入寄存器地址,MOV A,,,#data1,;,MOVX DPTR,,,A,;,data1,送,0832,(,1,)输入寄存器,MOV DPTR,,,#0BFFFH,;送,0832,(,2,)输入寄
22、存器地址,MOV A,,,#data2,;,MOVX DPTR,,,A,;,data2,送,0832,(,2,)输入寄存器,MOV DPTR,,,#7FFFH,;,送两路,DAC,寄存器地址,MOVX DPTR,,,A,;,两路数据同步转换输出,50,图,4 8031,与两片,DAC0832,的双缓冲方式接口,P2.7 2.3 2.5,P2.5,P2.3,WR,1#,2#,练习:,51,为了实现寄存器的可控,应当给寄存器分配一个地址,以便能按地址进行操作。,图中,,1#,DAC0832,的,CS,和,P2.5,相连,故,8031,控制,1#,中,LE1,的选口地址为,DFFFH,;,2#,DA
23、C0832,的,CS,和,P2.3,相连,故,8031,控制,2#,中,LE1,的选口地址为,F7FFH,。,52,1#,和,2#,DAC0832,的,XFER,和,P2.7,相连,故,8031,控制,1#,和,2#,中,LE2,的选口地址为,7FFFH,。,工作时,,8031,可以分别通过选口地址,DFFFH,和,F7FFH,把,1#,和,2#,DAC0832,的数字量送入相应,8,位输入寄存器,后再通过选口地址,7FFFH,把输入寄存器中的数据,同时送入,相应,8,位,DAC,寄存器中,以实现,D/A,转换。,53,ORG 1200H,MOV DPTR,,,#0DFFFH,;,DPTR,指
24、向,DFFFH,MOV A,,,#,Xdata,MOVX DPTR,,,A,;,Xdata,写入,1#DAC0832,MOV DPTR,,,#0F7FFH,;,DPTR,指向,F7FFH,MOV A,,,#,Ydata,MOVX DPTR,,,A,;,Ydata,写入,2#DAC0832,MOV DPTR,,,#07FFFH,;,DPTR,指向,7FFFH,MOVX DPTR,,,A,;,启动,1#,和,2#DAC0832,工作,END,54,小结:,双缓冲方式的接口与应用,在多路,D/A,转换的情况下,若要求同步转换输出,必须采用双缓冲方式。,DAC0832,采用双缓冲方式时,数字量的输入锁存和,D/A,转换输出是分两步进行的。,第一,,CPU,分时向各路,D/A,转换器输入要转换的数字量并锁存在各自的输入寄存器中。,第二,,CPU,对所有的,D/A,转换器发出控制信号,使各路输入寄存器中的数据进入,DAC,寄存器,实现同步转换输出。,55,






