9.4.1 8 位并行 D/A 转换器 DAC0832 接口技术 1.DAC0832 的结构原理
(1)DAC0832 的特性。美国国家半导体公司的 DAC0832 芯片是具有两级输入数据寄存 器的 8 位单片 D/A 转换器,它能直接与单片机 89C52 相连接,采用二次缓冲方式,可以在输 出的同时,采集下一个数据,从而提高转换速度,能够在多个转换器同时工作时,实现多通道 D/A 的同步转换输出。
主要的特性参数如下:
分辨率为 8 位。
只需在满量程下调整其线性度。
可与所有的单片机或微处理器直接接口。
电流稳定时间为 1μs。
可双缓冲、单缓冲或直通数据输入。
功耗低,约为 200mW。
逻辑电平输入与 TTL 兼容。
单电源供电(+5V~+15V)。
(2)DAC0832 的引脚及逻辑结构。DAC0832 的引脚如图 9-17(a)所示。其逻辑结构如 图 9-17(b)所示,由 8 位锁存器、8 位 DAC 寄存器和 8 位 D/A 转换器构成。
图 9-17 DAC0832 结构 DAC0832 各引脚的功能说明如下:
D0~D7:数字量数据输入线。
ILE:数据锁存允许信号,高电平有效。
CS :输入寄存器选择信号,低电平有效。
WR1 :输入寄存器的“写”选通信号,低电平有效。
WR2 :DAC 寄存器的“写”选通信号,低电平有效。
XFER :数据传送信号,低电平有效。
UREF:基准电压输入线。
RFB:反馈信号输入线,芯片内已有反馈电阻。
IOUT1和 IOUT2:电流输出线。IOUT1与 IOUT2的和为常数,DAC 寄存器的内容线性变化。
一般在单极性输出时,IOUT2接地。
UCC:工作电源。
DGND:数字地。AGND:模拟信号地。
D/A 转换芯片输入是数字量,输出为模拟量,模拟信号很容易受到电源和数字信号等干扰 而引起波动。为提高输出的稳定性和减小误差,模拟信号部分必须采用高精度基难电源 VREF
和独立的地线,一般把数字地和模拟地分开。模拟地是模拟信号及基准电源的参考地,其余信 号的参考地,包括工作电源地、数据、地址、控制等数字逻辑地都是数字地。
2.DAC0832 与单片机的接口
(1)单缓冲器方式接口。若应用系统中只有一路 D/A 转换或虽然是多路转换,但并不要 求同步输出时,则采用单缓冲器方式接口,如图 9-18 所示。
图 9-18 DAC0832 单缓冲方式接口
将 ILE 接+5V,寄存器选择信号 CS 及数据传送信号 XFER 都与地址选择线相连(图中为 P2.7),两级寄存器的写信号都由 89C52 的 WR 端控制。当地址线选通 DAC0832 后,只要输 出控制信号,DAC0832 就能一步完成数字量的输入锁存和 D/A 转换输出。由于 DAC0832 具 有数字量的输入锁存功能,故数字量可以直接从 89C52 的 P0 口送入。
C 语言程序清单:
#include<absacc.h> //头文件声明及端口地址定义
#define DAC0832 XBYTE[0x7FFF]
//在需要模拟量输出时
DAC0832=data1; //data1 为输出模拟量的数字值
汇编语言程序清单:
MOV DPTR,#7FFFH ;地址只需 P2.7 为 0,其余为地址无关位,此处取 1
MOV A,#DATA1 ;待输出模拟量的数字值送 A
MOVX @DPTR,A
(2)双缓冲器同步方式接口。对于多路 D/A 转换接口,要求同步进行 D/A 转换输出时,
必须采用双缓冲器同步方式接法。DAC0832 采用这种接法时,数字量的输入锁存和 D/A 转换 输出是分两步完成的,即 CPU 的数据总线分时地向各路 D/A 转换器输入要转换的数字量并锁 存在各自的输入寄存器中,然后 CPU 对所有的 D/A 转换器发出控制信号,使各个 D/A 转换器 输入寄存器中的数据同时打入 DAC 寄存器,实现同步转换输出。
图 9-19 是一个二路同步输出的 D/A 转换接口电路。89C52 的 P2.5 和 P2.6 分别选择两路 D/A 转换器的输入寄存器,控制输入锁存;P2.7 连到两路 D/A 转换器的 XFER 端控制同步转换输出;
WR 与所有的 WR1 、 WR2 端相连,在执行MOVX 指令时,89C52 自动输出 WR 信号。
图 9-19 DAC0832 双缓冲方式接口 C 语言程序清单:
#include<absacc.h>
#define DAC0832_1 XBYTE[0xDFFF] //第一片 0832 输入寄存器端口地址
#define DAC0832_2 XBYTE[0xBFFF] //第二片 0832 输入寄存器端口地址
#define DAC_ALL XBYTE[0x7FFF] //两路 D/A 转换器同步输出地址 //在需要模拟量同步输出时
DAC0832_1=data1; //data1 为第一片 0832 输出模拟量的数字值 DAC0832_2=data2; //data2 为第二片 0832 输出模拟量的数字值
DAC_ALL=0; //此处 0 没有意义,目的是使 XFER 同时有效
(3)DAC0832 应用——阶梯波的产生。阶梯波是在一定的时间内每隔一段时间输出的幅 值递增一个恒定值。如图 9-20 所示,每隔 1ms 输出增长一个定值,经 10 ms 后循环。用 DAC0832 的单缓冲器方式就可以实现这样的波形。
具体的程序如下:
#include<absacc.h>
#define DAC0832 XBYTE[0x7FFF]
图 9-20 阶梯波波形 void main()
{
unsigned char i;
while(1)
for(i=0;i<10;i++) {
DAC0832=i*n; //n 是为了使波形有一定高度,取值 1~25
delay(1); //延时 1ms
} }
9.4.2 串行输入 D/A 转换器 TLC5615 接口技术
目前数/模转换器从接口上可分为两大类:并行接口数/模转换器和串行接口数/模转换器。
并行接口转换器的引脚多,体积大,占用单片机的口线多;而串行数/模转换器的体积小,占 用单片机的口线少。为减小线路板的面积,减少占用单片机的口线,越来越多地采用串行数/
模转换器,例如 TI 公司的 TLC5615。
1.TLC5615 的结构原理
TLC5615 是具有 3 线串行接口的数/模转换器。其输出为电压型,最大输出电压是基准电 压值的两倍。带有上电复位功能,上电时把 DAC 寄存器复位至全 0。TLC5615 的性价比较高,
市场售价比较低。
(1)TLC5615 的特点。
10 位 CMOS 电压输出。
5V 单电源工作。
与微处理器 3 线串行接口(SPI)。
最大输出电压是基准电压的 2 倍。
输出电压具有和基准电压相同的极性。
建立时间 12.5μs。
内部上电复位。
低功耗,最高为 l.75 mW。
引脚与 MAX515 兼容。
(2)功能方框图。TLC5615 的功能方框图如图 9-21 所示。
图 9-21 TLC5615 功能方框图
(3)引脚排列及功能。TLC5615 的引脚排列见图 9-22。
图 9-22 TLC5615 引脚 引脚功能说明:
DIN:串行数据输入。
SCLK:串行时钟输入。
CS :芯片选择,低电平有效。
DOUT:用于菊花链(daisy chaining)的串行数据输出。
AGND:模拟地。
REFIN:基准电压输入。
OUT:DAC 模拟电压输出。
UDD。正电源(4.5~5.5V)。
(4)TLC5615 的输入/输出关系。图 9-23 所示的 D/A 输入/输出关系如表 9-5 所列。
图 9-23 TLC5615 与 89C52 接口电路
表 9-5 D/A 转换关系表
数字量输入 模拟量输出
1111 1111 11(00) 2VREFIN×1023/1024
… …
1000 0000 01(00) 2VREFIN×513/1024 1000 0000 00(00) 2VREFIN×512/1024 0111 1111 11(00) 2VREFIN×511/1024
… …
sbit CS=P3^0;
sbit SCLK=P3^1;
sbit DIN=P3^2;
void DAC(unsigned int adata) {
DIN=adata&(1<<i); //按位将数据送入 TLC5616
SCLK=1; //时钟高电平
}
SCLK=0; //时钟低电平
CS=1; //片选高电平,输入的 12 位数据有效
}