1 / 63

D/A 和 A/D 转换器接口

D/A 和 A/D 转换器接口. A/D 及 D/A 转换器的性能指标. A/D 转换器的主要技术指标. 分辨率( Resolution ) 分辨率是指 A/D 转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。 转换精度( Conversion Accuracy ) 转换精度指满量程时 ADC 的实际模拟输出值和理论值的接近程度。 量程 ( 满刻度范围 ——FULL Scale Range)

Download Presentation

D/A 和 A/D 转换器接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. D/A和A/D转换器接口

  2. A/D及D/A转换器的性能指标 A/D转换器的主要技术指标 分辨率(Resolution) 分辨率是指A/D转换器能分辨的最小输出模拟增量,取决于输入数字量的二进制位数。 转换精度(Conversion Accuracy) 转换精度指满量程时ADC的实际模拟输出值和理论值的接近程度。 量程(满刻度范围——FULL Scale Range) 量程是指输入模拟电压的变化范围。例如某转换器具有10V的单极性范围或-5~+5V的双极性范围。则它们的量程都为10V。满刻度只是个名义值,实际的A/D,D/A转换器的最大输出值总是比满刻度值小1/2n,n为转换器的位数。例如12位的A/D转换器,其满刻度值为10V,而实际的最大输出值为:

  3. 线性度(Linearity) 线性度是指ADC的实际转换特性曲线和理想直线之间的最大偏移差。 转换时间(Conversion Time) 从发出启动转换开始直至获得稳定的二进代码所需的时间称为转换时间,转换时间与转换器工作原理及其位数有关,同种工作原理的转换器,通常位数越多,其转换时间越长。

  4. D/A转换器的主要技术指标 D/A转换器的主要技术指标与A/D转换器基本相同,只是转换时间的概念略有不同,D/A转换器的转换时间又叫建立时间,它是指当输入的二进制代码从最小值突然跳变至最大值时,其模拟输出电压相应的满度跳跃并达到稳定所需的时间。一般而言,D/A的转换时间比A/D要短得多。

  5. DAC芯片类型及接口方法 各种类型的DAC芯片都具有数字量输入端和模拟量输出端及基准电压端。数字输入端有以下几种类型:①无数据锁存器,②带单数据锁存器,③带双数据锁存器,④可接收串行数字输入。第1种在与单片机接口时,要外加锁存器,第2种和第3种可直接与单片机接口,第4种与单片机接口十分简单,接收数据较慢,适用于远距离现场控制的场合。模拟量输出有两种方式:电压输出及电流输出。电压输出的DAC芯片相当于一个电压源,其内阻很小,选用这种芯片时,与它匹配的负载电阻应较大。电流输出的芯片相当于电流源,其内阻较大,选用这种芯片时,负载电阻不可太大。

  6. 在实际应用中,常选用电流输出的DAC芯片实 现电压输出,如图所示:

  7. 无内部数据锁存器的DAC芯片,尤其是分辩率高于8位的DAC芯无内部数据锁存器的DAC芯片,尤其是分辩率高于8位的DAC芯 片,在设计与8位单片机接口时,要外加数据锁存器作为缓 冲器。下图是一种单缓冲器接口。

  8. 在10位DAC芯片与8位单片机之间接入两个锁存器,锁存器A锁存10位数据在10位DAC芯片与8位单片机之间接入两个锁存器,锁存器A锁存10位数据 中的低8位,锁存器B锁存高2位。单片机分两次输出数据,先输出低8位数 据到锁存器A,后输出高2位数据到锁存器B。设锁存器A和锁存器B的地址 分别为002CH和002DH,则执行下列指令后完成一次D/A转换: MOV DPTR,#002CH MOV A,#DATA8 MOVX @DPTR,A ;输出低8位 INC DPTR MOV A,#DATA2 MOVX @DPTR,A ;输出高2位 这种接口存在一个问题,就是在输出低8位数据和高2位数据之间,会产生 “毛剌”现象,如图3.3(b)所示。假设两个锁存器原来的数据为 0001111000,现在要求转换的数据为0100001011,新数据分两次输出, 第一次输出低8位,这时DAC将把新的8位数据的与原来数据的高2位一起 组成0000001011转换成输出电压,而该电压是不需要的,即所谓“毛刺”。

  9. 避免产生毛刺的方法之一是采用双组缓冲器结 构,如下图所示。

  10. 单片机先把低8位数据选通输入锁存器1中,然后将高2位数据选单片机先把低8位数据选通输入锁存器1中,然后将高2位数据选 通输入锁存器3中,并同时选通锁存器2,使锁存器2与锁存器3 组成10位锁存器向DAC同时送入10位数据由DAC转换成输出电 压。当地址如图中所示时,执行以下程序完成一次D/A转换: MOV DPTR,#6000H MOV A,#DATA8 MOVX @DPTR,A ;输出低8位数据 INC DPTR MOV A,#DATA2 MOVX @DPTR,A ;输出高2位,并同时输出10位数据

  11. D/A转换器芯片DAC0832 DAC0832是一个8位D/A转换器芯片,单电源供电,从+5V~+15V均可正常工作,基准电压的范围为±10V,电流建立时间为1µs,CMOS工艺,低功耗20mm。其内部结构由1个8位输入寄存器、1个8位DAC寄存器和1个8位D/A转换器组成。

  12. DAC0832的内部结构 DAC0832是典型的带内部双数据缓冲器的8位D/A芯片。图中LE是寄存命令,当LE =1时,寄存器输出随输入变化,当LE =0时,数据锁存在寄存器中。当ILE端为高电平,CS与WR1同时为低电平时,使得LE1 =1;当WR1变为高电平时,输入寄存器便将输入数据锁存。当XFER与WR2同时为低电平时,使得LE2 =1,DAC寄存器的输出随寄存器的输入变化,WR2上升沿将输入寄存器的信息锁存在该寄存器中。

  13. DAC0832的工作方式 • DAC0832利用WR1、 WR2、ILE、XFER 控制信号可以构成三种不同的工作方式。 • 直通方式—— WR1= WR2 =0时,数据可以从输入端经两个寄存器直接进入D/A转换器。 • 2)单缓冲方式——两个寄存器之一始终处于直通,即WR1=0或WR2=0,另一个寄存器处于受控状态。 • 3)双缓冲方式—— 两个寄存器均处于受控状态。这种工作方式适合于多模拟信号同时输出的应用场合。

  14. 单缓冲方式的接口与应用 1.单缓冲方式连接 所谓单缓冲方式就是使DAC0832的两个输入寄存器中有一个处于直通方式,而另一个处于受控锁存方式。 为使DAC寄存器处于直通方式,应使WR2 =0和XFER=0。为此可把这两个信号固定接地,或如电路中把WR2与WR1相连,把XFER与CS相连。 为使输入寄存器处于受控锁存方式,应把WR1接8051的WR,ILE接高电平。此外还应把CS接高位地址线或地址译码输出,以便于对输入寄存器进行选择。

  15. DAC0832单缓冲方式接口

  16. 2.单缓冲方式应用举例--波形发生器 在一些控制应用中,需要有一个线性增长的电压(锯齿波)来控制检测过程、移动记录笔或移动电子束等。对此可通过在DAC0832的输出端接运算放大器,由运算放大器产生锯齿波来实现,其电路连接如图所示。

  17. 图中的DAC0832工作于单缓冲方式,其中输入寄存器受控,而DAC寄存器直通。假定输入寄存器地址为7FFFH,产生锯齿波的程序清单如下:图中的DAC0832工作于单缓冲方式,其中输入寄存器受控,而DAC寄存器直通。假定输入寄存器地址为7FFFH,产生锯齿波的程序清单如下: MOV A, #00H ;取下限值 MOV DPTR,#7FFFH ;指向0832口地址 MM: MOVX @DPTR,A ;输出 INC A ;延时 NOP NOP NOP SJMP MM ;反复 执行上述程序就可得到如下图所示的锯齿波。

  18. 几点说明: (1)程序每循环一次,A加1,因此实际上锯齿波的上升边是由256个小阶梯构成的,但由于阶梯很小,所以宏观上看就如图中所画的先行增长锯齿波。

  19. (2)可通过循环程序段的机器周期数,计算出锯齿波的周期。并可根据需要,通过延时的方法来改变波形周期。若要改变锯齿波的频率,可在AJMP MM指令前加入延迟程序即可。延时较短时可用NOP指令实现(本程序就是如此),需要延时较长时,可以使用一个延长子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。 (3)通过A加1,可得到正向的锯齿波,反之A减1可得到负向的锯齿波。 (4) 程序中A的变化范围是0~255,因此得到的锯齿波是满幅度的。如要求得到非满幅锯齿波,可通过计算求的数字量的处置和终值,然后在程序中通过置初值和终值的方法实现。

  20. 产生矩形波电压的参考程序: ORG 1100H START: MOV DPTR , #7FFFH ;送DAC0832口地址 LOOP: MOV A , #dataH ;送高电平数据 MOVX @ DPTR , A LCALL DELAYH ;调用延时子程序 MOV A , #dataL ;送低电平数据 MOVX @ DPTR , A LCALL DELAYL ;调用延时子程序 SJMP LCALL

  21. 执行上述程序就可得到如下图所示的矩形波

  22. 几点说明: (1)以上程序产生的是矩形波,其低点平的宽度由延时子程序DELAYL所延时的时间来决定,高电平的宽度则由DELAYH所延时的时间决定。 (2) 改变延时子程序DELAYL和的DELAYH延时时间,就可改变矩形波上下沿的宽度。若DELAYL=DELAYH(两者延时一样),则输出的是方波。 (3) 改变上限值或下限值便可改变矩形波的幅值;单极性输出时为0~-5V或0~+5V;双极性输出时为-5V~+5V。

  23. 双缓冲方式的接口与应用 在多路D/A转换的情况下,若要求同步转换输出,必须采用双缓冲方式。DAC0832采用双缓冲方式时,数字量的输入锁存和D/A转换输出是分两步进行的。 第一,CPU分时向各路D/A转换器输入要转换的数字量并锁存在各自的输入寄存器中。 第二,CPU对所有的D/A转换器发出控制信号,使各路输入寄存器中的数据进入DAC寄存器,实现同步转换输出。 下图为两片DAC0832与8031接实现的双缓冲方式连接电路,能实现两路同步输出。

  24. 8051与DAC0832的双缓冲方式接口

  25. 实现两路同步输出的程序如下: MOV DPTR,#0DFFFH;送0832(1)输入锁存器地址 MOV A,#data1 ;data1送0832(1)输入锁存器 MOVX @DPTR,A ; MOV DPTR,#0BFFFH;送0832(2)输入锁存器地址 MOV A,#data2 ;data2送0832(2)输入锁存器 MOVX @DPTR,A ; MOV DPTR,#7FFFH ;送两路DAC寄存器地址 MOVX @DPTR,A ;两路数据同步转换输出

  26. 8051与12位DAC的接口 DAC1208的内部结构和原理 与DAC0832相似,DAC1208也是双缓冲器结构,输入控制线与DAC0832也很相似,和用来控制输入寄存器,和用来控制DAC寄存器,但增加了一条控制线BYTE1/ BYTE2 ,用来区分输入8位寄存器和4位寄存器,当BYTE1/BYTE2= 1时,两个寄存器都被选中,BYTE1/BYTE2=0时,只选中4位输入寄存器。

  27. DAC1208内部结构框图

  28. 8051和DAC1208的连接

  29. DAC1208的DAC寄存器地址为FFFFH。DAC1208采用双缓冲器工作方式,送数时应先送高8位数据DI11~DI4,再送低4位数据DI3~DI0,送完12位数据后再打开DAC寄存器,设12位数据存放在内部RAM区的40H和41H单元中,高8位存于40H,低4位存于41H,转换程序如下:DAC1208的DAC寄存器地址为FFFFH。DAC1208采用双缓冲器工作方式,送数时应先送高8位数据DI11~DI4,再送低4位数据DI3~DI0,送完12位数据后再打开DAC寄存器,设12位数据存放在内部RAM区的40H和41H单元中,高8位存于40H,低4位存于41H,转换程序如下: MOV 40H,#0FFH ;模拟电压高8位数据 MOV 41H,#0FH ;模拟电压低4位数据 MOV DPTR,#07FFFH ;选通1208高8位输入寄存器地址 MOV R1,#40H MOV A,@R1 MOVX @DPTR,A ;输出高8位数据 MOV DPTR,#07EFFH ;选通1208低4位输入寄存器地址 MOV R1,#41H MOV A,@R1 MOVX @DPTR,A ;输出低4位地址数据 MOV DPTR,#0FFFFH ;选通1208DAC寄存器地址 MOVX @DPTR,A ;完成12位D/A转换 SJMP $

  30. 串行DAC与8051单片机的接口 串行接口的DAC芯片MAX517与8051单片机的接口简单,与标准I2C总线兼容,具有高达400kbps的通信速率。基准输入可为双极性,输出放大为双极性工作方式,8引脚DIP封装引脚排列如下 :

  31. MAX517采用I2C串行总线,大大简化了与单片机的接口电路设计。 I2C总线采用8位、双向串行数据传送方式,标准传送速率为100kB/s,快速方式下可达400kB/s;同步时钟可以作为停止或重新启动串行口发送的握手方式;连接到同一总线的集成电路数目只受400pF的最大总线电容限制。MAX517数据传输时序如图所示 。

  32. MAX517与8051单片机的接口电路

  33. 8051单片机的P3.0和P3.1分别定义为I2C串行总线的SCL和SDA信号,采用IO端口模拟方式实现I2C串行总线工作时序。执行驱动程序后连续启动MAX517进行D/A转换,利用示波器可以看到MAX517输出电压的变化波形。

  34. ADC接口技术 阶梯波比较式ADC工作原理: 转换开始时,计数器复0,DAC的输出为Vd=0。若输入电压Vi为正,则比较器输出Vc为正,与门打开,计数器对时钟脉冲进行计数,DAC输出即随计数脉冲的增加而增加,如图所示,当Vd >Vi时,比较器输出变负,与门关闭,停止计数。计数器的计数值正比于输入电压,完成了从输入模拟量——电压到计数器的计数值——数字量的转换。

  35. 典型A/D转换器芯片ADC0809 ADC0809内部逻辑结构 ADC0809引脚图

  36. ADC0809内部多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对A、B、C 3个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连。 通道选择表

  37. ADC0809的工作时序图

  38. ADC0809芯片为28引脚为双列直插式封装,其引脚排列如图所示。主要信号引脚的功能如下: • IN7~IN0——模拟量输入通道 • A、B、C——地址线。 通道端口选择线,A为低地址,C为 高地址,引脚图中为ADDA,ADDB和ADDC。其地址状态与通道对应关系见表9-1。 • ALE——地址锁存允许信号。对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。

  39. START——转换启动信号。START上升沿时,复位ADC0809;START下降沿时启动芯片,开始进行A/D转换;在A/D转换期间,START应保持低电平。本信号有时简写为ST. • D7~D0——数据输出线。为三态缓冲输出形式,可以和单片 机的数据线直接相连。D0为最低位,D7为最高 • OE——输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻;OE=1,输出转换得到的数据。

  40. CLK ——时钟信号。ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为500KHz的时钟信号。 • EOC——转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。使用中该状态信号即可作为查询的状态 标志,又可作为中断请求信号使用。 • Vcc—— +5V电源。 • Vref——参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为+5V(Vref(+)=+5V, Vref(-)=-5V)。

  41. 8051单片机与ADC0809的接口

  42. 采用线选法规定其端口地址 用单片机的P2.7引脚作为片选信号, 因此端口地址为7FFFH。片选信号和信号一起经或非门产生ADC0809的启动信号START和地址锁存信号ALE;片选信号和信号一起经或非门产生ADC0809输出允许信号OE, OE=1时选通三态门使输出锁存器中的转换结果送入数据总线。ADC0809的EOC信号经反相后接到8051的引脚 用于产生转换完成的中断请求信号。ADC0809芯片的3位模拟量输入通道地址码输入端A、B、C分别接到8031的P0.0、P0.1和P0.2,故只要向端口地址7FFFH分别写入数据00H~07H,即可启动模拟量输入通道0~7进行A/D转换。

  43. 转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。 (1)定时传送方式 对于一种A/D转换其来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128µs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。 (2)查询方式 A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可却只转换是否完成,并接着进行数据传送。 (3)中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。

  44. 不管使用上述那种方式,只要一旦确定转换完 成,即可通过指令进行数据传送。首先送出口地址 并以RD信号有效时,OE信号即有效,把转换数据送 上数据总线,供单片机接受。 不管使用上述那种方式,只要一旦确认转换结 束,便可通过指令进行数据传送。所用的指令为: MOV DPTR , #7FFFH MOVX A , @DPTR 该指令在送出有效口地址的同时,发出有效信号 RD,使0809的输出允许信号OE有效,从而打开三态 门输出,使转换后的数据通过数据总线送入A累加器 中。

  45. 需要说明的是,ADC0809的三个地址端A、B、C既可如前所述与数据线相连,也可与地址线相连,例如与A0~A2相连。这时启动A/D转换的指令与上述类似,只不过A的内容为任意数。例如当A、B、C分别与A0、A1、A2相连时,启动A/D转换只需要一条MOVX指令。在此之前,要将P2.7清零并将最低三位与所选择的通道对应的口地址送入数据指针DPTR中。例如要选择IN7通道时,可采用如下两条指令启动A/D转换:需要说明的是,ADC0809的三个地址端A、B、C既可如前所述与数据线相连,也可与地址线相连,例如与A0~A2相连。这时启动A/D转换的指令与上述类似,只不过A的内容为任意数。例如当A、B、C分别与A0、A1、A2相连时,启动A/D转换只需要一条MOVX指令。在此之前,要将P2.7清零并将最低三位与所选择的通道对应的口地址送入数据指针DPTR中。例如要选择IN7通道时,可采用如下两条指令启动A/D转换: MOV DPTR , #7FFFH ;送入0809的口地址 MOVX @DPTR , A ;启动A/D转换(IN7) 注意:此处A中内容与A/D转换无关,可为任意值。

  46. A/D转换应用举例 采用中断工作方式对8路模拟输入信号依次进行A/D转换并把转换结果存入内部数据存储器的程序,设数据存储器的首地址为30H ,采用前面的接口电路。 初始化程序: MOV R0,#30H ;数据区首地址 MOV R4,#08H ;八路模拟信号 MOV R2,#00H ;模拟通道0 SETB EA ;开中断 SETB EX1 ;允许外中断1 SETB IT1 ;边沿触发 MOV DPTR,#7FFFH ;ADC0809端口地址 MOV A,R2 MOVX @DPTR,A ;启动ADC0809 SJMP $ ;等待

  47. 中断服务程序: MOVX A,@DPTR ;输入转换结果 MOV @R0,A ;存入内存 INC R0 ;数据区地址加1 INC R2 ;修改输入通道 MOV A,R2 MOVX @DPTR,A ;启动下一路通道 DJNZ R4,LOOP ;八路未完,循环 CLR EX1 ;八路完毕,关中断 LOOP: RETI ;中断返回

  48. 积分型A/D 转换器工作原理 双积分型A/D转换器工作原理 双积分型A/D转换是一种间接A/D转换技术。首先将模拟电压转换成积分时间,然后用数字脉冲计时方法转换成计数脉冲数,最后将此代表模拟输入电压大小的脉冲数转换成二进制或BCD码输出。

  49. 双积分A/D转换电路原理及工作波型图

  50. 1.准备期:开关S1、S2、S3断开,S4接通,积分电容C被短路,输出为0。1.准备期:开关S1、S2、S3断开,S4接通,积分电容C被短路,输出为0。 2.采样期:开关S2、S3、S4断开,S1闭合,积分器对输入模拟电压+Vi进行积分,积分时间固定为T1,在采样期结束的t2时刻,积分器输出电压为: 式中 为被测模拟电压在T1时间内的平均值。 3.比较期:从t2时刻开始,开关S1、S2、S4断开,S3闭合,将与被测模拟电压极性相反的标准电压-Er接到积分器的输入端(若被测模拟电压为-Vi,则S1、S3、S4断开,S2闭合,将+Er接到积分器的输入端),使积分器进行反向积分。当积分器的输出回到0时,比较器的输出发生跳变。设在t3时刻积分器回0,此时有: 式中T2=t3-t2为比较周期。

More Related