首页 理论教育 单片机与D/A转换器芯片接口技术

单片机与D/A转换器芯片接口技术

时间:2023-10-23 理论教育 版权反馈
【摘要】:D/A转换器实现将数字量转换成模拟量。本节就介绍D/A转换器与单片机的接口问题。目前常见的并行8位D/A转换器为DAC0832。实际使用时,应根据对D/A转换器分辨率的需要来选定D/A转换器的位数。快速D/A转换器的转换时间可控制在1μs以下。

单片机与D/A转换器芯片接口技术

单片机应用系统中很多控制对象都是通过模拟量进行控制,而单片机直接输出的信号数字信号,因此,输出的数字信号必须经过D/A转换器转换成模拟信号后,才能送给控制对象进行控制。D/A转换器实现将数字量转换成模拟量。本节就介绍D/A转换器与单片机的接口问题。

8.2.3.1 D/A转换器概述

目前D/A转换器芯片品种繁多、性能各异。按输入数字量的位数,可分为8位、10位、12位和16位等;按输入的数码,可分为二进制方式和BCD码方式;按传送数字量的方式,可分为并行和串行方式;按输出形式,可分为电流输出型和电压输出型,电压输出型又有分为单极性和双极性之分;按与单片机的接口,可分为带输入锁在器和不带输入锁存器。设计者只需要合理的选用合适的芯片,了解它们的功能、引脚外特性以及与单片机的接口设计方法即可。由于现在部分的单片机芯片中集成了D/A转换器,位数一般在10位左右,且转换速度也很快,所以单片的D/A开始向高的位数和高转换速度上转变。低端的产品,如8位的D/A转换器,开始面临被淘汰的危险,但是在实验室或涉及某些工业控制方面的应用,低端的8位DAC以其优异性价比还是具有相当大的应用空间的。目前常见的并行8位D/A转换器为DAC0832。当8位分辨率不够时,可以采用高于8位分辨率的D/A,例如,并行10位、12位、14位、16位的D/A。为了节省成本,也可采用I2 C或SPI串行口的D/A转换器,如AD7543。

8.2.3.2 主要技术指标

D/A转换器的指标很多,使用者最关心的几个指标如下。

1.分辨率

指单片机输入给D/A转换器的单位数字量的变化,所引起的模拟量输出的变化,通常定义为输出满刻度值与2n之比(n为D/A转换器的二进制位数)。习惯上用输入数字量的二进制位数表示。位数越多,分辨率越高,即D/A转换器对输入量变化的敏感程度越高。例如,8位的D/A转换器,若满量程输出为10V,根据分辨率定义,则分辨率为10V/2n,分辨率为:10V/256=39.1m V,即输入的二进制数最低位的变化可引起输出的模拟电压变化39.1mV,该值占满量程的0.391%,常用符号1LSB表示。同理,10位D/A转换1LSB=9.77m V=0.1%满量程,12位D/A转换1LSB=2.44m V=0.024%满量程,16位D/A转换1LSB=0.076m V=0.00076%满量程。实际使用时,应根据对D/A转换器分辨率的需要来选定D/A转换器的位数。

2.建立时间

描述D/A转换器转换快慢的一个参数,用于表明转换时间或转换速度。其值为从输入数字量到输出达到终值误差±(1/2)LSB时所需的时间。电流输出的转换时间较短,而电压输出的转换器,由于要加上完成I-V转换的运算放大器的延迟时间,因此转换时间要长一些。快速D/A转换器的转换时间可控制在1μs以下。

3.转换精度

理想情况下,转换精度与分辨率基本一致,位数越多精度越高。但由于电源电压、基准电压、电阻、制造工艺等各种因素存在着误差。严格讲,转换精度与分辨率并不完全一致。只要位数相同,分辨率则相同,但相同位数的不同转换器转换精度会有所不同。例如,某种型号的8位DAC精度为±0.19%,而另一种型号的8位DAC精度为±0.05%。

8.2.3.3 MCS-51与DAC0832的接口

1.D/A转换芯片DAC0832简介

DAC0832是CMOS工艺制造的8位单片D/A转换器,芯片采用的是双列直插封装结构,是一种电流型D/A转换器,数字输入端具有双重缓冲功能,可以双缓冲、单缓冲或直通方式输入,它的外部引脚和内部结构如图8-30所示。

(1)引脚功能。DAC0832有20个引脚及其功能分别如下:

1)DI0~DI7(DI0为最低位):8位数字量输入端。

2)ILE:数据允许控制输入线,电平有效。

3)img:片选信号。

4)imgimg为写信号线1;img为写信号线2。

5)img:数据传送控制信号输入线,低电平有效。

图8-30 DAC0832外部引脚和内部结构图

6)IOUT1和IOUT2:IOUT1为模拟电流输出线1,它是数字量输入为“1”的模拟电流输出端;IOUT2为模拟电流输出线2,它是数字量输入为“0”的模拟电流输出端,采用单极性输出时,IOUT2常常接地。

7)RFB:片内反馈电阻引出线,反馈电阻制作在芯片内部,用作外接运算放大器的反馈电阻。

8)VREF和VCC:VREF为基准电压输入线,电压范围为-10V~+10V;VCC为工作电源输入端,可接+5V~+15V电源。

9)AGND和DGND:AGND为 模 拟 地;DGND 为 数 字 地。

在图8-30(b)所示的内部结构图中,“8位输入寄存器”用于存放单片机送来的数字量,使输入数字量得到缓冲和锁存,由img加以控制;“8位DAC寄存器”用于存放待转换的数字量,由img控制;“8位D/A转换电路”受“8位DAC寄存器”输出的数字量控制,能输出和数字量成正比的模拟电流。因此,需外接I-V转换的运算放大器电路,才能得到模拟输出电压。img为内部两个寄存器的输入锁存端。其中img由ILE、CS、img确定,img确定:①当img时,8位输入寄存器的输出跟随输入变化;当img时,数据锁存在输入寄存器中,不再变化。②当img时,8位DAC寄存器的输出跟随输入变化;当img时,数据锁存在DAC寄存器中,不再变化。

DAC0832可与所有的单片机或微处理器直接相连,也可单独使用。电流稳定时间为1μs、20m W低功耗,逻辑电平输入与TTL兼容。

2.DAC0832的工作方式

DAC0832有3种方式:直通方式、单缓冲方式和双缓冲方式。

(1)直通方式。当引脚img直接接地,ILE接电源时,DAC0832工作于直通方式。此时,8位输入寄存器和8位DAC寄存器都直接处于导通状态,8位数字量到达DI0~DI7,就立即进行D/A_转换,从输出端得到转换的模拟量。

(2)单缓冲方式。当连接引脚img时,使得两个锁存器的一个处于直通状态,另一个处于受控制状态,或者两个被控制同时导通,DAC0832就工作于单缓冲方式,如图8-31(a)所示的是一种单缓冲方式的连接图。DAC0832是电流型D/A转换电路,输入数字量,输出模拟量,通过运算放大器将电流信号转换成单端电压信号输出。由于输出的模拟信号极易受到电源和数字信号的干扰而发生波动,因此为提高模拟信号的精度,一方面将“数字地”(DGND)和“模拟地”(AGND)分开(各自独立);另一方面采用了高精度的VREF基准电源与“模拟地”配合使用。

图8-31 DAC0832的两种工作方式连接图

(3)双缓冲方式。多路的D/A转换要求同步输出时,必须采用双缓冲同步方式。此方式工作时,数字量的输入锁存和D/A转换输出城分两步分开控制导通8位输入锁存器和8位DAC寄存器。单片机必须通过img来锁存待转换的数字量,通过img来启动D/A转换。第1步使8位输入锁存器导通,将8位数字量写入8位输入锁存器中;第2步使8位DAC寄存器导通,8位数字量从8位输入锁存器送入8位DAC寄存器。第2步使DAC寄存器导通,在数据输入端写入的数据无意义。双缓冲方式下,DAC0832应该为单片机提供两个I/O端口。图8-31(b)为一种双缓冲方式的连接。

3.DAC0832的输出方式

DAC0830为电流输出型D/A转换器,要获得模拟电压输出时,需要外接一个运算放大器。DAC0832的输出方式有单极性、双极性两种模拟电压输出。

(1)单极性模拟电压输出。如果参考电压为+5V,则当数字量D从00H至FFH变化时,对应的模拟电压VO的输出范围是0~5V,典型的单极性电压输出电路如图8-32(a)所示,由运算放大器进行电流—电压转换,使用芯片内部的反馈电阻。输出电压VO与输入数字D的关系为:VO=D/256×VREF

假设输入数字量D=0~255,基准电压VREF=+5V。(www.xing528.com)

当D=FFH=255时,最大输出电压Vmax=(255/256)×5=4.98(V)。

当D=00H时,最小输出电压Vmin=(0/255)×5=0(V)。

当D=01H时,一个最低有效位(LSB)的电压VLSB=(1/256)×5=0.0195(V)。因此电压输出范围为:VO=0~V REF×255/256=0~4.98(V)。

(2)双极性模拟电压输出。如果要输出双极性电压,则需在输出端再加一级运算放大器作为偏移电路,如图8-32(b)所示。当数字量D从00H至FFH变化时,对应的模拟电压VO的输出范围是-5~+5V。有时输入待转换的数字量有正有负,因而希望D/A转换输出也是双极性的;有些控制系统中,也要求控制电压应有极性变化。若取电阻R2=R3=2R1,则输出电压VO与输入数字D的关系为:

VO=2×VREF×D/256-VREF=(D/128-1)VREF

假设输入数字量D=0~255,基准电压VREF=+5V

当D=FFH=255时,Vmax=(255/128-1)×V REF=4.96(V);

当D=00H时,Vmin=(0/128-1)×VREF=-5(V);

当D=128时,Vo=(128/128-1)×VREF=0(V)。因此电压输出范围为:VO=-5V~+4.96V。

图8-32 DAC0832的单极性和双极性两种接法

4.DAC0832与MCS-51型单片机的接口

MCS-51单片机与DAC0832的接口单缓冲连接电路如_图8-31(a)所示。图中,img直接接地,ILE接电源,img接单片机的img接单片机的P2.7。只要数据写入DAC0832的8位输入锁存器,就立即开始转换,转换结果通过输出端输出。根据图8-31(a)的连接,DAC0832的端口地址为7FFFH(P2.7=0)。执行下列3条指令就可以将一个数字量转换为模拟量。

MOV DPTR,#7FFFH ;端口地址送入DPTR

MOV A,#DATA ;8位数字量送入累加器

MOVX @DPTR,A ;向锁存器写入数字量,同时启动转换

D/A转换芯片除了用于输出模拟量控制电压外,也常用于产生各种波形。

【例8-6】 根据图8-31(a)的接口电路,分别编写从DAC0832输出端产生锯齿波、三角波、方波(矩形波)的程序段。

(1)锯齿波编程。汇编语言程序为:

图8-33 DAC0832产生的锯齿波输出

当输入数字量从0开始,逐次加1进行D/A转换,模拟量与其成正比输出。当A=FFH时,再加1则溢出清0,模拟输出又为0,然后又重新重复上述过程,如此循环,输出的波形就是锯齿波,如图8-33所示。实际上,每一上升斜边要分成256个小台阶,每个小台阶暂留时间为执行后三条指令所需要的时间。因此“INC A”指令后插入NOP指令或延时程序,则可改变锯齿波频率。

C语言程序为:

(2)三角波编程。汇编语言程序为:

输出的三角波如图8-34所示。

图8-34 DAC0832产生的三角波输出

C语言程序为:

(3)方波编程。汇编语言程序为:

输出的矩形波如图8-35所示。DELAY为延时程序,它决定输出的矩形波高、低电平时的持续宽度。矩形波频率也可用延时方法来改变。

C语言程序为:

仿照上例的编程方法,只要稍加变化就可编写出其他所需的各种波形(如正弦波、阶梯波、梯形波、不同占空比的矩形波或组合波形等)。

图8-35 DAC0832产生的矩形波输出

在单片机应用系统中,如需同时输出多路模拟信号,这时的D/A转换器就必须采用双缓冲工作方式。图8-36是一个两路模拟信号同步输出的D/A转换接口电路。图中两片D/A转换器的片选端img分别接在单片机的P2.5和P2.6引脚上,而img是控制输入寄存器的,所以两片D/A转换器的输入寄存器地址为0DFFFH(P2.5=0)和0BFFFH(P2.6=0)。而这两片D/A转换器的DAC寄存器的控制端口img都接在单片机的P2.7上,所以它们的共同编址为7FFFH。

【例8-7】 设硬件接口电路如图8-36所示,设两片0832转换器的模拟输出分别用于示波器的X、Y偏转,试编程实现示波器上的光点根据参数X、Y的值同步移动。

图8-36 两路0832与单片机的接口电路

汇编程序如下:

C语言编程如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈