单片机主要输出三种形态的信号:数字量、开关量、频率量。但在现实世界中,被控制对象的信号除上述三种可直接由单片机产生外,更多的为模拟量控制信号。D/A转换即是将数字信号转换为模拟信号的过程。本文介绍的“精密可调基准电压发生器”可实现0~5.00V共256级的精密可调电压输出,级差优于或等于20mV。显示屏的同步显示为0.00~4.99V。读者通过实际制作调试,可以学会利用单片机进行模拟量的输出或控制。
电路概述
精密可调基准电压发生器电路见图1。DAC0832为8位并行D/A转换器,它由8位输入寄存器、8位DAC寄存器、8位D/A转换器构成。DAC0832中有两级锁存器,第一级即输入寄存器,第二级即DAC寄存器。因为有两级锁存器,DAC0832可以工作在双缓冲方式下,这样在输出模拟信号的同时可以采集下一个数字量,可以有效地提高转换速度。另外,有了两级锁存器,可以在多个D/A转换器同时工作时,利用第二级锁存信号实现多路D/A的同时输出。

DAC0832的引脚功能说明:DI0~DI7为8位数据输入端;ILE为输入寄存器的数据允许锁存信号;CS——为输入寄存器选择信号;WR1——-为输入寄存器的数据写信号;XFER为数据向DAC寄存器传送信号,传送后即启动转换;WR2——-为DAC寄存器写信号,并启动转换;I\(_{OUT1}\)、I\(_{OUT2}\)为电流输出端;V\(_{REF}\)为参考电压输入端;RFB为反馈信号输入端;Vcc为电源电压;AGND为模拟地;DGND为数字地。
DAC0832带有数据输入寄存器,是总线兼容型的,使用时可以将DAC0832直接和数据总线相连,作为一个扩展的I/O口。DAC0832的XFER和WR2——-同时接DGND,WR1——-与AT89S5l的WR——-连接,这样8位DAC寄存器始终处于导通状态。当CS——-选通8位数据输入寄存器时,便直接通过8位DAC寄存器,并由8位D/A转换器进行D/A转换。因此,电路为异步输出结构方式。单片机AT89S51完成的任务为:(1)扫描键盘得到所需的输出数据。(2)控制DAC0832启动进行D/A转换。(3)进行数据转换处理并扫描显示器进行显示。
DAC0832的输出是电流型的。但实际应用中往往需要电压输出信号,所以电路中采用运算放大器LM741来实现电流—电压转换。输出电压值为V\(_{OUT}\)=-D×V\(_{REF}\)/255。其中D为输出的数据字节。两个按键SB1、SB2用来实现输出电压的递增或递减。
软件设计思路及方案
编程思路为:(1) 扫描键盘,得到需进行D/A转换的数据。(2)写入DAC0832并启动转换。为了同步显示,我们还需使用定时器T0对3位数码管进行定时扫描刷新。T0的定时长度为2ms,即每2ms扫描点亮一位数码管。同上一期A/D转换时的处理类似,在作显示时需对数据进行处理,也采用乘2后再乘98%的处理方法,使显示值与输出值吻合良好。
限于篇幅,程序核心部分的分析和完整的程序请见本期配刊光盘。
使用特点范围
由于元器件很少,该电路可嵌入各种仪器、设备上使用,尤其适合嵌入到与计算机进行通信的大型数控电源中。笔者曾接触到一家民营企业生产的一种0~500V/3A稳压电源。在一种电容器测量设备上需使用两个独立的0~500V/3A电源,每次更改生产作业时电压需重调(两个电源的输出电压相对误差小于30mV)。但因这两个电源均为经典电子控制系统,除晶体管存在的温漂外,两台电源中调整电压用的精密多圈电位器也存在接点漂移,因此经常要人工微调修正,使作业中的误判率较高。后来笔者使用以本文介绍的“精密可调基准电压发生器” 为主的核心电路并结合单片机通信/控制技术,实现了两台数控电源的数字控制及交互通信,使输出电压的相对误差小于30mV,由此也可窥见单片机在现代控制系统中的强大作用。
文/周兴华