在电子技术领域,单片机 D/A 转换器接口是一个至关重要的部分。D/A 转换器的输入为数字量,经转换后输出为模拟量。有关 D/A 转换器的技术性能指标众多,如精度、相对精度、线性度、输出电压范围、输入数字代码种类等等。下面我们将对几个与接口有关的指标作详细介绍。
- 分辨率:分辨率是 D/A 转换器对输入量变化敏感程度的描述,它与输入数字量的位数密切相关。如果数字量的位数为 n,则 D/A 转换器的分辨率为 2??。分辨率越高,意味着 D/A 转换器能够更地分辨输入数字量的微小变化,从而输出更细腻的模拟量。例如,一个 8 位的 D/A 转换器,其分辨率为 2?? = 1/256,而一个 12 位的 D/A 转换器,分辨率则为 2?12 = 1/4096,显然 12 位的 D/A 转换器分辨率更高,能实现更精准的模拟量输出。
- 建立时间:建立时间是描述 D/A 转换速度的一个重要参数,具体是指从输入数字量变化到输出达到终值误差 ±1/2LSB(有效位)时所需的时间。通常以建立时间来表明转换速度,建立时间越短,转换速度越快。在一些对实时性要求较高的应用场景中,如高速数据采集与处理系统,需要选择建立时间短的 D/A 转换器,以确保能够及时准确地完成数字量到模拟量的转换。
- 接口形式:D/A 转换器主要分为两类,一类不带锁存器,另一类则带锁存器。对于不带锁存器的 D/A 转换器,为了保存单片机的转换数据,在接口处需要额外添加锁存器。这是因为单片机输出的数字量可能会快速变化,如果没有锁存器,D/A 转换器可能无法及时处理这些变化的数据,导致输出的模拟量不准确。而带锁存器的 D/A 转换器则可以在一定程度上避免这个问题,提高数据处理的稳定性。
DAC0832 是一款 8 位电流输出型 D/A 转换器,具有单电源供电的特点,在 + 5~+15V 范围内均可正常工作。其基准电压的范围为 ±10 V , 电流建立时间为 1 μs ,采用 CMOS 工艺,具有低功耗 20 mW 的优点。

图 1 DAC0832 内部结构框图
该转换器由输入寄存器和 DAC 寄存器构成两级数据输入锁存。在使用时,数据输入可以采用两级锁存(双缓冲)形式、单级锁存(单缓冲)形式,也可采用直接输入(直通)形式。由 3 个与门电路组成寄存器输出控制电路,可直接进行数据锁存控制:当 LE = 0 时,输入数据被锁存;当 LE = 1 时,数据不锁存,锁存器的输出跟随输入变化。
DAC0832 为电流输出形式,其两个输出端的关系为 IOUT1 + IOUT2 = 常数。为了得到电压输出,可在电流输出端接一个运算放大器,如图 2 所示。需要指出的是,DAC0832 内部已有反馈电阻,其阻值为 15kΩ。

图 2 DAC0832 引脚图
DAC0832 转换器芯片为 20 脚双列直插式封装,各引脚的功能如下:
- DI7 ~ DI0:转换数据输入端,用于接收单片机输出的数字量。
- CS:片选信号,输入,低电平有效,用于选择该 DAC0832 芯片。
- ILE :数据锁存允许信号,输入,高电平有效,控制数据是否可以锁存。
- WR1 、WR2:写信号 1 和 2 ,输入,低电平有效,用于控制数据的写入操作。

图 3 DAC0832 的引脚图 - XFER:数据传输控制信号,输入,低电平有效,用于控制数据从输入寄存器传输到 DAC 寄存器。
- IOUT1:电流输出 1 ,当 DAC 寄存器中各位全为 “1” 时 ,电流;为全 “0” 时 ,电流为 0 。
- IOUT2:电流输出 2 ,电路中保证 IOUT1 + IOUT2 = 常数。
- Rfb :反馈电阻端,片内集成电阻为 15kΩ,用于与外接运算放大器配合实现电压输出。
- VREF :参考电压,可正可负,范围为 - 10~ + 10V ,为 D/A 转换提供参考电压。
- DGND:数字量地,为数字电路部分提供接地参考。
- AGND:模拟量地,为模拟电路部分提供接地参考。
DAC0832 与 8031 有两种基本的接口方式:单缓冲方式和双缓冲方式。
- 单缓冲方式:单缓冲方式接口电路如图 4 所示。让 ILE 接 + 5V,CS 和 XFER 与地址选择线 P2.7 相连接。当地址选择线选通 DAC0832 后,只要输出 WR 信号,DAC0832 就能一步完成数字量的输入锁存和 D/A 的转换输出。执行下面的几条指令就能完成 D/A 转换。

图 4 DAC0832 单缓冲方式接口电路

- 双缓冲方式:对于多路 D/A 转换接口,要求同步进行 D/A 转换输出时,必须采用双缓冲方式。DAC0832 数字量输入锁存和 D/A 转换输出是分两步完成的,即 CPU 的数据总线分时输入数字量并锁存在各 D/A 转换器的输入寄存器中,然后 CPU 对所有 D/A 转换器发出控制信号,使各输入寄存器中的数据输入相应的 DAC 寄存器,实现同步转换输出。图 5 是一个两路同步输出的 D/A 转换接口电路。执行下面的指令,能完成两路 D/A 的同步转换输出。

图 5 DAC0832 双缓冲方式接口电路

D/A 转换器可以应用在许多场合,这里介绍用 D/A 转换器产生阶梯波。阶梯波是在一定的时间范围内每隔一段时间,输出幅度递增一个恒定值。在图 6 中,每隔 1ms 输出幅度增长一个定值,经 10ms 后重新循环。用 DAC0832 在单缓冲方式下就可输出这样的波形(接口电路见图 6)。

图 6 产生阶梯波的接口电路
产生阶梯波的程序如下:
