DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。图1-1和图1-2分别为DAC0832的引脚图和内部结构图。其主要参数如下:分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为(+10~-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。从图1-1中可见,在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号/XFER。 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image002.gif图1-1中,当ILE为高电平,片选信号 /CS 和写信号 /WR1为低电平时,输入寄存器控制信号为1,这种情况下,输入寄存器的输出随输入而变化。此后,当 /WR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化。 对第二级锁存来说,传送控制信号 /XFER 和写信号 /WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当 /WR2由低电平变高时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC寄存器中。 图1-1中其余各引脚的功能定义如下: (1)、DI7~DI0 :8位的数据输入端,DI7为最高位。 (2)、IOUT1 :模拟电流输出端1,当DAC寄存器中数据全为1时,输出电流最大,当 DAC寄存器中数据全为0时,输出电流为0。 (3)、IOUT2 :模拟电流输出端2, IOUT2与IOUT1的和为一个常数,即IOUT1+IOUT2=常数。 (4)、RFB :反馈电阻引出端,DAC0832内部已经有反馈电阻,所以 RFB端可以直接接到外部运算放大器的输出端,这样相当于将一个反馈电阻接在运算放大器的输出端和输入端之间。 (5)、VREF :参考电压输入端,此端可接一个正电压,也可接一个负电压,它决定0至255的数字量转化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。VREF端与D/A内部T形电阻网络相连。 (6)、Vcc :芯片供电电压,范围为(+5~15)V。 (7)、AGND :模拟量地,即模拟电路接地端。 (8)、DGND :数字量地。 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg 图1-2、DAC0832内部结构图 2、 DAC0832的工作方式DAC0832可处于三种不同的工作方式: 1、 直通方式 :当ILE接高电平,file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif、file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif、file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif和file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif都接数字地时,DAC处于直通方式,8位数字量一旦到达DI7~DI0输入端,就立即加到8位D/A转换器,被转换成模拟量。例如在构成波形发生器的场合,就要用到这种方式,即把要产生基本波形的数据存在ROM中,连续取出送到DAC去转换成电压信号。 2、 单缓冲方式 :只要把两个寄存器中的任何一个接成直通方式,而用另一个锁存器数据,DAC就可处于单缓冲工作方式。一般的做法是将file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif和file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif都接地,使DAC寄存器处于直通方式,另外把ILE接高电平,file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif接端口地址译码信号,file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif接CPU的file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif信号,这样就可以通过一条MOVX指令,选中该端口,使file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif和file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif有效,启动D/A转换。 3、 双缓冲方式 :主要在以下两种情况下需要用双缓冲方式的D/A转换。 l 需在程序的控制下,先把转换的数据输入输入缓存器,然后在某个时刻再启动D/A转换。这样,可先选中file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif端口,把数据写入输入寄存器;再选中file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif端口,把输入寄存器内容写入DAC寄存器,实现D/A转换。 l 在需要同步进行D/A转换的多路DAC系统中,采用双缓冲方式,可以在不同的时刻把要转换的数据打入各DAC的输入寄存器,然后由一个转换命令同时启动多个DAC转换。先用3条输出指令选择3个端口,分别将数据写入各DAC的输入寄存器,当数据准备就绪后,再执行一次写操作,使file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif变低同时选通3个D/A的DAC寄存器,实现同步转换。 3、DAC0832的应用图1-3为单片机和DAC0832直通方式输出连接图,运放输出电路输出电压为 UOUT=-(D/256)*VREF, 例如上图中向DAC0832传送的8位数据量40H(01000000B),则输出电压UOUT=-(64/256)*5V=-1.25V,其输出过程可用MOV P1 , #40H一条指令完成。 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg 图1-3、单片机和DAC0832直通方式输出连接图
资料2:ADC804的性能特点ADC804型8位全MOS file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif转换器。它是中速廉价型产品之一。片内有三态数据输出锁存器,与微处理器兼容,输入方式为单通道,转换时间约为100?s。它的非线形误差为±1LSB。电源电压为单一+5V。 1、ADC0804的引脚及其功能file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gifADC0804的典型外部接线图如图2-1所示。被转换的电压信号从file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image021.gif和file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif输入,允许此信号是差动的或不共地的电压信号,模拟地和数字地分别设置引入端,使数字电路的地电流不影响模拟信号回路,以防止寄生耦合造成的干扰。参考电压file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif可以由外部电路供给,从“file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif”端直接送入。当file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif电源准确、稳定时,也可作参考基准。此时,由ADC0804片内部设置的分压电路可自行提供file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif参考电压(2.5V),“file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif”端不必外接电源,浮空即可。 ADC0804片内有时钟电路,只要在外部“CLKR”和“CLK”两端外接一对电阻电容即可产生file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image029.gif转换所需要的时钟,其振荡频率为file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image031.gif≈file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image033.gifRC。其典型应用参数为:R=10kΩ,C=150pF,file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image031.gif≈640kHz,每秒钟可转换1万次。若采用外部时钟,则外部file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image031.gif可从CLK端送入,此时不接R、C。 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image034.gif是片选端,file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image036.gif是控制芯片启动的输入端;file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image038.gif是转换结束信号输出端,输出电平高跳到低表示本次转换已经完成,可作为中断或查询信号。如果file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image034.gif和file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image036.gif端与file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image038.gif端相连,则ADC0804就处于自动循环转换状态。 file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image040.jpgfile:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image042.gif为转换结果读出控制端,当它与file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image034.gif同时为低电平时,输出数据锁存器DB0~DB7各端上出现8位并行二进制数码,以表示file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image043.gif结果。 图2-1、ADC0804引脚图 2、ADC0804转换器的时序及接口电路ADC0804转换器的时序如下。file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image034.gif=0时,允许进行file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image043.gif转换。file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image036.gif由低跳高时file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image043.gif转换开始,8位逐次比较需用8×8=64个时钟周期,再加上控制逻辑操作,一次转换需要66~73个时钟周期。ADC0804与AT89C51单片机的接口电路见图2-2: file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image045.jpg 图2-2、单片机和0804接口电路 0804由于具有三态输出锁存器,可直接驱动数据总线,故与AT89C51接口电路十分简单,直接连接成上图即可。 当file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image034.gif与file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image036.gif同时有效时便启动file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image043.gif转换,转换结束时产生file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image038.gif信号,可供输出查询或中断信号。在file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image034.gif和file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image042.gif共同控制下可以读取转换结果数据。 在file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image043.gif转换过程中,如果再次启动转换器,则终止正在进行的转换,进入新的转换,在新的转换过程中,数据寄存器中仍保持上一次的转换结果。 0804提供两个信号输入端file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image049.gif和file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif,如果输入电压file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image051.gif的变化范围从0V到file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image053.gif,则芯片的file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif端接地,输入电压加到file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image049.gif端。对于差动输入,输入电压可以从非零开始,即file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image055.gif到file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image053.gif。此时file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif端应接至等于file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image055.gif的恒定电压上,而输入电压file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image051.gif仍加到file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image049.gif端上。 0804转换器的零点无需调整,而输入电压的范围可以通过调整file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif端处的电压加以改变。file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif端电压应为输入电压的file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image058.gif。例如输入电压范围是0V至2V,则在file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif端应加1V,但当输入电压为0~+5V时,file:///C:/Users/admin/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif端无需外加任何电压,而由内部电源分压得到。 AD0804按图2-2和单片机相连时, 完成一次A/D采集的应用程序如下: AD0804: MOV P1, #0FFH ;对所有使用到I/O口置1 MOV P3, #0FFH CLR P3.0 ;选片及写信号置低,启动A/D CLR P3.6 NOP SETB P3.6 ;完成启动 SETB P3.0 WAIT: JNB P3.4, WAIT ;等待A/D结束信号 CLR P3.0 ;选片及读信号置低,发读信号 CLR P3.7 NOP MOV A, P1 ;取A/D结果送到A SETB P3.7 ;整个过程结束 SETB P3.0 RET
|