第2章 模拟量、数字量输入/输出通道及应用
2.1 项目一:D-A转换器及其在计算机控制系统中的应用
2.1.1 任务1:8位DAC0832芯片的应用
DAC0832是一个8位D-A转换器,电流输出方式,稳定时间为1μs,采用20脚双直立式封装。同系列芯片还有DAC0830和DAC0831,它们可以相互代换。
DAC0832的原理框图及引脚如图2-1所示。DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D-A转换器以及输入控制电路4部分组成。8位输入寄存器用于存放主机送来的数字量,使输入数字量得到缓冲和锁存,由加以控制;8位DAC寄存器用于存放待转换的数字量,由加以控制;8位D-A转换器输出与数字量成正比的模拟电流;由与门、非与门(或非门)组成的输入控制电路来控制2个寄存器的选通和锁存状态。
图2-1 DAC0832的原理框图及引脚
各引脚功能如下:
DI0~DI7:数据输入线,其中,DI0为最低有效位(LSB),DI7为最高有效位(MSB)。
:片选信号,输入线,低电平有效。
:写信号1,输入线,低电平有效。
ILE:输入允许锁存信号,输入线,高电平有效。
当ILE、和同时有效时,8位输入寄存器端为高电平“1”,此时寄存器的输出端Q跟随输入端D的电平变化;反之,当端为低电平“0”时,原D端输入数据被锁存于Q端,在此期间D端电平的变化不影响Q端。
:写信号2,输入线,低电平有效。
:传送控制信号,输入线,低电平有效。
当和同时有效时,8位DAC寄存器端为高电平“1”,此时8位DAC寄存器的输出端Q跟随输入端D(也就是8位输入寄存器Q端)的电平变化;反之,当端为低电平“0”时,第一级8位输入寄存器Q端的状态则锁存到第二级8位DAC寄存器中,以便第三级8位D-A转化器进行D-A转换。
一般情况下,为了简化接口电路。可以把和直接接地,使第二级8位DAC寄存器的输入端到输出端通直通。只有第一级8位输入寄存器置成可选通、可锁存的单缓冲输入方式。特殊情况下可采用双缓冲输入方式,即把2个寄存器都分别接成受控方式,例如要求多个D-A转换器同步工作时,首先将要转换的数据依次置入每个8位输入寄存器,然后统一信号(和)再同时打开多个8位DAC寄存器,以便实现多个D-A转换器同步输出。
IOUT1:DAC电流输出端1,一般作为运算放大器差动输入信号之一。
IOUT2:DAC电流输出端2,一般作为运算放大器另一个差动输入信号。
Rfb:固化在芯片内的反馈电阻连接端,用于连接运算放大器的输出端。
VREF:基准电压源端,输入线,-10~10V(DC)。
VCC:工作电压源端,输入线,5~15V(DC)。
AGND:模拟电路地。
DGND:数字电路地。
AGND和DGND是两种不同的地,但在一般情况下,这两种地最后总有一点连接在一起,以便提高抗干扰能力。
为使主机能向D-A转换器传送数据,必须在两者之间设置接口电路。接口电路的功能是进行地址译码、产生片选信号或写信号。如果D-A转换器芯片内部有输入寄存器,则主机的数据总线与转换器可直接连接,一般只要将数据写入寄存器中变换就开始;如果D-A转换器芯片内部无输入寄存器,则要外加寄存器以缓存主机给出的数据。无论哪种情况,主机对D-A转换器接口的访问就像访问一个I/O端口一样简单。
由于DAC0832内部有输入寄存器,所以它的数据总线可直接与主机的数据总线相连,图2-2为DAC0832与PC总线的单缓冲接口电路,它由DAC0832转换芯片、运算放大器以及74LS138译码器和门电路构成的地址译码电路组成。图中,DAC0832内的8位DAC寄存器控制端的和直接接地,使8位DAC寄存器的输入到输出始终直通;而8位输入寄存器的控制端分别受地址译码信号与输入/输出指令控制,即PC总线的地址线A9~A0经74LS138译码器和门电路产生接口地址信号作为DAC0832的片选信号,输入/输出写信号作为DAC0832的写信号。
1)当需要进行D-A转换时,把被转换的数据(如DATA)送入累加器AL,端口地址(如220H)送入DX,然后执行一条OUT输出指令,则和同为低电平,为“1”,此时主机输出的数据写入DAC0832内的8位输入寄存器中,再直通送入8位D-A转换器进行转换;当恢复为高电平时,使为“0”,则要转换的数据锁存在输入寄存器中,使D-A转换的输出保持不变。其接口程序如下:
图2-2 DAC0832与PC总线的单缓冲接口电路
2)8位D-A转换器的接口方法比较简单,如果选用8位D-A转换器自带缓存器的芯片,一般将数据写入缓存器中变换时就开始,因此只需给出控制写入的信号。若8位D-A转换器不带缓存器,则应该加上外部寄存器来缓存主机给出的数据。无论哪种情况,主机对8位D-A转换器的接口总是像访问一个I/O端口一样简单。
因为DAC0832内部带有一个8位输入寄存器,所以DAC0832的数据输入线可以直接与计算机系统数据总线D0~D7相连。让和接地,即DAC0832内部第二级器接成直通式,只由第一级8位输入寄存器控制数据的输入,当和同时有效时,D0~D7的数据送入其内部的8位D-A转换器中进行转换。
如果要求VOUT端输出方波,则编程如下:
如果计算机工作频率高,上面电路的工作可靠性会降低,解决的办法是将DAC0832接成二级直通式,锁存器锁存计算机输出的数据,然后由锁存器对DAC0832提供特殊转换的二进制数。