第9章80C51单片机的模拟量接口9.1并行D/A转换器与单片机的接口1.D/A转换原理D/A转换的目的是把输入的数字信号转换成与此数字量大小成正比的模拟量)2222(00112211DDDDCVnnout其中C为一个常数。fb00112233IDIDIDIDIoutfbfb0VIR)2222(2)2/14/18/116/1()(3321104321033221100DDDDRRVDDDDIRIDIDIDIDRVfbreffbfbout2.DAC主要性能指标(1)D/A转换时间:D/A转换时间是指从一个数字量加载到DAC的数据输入端到DAC输出电压达到其最终电压的±1/2LSB范围内的时间。一般在几十纳秒到几百微秒的范围。(2)分辨率:输出电压值之间的最小差值就是DAC的分辨率。(3)D/A转换精度:D/A转换器实际输出电压与理论输出电压的偏差。通常以满输出电压VFS的百分数给出。如,精度为±0.1%是指最大输出误差为VFS的0.1%,如果VFS为5V,则最大输出误差为5mV。3.8位D/A转换器DAC0832(1)DAC0832简介DAC0832是一个8位T形电阻网络D/A转换器,转换时间为1µs,可以工作在双缓冲模式、单缓冲模式和直通模式。输出为模拟电流,在应用中需要外接运算放大器转成电压输出。•CS:片选信号输入端,低电平有效。•ILE:输入锁存使能信号,高电平有效。•WR1:输入锁存器写选通信号,低电平有效;为低,允许8位数据总线上的数据输入到输入锁存器中,为高,锁存输入锁存器中的数据。•WR2:DAC数据寄存器写控制信号,低电平有效。为低,且为低电平时,输入锁存器中的数据传输到DAC数据寄存器中,并自动开始进行D/A转换。•XFER:数据传输控制信号,低电平有效。与一起控制输入数据锁存器和DAC数据寄存器之间的数据传输。•DI7~DI0:8位数据输入总线。_______________•Iout1:DAC电流输出1端。•Iout2:DAC电流输出2端。Iout1+Iout2=DAC满输出电流。•Rfb:内部反馈电阻引脚。•Vref:参考电压输入端,可在-10V~+10V范围内选择,参考电压直接影响D/A转换的精度,需要外部提供稳定的电压,在精度要求高的场合需要外接高精度稳压器件,要求不高时,可以直接与到电源引脚连接。•VCC:电源,可在+5~+15V间选择。•GND:地信号。2561输入数据值reffboutoutVRIV(2)DAC0832工作方式直通方式单缓冲方式使用DAC0832内部的锁存器或寄存器中任意一个工作在锁存方式。双缓冲方式将ILE接高电平,将地址译码后控制CS引脚和XFER引脚,但是需要给CS和XFER分配不同的地址,把WR1和WR2接到处理器的WR引脚。_______________________(3)DAC0832与80C51单片机接口应用举例1)单缓冲方式的应用举例例:在5V电压的工作系统中,通过80C51单片机控制DAC0832输出峰峰值为4V,频率为1kHz的三角波。•MOVDPTR,#7FFFH;2个机器周期,执行时间为2µs•MOVA,#DATA;1个机器周期,执行时间为1µs•MOVX@DPTR,A;2个机器周期,执行时间为1µs•CJNERn,#DATA,;2个机器周期,执行时间为2µs•则以上程序的执行时间共为7个机器周期,即7µs,需要三角波的周期为1kHz,则其周期为1ms,上升时间为500µs。峰峰值为4V,则DAC0832的最大值为4V,最小值为0V,参考电压为5V时,DAC0832的最小输出电压变化为5V/256=0.0195V。4V对应的数字量是4×256/5≈205。如果设置DAC0832每次更新输出的间隔为10µs,从零开始,则每次增加4,则增加50次后,数字量为200,对应输出为3.9V,然后再递减到0,如此重复即可近似符合要求。•ORG0000H•AJMPMAIN_START•ORG0100H•MAIN_START:•MOVDPTR,#7FFFH;•MOVA,#0•MOVR1,#0;开始输出三角波的上升沿UP:MOVX@DPTR,A;2个机器周期•ADDA,#4;1个机器周期•INCR1;记录输出次数,1个机器周期•NOP;插入空操作,1个机器周期•NOP;插入空操作,1个机器周期•NOP;插入空操作,1个机器周期•NOP;插入空操作,1个机器周期•CJNER1,#51,UP;判断是否到达最大值,2个机器周期开始输出三角波的下降沿•DOWN:CLRCSUBBA,#4•MOVX@DPTR,A•INCR1•NOPNOPNOPCJNER1,#102,DOWN•MOVR1,#0•SJMPUP2)双缓冲方式的应用举例例:有一种绘图仪,输入两个模拟量x,y则可以在仪器上根据输入模拟量的变化绘制出x,y的关系曲线图。有20组x,y值分别存在地址30H,50H开始的数据存储器中,编程绘制此组数据的关系曲线图。下图U2的连接P2.5,其输入寄存器地址为0DFFFH,U3的连接P2.6,其输入寄存器地址为0BFFFH,两个DAC0832的连接在一起接到P2.7,其地址为7FFFH。•ORG0000H•AJMPMAIN_START•ORG0100H•MAIN_START:•MOVR0,#30H;设置x数据指针•MOVR1,#50H;设置y数据指针•MOVR2,#0;清计数器为零;输出x数据到DAC0832U2的输入寄存器•GOON:•MOVDPTR,#0DFFFH;x数据DAC地址为DFFFH•MOVA,@R0•MOVX@DPTR,A;写数据到DAC0832U2•INCR0;x数据指针指向下一个数据;输出y数据到DAC0832U2的输入寄存器•MOVDPTR,#0BFFFH;y数据DAC地址为BFFFH•MOVA,@R1•MOVX@DPTR,A;写数据到DAC0832U3•INCR1;y数据指针指向下一个数据;把所有DAC0832的输入数据寄存器的数据写入到DAC转换寄存器,;1µs后同时输出数据到绘图仪•MOVDPTR,#7FFFH;DAC转换寄存器地址为7FFFH•MOVX@DPTR,A;使能和,启动D/A转换•INCR2;统计输出数据个数•CJNER2,#20,GOON;输出20个数据后,绘图结束•SJMP$;停机•END9.2并行A/D转换器与单片机的接口1.A/D转换的技术指标量程:指A/D转换芯片所能转换的模拟输入电压的范围分辨率:对微小输入量变化敏感程度的度量。转换时间与转换速率:指从模拟量输入到转换结束输出数字量所需要的时间,转换速率则是转换时间的倒数。2.A/D转换原理A/D转换是把连续的模拟电信号转换成时间和数值离散的数字信号的过程。实现转换的器件称为模数转换器,简称ADC。A/D过程:采样、量化、编码。A/D转换的电路种类很多,根据转换原理可以分为逐次逼近型、双积分型、并行式等。3.8位A/D转换器ADC0809(1)ADC0809简介8位逐次逼近型A/D转换器;8路模拟电压;分辨率为8位;转换时间与输入时钟频率有关,当工作时钟为640KHz时,转换时间典型值为100µs;•IN0~IN7:8路模拟信号输入引脚。•D0~D7:8位A/D转换输出数据总线。输出数据与输入电压的关系式为其中,[]表示取整运算。•A、B、C:模拟通道地址选择信号,A为最低位,C为最高位。•SC:转换开始引脚,正脉冲有效。•EOC:转换结束标志信号,高电平有效,表示转换结束。在与处理器连接时,此引脚可以用来向处理器发出中断,或者是供处理器软件查询。inoutrefDATA256VV•OE:输出使能信号,OE为低电平时,ADC0809数据总线为高阻态,OE为高电平时,数据总线输出数据。•ALE:地址锁存使能信号。该信号的上升沿锁存模拟通道选择地址输入信号。•CLK:ADC0809内部控制电路工作的基准信号。ADC0809允许输入的时钟频率范围是10~1200kHz。•Vref+,Vref-:内部D/A转换器的参考电压正端和负端。•VCC,GND:芯片工作电源和地。ADC0809工作电压为5V。模拟通道号地址值CBAIN0000IN1001IN2010IN3011IN4100IN5101IN6110IN7111ADC0809通道地址选择表(2)ADC0809工作原理第一步:地址信号到ABC;ALE地址锁存信号输出高电平,在ALE的上升沿,ADC0809锁存地址信息,选定通道;第二步:模拟信号输入到ADC的模拟输入脚,使SC高电平,在一定的延时时间内,EOC变成低电平,表示转换开始;接着,外接处理器发出SC低电平信号,ADC0809开始在时钟信号的控制下,进行转换,经过tC时间后,转换完成,EOC输出高电平,并保持高电平,直到下次SC上升沿才变低。从SC变成高电平直到EOC输出电平的时间内,模拟输入信号的电压值必须保持不变。第三步:处理器查询到EOC变高后,或者是在EOC申请中断后,处理器控制OE信号,使其变高,ADC0809输出数据,数据线在OE下降沿到来后变成高阻态。在OE为低电平时,数据线一直保持为高阻态,因此ADC0809的数据线可以直接连接到系统数据总线上。(3)ADC0809与80C51单片机接口应用举例例9.3某光通信收发模块中,需要同时检测环境温度,发射光功率和接收功光率。现选用80C51作为控制器,设计系统。•ORG0000H•AJMPMAIN_START•ORG0003H•AJMPINT_EX0_HANDLE•ORG0100H;ADC0809中断处理子程序•INT_EX0_HANDLE:•MOVXA,@DPTR;读取ADC0809的转换结果•MOV@R0,A;保存数据•INCR0;数据指针指向下一个位置•INCDPTR;指向下一个模拟量•DJNZR1,READ;判断转换次数•MOVDPTR,#8000H;重现开始新一轮A/D转换•MOVR0,#30H•MOVR1,#03H•READ:•MOVX@DPTR,A;一次A/D结束,重新启动0809•RETI•ORG0200H•MAIN_START:•MOVR0,#30H;设置数据保存指针•MOVR1,#03H;设计数据个数•MOVDPTR,#8000H;设置0809的最低地址•SETBIT0;设置外部中断为下降沿触发•SETBEX0;开外部中断0•SETBEA;开全局中断•MOVX@DPTR,A;启动0809进行转换•SJMP$•ENDAD1674:12位逐次逼近型A/D转换器。集成时钟电路、10V基准参考电压、采样保持电路和三态输出缓冲器。转换时间典型值为10µs,1路模拟量输入。量程可通过硬件连接选择:单极性模式下:从10VIN输入为0~10V,从20VIN输入为0~20V;双极性模式下:从10VIN输入为-5V~+5V,从20VIN输入为-10V~+10V。4.12位A/D转换器AD1674(1)AD1674简介•AGND:模拟地。•A0:控制输入信号,在启动和读取数据时有不同的作用。当转换启动时:若A0=0,则器件工作在12位ADC模式;若A0=1,则器件工作在8位ADC模式;当读取ADC结果时(R/=1),若A0=0,表示读取的是高8位数据(DB4~DB11);若A0=1,表示读取的是低4位数据(DB0~DB3)。•BIPOFF:双极性偏置端。工作在双极性模式时,通过一个50W电阻连接到REFOUT引脚;工作在单极性模式时,连接到模拟公共端。•CE:器件工作使能信号。高电平时允许芯片工作。•CS:片选信号,低电平有效。•DB11~DB0:转换结果数据输出信号,三态输出。•DGND:数字地信号。•REFOUT:10V内部基准参考电压输出。•R/C:读/启动控制输入信号。=1,表示读数据;=0,表示启动A/D转换。___•REFIN:参考电压输入端,在正常使用时,经过一个