您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 第11章89C51单片机与DA、AD转换器的接口
单片机与D/A、A/D转换器的接口单片机用于智能仪表和测控系统时,要与各种各样的外界信号打交道:单片机的驱动控制设备{模拟设备:电动调节阀、模拟记录仪数字设备:数字显示仪表、继电器触点由于单片机的输入和输出信号只能是数字量,因此在由单片机构成的测控系统中经常要用到模/数转换和数/模转换接口。{模拟信号:如被控对象的温度、压力等开关信号:如指拨开关和按键开关单片机的输入信号图单片机和被控对象间的接口示意图【例】电梯载荷监测提示系统。载荷监测提示系统利用A/D转换器将采集到的模拟的重量值转换成相应的数字量,由单片机完成对重量值的分析比较,得出超载或不超载的结果,并在超载时发出控制信号,启动声音提示模块发出超载提示。一、单片机与DAC的接口D/A转换器概述典型芯片DAC0832DAC0832的应用与AD667接口设计1、D/A转换器概述单片机控制对象D/A转换将数字量转换为模拟量,以便操纵控制对象。*D/A转换器的输出形式;*内部是否带有锁存器。使用D/A转换器时,要注意区分:D/A转换器集成电路芯片种类很多:按输入的二进制数的位数分类,有八位、十位、十二位和十六位等。按输出是电流还是电压分类,分为电压输出器件和电流输出器件。D/A转换器的主要指标分辨率输入给DAC的单位数字量变化引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比。显然,二进制位数越多,分辨率越高。建立时间也称稳定时间,它是指从数字量输入到建立稳定的输出电流的时间,是描述D/A转换速率的一个重要参数精度理想情况,精度与分辨率基本一致,位数越多精度越高。但由于电源电压、参考电压、电阻等各种因素存在着误差,精度与分辨率并不完全一致。当送一个确定的数字量给DAC后,它的实际输出值与该数值应产生的理想输出值之间会有一定的误差,它就是D/A转换器的精度。引脚:2、典型芯片-DAC0832介绍主要特性:•分辨率为8位;•电流输出,稳定时间为1s;•可双缓冲输入、单缓冲输入或直接数字输入;•单一电源供电(+5~+15V);•低功耗,20mW•DI7~DI0:8位的数据输入端,DI7为最高位。•CS:片选端•AGND:模拟信号地•DGND:数字信号地。•Vcc:电源输入端,可在+5V~+15V范围内。•VREF:参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。•Rfb:外部反馈信号输入端,内部已有反馈电阻Rfb,根据需要也可外接反馈电阻。ILE:数据锁存允许控制端,高电平有效。WR1:输入寄存器写选通控制端。当CS=0、ILE=1、WR1=0时,数据信号被锁存在输入寄存器中。WR2:DAC寄存器写选通控制端。当XFER=0,WR2=0时,输入寄存器状态传入DAC寄存器中。XFER:数据传送控制。IOUT1:电流输出1端,输入数字量全“1”时,IOUT1最大,输入数字量全为“0”时,IOUT1最小。IOUT2:D/A转换器电流输出2端,IOUT2+IOUT1=常数。逻辑结构CS=0,ILE=1,WR1=0时,打开该寄存器WFER=0,WR2=0,打开该寄存器(1)单缓冲方式DAC0832的两个数据缓冲器有一个处于直通方式,另一个处于受控的锁存方式。在不要求多路输出同步的情况下,可采用单缓冲方式。3、DAC0832的应用例11-1DAC0832用作波形发生器。分别写出产生锯齿波、三角波和矩形波的程序。①锯齿波的产生ORG0000HSTART:MOVR0,#0FEH;DAC地址MOVA,#00H;数字量LOOP:MOVX@R0,A;数字量→D/A转换器INCA;数字量逐次加SJMPLOOP1/282/283/28254/28255/280产生的锯齿波的过程②三角波的产生ORG0000HSTART:MOVR0,#0FEHMOVA,#00HUP:MOVX@R0,A;三角波上升边INCAJNZUPDOWN:DECA;A=0时再减1又为FFHMOVX@R0,AJNZDOWN;三角波下降边SJMPUP(2)双缓冲方式输入寄存器和DAC寄存器分配有各自的地址,可分别选通。用同时输出多路模拟信号。多路同步输出,必须采用双缓冲同步方式。1#DAC0832占有两个端口地址FDH和FBH。2#DAC0832的两个端口地址为FEH和FBH例11-2设AT89C51单片机内部RAM中有两个长度为20的数据块,其起始地址为分别为addr1和addr2,请根据图11-7所示,编写能把addr1和addrr2中数据从1#和2#DAC0832同步输出的程序。程序中addr1和addr2中的数据,即为绘图仪所绘制曲线的x、y坐标点。工作寄存器0区的R1指向addr1;1区的R1指向addr2;0区的R2存放数据块长度;0区和1区的R0指向DAC端口地址。ORG2000Haddr1DATA20H;定义存储单元addr2DATA40H;定义存储单元DTOUT:MOVR1,#addr1;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区R1MOVR0,#0FBH;1区R0指向DAC的启动D/A转换端口MOVX@R0,A;启动DAC进行转换CLRRS0;返回0区DJNZR2,NEXT;若未完,则跳NEXTLJMPDTOUT;若送完,则循环END4、DAC0832的单、双极性的电压输出(1)DAC用作单极性电压输出(2)DAC用作双极性电压输出REFo(128)128VvB5、与AD667接口设计AD667是分辨率为12位的电压输出型D/A转换器,建立时间≤3s(至0.01%)。输入方式:双缓冲输入;输出方式:电压输出,通过硬件编程可输出+5V,+10V,±2.5V,±5V和±10V;内含高稳定的基准电压源,可方便地与4位、8位或16位微处理器接口;双电源工作电压:±12V~±15V。二、A/D转换器接口A/D转换器的概述典型芯片ADC0809ADC0809的应用与AD1674的接口设计与MC14433的接口设计1、A/D转换器的概述将模拟量转换为数字量,以便计算机接收处理传感器单片机A/D转换A/D转换器的分类A/D转换器的主要技术指标(1)转换时间和转换速率完成一次转换所需要的时间。转换时间的倒数为转换速率。双积分ADC的转换时间在几十毫秒至几百毫秒之间;逐次比较型ADC的转换时间大都在10~50μs之间;并行比较型ADC的转换时间可达10ns。(2)分辨率数字量变化一个最小量时模拟信号的变化量,定义为满刻与2n的比值。例如,输入模拟电压满量程为10V,若用8位ADC转换时,其分辨率为10V/28=39mV,10位的ADC是9.76mV,而12位的ADC为2.44mV。(3)量化误差ADC把模拟量变为数字量,用数字量近似表示模拟量,这个过程称为量化。量化误差是ADC的有限位数对模拟量进行量化而引起的误差。数字输出模拟电压输入0000010020030040050060071LSB数字输出模拟电压输入0000010020030040050060071/2LSB(4)转换精度定义为一个实际ADC与一个理想ADC在量化值上的差值。可用绝对误差或相对误差表示。A/D转换器的选择(1)A/D转换器位数的确定系统总精度涉及的环节较多:传感器变换精度、信号预处理电路精度和A/D转换器及输出电路、控制机构精度,还包括软件控制算法。A/D转换器的位数至少要比系统总精度要求的最低分辨率高1位,位数应与其他环节所能达到的精度相适应。只要不低于它们就行,太高无意义,且价高。8位以下:低分辨率,9~12位:中分辨率,13位以上:高分辨率。(2)A/D转换器转换速率的确定从启动转换到转换结束,输出稳定的数字量,需要一定的时间,这就是A/D转换器的转换时间。低速:转换时间从几ms到几十ms。中速:逐次比较型的A/D转换器的转换时间可从几s~100s左右。高速:转换时间仅20~100ns。(3)是否加采样保持器直流和变化非常缓慢的信号可不用采样保持器。其他情况都要加采样保持器。(4)工作电压和基准电压选择使用单一+5V工作电压的芯片,与单片机系统共用一个电源就比较方便。在要求较高精度时,基准电压要单独用高精度稳压电源供给。2、典型芯片—ADC0809介绍ADC0809是一个8位8通道的AD转换器。ADC0809功能分析CLK:时钟信号,可由单片机ALE信号分频得到。转换有以下几步:1.ALE信号上升沿有效,锁存地址并选中相应通道。2.ST信号有效,开始转换。A/D转换期间ST为低电平。3.EOC信号输出高电平,表示转换结束。4.OE信号有效,允许输出转换结果。3、ADC0809的应用写信号、P2.0有效时,启动AD转换。转换结束后,输出高电平,向CPU发出中断请求读信号、P2.0有效时,允许输出AD转换结果。转换时钟由ALE分频得到。803174LS373ADC0809÷2CLKD0-D7≥1≥1111GEOCSTALEOERDP2.0WRINT1ALEP0A0-A7A0A1A2ABCVR(+)VR(-)+5VGNDIN0IN7IN6IN5IN4IN3IN2IN1转换结果由此输出通道选择表选择的通道000001010011100101110111IN0IN1IN2IN3IN4IN5IN6IN7CBA8031A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A00809×××××××ST×××××CBA×××××××0×××××000……×××××××0×××××111(1)首先分析各个通道的地址。(IN0到IN7的地址为0000H到0007H)(2)编程:可采用中断、查询两种方式。中断方式:ORG0000H;主程序入口地址AJMPMAIN;跳转主程序ORGOO13H;中断入口地址AJMPINT1;跳转中断服务程序MAIN:SETBIT1;边沿触发SETBEA;开中断SETBEX1;允许中断MOVDPTR,#0007H;指向0809IN7通道地址MOVX@DPTR,A;启动A/D转换SJMP$;等待中断INT1:MOVXA,@DPTR;读A/D转换结果MOVB,A;存数RETI;返回查询方式:ORG0000H;主程序入口地址AJMPMAIN;跳转主程序ORG1000H;中断入口地址MAIN:MOVDPTR,#0007H;指向0809IN7通道地址MOVX@DPTR,A;启动A/D转换L1:JBP3.3L1;查询MOVXA,@DPTR;读A/D转换结果MOVB,A;存数SJMP$4、与AD1674的接口设计12位逐次比较型。转换时间为10s,带有采样保持器,可直接与各种典型的8位或16位的单片机相连片内集成又高精度的参考电压源和时钟电路,不需外加任何电路和时钟信号的情况下完成AD转换,使用方便5、与MC14433的接口设计双积分型由于两次积分时间比较长,所以转换速度慢,但精度可以做得比较高;对周期变化的干扰信号积分为零,抗干扰性能也较好。常用的有3½位双积分A/D转换器MC14433(精度相当于11位二进制数)和4½位双积分A/D转换器ICL7135(精度相当于14位二进制数)。MC14433被转换电压量程为199.9mV或1.999VMC14433A/D转换器引脚R1:积分电阻输入端C1:积分电容输入端R1/C1
本文标题:第11章89C51单片机与DA、AD转换器的接口
链接地址:https://www.777doc.com/doc-5340061 .html