• 沒有找到結果。

单片机在用于实时控制系统时,有时会遇到控制对象需用模拟量来控制的情况,如  DDZ  电动组合单元仪表、变频调速器等,此时,就需要把计算机运算处理的结果(数字量)转换为 相应的模拟量,以便操纵控制对象,这一过程即为“数/模转换”D/A(Digit to Analog)。能实 现 D/A 转换的器件称为 D/A 转换器或 DAC,CPU 与 DAC 的接口是计算机与外界联系的重要 接口。

3.5.1  DAC 电路原理 

D/A 转换是数字量信号转换成与之成正比的模拟量。 一个二进制数是由各位代码组合起来

VR 与 V0 的电压符号正好相反。即要使输出电压 V0 为正,则 VR 必须为负。

图 3­18  T 形电阻网络 D/A 转换原理 

D/A  输出电压值的大小不仅与二进制数有关,而且与运算放大器的反馈电阻  RF、基准电 压 VR 有关,当 D/A 设置为满刻度值时,可以通过这两个参数调整电压的最大输出值。 

3.5.1.2  D/A 转换器的主要技术指标  l.D/A 转换速度 

D/A 转换器从输入二进制数到转换成模拟量电压输出的过程, 需要经历一定的时间, 这就 是 D/A 转换的速度,不同类型的 D/A 转换速度多数是不同的,但一般均在几十微秒到几百微 秒的范围内。

由于计算机的运行速度高于 D/A 转换速度,所以无论是什么类型的 D/A 转换器,都必须 在接口中安置锁存器,使短暂的输出信号锁存,为 D/A 转换器提供足够时间稳定的数字信号。 

2.D/A 转换精度 

D/A 转换精度主要决定于输入 D/A 转换器的二进制位数。例如 4 位 D/A 转换器的相对误 差为 1/16,而 8 位 D/A 转换器的相对误差为 l/256。显然,二进制位数越多,精度越高。此外,

基准电压的稳定精度也直接影响转换精度。 

3.5.2  典型 D/A 转换器及接口 

D/A 转换器有很多现成的集成电路芯片,只需要掌握典型的 DAC 集成电路性能及其与单 片机之间接口的基本知识,就可以根据应用系统的要求,合理选取 DAC 集成电路芯片,并配 置适当的接口电路。

3.5.2.1  8 位 D/A 转换器 DAC0832 

DAC0832 是使用较多的一种 8 位 D/A 转换器,其引脚如图 3­19 所示。

图 3­19  DAC0832 的引脚  1.DAC0832 的结构和引脚 

DAC0832 主要由两个 8 位寄存器和一个 8 位 D/A 转换器组成。使用两个寄存器(输入寄 存器和  DAC  寄存器)的好处是可以进行两次缓冲操作,使该器件的操作有更大的灵活性。 

DAC0832 的转换原理与 T 形解码网络电路一样。 

DAC0832 芯片为 20 脚双列直插式封装,各引脚功能如下:

DI0~DI7:数据输入线,TTL 电平,有效时间应大于 90ns;

ILE:数据锁存允许控制信号输入线,高电平有效;

CS:片选信号输入线,低电平有效;

WR1:输入寄存器的写选通输入线,负脉冲有效,脉冲宽度应大于 500ns,当 CS 为  0,ILE 为 l 且 WR1 有效时,DI0~DI7 状态被锁存到输入寄存器;

XFR:数据传输控制信号输入线,低电平有效;

WR2:DAC  寄存器写选通输入线,负脉冲有效,脉冲宽度应大于  500ns,当  XFER  为 0 且 WR2 有效时,输入寄存器的状态被传送到 DAC 寄存器中;

Iout1:电流输出线,当输入全为 1 时,Iout1 最大;

Iout2:电流输出线,其值和 Iout1 值之和为一常数;

Rfb:反馈信号输入线,芯片内部有反馈电阻;

Vcc:电流电压线,范围为+5V~+15V;

Vref:基准电压输入线,Vref 范围为-10V~+10V;

AGND:模拟地,为模拟信号和基准电源的参考地;

DGND:数字地,为工作电源地和数字逻辑地,两种地线在基准电源处一点共地比较 恰当。 

DAC0832 是电流型输出,应用时需外接运算放大器使之成为电压型输出。 

2.DAC0832 的应用

根据对 DAC0832 的输入寄存器和 DAC 寄存器的不同控制方法,可有 3 种工作方式:单

缓冲方式、双缓冲方式和直通方式。下面介绍前两种方式的接口及应用。

(1)单缓冲方式的应用。

此方式适用于只有一路模拟量输出或几路模拟量非同步输出的情形。在这种方式下,将 二级寄存器的控制信号并接, 输入数据在控制信号作用下, 直接打入 DAC 寄存器中。 如图 3­20  所示为 0832 在这种方式下与 89C51 的连接方法。

图 3­20  0832 在单缓冲方式下与 89C51 的接口

图 3­20 中,ILE 接+5V,片选信号 CS 和传送信号 XFER 都连到 P2.7,这样输入寄存器和  DAC 寄存器的地址都是 7FFFH。写选通线 WR1 和 WR2 都和 89C51 的写信号 WR 接,CPU 对  0832  执行一次写操作,则把一个数据直接写入  DAC  寄存器,0832 的输出模拟信号随之对应 变化。

D/A 转换器的基准电压 Vref 取自基准电源 MC1403 的输出分压。 MC1403 称带隙基准电源,

其最大优点是高精度低温漂,输入电压在 4.5V~15V 之间,输出电压在  2.5V 附近。最大输出 电流为 10mA。

根据图 3­20,可以编出许多种波形输出的 D/A 转换程序,程序如下:

① 锯齿波。 

START:  MOV  DPTR,#7FFFH  ;选中 DAC0832  MOV  A,#00H 

LP:  MOVX  @DPTR,A  ;向 0832 输出数据 

INC  ;累加器值加 1 

JR  LP 

若要改变锯齿波的频率,只需在 JR LP 前插入延时程序即可。

② 三角波。 

START:  MOV  DPTR,#7FFFH  ;选中 DAC0832  MOV  A,#00H

UP:  MOVX  @DPTR,A  INC 

JNZ  UP  ;上升到 A 中为 FFH 

DOWN:  DEC 

MOVX  @DPTR,A 

JNZ  DOWN  ;下降到 A 中为 00H 

SJMP  UP  ;重复

③ 矩形波。 

START:  MOV  DPTR,#7FFFH 

LP:  MOV  A,#dataH  ;输出矩形波上限  MOVX  @DPTR,A 

LCALL  DELH  ;调高电平延时程序 

MOV  A,#dataL  ;置输出矩形波下限  MOVX  @DPTR,A 

LCALL  DELL  ;调低电平延时程序 

SJMP  LP  ;重复

④ 梯形波。 

START:  MOV  DPTR,#7FFFH 

LI:  MOV  A,#dataL  ;置下限  UP:  MOVX  @DPTR,A 

INC  CLR 

SUBB  A,#dataH  ;与上限比较  JNC  DOWN 

ADD  A,#dataH  SJMP  UP 

DOWN:  CALL  DEL  ;调上限延时程序 

L2:  MOVX  @DPTR,A  DEC 

SUBB  A,#dataL  ;与下限比较  JC  L1 

SJMP  L2 

(2)双缓冲方式的应用。 

DAC0832 也可方便地工作于双缓冲器工作方式, 这是用于同时输出几路模拟信号的场合。

此时,每一路模拟量输出需一片 DAC0832,构成多个 0832 同步输出系统。图 3­21 为 0832 按 双缓冲工作方式与 89C51 连接形成的二路模拟信号同步输出的图形显示应用系统。

图  3­21  中,0832  的输入寄存器的锁存信号和  DAC  寄存器的锁存信号是分开控制的, 

1#0832 的输入寄存器地址为 7FFFH, 2#0832 的输入寄存器地址为 0BFFH, 1#和 2#0832 的 DAC  寄存器地址均为 00FBH,1#和 2#0832 的输出分别接图形显示器的 X 和 Y 偏转放大器输入端。

图 3­21  0832 在双缓冲方式下与 89C51 的接口

工作时,先将要输出的 X、Y 数据分别送入 l#和 2#0832 的输入寄存器,然后发传送命令,

则各输入寄存器的数据被同时送入 DAC 寄存器中,由 DAC 转换电路进行转换,在各输出端 就能获得同步模拟信号。

执行下段程序,将使图形显示器的光点更新位置。 

ORG  2000H  MOV  DPTR,#00FEH  MOV  A,#datax 

MOVX  @DPTR,A  ;datax 写入 1#0832 输入寄存器  MOV  DPTR,#00FDH 

MOV  A,#datay 

MOVX  @DPTR,A  ;datay 写入 2#0832 输入寄存器  MOV  DPTR,#00FBH 

MOVX  @DPTR,A  ;l#和 2#输入寄存器内容同时传送到 DAC 寄存器中  3.5.2.2  10 位 D/A 转换器 AD7520 

AD7520 是一种价廉、 低功耗、 不带数据锁存器的 10 位 D/A 转换电路, 其内部是由 CMOS  电流开关和梯形电阻网络构成,结构简单、通用性好、配置灵活,且有 10 位中等分辨率,故 至今仍在使用。

1.AD7520 的引脚 

AD7520 的引脚如图 3­22 所示。D1~D10 为数据输入线,D1 为高位,D10 为低位。Vcc  为主电源输入端(5~15V),VR 为参考电压输入端(-10V~+10V),RF 为反馈输入端,GND  为数字地,Iout1、Iout2 为电流输出端。

图 3­22    AD7520 的引脚图

由于  AD7520  是电流输出,通常接运算放大器来转换成电压输出,如图  3­23  中所示为  AD7520 单极性输出电路。

图 3­23    AD7520 与 89C51 的接口  2.AD7520 和 89C51 的接口 

AD7520 内部不带锁存器,故必须通过 I/O 与单片机连接,由于单片机的字长是 8 位,一 次只能传送 8 位数据,必须进行两次操作才能把完整的 10 位数据送入 AD7520。由于 10 位数 据分两次输出,输出电压会产生毛刺现象。因此,为消除这一现象,必须采用图 3­23 所示的 双缓冲结构,虽然数据也是分两次输出,但 10 位数据能同时到达 AD7520 的数据输入端。

输出一个新的模拟量的程序如下:

MOV  DPTR,#OBFFFH  MOV  A,#dataH 

MOVX  @DPTR,A  ;高 2 位数据送第一级 74LS74  MOV  DPTR,#7FFFH 

MOV  A,#dataL  ;低 8 位数据送 74LS377 

相關文件