第11章--89C51单片机与DA转换器-AD转换器的接口

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第11章89C51单片机与D/A转换器、A/D转换器的接口非电物理量(温度、压力、流量、速度等),须经传感器转换成模拟电信号(电压或电流),必须转换成数字量,才能在单片机中处理。A/D转换器(ADC):模拟量→数字量的器件。D/A转换器(DAC):数字量→模拟量的器件。数字量,也常常需要转换为模拟信号。只需合理选用商品化的大规模ADC、DAC芯片,了解引脚及功能以及与单片机的接口设计。11.189C51与DAC的接口11.1.1D/A转换器概述1.概述输入:数字量,输出:模拟量。转换过程:送到DAC的各位二进制数按其权的大小转换为相应的模拟分量,再把各模拟分量叠加,其和就是D/A转换的结果。使用D/A转换器时,要注意区分:*D/A转换器的输出形式;*内部是否带有锁存器。(1)D/A转换器的两种输出形式两种输出形式:电压输出形式与电流输出形式。电流输出的D/A转换器,如需模拟电压输出,可在其输出端加一个I-V转换电路。(2)D/A转换器内部是否带有锁存器由于D/A转换需要一定的时间,在这段时间内D/A转换器输入端的数字量应保持稳定,为此应当在D/A转换器数字量输入端的设置锁存器。目前的D/A转换器内部大多带有锁存器,有的还具有双重或多重数据缓冲电路。2.主要技术指标(1)分辨率输入给DAC的单位数字量变化引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比。显然,二进制位数越多,分辨率越高。例如,若满量程为10V,根据定义则分辨率为10V/2n。设8位D/A转换,即n=8,分辨率为10V/2n=39.1mV,该值占满量程的0.391%,用1LSB表示。同理:10位D/A:1LSB=9.77mV=0.1%满量程12位D/A:1LSB=2.44mV=0.024%满量程根据对DAC分辨率的需要,来选定DAC的位数。(2)建立时间描述DAC转换快慢的参数,表明转换速度。定义:为从输入数字量到输出达到终值误差(1/2)LSB(最低有效位)时所需的时间。电流输出时间较短,电压输出再加上I-V转换时间,因此建立时间要长一些。快速DAC可达1s以下。(3)精度理想情况,精度与分辨率基本一致,位数越多精度越高。但由于电源电压、参考电压、电阻等各种因素存在着误差,精度与分辨率并不完全一致。位数相同,分辨率则相同,但相同位数的不同转换器精度会有所不同。例如,某型号的8位DAC精度为0.19%,另一型号的8位DAC精度为0.05%。11.1.2AT89C51与8位DAC0832的接口1.DAC0832芯片介绍(1)DAC0832的特性美国国家半导体公司产品,具有两个输入数据寄存器的8位DAC,能直接与89C51单片机相连。主要特性如下:*分辨率为8位;*电流输出,稳定时间为1s;*可双缓冲输入、单缓冲输入或直接数字输入;*单一电源供电(+5~+15V);(2)DAC0832的引脚及逻辑结构引脚:图11-1DAC0832的逻辑结构:图11-2引脚功能:DI0~DI7:8位数字信号输入端CS*:片选端。ILE:数据锁存允许控制端,高电平有效。WR1*:输入寄存器写选通控制端。当CS*=0、ILE=1、WR1*=0时,数据信号被锁存在输入寄存器中。XFER*:数据传送控制。WR2*:DAC寄存器写选通控制端。当XFER*=0,WR2*=0时,输入寄存器状态传入DAC寄存器中。IOUT1:电流输出1端,输入数字量全“1”时,IOUT1最大,输入数字量全为“0”时,IOUT1最小。IOUT2:D/A转换器电流输出2端,IOUT2+IOUT1=常数。Rfb:外部反馈信号输入端,内部已有反馈电阻Rfb,根据需要也可外接反馈电阻。Vcc:电源输入端,可在+5V~+15V范围内。DGND:数字信号地。AGND:模拟信号地。“8位输入寄存器”用于存放CPU送来的数字量,使输入数字量得到缓冲和锁存,由LE1*控制;“8位DAC寄存器”存放待转换的数字量,由LE2*控制;“8位D/A转换电路”由T型电阻网络和电子开关组成,T型电阻网络输出和数字量成正比的模拟电流。因此,DAC0832通常需要外接I-V转换的运算放大器电路,才能得到模拟输出电压。2.AT89C51与DAC0832的接口电路设计设计AT89C51单片机与DAC0832的接口电路时,常用单缓冲方式或双缓冲方式的单极性输出。(1)单缓冲方式DAC0832的两个数据缓冲器有一个处于直通方式,另一个处于受控的锁存方式。在不要求多路输出同步的情况下,可采用单缓冲方式。单缓冲方式的接口如图11-3:图11-3图11-3中,WR2*和XFER*接地,故DAC0832的“8位DAC寄存器”(见图11-2)处于直通方式。“8位输入寄存器”受CS*和WR1*端控制,且由译码器输出端FEH送来(也可由P2口的某一根口线来控制)。因此,89C51执行如下两条指令就可在WR1*和CS*上产生低电平信号,使0832接收89C51送来的数字量。MOVR0,#0FEH;DAC地址FEH→R0MOVX@R0,A;WR*和译码器FEH输出端有效现说明DAC0832单缓冲方式的应用。例11-1DAC0832用作波形发生器。试根据图11-3,分别写出产生锯齿波、三角波和矩形波的程序。①锯齿波的产生ORG2000HSTART:MOVR0,#0FEH;DAC地址FEH→R0MOVA,#00H;数字量→ALOOP:MOVX@R0,A;数字量→D/A转换器INCA;数字量逐次加1SJMPLOOP图11-4输入数字量从0开始,逐次加1,为FFH时,加1则清0,模拟输出又为0,然后又循环,输出锯齿波,如图11-4。每一上升斜边分256个小台阶,每个小台阶暂留时间为执行后三条指令所需要的时间。②三角波的产生ORG2000HSTART:MOVR0,#0FEHMOVA,#00HUP:MOVX@R0,A;三角波上升边INCAJNZUPDOWN:DECA;A=0时再减1又为FFHMOVX@R0,AJNZDOWN;三角波下降边SJMPUP③矩形波的产生ORG2000HSTART:MOVR0,#0FEHLOOP:MOVA,#data1MOVX@R0,A;置矩形波上限电平LCALLDELAY1;调用高电平延时程序MOVA,#data2图11-5MOVX@R0,A;置矩形波下限电平LCALLDELAY2;调用低电平延时程序SJMPLOOP;重复进行下一个周期DELAY1、DELAY2为两个延时程序,决定矩形波高、低电平时的持续时间。频率也可采用延时长短来改变。图11-6(2)双缓冲方式多路同步输出,必须采用双缓冲同步方式。接口电路如图11-7:1#DAC0832因和译码器FDH相连,占有两个端口地址FDH和FFH。2#DAC0832的两个端口地址为FEH和FFH。其中,FDH和FEH分别为1#和2#DAC0832的数字量输入控制端口地址,而FFH为启动D/A转换的端口地址。图11-7中DAC输出的VX和VY信号要同步,控制X-Y绘图仪绘制的曲线光滑,否则绘制的曲线是阶梯状。控制程序如下:图11-7例11-2设AT89C51单片机内部RAM中有两个长度为20的数据块,其起始地址为分别为addr1和addr2,请根据图11-7所示,编写能把addr1和addrr2中数据从1#和2#DAC0832同步输出的程序。程序中addr1和addr2中的数据,即为绘图仪所绘制曲线的x、y坐标点。DAC0832各端口地址:FDH:1#DAC0832数字量输入控制端口FEH:2#DAC0832数字量输入控制端口FFH:1#和2#DAC0832启动D/A转换端口工作寄存器0区的R1指向addr1;1区的R1指向addr2;0区的R2存放数据块长度;0区和1区的R0指向DAC端口地址。程序为:ORG2000Haddr1DATA20H;定义存储单元addr2DATA40H;定义存储单元DTOUT:MOVR1,#addr;0区R1指向addr1MOVR2,#20;数据块长度送0区R2SETBRS0;切换到工作寄存器1区MOVR1,#addr2;1区R1指向addr2CLRRS0;返回0区NEXT:MOVR0,#0FDH;0区R0指向1#DAC0832数;字量控制端口MOVA,@R1;addr1中数据送AMOVX@RO,A;addr1中数据送1#DAC0832INCR1;修改addr1指针0区R1SETBRS0;转1区。MOVR0,#0FEH;1区R0指向2#DAC0832数字量;控制端口MOVA,@R1;addr2中数据送AMOVX@R0,A;addr2中数据送2#DAC0832INCR1;修改addr2指针1区R1INCR0;1区R0指向DAC的启动D/A转换端口MOVX@R0,A;启动DAC进行转换CLRRS0;返回0区DJNZR2,NEXT;若未完,则跳NEXTLJMPDTOUT;若送完,则循环END3.DAC0832的单、双极性的电压输出有些应用场合需要DAC0832为单极性模拟电压输出,而有些场合则要求DAC0832双极性模拟电压输出,下面简单介绍。(1)DAC用作单极性电压输出。在需要单极性模拟电压环境下,可以按照图11-3所示接线。由于DAC0832是8位的D/A转换器,由基尔霍夫定律列出方程组,故可得输出电压vo与输入数字量B的关系为式中,B=27b7+26b6+…+21b1+20b0;VREF/256为一常数。显然,vo和输入数字量B成正比。B为0时,vo也为0,输入数字量为255时,vo为最大值,输出电压为单极性。(2)DAC用作双极性电压输出。在需双极性电压输出的场合下,可以按照图11-8所示接线。图中,DAC0832的数字量由单片机送来,A1和A2均为运算放大器,vo通过2R电阻反馈到运算放大器A2输入端,其他如图11-8所示。G点为虚拟地,可由基尔霍夫定律列出方程组,并解得由上式可知,在选用+VREF时,若输入数字量最高位b7为“1”,则输出模拟电压vo为正;若输入数字量最高位为“0”,则输出模拟电压vo为负。在选用-VREF时,vo输出值正好和选用+VREF时极性相反。REFo(128)128VvB图11-811.1.389C51与12位电压输出型D/A转换器AD667的接口设计8位DAC分辨率不够,可采用10位、12位、14位、16位的DAC。本节介绍89C51与12位D/A转换器AD667的接口设计。AD667是分辨率为12位的电压输出型D/A转换器,建立时间≤3s(至0.01%)。输入方式:双缓冲输入;输出方式:电压输出,通过硬件编程可输出+5V,+10V,±2.5V,±5V和±10V;内含高稳定的基准电压源可方便地与4位、8位或16位微处理器接口;双电源工作电压:±12V~±15V。1.引脚介绍标准28脚双列直插式。图11-9为引脚图,表11-1为其引脚说明。(1)内部功能结构及应用特性图11-10是AD667内部功能结构框图。应用特性:①模拟电压输出范围的配置AD667通过片外引脚的不同连接,可获得不同的输出电压量程范围。单极性工作时,可以获得0~5V和0~10V的电压。双极性工作时,可获得±2.5V,±5.5V和±10V的电压。具体量程配置可由引脚1,2,3,9的不同连接实现,如表11-2所列。图11-9图11-10由于AD667内置的量程电阻与其他元器件具有热跟踪性能,所以AD667的增益和偏置漂移非常小。②单极性电压输出图11-11为0~10V单极性电压输出电路原理图。在电路运行之前,为保证转换精度,首先要进行电路调零和增益调节。电路调零数字输入量全为“0”时,调节50k电位器W1,使其模拟电压输出端(VOUT)电压为0.000V。在大多数情况下,并不需要调零,只要把4脚与5脚相连(接地)即可。增益调节数字输入量全为“1”时,调节100电位器W2,使其模拟电压输出为9.9976V,即满量程的10.000V减去1LSB(约为2.44mV)所对应的模拟输出量。图11-11③双极性电压输出图11-12是-5V~+5V双极性电压输出。在

1 / 85
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功