《《模数和数模转换》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《模数和数模转换》PPT课件.ppt(52页珍藏版)》请在三一办公上搜索。
1、第十一章 模数和数模转换,在工业生产和自动控制领域,常常采用微机进行实时控制和数据处理。微机采集的外部信号和被控对象的参数通常是一些在时间和数值方面都是连续变化的模拟量,而微机通常只能接收和处理“0”、“1”这样的数字量,因此必须把这些模拟量转换成数字量,以便微机接收处理。微机处理的结果仍然是数字量,而大多数被控对象的执行机构不能直接接收数字量信号,所以必须将微机处理后的数字信号再转换为模拟信号,有时还需要功率放大,才能去控制和驱动执行机构,达到控制的目的。,将模拟量转换为数字量的过程称为模/数(A/D)转换,完成这一转换功能的器件称为模/数转换器(简称ADC)。将数字量转换为模拟量的过程称为
2、数/模(D/A)转换,完成这一转换功能的器件称为数/模转换器(简称DAC)。,11.1 D/A转换器,D/A转换的基本功能是将一个用二进制表示的数字量转换成相应的模拟量。,分辨率(Resolution)表示DAC对微小模拟信号的分辨能力,它是数字量的最低有效位(LSB)所对应的模拟值。,n为二进制数的位数,一、D/A转换的主要技术指标,可见,输入数字量位数越多,分辨率越高。所以,除上面公式外,在实际应用中,也常用字量的位数表示D/A转换器的分辨率。,精度(Accuracy)表明D/A转换的精确程度,一般用误差大小表示。它取决于构成转换器的各个部件的误差和稳定性。精度可分为绝对精度和相对精度。,
3、线性误差(Linearity error)实际输出偏离理想线性特性的最大误差与满量程之比的百分数。由非线性而带来的误差。理想的(即线性的)转换特性应是相邻两个数字量之间的差为1LSB。建立时间(Setting Time)也称稳定时间,是指从数字输入到稳定输出模拟电流的时间。,二、D/A转换基本原理,基本思想:,由于构成数字代码的每一位都有一定的“权重”,因此为了将数字量转换成模拟量,就必须将每一位代码按其“权重”转换成相应的模拟量,然后再将代表各位的模拟量相加,即可得到与该数字量成正比的模拟量,这就是构成。,n=4位数据:0000 0V 1111 5V,分辨率:5V/15=0.333V/每1个
4、最低有效位,n=8位数据:00000000 0V 11111111 5V,分辨率:5V/255=0.0196V/每1个最低有效位,例如:0101 22+20=5 0.333V=1.67V,数字量,模拟量,基本原理:,对于有权码,先将每位代码按其权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,从而实现了数字/模拟转换。,0,1,2,3,4,5,6,001,010,011,100,101,110,111,v,o,/V,D,000,11.2 DAC0832,DAC0832是美国国家半导体公司采用CMOS工艺生产的8位D/A转换集成电路芯片。它具有与微机连接简单、转
5、换控制方便、价格低廉等特点,因而得到了广泛的应用。,一、DAC0832的引脚与结构,ADC0832的内部结构:,DAC0832采用8位输入寄存器和8位DAC寄存器二次缓冲方式,这样可以在D/A输出的同时,送入下一个数据,以便提高转换速度。当输入寄存器的数据送入DAC寄存器后,D/A转换器便开始转换,这两个寄存器有两个锁存信号/LE1和/LE2,当它们为1时,数据能存入寄存器,当它们为0时,数据不能存入寄存器。,DI7DI0D/A转换器的数字量输入引脚。其中DI0为最低位,DI7为最高位。CS片选信号输入端,低电平有效。WR1输入寄存器的写信号,低电平有效。ILE输入寄存器选通信号,高电平有效。
6、XFER从输入寄存器向DAC寄存器传送D/A转换数据的控制信号,低电平有效。WR2DAC寄存器的写信号,低电平有效。,VCC芯片电源,其值可在+5+15 V之间选取,典型值取+15 V。AGND模拟信号地。DGND数字信号地。RFB内部反馈电阻引脚,用来外接D/A转换器输出增益调整电位器。VREFD/A转换器的基准电压,其范围可在10+10 V内选定。该电压精度直接影响着D/A转换精度。,IOUT1D/A转换器输出电流1,当输入全1时,输出电流最大,约为;当输入为全0时,输出电流最小,即为0。IOUT2D/A转换器输出电流2,它与IOUT1有如下关系:IOUT1+IOUT2=常数 D/A转换没
7、有形式上的启动信号。实际上将数据写入第二级寄存器的控制信号就是D/A转换器的启动信号。另外,它也没有转换结束信号,D/A转换的过程很快,一般还不到一条指令的执行时间。,ILE信号和CS、WR1共同控制选通输入寄存器。当CS、WR1均为低电平,而ILE为高电平时,LE1=0,输入数据被送至8位输入寄存器的输出端;当上述三个控制信号任一个无效时,LE1变高,输入寄存器将数据锁存,输出端呈保持状态。当XFER和WR2同时有效时,输入寄存器的数据装入DAC寄存器,并同时启动一次D/A转换。,ILE=1,/CS=0,/WR1=0时,/LE1=1,否则,/LE1=0;/WR2=0,/XFER=0时,/LE
8、2=1,否则,/LE2=0。,二、DAC0832的工作方式 DAC0832内部有两个寄存器,能实现三种工作方式:双缓冲、单缓冲和直通方式。DAC0832内部两个寄存器的两个锁存信号LE1和LE2不一定同时有效,它们可以分开控制,也可以同时有效。当它们同时有效时,数据线上的数据D0D7经输入寄存器立即进入DAC寄存器开始转换这种方式称为单缓冲方式;对LE1和LE2分步控制称为双缓冲方式;当LE1和LE2始终为有效时称为直通方式。,1、直通工作方式 是指两个寄存器的有关控制信号都预先置为有效,两个寄存器都开通。只要数字量送到数据输入端,就立即进入D/A转换器进行转换。这种方式应用较少。,例:DAC
9、0832与CPU的接口。如图所示,由于DAC0832内部有数据锁存器,其数据输入引脚可直接与CPU的数据总线相连。图中XFER和WR2接地,即DAC0832内部的第2级寄存器接成直通式,只由第1级寄存器控制数据的输入,当CS和WR1同时有效时(ILE始终为有效的高电平),DI7DI0的数据被送入其内部的D/A转换电路进行转换。,1)如果要求图示系统的VOUT端输出方波,可编程如下:MOVDX,200H;端口地址200H送DXLOOP1:MOVAL,00HOUTDX,AL;将数据0送DAC0832进行转换CALLDELAY;调用延时子程序MOVAL,0FFHOUTDX,AL;将数据FFH送DAC
10、0832进行转换CALLDELAYJMPLOOP1,2)如果要求图示系统的VOUT端输出锯齿波,可编程如下:,START:MOV AL,0FFHAGAIN:INC AL OUT 200H,AL CALL DELAY;JMP AGAIN,阶梯的宽度由延时时间决定,3)如果要求图示系统的VOUT端输出三角波,可编程如下:,若电源电压为5V,波形下限电压为0.5V,上限电压为2.5V。则下限电压对应的数字量为:0.5256/5=26=1AH上限电压对应的数字量为:2.5256/5=128=80H,BEGIN:MOV AL,1AHUP:OUT 200H,AL INC AL CMP AL,81H JNZ
11、 UP DEC ALDOWN:OUT 200H,AL DEC AL CMP AL,19H JNZ DOWN JMP BEGIN,2、单缓冲工作方式 是指只有一个寄存器受到控制。这时将另一个寄存器的有关控制信号预先设置成有效,使之开通,或者将两个寄存器的控制信号连在一起,两个寄存器作为一个来使用。,例:假设地址译码为310H,将1000H单元中的数据送DAC0832转换输出。电路如图:,MOV BX,1000HMOV AL,BXMOV DX,310HOUT DX,AL,单缓的接线方式不是唯一的,但是它必须满足二个条件:必须受CPU的控制;当CPU执行OUT指令时/CS、ILE、/XFER、/WR
12、1、/WR2必须同时有效。不执行OUT指令时有个别控制信号有效是可以的。,程序如下:,3、双缓冲工作方式 是指两个寄存器分别受到控制。当ILE、CS和WR1信号均有效时,8位数字量被写入输入寄存器,此时并不进行A/D转换。当WR2和XFER信号均有效时,原来存放在输入寄存器中的数据被写入DAC寄存器,并进入D/A转换器进行D/A转换。在一次转换完成后到下一次转换开始之前,由于寄存器的锁存作用,8位D/A转换器的输入数据保持恒定,因此D/A转换的输出也保持恒定。,DAC 0832,D7D0,/WR,ILE,REF,IOUT1,IOUT2,+,-,AGND,V0,/CS,/WR1,/WR2,/XF
13、ER,+5V,译码器,A15A0,M/IO,MOV DX,320H;输入寄存器的地址为320HMOV AL,DATA;要转换的数为DATAOUT DX,ALINC DX;DAC寄存器的地址是321HOUT DX,AL;启动D/A转换,例:,三、电压输出电路的连接 DAC0832以电流形式输出转换结果,若要得到电压形式的输出,需要外加I/V转换电路,常采用运算放大器实现I/V转换。DAC0832的电压输出电路:(a)单极性输出;(b)双极性输出,对于单极性输出电路,输出电压为:,式中D为输入数字量的十进制数。因为转换结果IOUT1接运算放大器的反向端,所以式中有一个负号。若VREF=+5V,当D
14、=0255(00HFFH)时,VOUT=-(04.98)V。通过调整运算放大器的调零电位器,可以对D/A芯片进行零点补偿。通过调节外接于反馈回路的电位器RP1,可以调整满量程。,对于双极性输出电路,输出电压的表达式为:,若VREF=+5V,当D=0时,VOUT1=0,VOUT=-5V;当D=128(80H)时,VOUT1=-2.5V,VOUT=0;当D=255(FFH)时,VOUT1=-4.98V,VOUT=4.96V。,除了DAC0832之外还有很多DA芯片,AC0832比较常用。现有10位、12位、14位、16位DA转换芯片,位数越多,价钱越高。,11.3 A/D转换 A/D转换器是模拟信
15、号源与计算机或其它数字系统之间联系的桥梁,它的任务是将连续变化的模拟信号转换为数字信号,以便计算机或数字系统进行处理、存储、控制和显示。在工业控制和数据采集及其它领域中,A/D转换器是不可缺少的重要组成部分。,一、转换原理 A/D转换器是将模拟量转换成数字量,实现A/D转换的方法有多种,常用的有计数法、双积分法和逐次逼近法。二、技术参数 转换精度 转换率 转换速度、转换时间 分辨率 量程 所能转换的电压范围,11.4 ADC0809一、引脚及结构 ADC0809是逐位逼近型8通道、8位A/D转换芯片,CMOS工艺制造,双列直插式28引脚封装。,ADC0809片内有8路模拟开关,可输入8个模拟量
16、,单极性输入,量程为0+5 V。典型的转换速度为100 s。片内带有三态输出缓冲器,可直接与CPU总线接口。其性能价格比有明显的优势,是目前广泛采用的芯片之一,可应用于对精度和采样速度要求不高的数据采集场合或一般的工业控制领域。,ADC0809结构框图:,1)内部结构与转换原理 如图所示,ADC0809内部由三部分组成:8路模拟量选通输入部分,8位A/D转换器和三态数据输出锁存器。ADC0809允许连接8路模拟信号(IN7IN0),由8路模拟开关选通其中一路信号输入并进行A/D转换,模拟开关受通道地址锁存和译码电路的控制。当地址锁存信号ALE有效时,3位地址ADDC、ADDB和ADDA(通常与
17、地址总线A2、A1和A0引脚相连)进入地址锁存器,经译码后使8路模拟开关选通某一路模拟信号。输入的地址信息与所选通的模拟通道之间存在一一对应的关系。如当ADDC、ADDB、ADDA=000时,IN0选通;ADDC、ADDB、ADDA=001时,IN1选通;ADDC、ADDB、ADDA=111时,IN7选通。,2)引脚定义 IN0IN78路模拟量输入端。ADDC、ADDB和ADDA地址输入端,以选通IN7IN0 8路中的某一路信号。ALE地址锁存允许信号,有效时将ADDC、ADDB和ADDA锁存。CLOCK外部时钟输入端。允许范围为101280kHz。时钟频率越低,转换速度就越慢。STARTA/
18、D转换启动信号输入端。有效信号为一正脉冲。在脉冲的上升沿,A/D转换器内部寄存器均被清零,在其下降沿开始A/D转换。,EOCA/D转换结束信号。在START信号上升沿之后不久,EOC变为低电平。当A/D转换结束时,EOC立即输出一正阶跃信号,可用来作为A/D转换结束的查询信号或中断请求信号。OE输出允许信号。当OE输入高电平信号时,三态输出锁存器将A/D转换结果输出到数据量输出端D7D0。D7D0数字量输出端。D0为最低有效位(LSB),D7为最高有效位(MSB)。VCC与GND电源电压输入端及地线。VREF(+)与VREF(-)正负基准电压输入端。中心值为(VREF(+)+VREF()/2(
19、应接近于VCC/2),其偏差不应该超过 0.1 V。正负基准电压的典型值分别为+5 V和0 V。,ADC0809的数字量输出值D(十进制数)与模拟量输入值VIN之间的关系如下:,通常VREF()=0 V,所以,当VREF(+)=5 V,VREF(-)=0 V,输入的单极性模拟量从0 V到4.98 V变化时,对应的输出数字量在0到255(00HFFH)之间变化。,二、ADC0809工作时序,转换过程:选择当前转换的通道,将CBA选择的通道地址(即通道编码)送地址锁存器;通过执行OUT指令在ALE,START上产生一个正脉冲,ALE脉冲的上升沿锁存通道编码,START脉冲的下降沿启动A/D转换;A
20、/D转换开始后,EOC变低,经过64个时钟周期后,转换结束,EOC变高;转换结束后,通过执行IN指令在OE脚上产生一个正脉冲,打开输出缓冲器的三态门,数据送入D7D0,读入转换数据。,说明:使用时START和ALE可以用同一个信号控制;若START与EOC相连接,可实现连续转换;EOC的上升沿可作为中断请求信号。,三、ADC0809与微处理器的接口1、直接连接 由于ADC0809芯片内部集成了三态数据锁存器,其数据输出线可以直接与计算机的数据总线相连,因此,设计ADC0809与计算机的接口主要是对模拟通道的选择、转换启动的控制以及读取转换结果的控制等方面的设计。可以用中断方式,也可以用查询方式
21、,还可以用无条件传送方式将转换结果送CPU。无条件传送即启动转换后等待100 s(ADC0809的转换时间),然后直接读取转换结果。无条件传送方式接口电路简单。,例:用ADC0809对8路模拟信号进行循环采样,各采集100个数据分别存放在数据段内的8个数据区中,采用无条件传送方式。接口电路如图所示:,设图中通道07的地址依次为380H387H,则无条件传送的采集程序如下:DATA SEGMENT COUNTEQU 100BUFF DB COUNT8 DUP(?)DATA ENDSSTACK SEGMENT stack DW200 DUP(?)STACK ENDSCODE SEGMENTASSU
22、ME CS:CODE,DS:DATA,SS:STACK,START:MOVAX,DATA MOVDS,AX MOVAX,STACK MOVSS,AX MOVBX,OFFSET BUFF MOVCX,COUNTOUTL:PUSHBX MOVDX,380H;指向通道0INLOP:OUTDX,AL;锁存模拟通道地址,启动转换 MOVAX,50000;延时,等待转换结束,WT:DECAX JNZWT INAL,DX;读取转换结果 MOVBX,AL ADDBX,COUNT;指向下一个通道的存放地址 INCDX;指向下一个通道的地址 CMPDX,388H;8个通道都采集了一遍吗?JBINLOP POPBX
23、;弹出0通道的存放地址 INCBX;指向0通道的下一个存放地址 LOOPOUTL MOVAH,4CH INT21HCODE ENDS ENDSTART,ADC 0809通过8255A的接口原理图,IOWRIORDD7 D0A0A1A7 A2,CLK,8088总线,2、通过并行接口芯片同CPU连接,例:对ADC0809的IN0至IN7巡回进行采样一次,并将采样的数据存放在以DATA开始的内存单元中。,分析:8255A有三个8位的并行口,可用PB口输出0809的通道选择编码和控制ADC的启动,PC口输入ADC的状态。PA口作为他用。,MOV AL,98H;8255方式0,PA口输入,OUT 83H
24、,AL;PB口输出,PC口高四位输入MOV SI,OFFSET DATA;置内存首址MOV AX,0H;开关初始编码MOV CX,8,第一步:程序初始化,第二步:输出通道号,启动ADC。,AGA:MOV AL,AH;输出开关编码 OUT 81H,AL ADD AL,10H;启动ADC OUT 81H,AL SUB AL,10H;ALE、START正脉冲 OUT 81H,AL,第三步:判ADC转换结束否?结束则读入数据,存入内存。否则再判。,LOP:IN AL,82H;检查EOC TEST AL,80H JZ LOP;EOC=0,继续查询 IN AL,84H;EOC=1,读入数据 MOV SI,
25、AL;存入内存,第四步:修改循环变量,判测量完否?未完继续。,INC SI;修改指针INC AH;修改开关编码LOOP AGA;未完继续,接口综合大串联,例程:有8路模拟信号,要求在按下k0键之后,每个通道以1KHz的采样频率采样数据,采样10ms时间。按下k1键之后,求出通道0采集到的数据的平均值,并将平均值的十六进制结果显示到8255的LED指示灯上面。按下k2键之后,将求出的平均值以9600bps,2位停止位,1位起始位,8位数据位,无奇偶校验的串行通信方式传送到另一台PC。按下k3键之后,输出一个赋值1.96v峰峰值,频率为100Hz的锯齿波。中断向量号从30H号开始安排。8MHz时钟
26、源和4分频器由外电路提供。,解答:1、首先给各个芯片分配端口地址,如74ls138输出脚所示。2、系统要求判断按键执行相应的功能程序,所以主程序要实时检测按键的内容,得到按键后进行相应的散转,然后调用各个功能函数。键盘扫描接到8255的PA口,所以令8255的PA口工作于方式0输入方式。3、AD的采集要求每个通道是1KHz,8个通道都要采集,必须保证AD的采集频率至少是1KHz8=8KHz。该信号可由8253提供,由于系统外部有8MHz的时钟和4分频器电路,可将该频率4分频后得到2MHz的时钟信号做为8253的时钟源。8253分频后的8KHz的信号可以触发IR1中断,在IR1中断服务程序启动A
27、D转换。AD采集结束信号用于触发IR2中断,IR2中断服务程序读取AD转换结果,并保存于内存当中。,4、对于平均值计算可以采用累加之后进行除法运算得到。如果有k1键按下,可以将8255 PB口设置为方式0输出,并将求到平均值输出到PB口即可。如果有k2键按下,首先设置8251工作于9600bps,2位停止位,1位起始位,8位数据位,无奇偶校验的方式,波特系数为16,并将平均值输出到发送缓冲器,将数据以串行通信形式,采用RS232接口,传送到令一台PC。5、DAC0832在相应参考电压下,要发出峰峰值为1.96V的100Hz的锯齿波,如果每次DA输出数据量步进为1,从0开始要累加100次才能达到1.96V 峰峰值输出,此即为锯齿波的周期。即每隔0.1ms将累加值输出实现DA转换。可由8253产生0.1ms的脉冲,触发中断IR3,IR3的中断服务程序要将转换数值累加,并送出到DA转换器,将模拟量输出,一个周期结束后,重0再开始累加。,8259A,