资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第九章,A/D,和,D/A,转换器接口,9.1 MCS-51,单片机与,D/A,转换器的接口和应用,9.1.1,典型,D/A,转换器芯片,DAC0832,DAC0832,是一个,8,位,D/A,转换器芯片,单电源供电,从,+5V,+15V,均可正常工作,基准电压的范围为,10V,,,电流建立时间为,1s,,,CMOS,工艺,低功耗,20mm,。,其内部结构如图,9.1,所示,它由,1,个,8,位输入寄存器、,1,个,8,位,DAC,寄存器和,1,个,8,位,D/A,转换器组成和引脚排列如图,9.2,所示。,该,D/A,转换器为,20,引脚双列直插式封装,各引脚含义如下:,(1)D7,D0,转换数据输入。,(2)CS,片选信号(输入),低电平有效。,(3)ILE,数据锁存允许信号(输入),高电平有效。,(4)WR,1,第一信号(输入),低电平有效。该信号与,ILE,信号共同控制输入寄存器是数据直通方式还是数据锁存方式:当,ILE=1,和,XFER=0,时,为输入寄存器直通方式;当,ILE=1,和,WR,1,=1,时,为输入寄存器锁存方式。,(5)WR,2,第,2,写信号,(,输入,),低电平有效,.,该信号与信号合在一起控制,DAC,寄存器是数据直通方式还是数据锁存方式,:,当,WR,2,=0,和,XFER=0,时,为,DAC,寄存器直通方式,;,当,WR,2,=1,和,XFER=0,时,为,DAC,寄存器锁存方式。,(6)XFER,数据传送控制信号,(,输入,),低电平有效。,(7)Iout,2,电流输出“,1”,。当数据为全“,1”,时,输出电流最大;为全“,0”,时输出电流最小。,(8)Iout,2,电流输出“,2”,。,DAC,转换器的特性之一是:,Iout,1,+Iout,2,=,常数。,(9)R,fb,反馈电阻端,既运算放大器的反馈电阻端,电阻(,15K,),已固化在芯片中。因为,DAC0832,是电流输出型,D/A,转换器,为得到电压的转换输出,使用时需在两个电流输出端接运算放大器,,R,fb,即为运算放大器的反馈电阻,运算放大器的接法如图,9.3,所示。,(10)Vref,基准电压,是外加高精度电压源,与芯片内的电 阻网络相连接,该电压可正可负,范围为,-10V,+10V.,(11)DGND,数字地,(12)AGND,模拟地,9.1.2 DAC0832,工作方式,DAC0832,利用,WR,1,、,WR,2,、,ILE,、,XFER,控制信号可以构成三种不同的工作方式。,1),直通方式,WR,1,=WR,2,=0,时,数据可以从输入端经两 个寄存器直接进入,D/A,转换器。,2),单缓冲方式,两个寄存器之一始终处于直通,即,WR,1,=0,或,WR,2,=0,,,另一个寄存器处于受控状态。,3),双缓冲方式,两个寄存器均处于受控状态。这种工作方式适合于多模拟信号同时输出的应用场合。,9.1.3,单缓冲方式的接口与应用,1,单缓冲方式连接,所谓单缓冲方式就是使,DAC0832,的两个输入寄存器中有一个(多位,DAC,寄存器)处于直通方式,而另一个处于受控锁存方式。,单缓冲方式连接 如图,9.3,所示。,为使,DAC,寄存器处于直通方式,应使,WR,2,=0,和,XFER=0,。,为此可把这两个信号固定接地,或如电路中把,WR,2,与,WR,1,相连,把,XFER,与,CS,相连。,为使输入寄存器处于受控锁存方式,应把,WR,1,接,80C51,的,WR,,,ILE,接高电平。此外还应把,CS,接高位地址线或地址译码输出,以便于对输入寄存器进行选择。,图,9.3 DAC0832,单缓冲方式接口,2,单缓冲方式应用举例,【,例,9.1】,锯齿波电压发生器,在一些控制应用中,需要有一个线性增长的电压(锯齿波)来控制检测过程、移动记录笔或移动电子束等。对此可通过在,DAC0832,的输出端接运算放大器,由运算放大器产生锯齿波来实现,其电路连接图如图,9.4,所示。,图,9.4,用,DAC0832,产生锯齿波电路,图中的,DAC0832,工作于单缓冲方式,其中输入寄存器受控,而,DAC,寄存器直通。假定输入寄存器地址为,7FFFH,,,产生锯齿波的程序清单如下:,MOV A,,,#00H,;,取下限值,MOV DPTR,,,#7FFFH,;,指向,0832,口地址,MM,:,MOVX DPTR,,,A,;,输出,INC A,;,延时,NOP,NOP,NOP,SJMP MM,;,反复,执行上述程序就可得到如图,9.5,所示的锯齿波。,图,9.5 D/A,转换产生的锯齿波,几点说明:,(1),程序每循环一次,,A,加,1,,因此实际上锯齿波的上升边是由,256,个小阶梯构成的,但由于阶梯很小,所以宏观上看就如图中所画的先行增长锯齿波。,(,2,)可通过循环程序段的机器周期数,计算出锯齿波的周期。并可根据需要,通过延时的方法来改变波形周期。若要改变锯齿波的频率,可在,AJMP MM,指令前加入延迟程序即可。延时较短时可用,NOP,指令实现(本程序就是如此),需要延时较长时,可以使用一个延长子程序。延迟时间不同,波形周期不同,锯齿波的斜率就不同。,(,3,)通过,A,加,1,,可得到正向的锯齿波,反之,A,减,1,可得到负向的锯齿波。,(,4,)程序中,A,的变化范围是,0,255,,因此得到的锯齿波是满幅度的。如要求得到非满幅锯齿波,可通过计算求的数字量的处置和终值,然后在程序中通过置初值和终值的方法实现。,【,例,9.2,】,矩形波电压发生器,采用单缓冲方式,口地址设为,FEFFH.,参考程序如下:,ORG 1100H,START:MOV DPTR,#00FEH,;送,DAC0832,口地址,LOOP:MOV A,#,dataH,;,送高电平数据,MOVX DPTR,A,LCALL DELAYH,;,调用延时子程序,MOV A,#,dataL,;,送低电平数据,MOVX DPTR,A,LCALL DELAYL,;,调用延时子程序,SJMP LCALL,执行上述程序就可得到如图,9.5,所示的矩形波。,图,9.5 D/A,转换产生的矩形波,几点说明:,(,1,)以上程序产生的是矩形波,其低点平的宽度由延时子程序,DELAYL,所延时的时间来决定,高电平的宽度则由,DELAYH,所延时的时间决定。,(,2,)改变延时子程序,DELAYL,和的,DELAYH,延时时间,就可改变矩形波上下沿的宽度。若,DELAYL=DELAYH,(,两者延时一样),则输出的是方波。,(,3,)改变上限值或下限值便可改变矩形波的幅值;单极性输出时为,0,-5V,或,0,+5V,;,双极性输出时为,-5V,+5V,。,【,例,9.3,】,三角波电压发生器,利用,DAC0832,产生三角波的参考程序如下:,MOV A,#00H,;,取下限值,MOVX DPTR,#FEFFH,;,指向,0832,口地址,SS1,:,MOVX DPTR,A,;,输出,NOP,;,延时,NOP,NOP,SS2:INC A,;,转换值增量,JNZ SS1,;,未到峰值,则继续,SS3:DEC A,;,已到峰值,则取后沿,MOVX DPTR,A,;,输出,NOP,;,延时,NOP,NOP,JNZ SS3,;,未到谷值,则继续,SJMP SS2,;,已到谷值,则反复,9.1.4,双缓冲方式的接口与应用,在多路,D/A,转换的情况下,若要求同步转换输出,必须采用双缓冲方式。,DAC0832,采用双缓冲方式时,数字量的输入锁存和,D/A,转换输出是分两步进行的。,第一,,CPU,分时向各路,D/A,转换器输入要转换的数字量并锁存在各自的输入寄存器中。,第二,,CPU,对所有的,D/A,转换器发出控制信号,使各路输入寄存器中的数据进入,DAC,寄存器,实现同步转换输出。图,9.6,为两片,DAC0832,与,8031,的双缓冲方式连接电路,能实现两路同步输出。,图,9.6 8031,与,DAC0832,双缓冲方式接口电路,实现两路同步输出的程序如下:,MOV DPTR,,,#0DFFFH,;,送,0832,(,1,)输入锁存器地址,MOV A,,,#data1,;,data1,送,0832,(,1,)输入锁存器,MOVX DPTR,,,A,;,MOV DPTR,,,#0BFFFH,;,送,0832,(,2,)输入锁存器地址,MOV A,,,#data2,;,data2,送,0832,(,2,)输入锁存器,MOVX DPTR,,,A,;,MOV DPTR,,,#7FFFH,;,送两路,DAC,寄存器地址,MOVX DPTR,,,A,;,两路数据同步转换输出,9.2 MCS-51,单片机与,A/D,转换器的接口和应用,9.2.1,典型,A/D,转换器芯片,ADC0809,8,路模拟信号的分时采集,片内有,8,路模拟选通开关,以及相应的通道抵制锁存用译码电路,其转换时间为,100s,左右。,1.,ADC0809,的内部逻辑结构,ADC0809,的内部逻辑结构图如图,9-7,所示。,图,9.7 ADC0809,内部逻辑结构 图,9.8 ADC0809,引脚图,图中多路开关可选通,8,个模拟通道,允许,8,路模拟量分时输入,共用一个,A/D,转换器进行转换,这是一种经济的多路数据采集方法。地址锁存与译码电路完成对,A,、,B,、,C 3,个地址位进行锁存和译码,其译码输出用于通道选择,其转换结果通过三态输出锁存器存放、输出,因此可以直接与系统数据总线相连。表,9-1,为通道选择表,图,9.9 ADC0809,的工作时序图,表,9-1,通道选择表,图,9.9 ADC0809,的工作时序图,2,信号引脚,ADC0809,芯片为,28,引脚为双列直插式封装,其引脚排列见图,9.8,。,对,ADC0809,主要信号引脚的功能说明如下:,IN,7,IN,0,模拟量输入通道,A,、,B,、,C,地址线。通道端口选择线,,A,为低地址,,C,为 高地址,引脚图中为,ADDA,,,ADDB,和,ADDC,。,其地址状态与通道对应关系见表,9-1,。,ALE,地址锁存允许信号。对应,ALE,上跳沿,,A,、,B,、,C,地址状态送入地址锁存器中。,START,转换启动信号。,START,上升沿时,复位,ADC0809,;,START,下降沿时启动芯片,开始进行,A/D,转换;在,A/D,转换期间,,START,应保持低电平。本信号有时简写为,ST.,D,7,D,0,数据输出线。为三态缓冲输出形式,可以和单片 机的数据线直接相连。,D,0,为最低位,,D,7,为最高,OE,输出允许信号。用于控制三态输出锁存器向单片机输出转换得到的数据。,OE=0,,,输出数据线呈高阻;,OE=1,,,输出转换得到的数据。,CLK,时钟信号。,ADC0809,的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。通常使用频率为,500KHz,的时钟信号。,EOC,转换结束信号。,EOC=0,正在进行转换;,EOC=1,转换结束。使用中该状态信号即可作为查询的状态 标志,又可作为中断请求信号使用。,Vcc,+5V,电源。,Vref,参考电源参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型值为,+5V(Vref,(+),=+5V,Vref,(-),=-5V),。,9.2.2,MCS-51,单片机与,ADC0809,的接口,ADC0809,与,MCS-51,单片机的连接如图,9.10,所示。电路连接主要涉及两个问题。一是,8,路模拟信号通道的选择,二是,A/D,转换完成后转换数据的传送。,1.8,路模拟通道选择,图,9.10 ADC0809,与,MCS-51,的连接,如图,9.11,所示模拟通道选择信号,A,、,B,、,C,分别接最低三位地址,A,0,、,A,1,、,A,2,即(,P,0.0,、,P,0.1,、,P,0.2,),,而地址锁存允许信号,ALE,由,P,2.0,控制,则,8,路模拟通道的地址为,0FEF8H,0FEFFH.,此外,通道地址选择以,WR,作写选通信号,这一部分电路连接如图,9.12,所示。,图,9.11 ADC0809,的部分信号连接 图,9.12,信号的时间配合,从图中可以看到,把,ALE,信号与,START,信号接在一起了,这样连接使得在信号的前沿写入(锁存)通道地址,紧接着在其后沿就启动转换。图,9.19,是有关信号的时间配合示意图。,启动,A/D,转换只需要一条,MOVX,指令。在此之前,要将,P,2.0,清零并将最低三位与所选择的通道好像对应的口地址送入数据指针,DPTR,中。例如要选择,IN,0,通道时,可采用如下两条指令,即可启动,A/D,转换:,MOV DPTR,#FE00H,;,送入,0809,的口地址,MOVX DPTR,A,;,启动,A/D,转换(,IN,0,),注意:此处的,A,与,A/D,转换无关,可为任意值。,2.,转换数据的传送,A/D,转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认,A/D,转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。,(,1,)定时传送方式,对于一种,A/D,转换其来说,转换时间作为一项技术指标是已知的和固定的。例如,ADC0809,转换时间为,128s,,,相当于,6MHz,的,MCS-51,单片机共,64,个机器周期。可据此设计一个延时子程序,,A/D,转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。,(,2,)查询方式,A/D,转换芯片由表明转换完成的状态信号,例如,ADC0809,的,EOC,端。因此可以用查询方式,测试,EOC,的状态,即可却只转换是否完成,并接着进行数据传送。,(,3,)中断方式,把表明转换完成的状态信号(,EOC,),作为中断请求信号,以中断方式进行数据传送。,不管使用上述那种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以,RD,信号有效时,,OE,信号即有效,把转换数据送上数据总线,供单片机接受。,不管使用上述那种方式,只要一旦确认转换结束,便可通过指令进行数据传送。所用的指令为,MOVX,读指令,仍以图,9-17,所示为例,则有,MOV DPTR,#FE00H,MOVX A ,DPTR,该指令在送出有效口地址的同时,发出有效信号,RD,,,使,0809,的输出允许信号,OE,有效,从而打开三态门输出,是转换后的数据通过数据总线送入,A,累加器中。,这里需要说明的示,,ADC0809,的三个地址端,A,、,B,、,C,即可如前所述与地址线相连,也可与数据线相连,例如与,D,0,D,2,相连。这是启动,A/D,转换的指令与上述类似,只不过,A,的内容不能为任意数,而必须和所选输入通道号,IN,0,IN,7,相一致。例如当,A,、,B,、,C,分别与,D,0,、,D,1,、,D,2,相连时,启动,IN,7,的,A/D,转换指令如下:,MOV DPTR,,,#FE00H,;,送入,0809,的口地址,MOV A,,,#07H,;,D,2,D,1,D,0,=111,选择,IN,7,通道,MOVX,DPTR,,,A,;,启动,A/D,转换,9.2.3,A/D,转换应用举例,设有一个,8,路模拟量输入的巡回监测系统,采样数据依次存放在外部,RAM 0A0H,0A7H,单元中,按图,9.10,所示的接口电路,,ADC0809,的,8,个通道地址为,0FEF8H,0FEFFH.,其数据采样的初始化程序和中断服务程序(假定只采样一次)如下:,初始化程序:,MOV R,0,#0A0H,;,数据存储区首地址,MOV R,2,#08H,;,8,路计数器,SETB IT,1,;,边沿触发方式,SETB EA,;,中断允许,SETB EX,1,;,允许外部中断,1,中断,MOV DPTR,#0FEF8H,;,D/A,转换器地址,LOOP:MOVX DPTR,A,;,启动,A/D,转换,HERE:SJMP,HERE,;,等待中断,中断服务程序:,DJNZ R,2,ADEND,MOVX A,DPTR,;,数据采样,MOVX R,0,A,;,存数,INC DPTR,;,指向下一模拟通道,INC R,0,;,指向数据存储器下一单元,MOVX DPTR,A,ADEND:RETI,
展开阅读全文