第10章AD、DA转换接口2012_第1页
第10章AD、DA转换接口2012_第2页
第10章AD、DA转换接口2012_第3页
第10章AD、DA转换接口2012_第4页
第10章AD、DA转换接口2012_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术2012年10月26日第10章A/D、D/A转换接口

1

10.1D/A与A/D接口概述10.1.1一个典型的计算机自动控制系统

数/模(D/A)和模/数(A/D)转换技术主要用于计算机实时控制和自动测量系统中。在工业控制和参数测量时,经常会遇到如温度、压力、流量等连续变化的物理量(通称模拟量)。用计算机处理这些模拟量必须先将其转换为电信号,然后再经A/D转换器将其转换为数字量。对于大多数的被控对象,计算机加工处理后输出的数字形式控制信号还应经D/A转换变成模拟量。才能推动执行机构工作。一个包含A/D和D/A转换的计算机闭环自动控制系统

如下图所示2生

程传感器执行机构A/D转换器I/O接口计算机D/A转换器I/O接口图10.1典型的计算机自动控制系统3模拟量I/O通道:模拟接口电路的任务模拟电路的任务0010110110101100工业生产过程传感器放大滤波多路转换&采样保持A/D转换放大驱动D/A转换输出接口微型计算机执行机构输入接口物理量变换信号处理信号变换I/O接口输入通道输出通道变送器10.1.2模/数转换器(ADC)的主要性能参数1.分辨率(Resolution)

它表明A/D对模拟信号的分辨能力,由它确定能被A/D辨别的最小模拟量变化。2.量化误差(Quantizingerror)

在A/D转换中由于整量化产生的固有误差。量化误差在±1/2LSB(最低有效位)之间。

一个8位的A/D转换器,它把输入电压信号分成28=256层,若它的量程为0~5V,那么,量化单位q为:

q==≈0.0195V=19.5mV例如53.转换时间(Conversiontime)

转换时间是A/D完成一次转换所需要的时间。一般转换速度越快越好,常见有高速(转换时间<1us)、中速(转换时间<1ms)和低速(转换时间<1s)等。4.绝对精度

对于A/D,指的是对应于一个给定量,A/D转换器的误差,其误差大小由实际模拟量输入值与理论值之差来度量。5.相对精度

对于A/D,指的是满度值校准以后,任一数字输出所对应的实际模拟输入值(中间值)与理论值(中间值)之差。例如,对于一个8位0~+5V的A/D转换器,如果其相对误差为1LSB,则其绝对误差为19.5mV,相对误差为0.39%。tV1/2LSBtCVFULL6图10–2理想的A/D转换曲线710.1.3数/模转换器(DAC)的主要性能参数1.分辨率(Resolution)

分辨率表明DAC对模拟量的分辨能力,它是最低有效位(LSB)所对应的模拟量,它确定了能由D/A产生的最小模拟量的变化。通常用二进制数的位数表示DAC的分辨率,如分辨率为8位的D/A能给出满量程电压的1/28的分辨能力,显然DAC的位数越多,则分辨率越高。2.线性误差(Linearityerror)

D/A的实际转换值偏离理想转换特性的最大偏差与满量程之间的百分比称为线性误差。83.建立时间(Settingtime)

这是D/A的一个重要性能参数,定义为:在数字输入端发生满量程码的变化以后,D/A的模拟输出稳定到最终值±1/2LSB时所需要的时间。4.温度灵敏度

它是指数字输入不变的情况下,模拟输出信号随温度的变化。一般D/A转换器的温度灵敏度为±50PPM/℃。PPM为百万分之一。5.输出电平

不同型号的D/A转换器的输出电平相差较大,一般为5V~10V,有的高压输出型的输出电平高达24V~30V。9

10.2DAC0832数/模转换器10.2.1DAC0832的内部结构与引脚图

图10.2给出了DAC0832的内部结构。

图10.3给出了DAC0832的引脚图。

DAC0832是一种相当普遍且成本较低的数/模转换器。该器件是一个8位转换器,它将一个8位的二进制数转换成模拟电压。

10ILECSWR1

XFERWR2

D0Q0D1Q1

D2Q2

D3Q3

D4Q4

D5Q5

D6Q6

D7Q7GD0Q0D1Q1

D2Q2

D3Q3

D4Q4

D5Q5

D6Q6

D7Q7GD/AD0D1D2

D3

D4D5D6D7

VREF

IOUT2IOUT1RFB锁存器1锁存器2转换器图10.3DAC0832的内部结构

11图10.4DAC0832引脚图720

3

12

11

8

1

CSVREF

WR1RFB

D0D1

D2

D3

D4

D5

D6

D7

XFERILEVCC

DGNDAGND

2

18

9

6

5

4

16

15

14

13

19

10

17

IOUT2

IOUT1

DAC0832WR212各引脚的功能如下:D0~D7:8位数据输入端。CS:片选信号输入端。WR1、WR2:两个写入命令输入端,低电平有效。XFER:传送控制信号,低电平有效。IOUT1和IOUT2:互补的电流输出端。13RFB:反馈电阻,被制作在芯片内,与外接的运 算放大器配合构成电流/电压转换电路。

VREF:转换器的基准电压。

VCC:工作电源输入端。

AGND:模拟地,模拟电路接地点。

DGND:数字地,数字电路接地点。14(1)直通方式10.2.2DAC0832的工作方式DAC0832可工作在三种不同的工作模式:

当ILE接高电平,CS,WR1、WR2和XFER都接数字地时,DAC处于直通方式,8位数字量一旦到达D0~7输入端,就立即加到D/A转换器,被转换成模拟量。15(2)单缓冲方式

单缓冲方式是将一个锁存器处于缓冲方式,另一个锁存器处于直通方式,输入数据经过一级缓冲送入D/A转换器。(3)双缓冲方式

即数据通过两个寄存器锁存后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。1610.2.3D/A转换原理分析输入数字量和输出模拟电压Uo之间的关系

T型网络开路时的输出电压UA即是反相比例运算电路的输入电压。反相比例运算电路T型电子网络2RA+URS2S0S1S32R2R2R2Rd0d1d2d30RRR110Uo++-ARF2R0011+–

转换原理用戴维宁定理和叠加定理计算UAA+URS2S0S1S32R2R2R2Rd0d1d2d30RRR1102R0011最低位(LSB)最高位(MSB)1000对应二进制数为00012.

转换原理对应二进制数为0001时,A2R2R2RRRRR等效电路如右下图1122332R2R2R2RRRR2RURARA00对应二进制数为0001时,等效电路如下RA同理:对应二进制数为0010时,有同理:对应二进制数为1000时,有同理:对应二进制数为0100时,有AR10.2.4DAC0832与CPU的连接

由于DAC0832内部含有数据锁存器,在与CPU相连时,使其可直接挂在数据总线上。DAC0832采用单缓冲方式

与CPU的连接如图10.4所示。21I1I2I3I4I5I6I7I8I9I10O1O2O3O4O5O6O7O8GAL16V8WRA0A1A2A3A4A5A6A7M/IO+5V10K20HCSWR1WR2DGNDD0~D7D0~D7ILEXFERVREFIOUT1IOUT2AGND_+RFBLM741+5VU0DAC0832图10.5DAC0832与CPU的单缓冲方式连接电路22DAC0832单缓冲方式接口框图

23DAC0832双缓冲接口框图

24

在这种方式下,需执行两条输出指令才能启动D/A转换器。设DAC0832输入寄存器口地址为PORT,DAC寄存器口地址为PORT+1,则下面几条指令可完成数字量到模拟量的转换。

MOVDX,PORT

OUTDX,AL;打开输入寄存器,数据装入并锁存

INCDX

OUTDX,AL;打开DAC寄存器,数据通过,送去D/A转换

第一条输出指令打开DAC0832的输入寄存器,把AL中的数据送入输入寄存器并锁存起来。第二条输出指令打开DAC0832的DAC寄存器,使输入寄存器的数据通过DAC寄存器送到D/A转换器中进行转换。此时AL中数值与转换结果无关,这条指令执行时实际上并无CPU的数据输出给DAC寄存器,仅利用执行指令时出现的I/O写信号,打开DAC寄存器。

25下面举例说明如何编写D/A转换程序。例

编写图9.4中DAC0832输出三角波的汇编程序,要求三角波的最低电压为0V,最高电压为2.5V。分析:三角波电压范围0~2.5V,对应的数字量 00H~7FH。三角波的下降部分,从7FH 减1,直到数字量降为00H;上升部分则 从00H加1,直到7FH。26相应的程序如下:MOVAL,7FH ;设2.5V初值

DOWN:OUT20H,AL;输出模拟信号到端口20H,三角波下降 ;段 DECAL ;输出值减1

CMPAL,00H;输出值到达0V? JNZDOWN;输出值未达到0V,则跳到DOWN

UP:OUT20H,AL ;输出模拟量到端口20H,三角波上升段

INCAL ;输出值加1

CMPAL,7FH ;判别输出值是否到达2.5V

JNZUP ;输出值未达到2.5V则跳到UP JMPDOWN;输出值达到2.5V则跳到DOWN循环。27

本例中DAC0832输出的三角波如图9.5所示。若8086的时钟频率为5MHz,则可计算出该三角波的周期大约为1.53ms,即频率约为654Hz。如果要进一步降低三角波的频率(增大其周期),可在每次D/A转换之后加入适当的延时。图10.6DAC0832输出的三角波形图28

10.3ADC0809模/数转换器10.3.1ADC0809的内部结构与引脚图

ADC0809是一种普遍使用且成本较低的CMOS材料A/D转换器。它具有8个模拟量输入通道,可将模拟量转换为8位二进制数字量。

图10.8给出了ADC0809的内部结构。

图10.9给出了ADC0809的引脚图。29图10-7A/D转换器及其转换情况(a)A/D转换器;(b)输入和输出30t模拟信号A8H96H7BH数字信号的量模拟量的幅值和数字量的值之间是一一对应的关系,区别是模拟信号是时间连续的,数字信号是时间不连续的,是一脉冲序列。完成上述功能的过程为模拟量到数字量的转换。图10-15模拟信号与数字信号的关系31表10-18位A/D转换器数字量与模拟量之间的转换关系数字量模拟量000000000.0000000000010.0195………………..011111112.4805100000002.5000……………….111111114.980532图10.8ADC0809转换器的内部结构图EOCOED0

D7

REF(+)REF(-)ADDCADDBADDAALEIN0IN7比较器通道选择开关逐位逼近寄存器(SAR)开关树型D/A8位锁存和三态门定时和控制通道地址锁存及译码模拟输入数字输出START33工作时序34ADC0809的工作过程由时序图知ADC0809的工作过程如下:送通道地址,以选择要转换的模拟输入;锁存通道地址到内部地址锁存器;启动A/D变换;判断转换是否结束;读转换结果3510.3.2ADC转换的基本原理ADC原理:用被变换信号与分层得到的若干量化刻度(QuantizeScale)相比较,看它的幅值在哪两个刻度之间,然后取其整值的过程。

存在多种A/D转换技术,各有特点,分别应用于不同的场合计数器式逐次逼近式(ADC0809)双积分式缺点:转换速度低;只能用于直流信号或慢变化信号的转换,优点:一是精度高,且抗干扰能力强。例如制作数字万用表等;电荷平衡ADC:改进双积分的积分电容介质吸收及速度问题。并行式361.计数器式37计数器式ADC原理集成比较器是一种特殊的运算放大器,它有两个信号输入端V+和V-,一个输出端,当V+≥V-时,输出高电平,反之输出低电平。由计数器对固定频率信号CLK进行计数,计数输出值送DAC,DAC的输出模拟量Vo与输入模拟量Vi在比较器中进行比较,随着计数的进行,Vo不断增加,当Vo≥Vi,计数器停止计数,此时的计数值即是模拟量Vi对应的数字量。以最低位为增减量单位的逐步计数法(慢)382.逐次逼近式39逐次逼近ADC原理数字量由逐次逼近寄存器SAR产生。SAR使用对分搜索法产生数字量以8位数字量为例,SAR首先产生8位数字量的一半,即10000000B,试探模拟量的大小,若Vo>Vi,清除最高位,若Vo<Vi,保留最高位。在最高位确定后,SAR又以对分搜索法确定次高位,即以低7位的一半y1000000B(y为已确定位)试探模拟量的大小。重复这一过程,直到最低位bit0被确定,转换结束以最高位开始逐步试探,快403.双积分式IREFIinVinVREF积分器比较器V/IV/I时钟启动计数计数器数字输出T2T1Vc固定斜率时间可变固定时间斜率可变转换结束41

双积分型A/D转换器是通过两次积分来完成A/D转换的,第一次是对模拟输入电压进行积分,积分时间是固定的;另一次是以积分电容充电后的电压为初值,对与Ui极性相反的参考电压Uref进行反向积分,直至电容完全放电为止。42双积分式ADC原理基本思想是将被变换的电压转换成与其幅度成正比的时间(V/T转换),然后对时间进行测量(计数高频时钟脉冲)。平均值!先时间固定积分,得V0再电压固定积分(称“反向积分”),使输出=V0对反向积分的时间进行计数,计数值即ADC的数据4310.3.3ADC0809与CPU的连接ADC0809与CPU的连接,主要是正确处理数据输出线(D0~D7),启动信号START和转换结束信号EOC与系统总线的连接问题。

图10.10给出了ADC0809与CPU的典型连接图。

441.通道地址线ADDA-ADDC的连接多路输入时,地址线不能接死,要通过一个接口芯片与数据总线连接。接口芯片可以选用:简单接口芯片74LS273,74LS373等(占用一个I/O地址)可编程并行接口8255(占用四个I/O地址)ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809输入DB74LS273Q2Q1Q0CP来自I/O译码D0-D7ADDCADDBADDAIN0IN1IN2IN3IN4ADC0809DB8255PB2PB1PB0CS#来自I/O译码D0-D7A1A0A1A0452.数据输出线D0-D7的连接可直接连到DB上,或通过另外一个输入接口与DB相连;两种方法均需占用一个I/O地址D0-D7ADC0809DBOE来自I/O译码D0-D7ADC0809DBOE来自I/O译码直接连DB通过输入接口连DB74LS244+5VDIDOE1#E2#463.ALE和START端的连接独立连接:用两个信号分别进行控制——需占用两个I/O端口或两个I/O线;统一连接:用一个脉冲信号的上升沿进行地址锁存,下降沿实现启动转换——只需占用一个I/O端口或一个I/O线。ADC0809ALESTART独立连接来自I/O译码1来自I/O译码2ADC0809ALESTART统一连接来自I/O译码474.ADC0809与系统的连接示例D0IN0A15--A0IORIOWD7--D0D7-D0EOCOESTARTALEADDCADDBADDA译码器ADC0809I/O接口485.判断转换结束的方法软件延时等待(比如延时1ms)此时不用EOC信号,CPU效率最低软件查询EOC状态。把EOC作为中断申请信号,接到8259的IN端。在中断服务程序中读入转换结果,效率较高49A/D转换的启动启动信号一般有两种形式脉冲信号启动转换电平信号启动转换转换启动转换结束50转换结束信号的处理不同的处理方式对应程序设计方法不同①

查询方式——把结束信号作为状态信号②

中断方式——把结束信号作为中断请求信号③

延时方式——不使用转换结束信号④

DMA方式——把结束信号作为DMA请求信号51例1:中断方式D0~D7220hIRQ2A0~A9译码VccD0~D7EOCADDAADDBADDCALE模拟输入(0~5V)500KHzCLOCKVREF(+)+5VIN0OESTARTGNDVREF(-)IORIOW52

;数据段 adtempdb0 ;给定一个临时变量 ;代码段 …… ;设置中断向量等工作 sti ;开中断

movdx,220h outdx,al ;启动A/D转换 …… ;其他工作例1主程序

53例1:中断服务程序(1)

adint proc sti ;开中断 pushax ;保护寄存器 pushdx pushds movax,@data ;设置数据段DS movds,ax movdx,220h inal,dx ;读A/D转换的数字量 movadtemp,al ;送入缓冲区54 moval,20h ;发送EOI命令 out20h,al popds ;恢复寄存器 popdx popax iret ;中断返回adint endp例1:中断服务程序(2)55例2:查询方式8通道模拟输入(0~5V)VccD7A3~A9D0~D7D0~D7OEEOCA0A1A2ADDAADDBADDC

译码500KHzCLOCKSTARTGNDVREF(+)VREF(-)ALE+5VIN0IN1IN2IN3IN4IN5IN6IN7220h~227h238h~23fhIORIOW56例2:启动转换 ;数据段counter equ8buf dbcounterdup(0) ;数据缓冲区 ;代码段 movbx,offsetbuf movcx,counter movdx,220h ;从IN0开始转换start1: outdx,al ;启动A/D转换 pushdx57例2:查询读取 movdx,238h ;查询是否转换结束start2: inal,dx ;读入状态信息 testal,80h ;D7=1,转换结束否? jzstart2 ;没有结束,继续查询 popdx ;转换结束 inal,dx ;读取数据 mov[bx],al ;存入缓冲区 incbx incdx loopstart1 ;转向下一个模拟通道586.ADC0809的转换公式输入模拟电压输出数字量基准电压正极基准电压负极8)(REF)(REF)(REFin2VVVVN--=-+-×59单极性转换示例基准电压VREF(+)=5V,VREF(-)=0V输入模拟电压Vin=1.5V

N=(1.5-0)÷(5-0)×256 =76.8≈77=4DH8)(REF)(REF)(REFin2VVVVN×--=-+-60双极性转换示例基准电压VREF(+)=+5V,VREF(-)=-5V输入模拟电压Vin=-1.5V

N=(-1.5+5)÷(5+5)×256 =89.6≈90=5AH8)(REF)(REF)(REFin2VVVVN×--=-+-61图10.10ADC0809与CPU的连接图300H~307HOE

ALE

START

IN0

IN7

ADDC

ADDB

ADDA

CLK

EOC

D7

D0

REF(-)GND

500KHZ

REF+Vcc

()

+5V

A2

A1

8路模拟输入

IOR

IOW

ADC0809≥1308H~30FHD7

D0

A0

1

2

≥1I/O

译码A9

A3≥162下面举例说明如何编写A/D转换程序。例

编写图9.8中的A/D转换程序,具体要求如下:①顺序采样IN0~IN78个输入通道的模拟信号;②结果依次保存在ADDBUF开始的八个内存

单元中;③上述采样每隔100ms循环一次。设DELAY是一延时100ms子程序。

分析:(1)模拟输入通道IN0~IN7由A0~A2决定其端口

地址,分别为300H~307H,与IOW相配合,

可启动ADC0809进行转换;

(2)查询端口和读A/D转换结果寄存器的地址分 别为:308H和300H。

63相应的采集程序如下:

AD:MOVCX,0008H ;通道计数单元CX赋初值

MOVDI,OFFSETADDBUF;寻址数据区,结果保存 ;在ADDBUF存储区

START:MOVDX,300H ;取IN0启动地址

LOOP1:OUTDX,AL ;启动A/D转换,AL可为 ;任意值

PUSHDX ;保存通道地址

MOVDX,308H ;取查询EOC状态的端口 ;地址WAIT:INAL,DX ;读EOC状态

TESTAL,80H ;测试A/D转换是否结束

JZWAIT ;未结束,则跳到WAIT;处

64MOVDX,300H;取读A/D转换结果寄存器的 ;端口地址

INAL,DX ;读A/D转换结果

MOV[DI],AL;保存转换结果

INCDI ;指向下一保存单元

POPDX;恢复通道地址

INCDX ;指向下一个模拟通道

LOOPLOOP1 ;未完,转入下一通道采样

CALLDELAY;延时100msJMPAD ;进行下一次循环采样,跳至 ;AD处。

65

10.4D/A与A/D应用举例

给出一个使用ADC0809和DAC0832来捕获和重放语音信号的实例。本例要求ADC0809采样大约1秒钟语音信号并保存到相应存储单元,D/A将此语音信号经扬声器重放10次,然后循环进行上述采样和重放,直到系统关闭。

图10.11给出了相应的电路。661819202123456791011121317272F7H2F6H2F5H2F0HI1

I2

I3

I4

I5

I6

I7

I8

I9

I10

I11

I12

I13

O1

O2O3O4AENIOWIORA9A8A7A6A5A4A3A2A1A0

U3

GAL20V8111224252316762292F6H2627281234510U2

VCCREF(+)IN0IN1

IN2IN3IN4IN5IN6IN7CLK+5VEOCADDAADDBADDCOEALESTART…

D0D7

放大器麦克风500KHZD7

2F5HD0

D1

D2

2F0HGNDREF(-)13+5VD7

D0

74112981918211…

103120+12V扬声器-12V+5V2F7HU1

17DAC0832ADC0809CSXFERDGNDAGNDRFBIOUT2VREFWR2WR1ILEIOUT1D7

D0

-+图10.11A/D和D/A与CPU连接图

67分析(1)DAC0832的I/O端口地址由GAL20V8译码产生的地址是2F7H;ADC0809的EOC状态查询地址为2F6H;读ADC0809转换结果端口地址为2F5H;启动A/D转换端口地址为2F0H。(2)该程序读大约1秒钟语音信号,然后重放10次,重复此进程直到系统被关闭。语音信号被采样存储在VOICE存储区中,采样率为每秒钟采样2048次。设DELAY是延时1/2048秒的子程序,且数据段中已申请2048个单元给VOICE。

68相应的程序如下:

START:CALLREAD ;调用A/D采样语音子程序

MOVCX,0AH ;置为10次

LOOP1:CALLWRITE ;调用D/A放音子程序

LOOPLOOP1 ;重复放音10次

JMPSTART ;进入下一次循环

READPROCNEAR ;A/D语音采样子程序

MOVDI,OFFSETVOICE;寻址数据区

MOVCX,0800H ;装入计数器CX=2048

READA:MOVAL,00H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论