第 8 章DA、AD转换器的应用_第1页
第 8 章DA、AD转换器的应用_第2页
第 8 章DA、AD转换器的应用_第3页
第 8 章DA、AD转换器的应用_第4页
第 8 章DA、AD转换器的应用_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第 8 章 D/A、A/D转换器的应用通过前面章节的了解可知,单片机是个强大的数字系统,所处理得数据都是0和1。但在实时控制和智能仪表等单片机应用系统中,实际的被控、被测对象往往是一些连续变化的模拟量,如温度、速度、压力等物理量。此时A/D、D/A转换器就发挥了极为重要的作用,它们在模拟世界与数字世界之间架起了一座桥梁。 A/D转换器是一种能把模拟量转换成数字量的集成电路芯片;而D/A转换器则相反,它是一种能把数字量转换成模拟量的集成电路芯片。说明一点,我们将要介绍的A/D转换器是不能直接转化如温度、速度、压力等非电量的模拟量,而只能转换模拟电压信号。所以非电量的模拟量一般需要通过各种传感器将

2、其转换成模拟电压信号后再送A/D转换器处理。传感器部分的内容将在后面的章节中叙述。D/A转换器也只能将数字量转换成模拟电压或电流等电量的模拟量。8.1 D/A转换器由于D/A转换器比较简单,所以我们先介绍D/A转换器。8.1.1 概述我们知道一个数字量是由二进制数字代码0和1按位组合而成,每一位都有不同的权值,数字代码与对应位的权值相乘后,再把全部数值相加,就是该数字量。而D/A转换器工作过程就是把数字量的每一位按其权值的大小转换为相应的模拟电压或电流分量,然后再经运算放大器把各模拟分量相加,其和就是D/A转换的结果,即一个模拟电压或电流信号。这个信号是与该数字量所代表的值成正比的。D/A转换

3、器按数字量输入形式可分并行输入和串行输入。并行输入指单片机通过数据总线一次性把待转换的数据送给D/A转换器;而串行输入是指单片机通过一根线通常是串行口上的数据线一位一位地将数据送到D/A转换器中,这种方式的接口电路设计比较简单。按模拟信号输出形式分电压输出型和电流输出型。按转换的分辨率分8位、10位、12位、16位等。分辨率指输入给D/A转换器的单位数字量变化引起的模拟量输出的变化,是输出对输入量变化敏感程度的描述。通常定义为输出满刻度值与二的N次方之比(N为二进制位数)。显然,二进制位数越多,分辨率越高,既D/A转换器对输入量变化敏感程度越高。通常,我们首先是根据系统设计所要求的分辨率来选择

4、D/A转换器的。再者,还要考虑转换速度,即D/A转换器的建立时间的数值大小。建立时间越小,表明其转换速度越快。说明一点,详细的转换器内部工作原理请参考相关著作,我们这里主要讲述的是各种转换器实用芯片本身的功能特点及与8位单片机的各种接口电路和程序的设计。8.1.2 D/A芯片介绍下面我们将针对较常用的几款芯片介绍D/A转换器的特性、工作流程和使用时的注意事项,从中了解D/A转换器的原理及应用。它们分别是美国TI(德州仪器)公司的TLC7226和美国国家半导体公司的DAC0832。1、TLC7226(1)特性a、分辨率为8位;b、属于电压输出型的;c、4路模拟信号转换输出;d、不需要任何外围器件

5、即可构成单双极性模拟电压信号输出;e、需要多电源供电(2)逻辑结构及各封装引脚说明a、逻辑结构如图8-1所示从图中可知该芯片内部有四个锁存器(Latch),它们受A1、A0、WR三个引脚上的逻辑信号的控制,用于存储从数据总线上传来的数据。四个转换(DAC)实时转换来自锁存器中的数字量,转换后的模拟信号经电压跟随器输出。参考电压,即模拟信号的最大量程,从REF引脚输入。图8-1b、封装引脚分布如图8-2所示图8-2c、各引脚功能含义如下:引脚名称功能有效电平使用注意事项DB0DB78位数字量输入端DB0为最低位,DB7为最高位OUTAOUTD4路模拟转换输出都具有锁存功能,分时使用互不影响A0、

6、A14路通道选择A1位高位WR数据锁存允许控制低电平有效REF参考电压输入端0< REF < VDD-4VDD正电源11.4V<VDD< 16.5VVSS负电源VSS> -5.5V,AGND模拟地直接接负电源可构成双极性输出DGAND数字地(3)极性设计a、单极性输出:如图的电路结构可使模拟信号输出端输出量程从0到+5V之间的模拟电压信号。图8-3b、双极性输出:下图可使模拟信号输出端输出量程从-5V到+5V之间的模拟电压信号。图8-42、DAC0832(1)特性a、分辨率为8位;b、属于电流输出型的,当转换结果需电压输出时,可在它的Iout1、Iout2输出端加

7、接一个运算放大器,即可将电流信号变换成电压信号输出;c、稳定时间为1S; d、有直接输入、单缓冲输入、双缓冲输入三种工作方式,实现不同功能;e、单电源供电(+5V+15V);f、低功耗,20mW;(2)逻辑结构及各封装引脚说明a、逻辑结构如图8-3所示除逻辑控制电路外,主要由输入数据寄存器(INPUT REGISTER)、转换数据寄存器(DAC REGISTER)和转换器(D/A CONVERTER)三部分组成。输入数据寄存器用于暂存芯片外数据总线上传来的数据,它受ILE、CS、WR1的逻辑控制;转换数据寄存器存储从输入数据寄存器传来的要送转换器转换的数据,受WR、XFER控制。与7226一样

8、,转换器实时转换锁存在转换数据寄存器中的数字量。正因为0832有两个数据寄存器,所以就使它具有直接输入、单缓冲输入、双缓冲输入三种工作方式。由于0832是属于电流输出型的,而我们在应用中往往需要电压信号,这就需要将它的输出进行电流/电压转换。正好可利用其Iout1、Iout2、Rfb三个引脚外接一个运算放大器实现,具体电路见下面输出极性部分。图8-5b、封装引脚分布如图8-4所示图8-6c、各引脚功能含义如下:引脚名称功能有效电平使用注意事项DI0DI78位数字量输入端DI0为最低位,DI7为最高位CS片选端低电平有效ILE数据锁存允许控制端高电平有效WR1数据寄存器写选通控制低电平有效WR2

9、DAC寄存器写选通控制低电平有效XFER数据传送控制端低电平有效Iout1DAC电流输出1端当8位输入数字量全都为1时,此电流最大,当8位输入数字量全都为0时,此电流为0Iout2DAC电流输出2端Iout1、Iout2反向变化,Iout1+ Iout2=常数Rfb外部反馈信号输入端内部已有反馈电阻Rfb,可根据需要外接反馈电阻VREF参考电压输入端可在 -10 +10V 范围内选择AGND、DGND模拟地和数字地两地应共接于一点VCC电源可在 +5 +15V 间选择(3)工作方式通过控制CS、ILE、WR1、WR2、XFER的不同接线方式,可以控制 DAC0832 工作在不同方式下。a、直接

10、输入方式:当CS、ILE、WR1、WR2、XFER都接有效电平时,就工作在直接输入方式。这种工作方式下的DAC0832常用于不带微机控制的系统中。b、单缓冲方式:指两个输入寄存器中有一个处于直通方式,另一个处于受控锁存方式。常用于只有一路模拟信号输出或虽有几路模拟信号但不需要同步输出的场合。一般将CS作片选控制、ILE接高电平、WR1接单片机的WR引脚、WR2接地、XFER接地,即将DAC寄存器设置为直通方式,输入数据寄存器中的数据直接送D/A转换。c、双缓冲方式:两个锁存器都接成受控锁存方式。常用于有多路模拟信号需要同步输出的场合。此种方式工作时,数字量的输入锁存和D/A转换输出是分两步完成

11、的。单片机通过控制每片转换器的CS端来先把每一路的数据依次锁存到每一个数据锁存器中,再通过选通XFER端来同时启动D/A转换,达到同步输出的效果。实际电路图见课程设计部分。(4)输出极性a、单极性输出:输出电压信号。VREF为参考电压值,B为数字量的值,与256对应,256即为8位全为1的数字量。这里负号表示模拟电压信号反向输出。下图可输出量程从-5V到0之间的模拟电压信号。图8-7b、双极性输出:电路结构如下图所示,由电路分析中基尔霍夫定律可知输出电压信号。VREF端的参考电压可正可负。输入的8位数字量中最高位为符号位,其余为数值位。当VREF为正时,符号位为1,则输出为正;符号位为0,则输

12、出为负。VREF为负时反之。图8-88.1.3 课程设计这部分内容主要介绍芯片与单片机的接口电路设计及程序设计。接口部分主要掌握片选地址的确认和分配。它们涉及到前面部分章节中三总线的知识和译码电路的知识。我们是把芯片当作外扩的一个RAM,只不过这个存储器的存储空间极小,即芯片内部有几个寄存器,它的空间就有几个字节,它就需要几个地址。由于所需地址数很少,我们基本上用的是线选法译码方式。这样也造成地址重叠问题,即一个寄存器往往对应了多个地址。但在程序设计中,我们只选用其中一个有效的且不与其它寄存器地址冲突的地址即可唯一表征某一个寄存器。程序部分主要掌握单片机控制外围芯片工作的基本方法和一些数据处理

13、的常用算法。1、TLC7226任务:利用示波器的X-Y输入方式显示8位时序波形,如100 1 1 011设计思路:该片转换器中有四个寄存器,所以它需要四个地址。如下图接法可知地址的确定只由P2.7、P2.1、P2.0决定,也就是单片机十六位地址总线上只有三位起作用,其它位上的值不影响芯片工作状态,这就是造成地址重叠的原因。而在本设计中我们分别只取一个有效地址即可,即OUTA、OUTB、OUTC、OUTD分别为0000H、0100H、0200H、0300H。示波器的X-Y输入方式:示波器上的点就二维坐标上的点,完全由X-Y输入的电压决定。假设中心位置为原点,若要在第一象限显示,则X、Y都输入正电

14、压既可;若要在第二象限显示,则X输入负电压,Y输入正电压既可;三四象限类似。我们这里由7226的OUTA控制X输入,OUTB控制Y输入,只要循环扫描时间足够快,则可在示波器上显示我们所需要的任意稳定波形。图中我们将TLC7226接成双极性输出,这样它的零电平输出时对应的数字量为#10H。电路原理图:图8-9参考程序:ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV 20H,#10011011B ;要显示的8位数字量 MOV 30H,#10000000B ;零电平线所处位置 MOV 31H,#00H ;水平扫描起点 MOVA,30H MOV C,20H.7 ;先送最高

15、位,位寻址只能通过C来进行 MOV ACC.5,C ;将逻辑电平值叠加到零电平线上 MOV DPTR,#0100H ;OUTB控制Y轴MOVX DPTR,A ;送D/A转换 LCALL SAOMIAO ;调用水平扫描子程序 MOV A,30H MOV C,20H.6 MOV ACC.5,C MOV DPTR,#0100H MOVXDPTR,A LCALL SAOMIAO MOV A,30H MOV C,20H.5 MOV ACC.5,C MOV DPTR,#0100H MOVX DPTR,A LCALL SAOMIAO MOV A,30H MOV C,20H.4 MOV ACC.5,C MOV

16、 DPTR,#0100H MOVX DPTR,A LCALL SAOMIAO MOV A,30H MOV C,20H.3 MOV ACC.5,C MOV DPTR,#0100H MOVX DPTR,A LCALL SAOMIAO MOV A,30H MOV C,20H.2 MOV ACC.5,C MOV DPTR,#0100H MOVX DPTR,A LCALL SAOMIAO MOV A,30H MOV C,20H.1 MOV ACC.5,C MOV DPTR,#0100H MOVX DPTR,A LCALL SAOMIAO MOV A,30H MOV C,20H.0 MOV ACC.5,C

17、 MOV DPTR,#0100H MOVX DPTR,A LCALL SAOMIAO JMP MAIN ;循环扫描 SAOMIAO:;水平扫描子程序MOV DPTR,#0000H ;OUTA控制X轴 MOV R0,#20 ;每一位在示波器上打20个点 MOV A,31H ;取该位水平位置的起点SM: MOVX DPTR,A ;送D/A转换 INC A ;打下一个点 DJNZ R0,SM MOV 31H,A ;存显示的位置,以备下一位用 RET END2、DAC0832任务:双缓冲方式同步D/A转换输出,要求能从程序中判断出来是否实现了同步。设计思路:如下图所示,两片转换器,本来需要四个地址。但

18、由于我们需要同步输出,即想同时启动两片的数据转换寄存器,则用同一个地址来表征即可。这样本设计中就只需要三个地址。图中地址线上只有三位起作用。P2.0控制上一个D/A的使能,既控制数据的输入,P2.1控制下一个D/A的使能,P2.7同时控制两个的数据传送控制端XFER,即同时控制转换的进行,从而达到了输出波形的同步。那么上一个数据输入暂存地址可取8000H, 下一个数据输入暂存地址取8100H,同步转换启动的地址取0300H。本设计中我们想获得正极性的模拟电压信号输出,于是我们在第一级运放后再加一级反向放大,使转换的信号变成同向输出。电路原理图:图8-10参考程序: ORG 0000H AJMP

19、 MAIN ORG 0030HMAIN: MOV DPTR,#8000H ;上一个数据输入地址 MOV A,#00H ;低电平 MOVX DPTR,A CALL DELAY ;延时用于验证是否是同步 MOV DPTR,#8100H ;下一个数据输入地址 MOV A,#00H MOVX DPTR,A MOV DPTR,#0300H ;同步转换启动的地址 MOVX DPTR,A ;A没有意义,只是用于启动转换 CALL DELAY ;用于控制所属出方波的周期 MOV DPTR,#8000H MOV A,#80H ;高电平 MOVX DPTR,A CALL DELAY MOV DPTR,#8100H

20、 MOV A,#80H MOVX DPTR,A MOV DPTR,#0300H MOVX DPTR,A CALLDELAY JMP MAIN DELAY: ;10MS延时子程序 MOV R0,#100DLY2: MOV R1,#100DLY3: DJNZ R1,DLY3 DJNZ R0,DLY2 RET END8.2 A/D转换器8.2.1 概述A/D转换正好与D/A转换相反,它实现了模拟电压信号到数字量的转换。可以说它是D/A转换的逆过程。但A/D转换器的工作原理比D/A转换器稍微复杂一些。按转换原理分类,有逐次逼近型、并联比较型、电压/时间转换型(积分型)、电压/频率转换型、电压/脉宽转换

21、型等。在实际应用中,考虑到在精度、转换速度和价格上都适中,逐次比较型的A/D转换器应用较广。逐次比较又称连续比较,它利用的是一种对分搜索原理。即先从数字量的最高位起假设它是1,而后面的均为0,这个数字量经A/D转换芯片内部的D/A转换电路输出模拟量,再与输入的模拟量比较,如果比输入的大则保持数字量的最高位为1,小则变为0;而后依次假设下一位的值,再转换比较;如此反复下去就可确定数字量的值。与D/A转换器类似,A/D 转换器的数字量输出方式可分为并行输出、串行输出。按转换的分辨率分4位、8位、10位、12位、14位、16位等。按转换速度可分为超高速(转换时间小于等于330ns)、次超高速(330

22、ns3.3S)、高速(小于20S)、中速(20300S)、低速(300大于S)等8.2.2 A/D芯片介绍下面我们将介绍几款逐次比较型A/D转换器,它们分别是美国国家半导体公司的ADC0809和美国AD公司的AD574。1、ADC0809(1)特性a、分辨率为8位;b、时钟频率为10KHz640KHz,在典型时钟频率500KHz时,其转换时间为128S,属于中速型A/D转换器;(注意:这里与D/A转换器的区别。D/A转换器没有时钟控制,而逐次比较型A/D转换器需要,从上述的逐次比较原理中可看出。)c、8路模拟转换输入d、单电源供电+5V;(2)逻辑结构及各封装引脚说明a、逻辑结构如图8-5所示

23、它由8路选一的模拟开关、8位A /D 转换器、三态输出锁存器及地址锁存译码器等组成。通过三位地址选择码选择模拟开关上的一路模拟信号进入8位A /D 转换器进行转换,转换后的结果暂存于三态输出锁存器中,同时在EOC引脚上给出一个上升沿信号。若此时OE引脚有效,则数据即可输出到单片机数据总线上。从结构图中可看出,不论是上节中叙述的D/A转换器还是这里的A /D 转换器,它们都是一种数字和模拟混合的集成电路,而与单片机相接口的都芯片的数字部分,即数据线和逻辑控制线。图8-11b、封装引脚分布如图8-6所示图8-12c、各引脚功能含义如下:引脚名称功能有效电平使用注意事项IN0 IN78 路模拟通道输

24、入端它允许8路模拟量分时输入,即每一次只能有一路通道被选择并转换;IN7对应高地址ADDA、ADDB、ADDC模拟通道选择端ADDC为高位ALE地址锁存信号高电平有效START 转换启动信号高电平有效使用时该信号通常和ALE信号连在一起,以便同时锁存通道地址和启动A/D转换CLOCK时钟输入端可由单片机的ALE引脚提供源,经由CD4060分频器分频得到500kHz典型时钟信号VREF+、VREF-正、负参考电压输入端通常VREF+=5V、VREF-=0VEOCA/D 转换结束信号平时为高电平,转换过程中为低电平,转换结束后回到高电平。此信号常被用来作为中断请求信号OE输出允许信号高电平有效D0

25、 D78位数字量输出端D7为高位VCC电源接+5VGND地d、被选模拟量路数和地址的关系被选通道ADDC(高位)ADDBADDA(低位)IN0000IN1001IN2010IN3011IN4100IN5101IN6110IN71112、AD574(1) 特性a、分辨率为12位,但在使用时可以设定为8位,也可以设定为12位;b、内部集成有转换时钟(不需要外部时钟输入)、参考电压源和三态输出锁存器;c、转换12位时转换时间为25S,只转换8位时为16S;d、输入模拟电压可以为单极性也可以为双极性,单极性输入时电压为0+10V或0+20V;双极性输入时电压为-5+5V 或-10+10V;e、双电源供

26、电(15V或12V);(2)逻辑结构及各封装引脚说明a、逻辑结构及封装引脚分布如图8-7所示基本组成与上述的0809相差不大,不过它只能转换一路模拟信号(10VIN和20VIN不能同时输入)。它除了把时钟源集成到芯片内部外,也自己提供基准参考电压,这就大大减少了芯片工作的外围电路条件。它可以由12/8引脚选择将模拟信号转换成具有8位或12位分辨率的数字量。它的数据输出锁存器有些特别,是按4位分组的,共3组,这样就可实现12位数据输出时与8位单片机数据总线的接口问题,这在后续的课程设计中将会详细介绍。图8-13b、各引脚功能含义如下:引脚名称功能有效电平使用注意事项10VIN10V量程的模拟电压

27、输入线单极性时为 0 10V,双极性时为 -5 +5V20VIN20V量程的模拟电压输入线单极性时为 0 20V,双极性时为 - 10 +10VREF IN参考电压输入线REF OUT内部电压参考源输出线通常REF IN 和 REF OUT 之间跨接一个 l00 电位器,用来调整各量程的增益BIP OFF补偿调整线用于设置单双极性输入;双极性时用于调零DB0DB1112位数字量输出线DB11 为最高位12/8数据输出格式选择信号线为高电平,12条数据线同时输出转换结果;为低电平,转换结果为单字节输出,即只有高8位或低8位有效;与单片机接口时通常直接接地CS片选线低电平有效CE片选使能线高电平有

28、效和CS共同用于片选控制A0字节选择控制线启动转换时:A0=0,表示进行全12位转换;A0=1,进行8位转换, 8位数据从高8位数据线输出;在读出期间:A0=0,高8位有效;A0=1,低4位有效,中4位为0,高4位为三态;R/C读出/转换控制输入线若 R /C 为 0,则本片启动工作;若使 R /C 为 1,则本片处于允许读出状态;在CS、CE都有效前,应将其置为0,以免出现不必要的读操作STS转换状态输出线平时或转换期间均为高电平转换完成位低电平。在实用中可供 CPU 查询,也可作为外中断请求输入线VL数字电源接+5VVCC、VEE正负模拟电源接15V或12VAC模拟电压公共地线DC数字量接

29、地线常和 AC 相连后接地(3)极性设定利用BIP OFF、REF IN、REF OUT三个引脚与外接电阻的不同连接方法,可以把AD574设定为单极性输入或双极性输入。a、单极性输入可转换电压量程为0+10V或0+20V的模拟信号。图8-14b、双极性输入可转换电压量程为-5+5V 或-10+10V的模拟信号。图8-15(4)控制线的操作功能表12/8CECSR/CA0完成操作0无操作11000启动12位A/D转换1001启动8位A/D转换110112位数字量同时输出01010高8位数字量输出,低4位三态01011低4位输出,中4位为0,高4位三态(5)零点调整:R2用于零点调整a、单极性输入

30、时,使 VIN =LSB/2 =1.2mV。调整 R2 使输出数字量在000H001H间跳动。b、双极性输入时,使VIN = -VFS /2 +LSB/2 = - 4.99mV。调整R2使输出数字量在 000H001H 间跳动。(6)增益调整:R1用于增益调整a、单极性输入时,调整R1,使 VIN = + VFS -1LSB =9.9976V,输出数字量 FFFH;VIN = +VFS -2LSB =9.9952V,输出数字量 FFEH。b、双极性输入时,调整R1,使 VIN = + VFS /2 - 1LSB = 4.9976V,输出数字量FFFH;VIN = +VFS /2 -2LSB =

31、4.9952V,输出数字量 FFEH。8.2.3 课程设计1、ADC0809任务:多路模拟电压信号检测比较设计思路:虽然转换器内部只有一个寄存器,但由于它有个8选1 的模拟开关,那么要区别出这8路通道来就需要8个地址,也就需要3根地址信号线。而寄存器是8路共用的,所以地址不独立,当选用哪一路做转换时它就是哪个地址,也就是它存在着8个地址重叠。图中三位通道选择端 ADDA、ADDB、ADDC由P2.0、P2.1、P2.2控制,转换启动端和输出使能端由P2.7及WR、RD通过门电路共同控制,这也正是一个寄存器成为8路共用的原因,即不论启动转换还是读取转换结果数据,都用的是同一个地址。所以8个通道的

32、地址可分别取为0000H、0100H、0200H、0300H、0400H、0500H、0600H、0700H。 转换结束标志 EOC 端经反向器与单片机的INT0相连,即转换一旦结束,EOC引脚上的上升沿信号就会经反向器变为单片机中断系统可识别的下降沿信号。说明一点,我们这里用的是中断的方式来读取数据;我们还可以直接将EOC接到单片机的某个引脚上,采用查询的方式来判断转换是否结束,而后再读取数据。图中4040分频器的接法是实现8分频。那么要让0809工作在500KHz典型频率时,ALE上应该是4MHz才行,而单片机的ALE引脚又是晶振频率的6分频,这就是说单片机要接一个24MHz的晶振。说明一

33、点,0809与单片机的接口不仅是这种形式,我们可以将三位通道选择端 ADDA、ADDB、ADDC直接与单片机数据总线连接,那么0809这时候就只需要一个地址了,而通道的区分要靠启动转换时数据线上传输的数据决定,即指令MOVX DPTR,A中A的值决定。但本设计中这句指令中的A的值是无意义的,可为任意数。电路原理图:图8-16参考程序: ORG 0000H AJMP MAIN ORG 0003H ;外部INT0入口地址 AJMP AD_INT0 ;跳转到中断处理程序 ORG 0030HMAIN: CLR P1.0 ;清零 SETB IT0 ;设定INT0为下降沿触发 SETB EX0 ;开INT

34、0中断 SETB EA ;开总中断,EA=1 AGAIN: SETB 20H.0 ;设定一个标志位,判断转换是否完成 MOV DPTR,#0000H ;选择通道0 MOVX DPTR,A ;启动0809,此时A里的数据没有意义 JB 20H.0,$ ;等待中断(转换结束) MOV 30H,A ;转换结果暂存30H单元 SETB 20H.0 MOV DPTR,#0100H ;选择通道1 MOVX DPTR,A ;启动0809 JB 20H.0,$ CJNE A,30H,DARK SETB P1.0 ;相等时P1.0口输出高电平 JMP AGAINDARK: CLR P1.0 ;不相等时P1.0口

35、输出低电平 JMP AGAIN AD_INT0:CLR 20H.0 MOVX A,DPTR ;读转换结果 RETI ;断返回 END 2、AD574任务:-10V+10V之间直流电压精确检测,并将数据处理成用六位数码管显示的数据设计思路:因为要与单片机接口,所以我们要让574只能以8位的数据格式输出,也就需要将12/8引脚直接接地,再由A0引脚来控制12位数据输出的先后。而与单片机数据总线的连接方式是,574数据输出口的高8位直接与之对应相连,低4位与单片机数据线的高4位对应相连。这样在读出高8位数据时,低4位的输出口对总线呈三态,而在读出低4位数据时,574的高4位呈三态,中间4位均为低电平

36、,即对单片机的数据线来说,它的数据线上的高4位为574的有效数据,而低4位均为低电平的用于补足8位数据格式的无效数据。由于要分两次读取数据,就相当于内部有两个寄存器,所以需要两个地址。图中我们用P2.6控制,P2.7作为工作片选线。这里还用了一片74LS00控制到底是启动转换还是读取转换结果,与上述ADC0809的逻辑控制有所不同,当然也可用类似于0809的控制方式,但要多用一根地址线。如图连线知574启动12位转换地址可取0000H,读高8位也取0000H,低8位则取4000H。在574的电路设计中,所有电源引脚都要用去耦电容。对+5V电源,去耦电容应直接接在引脚1和15之间;+Vs和-Vs

37、也都要通过电容耦合到引脚9,所用电容为一个4.7uF和一个104的电容。此外,本设计中还有另外一个非常重要的部分是软件算法设计,即对转换器送来的数据进行处理,主要是汇编语言的乘除法运算程序的设计。如乘法的相乘再相加,除法的移位相减等。当然我们可以用高级语言来进行程序设计,这就不存在这些算法问题,而且我们这里介绍的8位单片机,它本身指令系统的数据处理能力就非常有限,所以在这种处理器里进行数据运算就必须了解算法才行。电路原理图:图8-17参考程序:;-; 34H,33H,32H,31H 从高到低存乘法结果; 42H,41H,40H 存除法结果; 55H,54H,53H,52H,51H,50H 存显

38、示结果; 62H,61H,60H 暂存除法中间过程; 3BH,3AH 暂存D/A转换送来的数据;- ORG 0000H AJMP MAIN ORG 0003H ;外部INT0入口地址 AJMP AD_INT0 ;跳转到中断处理程序 ORG 0030HMAIN: MOV 55H,#00H ;55H为符号位 MOV 54H,#00H ;54H为最高位 MOV 53H,#00H MOV 52H,#00H MOV 51H,#00H MOV 50H,#00H SETB IT0 ;设定INT0为下降沿触发 SETB EX0 ;开INT0中断 SETB EA ;开总中断,EA=1;-主程序-AGAIN: S

39、ETB 20H.0 ;设定一个标志位,判断转换是否完成 MOV DPTR,#0000H ;选择通道0 MOVX DPTR,A ;启动0809 JB 20H.0,$;等待中断(转换结束) LCALL PROCESS ;调用数据处理程序 JMP AGAIN;-中断读取数据- AD_INT0:CLR 20H.0 ;清中断标志位 MOV DPTR,#0000H ;读高8位转换结果 MOVX A,DPTR MOV 3BH,A ;将A的值暂存 MOV DPTR,#4000H ;读低4位转换结果 MOVX A,DPTR MOV 3AH,A ;将A的值暂存 RETI ;中断返回;-数据处理子程序-PROCES

40、S:MOV A,3BH JB ACC.7,PPP ;判断符号位 MOV 55H,#0AH ;存负号在显示表中的位置 CPL A ;负电压时要对A取反,;这样数据处理程序与正的一样 MOV 3BH,A MOV A,3AH CPL A MOV 3AH,A JMP S_BEICHUSHUPPP: MOV 55H,#0BH ;存正号在显示表中的位置 S_BEICHUSHU: ;下面是生成被除数从高到低存于R7,R6 MOV A,3BH ANL A,#70H ;取A的高三位 SWAP A MOV R7,A ;高三位存R7低三位 MOV A,3BH ANL A,#0FH ;取A的低四位 SWAP A MO

41、V R6,A ;中间四位存R6高四位 MOV A,3AH ANL A,#0F0H ;取低四位 SWAP AADD A,R6 MOV R6,A ;低八位存R6 START: MOV R5,#13H ;20V量程的乘数1315H=4885 MOV R4,#15H; 4885=10的6次方/(2的11次方-1) ACALL MULD ;调用乘法子程序 MOV R4,34H ;将乘法所得的数取出到寄存器中 MOV R3,33H MOV R2,32H MOV R1,31H MOV R7,#0FH ;除数0F4240H为1000000 MOV R6,#42H MOV R5,#40H LCALL DIVD ;调用除法子程序 MOV 42H,R1 ;存最高位 MOV R1,#0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论