您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 51单片机(AD及DA转换器)..
数模及模数转换器接口数模变换DAC和模数变换ADC接口器件原理DAC0832原理及应用(波形发生器)ADC0804原理及应用(电压测量)要求:理解掌握常用数模变换DAC和模数变换ADC器件(DAC0832、ADC0804)的应用方法及和单片微机的接口与应用编程实例概述在微机过程控制和数据采集等系统中,经常要对过程参数进行测量和控制。连续变化的物理量物理过程微机传感器A/DD/A执行机构物理过程v/iDataData过程控制示意图模拟量D/A转换接口扩展8位CMOS数模转换芯片DAC0832:CSVCCWR1ILEAGNDWR2D3XFERD2D4D1D5D0D6VrefD7RfbIout2DGNDIout1DAC083220PINDIP封装√8位D/A,分辨率=Vref/256√CMOS低功耗器件,+5~+15V单电源供电√电流输出型器件(需外接运放)√具有双缓冲控制输出√采用T型电阻解码网络结构√参考电压源,-10~+10V一单片机与D/A转换器的接口DAC0832引脚定义CSVCCWR1ILEAGNDWR2D3XFERD2D4D1D5D0D6VrefD7RfbIout2DGNDIout1DAC083220PINDIP封装D0—D7:8位数字量输入端/CS:片选端,低有效ILE:数据锁存允许,高有效/WR1:写控制信号1,低有效/WR2:写控制信号2,低有效/XFER:数据传送控制信号Iout1:电流输出端1Iout2:电流输出端2Rfb:内置反馈电阻端Vref:参考电压源,-10~+10VDGND:数字量地AGND:模拟量地Vcc:+5~+15V单电源供电端DAC0832内部结构框图D0—D7:8位数字量输入端/CS:片选端,低有效ILE:数据锁存允许,高有效/WR1:写控制信号1,低有效/WR2:写控制信号2,低有效/XFER:数据传送控制信号Iout1:电流输出端1Iout2:电流输出端2Rfb:内置反馈电阻端Vref:参考电压源,-10~+10VDGND:数字量地AGND:模拟量地Vcc:+5~+15V单电源供电端&≥1≥111000011LE2ILECEWR1WR2XFERD7D0LE1输入寄存器寄存器DAC转换器D/AVrefIout2Iout1RfbLE=1,Q跟随DLE=0,Q锁存DLELEDAC0832与单片机的连接89C51单片机DAC0832P0.0—P0.7P2.08位DI0—DI7EAWRXFERCS+5V6MHz30Px2WR1WR2+5VVccVrefILE+uA741-12V+12VGNDAGNDDGNDIout1Iout2Rfb接示波器输出于数字量DATA相对应模拟量:MOVDPTR,#0FEFFHMOVA,#DATAMOVX@DPTR,A输入数字量模拟量输出(V)MSB…LSB11111111±VREF(255/256)10000010±VREF(130/256)10000000±VREF(128/256)01111111±VREF(127/256)00000000±VREF(0/256)单极性输出D/A数字量与模拟量的转换关系:DAC0832常见的几种用法为寄存命令。当=1时,寄存器的输出随输入变化;=0时,数据锁存在寄存器中,而不随输入数据的变化而变化当ILE=1,=0,=0时,=1,允许数据输入,而当=1时,…=0则数据被锁存CSWR11LEWR11LE当和均为低电平时,=1,此时允许D/A转换,否则=0,将数据锁存于DAC寄存器中WR2XFER2LE2LEDAC0832常见的几种用法(a):DAC寄存器直通方式(b):输入寄存器直通方式(c):两个寄存器同时选通及锁存方式DAC0832常见的几种用法&≥1≥111000011LE2ILECEWR1WR2XFERD7D0LE1输入寄存器寄存器DAC转换器D/AVrefIout2Iout1RfbLE=1,Q跟随DLE=0,Q锁存D直通方式:输入寄存器和DAC寄存器共用一个地址,同时选通输出。≥1&或非门非与门输入任一为“1”输出皆为“0”输入全为“0”,输出才为“1”输入全为“0”,输出才为“1”输入任一为“1”输出皆为“0”双缓冲器方式:输入寄存器和DAC寄存器分配有各自的地址,可分别选通用同时输出多路模拟信号。【例9-6】在图9-30的输出端Vout产生-1.25V的电压输出。解Vout=-(D/256)×Vref,而Vref=5V,且XFER、CS和WR信号常有效,因此使D=64即可输出要求的电压。汇编程序C语言程序MOVP1,#64#includereg51.hP1=64;【例9-7】在图9-31的输出端Vout产生-2.5V的电压输出,设Vref为5V。解Vout=-(D/256)×Vref,使D=128可输出要求的电压,且需要进行一次对DAC0832的写操作,写地址选择为7000H。汇编程序C语言程序MOVDPTR,#7000HMOVA,#128MOVX@DPTR,A#includeabsacc.hXBYTE[0x7000]=128;DAC0832的编程应用举例例1产生矩形波例2产生锯齿波LL:MOVA,#00H;低电平MOVDPTR,#0FEFFHMOVX@DPTR,A;送转换LCALLDMS1;低宽度MOVA,#0FFH;高电平MOVX@DPTR,A;送转换LCALLDMS2;高宽度SJMPLLMOVA,#00H;起始值MOVDPTR,#0FEFFHMM:MOVX@DPTR,A;送转换INCANOPNOPNOP;决定坡度SJMPMMDAC0832编程应用举例:例3产生三角波MOVA,#00HMOVDPTR,#0FEFFHSS1:MOVX@DPTR,A;送转换NOPNOPNOPSS2:INCA;等速上升JNZSS1SS3:DECAMOVX@DPTR,ANOPNOPNOP;等速下降JNZSS3SJMPSS2同样的编程思路,若要产生如下的梯形波也很容易:三角波梯形波例4正弦波电压输出为双极性电压,最简单的办法是将一个周期内电压变化的幅值(-5V~+5V)按8位D/A分辨率分为256个数值列成表格,然后依次将这些数字量送入D/A转换输出。只要循环不断地送数,在输出端就能获得正弦波输出。SIN:MOVR7,#00HDAS0:MOVA,R7MOVDPTR,#TABHMOVCA,@A+DPTRMOVDPTR,#8000HMOVX@DPTR,A;送D/AINCR7AJMPDAS0TAB:DB80H,83H,86H,89H,8DH,90HDB93H,96H,99H,9CH,9FH,0A2HDB0A5H,0A8H,0ABH,0AEH···DB6FH,72H,76H,79H,7CH,80HA/D转换接口扩展IN3IN2IN4IN1IN5IN0IN6ADDAIN7ADDBSTARTADDCEOCALED3D7OED6CLKD5VCCD4Vref+D0GNDVref-D1D2ADC08098位CMOS模数转换芯片ADC0809√8位A/D,量化间隔=Vin/(256-1)√CMOS低功耗器件√8通道多路开关输入切换电路√单电源+5,Vref=+5VVin范围:单极性0—+5V√逐次逼近结构√每次转换时间:100S60个时钟周期,fmax=640KHz(推荐CLK=500KHz)√转换结果读取方式:①延时读数②查询EOC=1③EOC申请中断ADC0809结构框图8通道多路开关IN0IN7地址译码锁存ADDAADDBADDCALE控制逻辑与时序D/A转换器SARVin比较器输出锁存器STARTCLKEOCD0D7+Vref-VrefOEVst+-IN3IN2IN4IN1IN5IN0IN6ADDAIN7ADDBSTARTADDCEOCALED3D7OED6CLKD5VCCD4Vref+D0GNDVref-D1D2ADC0809IN0—IN7:8通道模拟量输入端D0—D7:8位数字量输出端ADDC、ADDB、ADDA:接地址锁存器的低三位地址ALE:地址锁存允许控制信号START:清0内寄存器,启动转换OE:允许读A/D结果,高有效CLK:时钟输入端,应≤640KHzEOC:转换结束时为高Vcc:+5VVref+:参考电压,+5VVref-:0VADC0809引脚定义:ADC0809与单片机的连接89C51单片机ADC0809锁存器74LS373P0.0-P0.7ALEP2.08DQ0ALECLKADDAD0-D7GEAOESTARTRDWROEQ1Q2ADDBADDC+5VINT1EOC≥1≥112MHz30Px26口地址可以为:0FE00~0FE07H也可为:0FEF0~0FEF7HA/D转换程序:MOVDPTR,#0FE00H;置IN0通道地址MOVA,#00;累加器里任意赋一个值MOVX@DPTR,A;启动A/D转换LCALLDELAY;等待转换结束MOVXA,@DPTR;取转换结果2、最后执行MOVA,@DPTR产生RD信号使OE端有效,打开输出锁存器三态门,8位数据就读入CPU中。启动ADC0809的工作过程1、先送通道号地址到A、B、C,由ALE信号锁存通道号地址,然后让START有效启动A/D转换。即执行一条MOVX@DPTR,A指令产生WR信号,使ALE、START有效,锁存通道号并启动A/D转换。A/D转换完毕,EOC端发出一正脉冲,表示转换结束。锁存器74LS373P0.0-P0.7ALEP2.08DQ0ALECLKADDAD0-D7GEAOESTARTRDWROEQ1Q2ADDBADDC+5VINT1EOC≥1≥112MHz30Px26ORG0000HAJMPMAINORG0013H;外部中断1的中断矢量AJMPINTMAIN:MOVR0,#0A0H;存结果的缓冲区:A0H-A7HMOVR2,#08H;待采集的通道数为8SETBIT1;选择下降沿触发中断SETBEA;开中断SETBEX1MOVDPTR,#0FEF0H;通道0的地址MOVX@DPTR,A;启动转换。注意:A=?HERE:SJMPHERE;等待中断ADC0809八路巡回中断式数据采集ORG0000HAJMPMAINORG0013HAJMPINTMAIN:MOVR0,#0A0HMOVR2,#08HSETBIT1SETBEASETBEX1MOVDPTR,#0FEF0HMOVX@DPTR,AHERE:SJMPHEREADC0809八路巡回中断式数据采集INT:MOVXA,@DPTR;读数据MOV@R0,A;数据放进缓存单元INCR0;指向下一缓存INCDPTR;指向下一通道DJNZR2,RTN;8次未完就继续采集,;已完就关中断、停采集CLREACLREX1RETIRTN:MOVX@DPTR,A;启动采集RETI思考题请编写89C51单片机通过DAC0832产生锯齿波信号、三角波、梯形波的程序(可以为任意频率)。当ADC0809对8路模拟信号进行A/D转换时,请编写用查询方式工作的采样程序,8路采样值存放在50H~57H单元。
本文标题:51单片机(AD及DA转换器)..
链接地址:https://www.777doc.com/doc-2404367 .html