·有关D/A、A/D的基本概念DAC及其接口ADC及其接口A/D、D/A应用举例本章内容了解微机控制系统的一般组成了解D/A、A/D的基本原理了解DAC、ADC的主要性能指标掌握DAC、ADC与CPU的接口及其应用学习目的12.1D/A与A/D接口概述一、一个典型的计算机自动控制系统数/模(D/A)和模/数(A/D)转换技术主要用于计算机实时控制和自动测量系统中。在工业控制和参数测量时,经常会遇到如温度、压力、流量等连续变化的物理量(通称模拟量)。用计算机处理这些模拟量必须先将其转换为电信号,然后再经A/D转换器将其转换为数字量。对于大多数的被控对象,计算机加工处理后输出的数字形式控制信号还应经D/A转换变成模拟量。才能推动执行机构工作。一个包含A/D和D/A转换的计算机闭环自动控制系统如下图所示生产过程传感器执行机构A/D转换器I/O接口计算机D/A转换器I/O接口图12.1典型的计算机自动控制系统二、模/数转换器(ADC)的主要性能参数1.分辨率(Resolution)它表明A/D对模拟信号的分辨能力,由它确定能被A/D辨别的最小模拟量变化。2.量化误差(Quantizingerror)在A/D转换中由于整量化产生的固有误差。量化误差在±1/2LSB(最低有效位)之间。一个8位的A/D转换器,它把输入电压信号分成28=256层,若它的量程为0~5V,那么,量化单位q为:q==≈0.0195V=19.5mVn2电压量程范围2560.5V例如3.转换时间(Conversiontime)转换时间是A/D完成一次转换所需要的时间。一般转换速度越快越好,常见有高速(转换时间1us)、中速(转换时间1ms)和低速(转换时间1s)等。4.绝对精度对于A/D,指的是对应于一个给定量,A/D转换器的误差,其误差大小由实际模拟量输入值与理论值之差来度量。5.相对精度对于A/D,指的是满度值校准以后,任一数字输出所对应的实际模拟输入值(中间值)与理论值(中间值)之差。例如,对于一个8位0~+5V的A/D转换器,如果其相对误差为1LSB,则其绝对误差为19.5mV,相对误差为0.39%。三、数/模转换器(DAC)的主要性能参数1.分辨率(Resolution)分辨率表明DAC对模拟量的分辨能力,它是最低有效位(LSB)所对应的模拟量,它确定了能由D/A产生的最小模拟量的变化。通常用二进制数的位数表示DAC的分辨率,如分辨率为8位的D/A能给出满量程电压的1/28的分辨能力,显然DAC的位数越多,则分辨率越高。2.线性误差(Linearityerror)D/A的实际转换值偏离理想转换特性的最大偏差与满量程之间的百分比称为线性误差。3.建立时间(Settingtime)这是D/A的一个重要性能参数,定义为:在数字输入端发生满量程码的变化以后,D/A的模拟输出稳定到最终值±1/2LSB时所需要的时间。4.温度灵敏度它是指数字输入不变的情况下,模拟输出信号随温度的变化。一般D/A转换器的温度灵敏度为±50PPM/℃。PPM为百万分之一。5.输出电平不同型号的D/A转换器的输出电平相差较大,一般为5V~10V,有的高压输出型的输出电平高达24V~30V。12.2DAC0832数/模转换器一、DAC0832的内部结构与引脚图图12.2给出了DAC0832的内部结构。图12.3给出了DAC0832的引脚图。DAC0832是一种相当普遍且成本较低的数/模转换器。该器件是一个8位转换器,它将一个8位的二进制数转换成模拟电压。ILECSWR1XFERWR2D0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7GD0Q0D1Q1D2Q2D3Q3D4Q4D5Q5D6Q6D7Q7GD/AD0D1D2D3D4D5D6D7VREFIOUT2IOUT1RFB锁存器1锁存器2转换器图12.2DAC0832的内部结构图12.3DAC0832引脚图7203121181CSVREFWR1RFBD0D1D2D3D4D5D6D7XFERILEVCCDGNDAGND218965416151413191017IOUT2IOUT1DAC0832WR2各引脚的功能如下:D0~D7:8位数据输入端。CS:片选信号输入端。WR1、WR2:两个写入命令输入端,低电平有效。XFER:传送控制信号,低电平有效。IOUT1和IOUT2:互补的电流输出端。RFB:反馈电阻,被制作在芯片内,与外接的运算放大器配合构成电流/电压转换电路。VREF:转换器的基准电压。VCC:工作电源输入端。AGND:模拟地,模拟电路接地点。DGND:数字地,数字电路接地点。RFB:反馈电阻,被制作在芯片内,与外接的运算放大器配合构成电流/电压转换电路。VREF:转换器的基准电压。VCC:工作电源输入端。AGND:模拟地,模拟电路接地点。DGND:数字地,数字电路接地点。(1)直通方式二、DAC0832的工作方式DAC0832可工作在三种不同的工作模式:当ILE接高电平,CS,WR1、WR2和XFER都接数字地时,DAC处于直通方式,8位数字量一旦到达D0~D7输入端,就立即加到D/A转换器,被转换成模拟量。(2)单缓冲方式(3)双缓冲方式即数据通过两个寄存器锁存后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。;lmkopnpi[llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo’’’’’’’’’’’’[‘;l=0oi9三、DAC0832与CPU的连接由于DAC0832内部含有数据锁存器,在与CPU相连时,使其可直接挂在数据总线上。DAC0832采用单缓冲方式与CPU的连接如图12.4所示。I1I2I3I4I5I6I7I8I9I10O1O2O3O4O5O6O7O8GAL16V8WRA0A1A2A3A4A5A6A7M/IO+5V10K20HCSWR1WR2DGNDD0~D7D0~D7ILEXFERVREFIOUT1IOUT2AGND_+RFBLM741+5VU0DAC0832图12.4DAC0832与CPU的单缓冲方式连接电路下面举例说明如何编写D/A转换程序。例编写图12.4中DAC0832输出三角波的汇编程序,要求三角波的最低电压为0V,最高电压为2.5V。分析:三角波电压范围0~2.5V,对应的数字量00H~7FH。三角波的下降部分,从7FH减1,直到数字量降为00H;上升部分则从00H加1,直到7FH。相应的程序如下:MOVAL,7FH;设2.5V初值DOWN:OUT20H,AL;输出模拟信号到端口20H,三角波下降;段DECAL;输出值减1CMPAL,00H;输出值到达0V?JNZDOWN;输出值未达到0V,则跳到DOWNUP:OUT20H,AL;输出模拟量到端口20H,三角波上升段INCAL;输出值加1CMPAL,7FH;判别输出值是否到达2.5VJNZUP;输出值未达到2.5V则跳到UPJMPDOWN;输出值达到2.5V则跳到DOWN循环。本例中DAC0832输出的三角波如图12.5所示。若8086的时钟频率为5MHz,则可计算出该三角波的周期大约为1.53ms,即频率约为654Hz。如果要进一步降低三角波的频率(增大其周期),可在每次D/A转换之后加入适当的延时。图12.5DAC0832输出的三角波形图12.3ADC0809模/数转换器一、ADC0809的内部结构与引脚图ADC0809是一种普遍使用且成本较低的CMOS材料A/D转换器。它具有8个模拟量输入通道,可将模拟量转换为8位二进制数字量。图12.6给出了ADC0809的内部结构。图12.7给出了ADC0809的引脚图。图12.6ADC0809转换器的内部结构图EOCOED0D7REF(+)REF(-)ADDCADDBADDAALEIN0IN7比较器通道选择开关逐位逼近寄存器(SAR)开关树型D/A8位锁存和三态门定时和控制通道地址锁存及译码模拟输入数字输出START图12.7ADC0809的引脚图10CLOCKD0D1D2D3D4D5D6D7ADDAADDBADDCEOCOEALESTARTREF(+)REF(-)VccGNDIN0IN1IN2IN3IN4IN5IN6IN7171481518192021252423792261216111326272812345ADC0809CLOCK二、ADC0809与CPU的连接ADC0809与CPU的连接,主要是正确处理数据输出线(D0~D7),启动信号START和转换结束信号EOC与系统总线的连接问题。图12.8给出了ADC0809与CPU的典型连接图。图12.8ADC0809与CPU的连接图300H~307HOEALESTARTIN0IN7ADDCADDBADDACLKEOCD7D0REF(-)GND500KHZREF+Vcc()+5VA2A18路模拟输入IORIOWADC0809≥1308H~30FHD7D0A012…………≥1I/O译码A9A3≥1下面举例说明如何编写A/D转换程序。例编写图12.8中的A/D转换程序,具体要求如下:①顺序采样IN0~IN78个输入通道的模拟信号;②结果依次保存在ADDBUF开始的八个内存单元中;③上述采样每隔100ms循环一次。设DELAY是一延时100ms子程序。分析:(1)模拟输入通道IN0~IN7由A0~A2决定其端口地址,分别为300H~307H,与IOW相配合,可启动ADC0809进行转换;(2)查询端口和读A/D转换结果寄存器的地址分别为:308H和300H。相应的采集程序如下:AD:MOVCX,0008H