第11章 DA、AD转换的接口_第1页
第11章 DA、AD转换的接口_第2页
第11章 DA、AD转换的接口_第3页
第11章 DA、AD转换的接口_第4页
第11章 DA、AD转换的接口_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

1、第第1111章章 AT89S51AT89S51单片机与单片机与D/AD/A、 A/D A/D 转换器的接口转换器的接口1内容概要内容概要在单片机测控系统中,被测量的温度、压力、流量、速在单片机测控系统中,被测量的温度、压力、流量、速度等非电物理量,须经传感器先转换成连续变化的模拟电度等非电物理量,须经传感器先转换成连续变化的模拟电信号(电压或电流),模拟电信号必须转换成数字量后才信号(电压或电流),模拟电信号必须转换成数字量后才能在单片机中进行处理。实现模拟量转换成数字量的器件能在单片机中进行处理。实现模拟量转换成数字量的器件称为称为A/D转换器(转换器(ADC)。单片机处理完毕的数字量,有)

2、。单片机处理完毕的数字量,有时需要转换为模拟信号输出。数字量转换成模拟量的器件时需要转换为模拟信号输出。数字量转换成模拟量的器件称为称为D/A转换器(转换器(DAC)。)。211.1 AT89S51单片机与单片机与DAC的接口的接口单片机只能输出数字量,但对于控制而言,常需要输出模单片机只能输出数字量,但对于控制而言,常需要输出模拟量,例如直流电动机的转速控制,这就要求单片机系统应拟量,例如直流电动机的转速控制,这就要求单片机系统应能够输出模拟量,本节介绍单片机系统如何输出模拟量。能够输出模拟量,本节介绍单片机系统如何输出模拟量。目前集成化的目前集成化的DAC芯片较多,设计者只需合理选用芯片,

3、芯片较多,设计者只需合理选用芯片,了解它们的功能、引脚外特性以及与单片机的接口设计即可。了解它们的功能、引脚外特性以及与单片机的接口设计即可。由于现在部分的单片机芯片中集成了由于现在部分的单片机芯片中集成了D/A转换器,位数一般在转换器,位数一般在10位左右,且转换速度也很快,所以单片的位左右,且转换速度也很快,所以单片的DAC开始向高的开始向高的位数和高转换速度上转变,而低端的位数和高转换速度上转变,而低端的8位位D/A转换器,面临被转换器,面临被淘汰的危险,但在实验室或某些工业控制方面,低端淘汰的危险,但在实验室或某些工业控制方面,低端8位位DAC的优异的性价比还是具有相当大的应用空间。的

4、优异的性价比还是具有相当大的应用空间。 311.1.1 D/A11.1.1 D/A转换器简介转换器简介1 1概述概述购买和使用购买和使用D/AD/A转换器时,要注意转换器时,要注意D/AD/A转换器选择转换器选择的几个问的几个问题。题。(1 1)D/AD/A转换器的输出形式转换器的输出形式两种输出形式两种输出形式, ,一种是一种是电压输出电压输出, ,另一种是另一种是电流输出电流输出。对电。对电流输出的流输出的D/AD/A转换器,如需要模拟电压输出,可在其输出端转换器,如需要模拟电压输出,可在其输出端加一个由运算放大器构成的加一个由运算放大器构成的I-VI-V转换转换电路,将电流输出转换电路,

5、将电流输出转换为电压输出。为电压输出。4(2 2)D/AD/A转换器与单片机的接口形式转换器与单片机的接口形式 单片机与单片机与D/AD/A转换器的连接,早期多采用转换器的连接,早期多采用8 8位数字量并行位数字量并行传输的并行接口,现在传输的并行接口,现在除并行接口外除并行接口外,带有,带有串行口的串行口的D/AD/A转转换器品种也不断增多换器品种也不断增多。除了通用的。除了通用的UARTUART串行口串行口外,目前较为外,目前较为流行的还有流行的还有I I2 2C C串行口串行口和和SPISPI串行口串行口等。所以在选择单片等。所以在选择单片D/AD/A转换器时,要转换器时,要考虑单片机与

6、考虑单片机与D/AD/A转换器的转换器的接口形式接口形式。52 2主要技术指标主要技术指标(1 1)分辨率)分辨率指单片机指单片机输入给输入给D/AD/A转换器的转换器的单位数字量的变化单位数字量的变化,所引起,所引起的的模拟量输出的变化模拟量输出的变化,通常,通常定义为定义为输出满刻度值与输出满刻度值与2 2n n之比。之比。习惯上用输入数字量的二进制位数表示习惯上用输入数字量的二进制位数表示。位数越多,分辨率越高,即位数越多,分辨率越高,即D/AD/A转换器对输入量变化的敏转换器对输入量变化的敏感程度越高。感程度越高。6例如例如: :8 8位的位的D/AD/A转换器,若满量程输出为转换器,

7、若满量程输出为10V10V,则分辨率为则分辨率为10V/210V/2n n,分辨率为,分辨率为10V/256=39.1mV10V/256=39.1mV ,即输入的二进制数最低,即输入的二进制数最低位的变化可引起输出的模拟电压变化位的变化可引起输出的模拟电压变化39.1mV39.1mV。1LSB=0.391%1LSB=0.391%满量程满量程同理:同理:1010位位D/AD/A转换转换1 LSB = 9.77mV = 0.1%1 LSB = 9.77mV = 0.1%满量程满量程1212位位D/AD/A转换转换1 LSB = 2.44mV = 0.024%1 LSB = 2.44mV = 0.0

8、24%满量程满量程使用时,应使用时,应根据对根据对D/AD/A转换器分辨率转换器分辨率的需要来的需要来选定选定D/AD/A的的位位数数。7(2 2)建立时间)建立时间描述描述D/AD/A转换器转换器转换快慢转换快慢的一个参数,用于的一个参数,用于表明转换时间表明转换时间或转换速度或转换速度。其值为从输入数字量到输出达到终值误差。其值为从输入数字量到输出达到终值误差 (1/2)LSB(1/2)LSB时所需的时间。时所需的时间。电流输出电流输出的转换时间的转换时间较短较短,而,而电压输出电压输出的转换器,由于要的转换器,由于要加上完成加上完成I-VI-V转换的运算放大器的延迟时间,因此转换的运算放

9、大器的延迟时间,因此转换时间转换时间要长一些要长一些。快速。快速D/AD/A转换器的转换时间可控制在转换器的转换时间可控制在1 1 s s以下。以下。8 (3 3)转换精度)转换精度 理想情况下,转换精度与分辨率基本一致,位数越多精理想情况下,转换精度与分辨率基本一致,位数越多精度越高。度越高。 但由于电源电压、基准电压、电阻、制造工艺等各种因但由于电源电压、基准电压、电阻、制造工艺等各种因素存在着误差。严格讲,素存在着误差。严格讲,转换精度与分辨率并不完全一致转换精度与分辨率并不完全一致。只要位数相同,分辨率则相同,但相同位数的不同转换器转只要位数相同,分辨率则相同,但相同位数的不同转换器转

10、换精度会有所不同。换精度会有所不同。 例如,例如,某种型号的某种型号的8 8位位DACDAC精度为精度为 0.19%0.19%,而另一种型号,而另一种型号的的8 8位位DACDAC精度为精度为 0.05%0.05%。911.1.2 AT89S5111.1.2 AT89S51与与8 8位位D/AD/A转换器转换器08320832的接口设计的接口设计1 1DAC0832DAC0832芯片介绍芯片介绍(1 1)DAC0832DAC0832的特性的特性美国国家半导体公司的美国国家半导体公司的DAC0832DAC0832芯片是具有两个输入数据寄芯片是具有两个输入数据寄存器的存器的8 8位位DACDAC,

11、它能直接与,它能直接与AT89S51AT89S51单片机连接,主要特性如单片机连接,主要特性如下。下。 分辨率为分辨率为8 8位。位。 电流输出,建立时间为电流输出,建立时间为1 1 s s。 可双缓冲输入、单缓冲输入或直接数字输入。可双缓冲输入、单缓冲输入或直接数字输入。 单一电源供电(单一电源供电(+5V+5V+15V+15V),低功耗,),低功耗,20mW20mW。10(2 2)DAC0832DAC0832的引脚及逻辑结构的引脚及逻辑结构11 图图11-1 DAC0832的引脚图DI0DI0DI7DI7:8 8位数字信位数字信号输入端,号输入端,与单片机的与单片机的数据总线数据总线P0P

12、0口相连口相连,用,用于接收单片机送来的待于接收单片机送来的待转换为模拟量的数字量,转换为模拟量的数字量,DI7DI7为最高位。为最高位。引脚功能:引脚功能:CSCS* * :片选端,当片选端,当 为低电平时,本芯片被为低电平时,本芯片被选中。选中。ILEILE:数据锁存允许数据锁存允许控制端,高电平有效。控制端,高电平有效。WR1WR1* *:第一级输入寄第一级输入寄存器写选通控制,低电存器写选通控制,低电平有效。当平有效。当 CSCS* *=0=0,ILE=1ILE=1, WR1WR1* *=0=0时,待时,待转换的数据信号被锁存转换的数据信号被锁存到第一级到第一级8 8位输入寄存位输入寄

13、存器中。器中。XFERXFER* *:数据传送控制,低电平有效。WR2WR2* *:DAC寄存器写选通控制端,低电平有效。当 XFERXFER* *=0,WR2WR2* *=0时,输入寄存器中待转换的数据传入8位DAC寄存器中。I IOUT1OUT1:D/A转换器电流输出1端I IOUT2OUT2:D/A转换器电流输出2端,IOUT2+ IOUT1 = 常数。R Rfbfb:外部反馈信号外部反馈信号输入端,内部已有反输入端,内部已有反馈电阻馈电阻R Rfbfb,根据需要,根据需要也可外接反馈电阻。也可外接反馈电阻。V VCCCC:电源输入端,电源输入端,在在+5V+5V+15V+15V范围内。

14、范围内。DGNDDGND:数字信号地。AGNDAGND:模拟信号地,最好与基准电压共地。 图图11-2 DAC0832的逻辑结构12DAC0832内部电路如图图11-2所示。“8 8位输入寄存器位输入寄存器”用于存放单片机送来的数字量,使输入数字量得到缓冲和锁存,由 LE1*加以控制;“8 8位位DACDAC寄存器寄存器”用于存放待转换的数字量,由LE2* 控制; “8 8位位D/AD/A转换电路转换电路”受“8位DAC寄存器”输出的数字量控制,能输出和数字量成正比的模拟电流。因此,需外接I-VI-V转换转换的运算放大器电路,才能得到模拟输出电压模拟输出电压。132 2AT89S51AT89S

15、51单片机与单片机与DAC0832DAC0832的接口电路设计的接口电路设计设计接口电路时,常用设计接口电路时,常用单缓冲方式单缓冲方式或或双缓冲方式双缓冲方式的单极性的单极性输出。输出。(1 1)单缓冲方式)单缓冲方式指指DAC0832DAC0832内部的内部的两个数据缓冲器两个数据缓冲器有一个有一个处于处于直通直通方式方式,另一个另一个处于受处于受AT89S51AT89S51单片机控制的单片机控制的锁存方式锁存方式。在实际应用。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步的情况下,可采用单缓冲方式。不要

16、求多路输出同步的情况下,可采用单缓冲方式。14单缓冲方式单缓冲方式的接口电路如的接口电路如图图11-311-3。图图11-311-3 单缓冲方式下单片机与DAC0832的接口电路15图图11-311-3中,由于中,由于DAC0832DAC0832是是8 8位(位( =256=256)的)的D/AD/A转换器,转换器,由基尔霍夫定律列出德方程组可解得由基尔霍夫定律列出德方程组可解得08320832输出电压输出电压vovo与输入与输入数字量数字量B B的关系为的关系为 显然,显然,输出的模拟电压输出的模拟电压v vo o和输入的数字量和输入的数字量B B以及基准电压以及基准电压V VREFREF成

17、正比成正比,且,且B B为为0 0时,时,v vo o也为也为0 0,输入数字量为,输入数字量为255255时,时,v vo o为为最大的绝对值输出,且不会大于最大的绝对值输出,且不会大于V VREFREF。16REFo256VvB 82【例例11-111-1】根据根据图图1111-3-3路,编写路,编写产生产生如图如图11-411-4图图11-611-6所示所示的的各种波形程序。各种波形程序。(1 1)编写产生锯齿波的程序)编写产生锯齿波的程序输入给输入给D/AD/A转换器的数字量从转换器的数字量从0 0开始,逐次加开始,逐次加1 1,转换器输出,转换器输出的模拟量与输入的数字量成正比。当输

18、入数字量为的模拟量与输入的数字量成正比。当输入数字量为FFHFFH时,再时,再加加1 1则溢出清则溢出清“0”0”,模拟输出又为,模拟输出又为0 0,然后再重复上述过程,然后再重复上述过程,如此循环,输出的波形就是锯齿波,如图如此循环,输出的波形就是锯齿波,如图11-411-4所示。实际上,所示。实际上,每一个上升斜边要分成每一个上升斜边要分成256256个小台阶,改变延时,则可以改变个小台阶,改变延时,则可以改变锯齿波的频率。锯齿波的频率。17图11-4 DAC0832产生的锯齿波输出产生锯齿波的参产生锯齿波的参考程序如下:考程序如下:#include #include #define DA

19、C0832 XBYTE0 x7fff#define DAC0832 XBYTE0 x7fff/ /* * 0832 0832端口端口地址地址* */ /#define uchar unsigned char#define uchar unsigned char / /* *定义定义ucharuchar代表单字节无符号数代表单字节无符号数* */ /#define uint unsigned int#define uint unsigned int / /* *定义定义uintuint无符号字无符号字* */ /void stair(void )void stair(void );uchar i

20、uchar i; while(1) while(1)for(i=0for(i=0;i255i255;i+)i+);/ /* *锯齿波输出值,最大为锯齿波输出值,最大为255255* */ / DAC0832=i; DAC0832=i; / /* *DACDAC转换输出转换输出* */ / 19(2)编写产生图)编写产生图11-5的的三角波三角波程序程序。20图图11-5 DAC0832产生的三角波输出产生三角波的产生三角波的程序如下:程序如下:#include #define DAC0832 XBYTE0 x7fff/* 0832端口地址*/#define uchar unsigned cha

21、r /*定义uchar代表单字节无符号数*/void triangle ( ) ;uchar i;while(1) for(i=0;i0;i-); DAC0832=i; /*三角波的下降边*/21(3 3)编写产生图)编写产生图11-611-6的矩形波程序。的矩形波程序。产生矩形波的产生矩形波的程序如下:程序如下:#include ad#include #define DAC0832 XBYTE0 x7fff#define DAC0832 XBYTE0 x7fff/ /* * 0832 0832数据端口数据端口地址地址* */ /#define #define ucharuchar unsig

22、ned char unsigned char / /* *定义定义ucharuchar代表单字节无符号数代表单字节无符号数* */ /void delay() ;void delay() ;void rectangular ( ) ;uchar i;while(1)DAC0832=0 xaf;/*产生矩形波的上限电平产生矩形波的上限电平*/delay( ) ;/矩形波上限电平的持续时间矩形波上限电平的持续时间*/22图图11-611-6 DAC0832 DAC0832产生的矩形波输出产生的矩形波输出DAC0832=0 x10;/*产生矩形波的下限电平*/delay( ) ; /*矩形波下限电平

23、的持续时间*/void delay( )uchar i;for(i=0;i0 xff;i+); 程序中上、下限电平的改变,可向DAC0832送不同的数字量来实现。矩形波高、低电平时的持续时间,由delay( )的延时程序决定。232双缓冲方式双缓冲方式 多路的多路的D/A转换要求同步输出时,须采用双缓冲转换要求同步输出时,须采用双缓冲同步方式,此时数字量的输入锁存和同步方式,此时数字量的输入锁存和D/A转换输出转换输出是分两步完成的。是分两步完成的。AT89S51与与DAC0832的双缓冲的双缓冲方式的连接如方式的连接如图图11-7。 25 图图11-7 单片机和两片单片机和两片DAC0832

24、的双缓冲方式接口电路的双缓冲方式接口电路由图由图11-7,电路中用,电路中用P2.5、P2.6、P2.7来进行片选,来进行片选,P2.5=0选通选通1#DAC0832的数据输入,的数据输入,P2.6=0选通选通2#DAC0832的数据输入,的数据输入,P2.7=0时实现两片时实现两片DAC0832同时同时进行转换并同步输出模拟量。所以进行转换并同步输出模拟量。所以1#DAC0832的数据地址的数据地址为为0 xdfff (P2.5=0),),2#DAC0832的地址为数据的地址为数据0 xbfff(P2.6=0)。两片)。两片DAC0832同时转换并输出的地址为同时转换并输出的地址为0 x7f

25、ff(P2.7=0)。)。 若把图若把图11-7中中DAC输出的模拟电压输出的模拟电压Vx和和Vy来控制来控制X-Y绘绘图仪,则应把图仪,则应把Vx和和Vy分别加到分别加到X-Y绘图仪的绘图仪的X通道和通道和Y通道,通道,而而X-Y绘图仪由绘图仪由X、Y两个方向的步进电机驱动,其中一个电两个方向的步进电机驱动,其中一个电机控制绘笔沿机控制绘笔沿X方向运动;另一个电机控制绘笔沿方向运动;另一个电机控制绘笔沿Y26方向运动。因此对方向运动。因此对X-Y绘图仪的控制有一基本要求:就是两绘图仪的控制有一基本要求:就是两路模拟信号要同步输出,使绘制的曲线光滑。路模拟信号要同步输出,使绘制的曲线光滑。 如

26、果不同如果不同 步输出,例如先输出步输出,例如先输出X通道的模拟电压,再输出通道的模拟电压,再输出Y通道的模拟电压,则绘图笔先向通道的模拟电压,则绘图笔先向X方向移动,再向方向移动,再向Y方向移方向移动,此时绘制的曲线就是阶梯状的。通过本例,也就不难理动,此时绘制的曲线就是阶梯状的。通过本例,也就不难理解为什么解为什么DAC设置双缓冲方式的目的所在。设置双缓冲方式的目的所在。 27 【例例11-2】编写DAC0832双缓冲方式的两路模拟量同步输出的程序,接口电路如图11-7,程序如下:#include #include#define DAC083201Addr 0 xdfff /*1#0832

27、的数据寄存器地址*/#define DAC083202Addr 0 xbfff /*2#0832的数据寄存器地址*/#define DAC0832Addr 0 x7fff /*两片0832同时转换的端口地址*/#define uchar unsigned char /* uchar代表单个字节无符号数*/#define uint unsigned intsbit P25=0 xa5;/*定义P2.5位*/sbit P26=0 xa6;/*定义P2.6位*/sbit P27=0 xa7;/*定义P2.7位*/void writechip1(uchar c0832data);void writec

28、hip2(uchar c0832data);28void transdata(uchar c0832data) ;/*转换数据*/void Delay( ) ;/*延时子程序*/ main( )xdata cdigitl1=0/*1#0832待转换的数字量*/xdata cdigitl2=0/*2#0832待转换的数字量*/P0=0 xff;/*端口初始化*/P1=0 xff;P2=0 xff;P3=0 xff;Delay();/*延时*/while(1) cdigitl1=0 x80;/*1#0832的地址*/29cdigitl2=0 xff;writechip1(cdigitl1); /*

29、向1#0832写入数据*/writechip2(cdigitl2); /*向2#0832写入数据*/transdata (0 x00); /*同时进行转换*/while(1)void writechip1(uchar c0832data)/*向1#0832芯片写入数据函数*/*(uchar xdata *)DAC083201Addr)=c0832data;void writechip2(uchar c0832data/*向2#0832芯片写入数据函数*/*(uchar xdata *)DAC083202Addr)=c0832data; void TransformData(uchar c083

30、2da/*两片0832芯片同时进行转换的函数*/*(uchar xdata *)DAC0832Addr)=c0832data; void Delay() /*延时程序*/30uint i;for(i=0;i200;i+);程序说明:程序说明:(1)在调用函数)在调用函数writechip1时只是向时只是向1#0832芯片写入数据,芯片写入数据,不会写到不会写到2#0832中,因为中,因为2#0832没有被选通,对于函数没有被选通,对于函数writechip2也是同样道理。也是同样道理。(2)在调用函数)在调用函数TransformData( )时,函数参数可以为任时,函数参数可以为任意值,因为

31、将被转换的数字量已经被锁存到意值,因为将被转换的数字量已经被锁存到DAC寄存器中。寄存器中。调用函数调用函数TransformData( )只是发出启动第二级转换的只是发出启动第二级转换的控制信号,数据线上的数据不会被锁存。控制信号,数据线上的数据不会被锁存。 (3)程序的)程序的35行对行对DAC0832的的3个端口使用了个端口使用了3个宏定义。个宏定义。例如,将例如,将0832Addr的端口地址的端口地址0 x7fff宏定义为宏定义为DAC0832Addr(第(第5行),是为了定义明确,方便使用和修改。使用该地址向行),是为了定义明确,方便使用和修改。使用该地址向DAC0832写入时要先进

32、行类型转换。用(写入时要先进行类型转换。用(uchar xdata*)把)把DAC0832Addr转换为指向转换为指向0 x7fff地址的指针型数据,再使用指地址的指针型数据,再使用指针进行间接寻址。这种使用方法是较为经典和精简的代码风格,针进行间接寻址。这种使用方法是较为经典和精简的代码风格,初学者可用如下拆分、等价的方式理解这句代码。初学者可用如下拆分、等价的方式理解这句代码。 首先,由于宏替换,首先,由于宏替换,(uchar xdata*)DAC0832Addr相当于相当于(uchar xdata*) 0 x0 x7fff,即将,即将0 x7fff强制转换为指向外部数据强制转换为指向外部

33、数据空间的空间的unsigned char类型的指针,指针内容类型的指针,指针内容0 x7fff,即指向了,即指向了DAC0832的数据转换端口的数据转换端口(即两片即两片DAC0832的的8位位DAC寄存器,寄存器,见图见图11-2) 然后再来看然后再来看*(uchar xdata*)DAC0832Addr),它相当于,它相当于*p,p是指向外部数据空间是指向外部数据空间0 x7fff的的unsigned char类型指针。类型指针。 最后,最后,*(uchar xdata*)DAC0832Addr)=c0832data意义显意义显然为:将然为:将c0832data的值写入的值写入DAC08

34、32的数据转换端口。的数据转换端口。因此,以下两个代码段在功能上是等价的。因此,以下两个代码段在功能上是等价的。代码段代码段1:#define DAC0832Addr 0 x7fff#define uchar unsigned char*(uchar xdata*)DAC0832Addr)=c0832data;代码段代码段2:unsigned char unsigned char * *p p;p=0 x7fffp=0 x7fff;* *p=c0832datap=c0832data; 显然前者比后者有两个优点:首先,代码段显然前者比后者有两个优点:首先,代码段1的意义明确,的意义明确,可读性和

35、可移植性更强。更重要的是,代码段可读性和可移植性更强。更重要的是,代码段1节省了数据存节省了数据存储空间,因为它无需使用指针变量,而宏是不占用数据存储储空间,因为它无需使用指针变量,而宏是不占用数据存储空间的,它只占用程序存储空间。空间的,它只占用程序存储空间。 11.2 AT89S5111.2 AT89S51单片机与单片机与ADCADC的接口的接口11.2.1 A/D11.2.1 A/D转换器简介转换器简介1 1A/DA/D转换器概述转换器概述 A/DA/D转换器的转换器的种类很多种类很多,但目前广泛应用在单片机应用系,但目前广泛应用在单片机应用系统中的主要有统中的主要有逐次比较型转换器逐次

36、比较型转换器和和双积分型转换器双积分型转换器。 逐次比较型逐次比较型A/DA/D转换器转换器,在精度、速度和价格上都适中,在精度、速度和价格上都适中,是是最常用的最常用的A/DA/D转换器转换器。 双积分型双积分型A/DA/D转换器,具有精度高、抗干扰性好、价格低转换器,具有精度高、抗干扰性好、价格低廉等优点,与逐次比较型廉等优点,与逐次比较型A/DA/D转换器相比,转换速度较慢,转换器相比,转换速度较慢,近年来在单片机应用领域中也得到广泛应用。近年来在单片机应用领域中也得到广泛应用。 35A/DA/D转换器转换器按照输出数字量的有效位数分为按照输出数字量的有效位数分为4 4位、位、8 8位、

37、位、1010位、位、1212位、位、1414位、位、1616位并行输出位并行输出以及以及BCDBCD码输出码输出的的3 3位半、位半、4 4位半、位半、5 5位半位半等多种。等多种。目前,除并行输出目前,除并行输出A/DA/D转换器外,随着单片机串行扩展方转换器外,随着单片机串行扩展方式的日益增多,带有式的日益增多,带有同步同步SPISPI串行接口串行接口的的A/DA/D转换器的使用也转换器的使用也逐渐增多。串行输出的逐渐增多。串行输出的A/DA/D转换器具有转换器具有占用端口线少、使用占用端口线少、使用方便、接口简单方便、接口简单等优点。等优点。较为典型的串行较为典型的串行A/DA/D转换器

38、为美国转换器为美国TITI公司公司的的TLC549TLC549(8 8位)、位)、TLC1549TLC1549(1010位)以及位)以及TLC1543TLC1543(1010位)和位)和TLC2543TLC2543(1212位)。位)。36 A/D A/D转换器按照转换速度可大致分为转换器按照转换速度可大致分为超高速超高速(转换时间(转换时间1ns1ns)、)、高速高速(转换时间(转换时间1 1 s s)、)、中速中速(转换时间(转换时间1ms1ms)、)、低速低速(转换时间(转换时间1s1s)等几种不同转换速度的芯片。)等几种不同转换速度的芯片。为适应系为适应系统集成的需要,有些转换器还将统

39、集成的需要,有些转换器还将多路转换开关、时钟电路、基多路转换开关、时钟电路、基准电压源、准电压源、2/102/10进制译码器进制译码器和和转换电路转换电路集成在一个芯片内集成在一个芯片内,为,为用户提供很多方便。用户提供很多方便。2 2A/DA/D转换器的主要技术指标转换器的主要技术指标(1 1)转换时间和转换速率)转换时间和转换速率A/D完成一次转换所需的时间所需的时间。转换时间的倒数为转换速率。(2 2)分辨率)分辨率在A/D转换器中,分辨率是衡量A/D转换器能够分辨出输入模能够分辨出输入模拟量最小变化程度的技术指标拟量最小变化程度的技术指标。分辨率取决于A/DA/D转换器的转换器的位数位

40、数,所以习惯上用输出的二进制位数或BCD码位数表示。例如,例如,A/D转换器AD1674AD1674的满量程输入电压为5V,可输出12位二进制数,即用212个数进行量化,其分辨率分辨率为为1LSB1LSB,即:5V/212=1.22mV,其分辨率为12位,或A/D转换器能分辨出输入电压1.22mV的变化。38 量化过程引起的误差称为量化误差量化误差。是由于有限位数字量有限位数字量对模拟量进行量化对模拟量进行量化而引起的误差。理论上规定为一个单位分辨率的-1/2 - +1/2LSB ,提高A/D位数既可以提高分辨率,又能够减少量化误差。(3 3)转换精度)转换精度 转换精度定义为一个实际A/D转

41、换器与一个理想A/D转换器在量化值上的差值,可用绝对误差或相对误差表示。39A A、B B、C C与与ALEALE:控制8路模拟输入通道的切换。A、B、C分别与单片机的三条地址线相连,三三位编码对应位编码对应8 8个通道地址端口个通道地址端口。C C、B B、A = 000A = 000111111分别对应IN0IN0IN7IN7通道的地址。各路模拟输入间切换可改变C、B、A引脚的编码来实现。11.2.2 AT89S5111.2.2 AT89S51与逐次比较型与逐次比较型A/DA/D转换器转换器ADC0809ADC0809的接口的接口1 1ADC0809ADC0809引脚及功能引脚及功能 逐次

42、比较型8路模拟输入、8位数字量输出的A/D转换器40图图11-9 ADC0809的引脚图共共2828引脚,双列直插式封装引脚,双列直插式封装。引脚功能如下:n IN0 IN0IN7IN7:8路模拟信号输入端。n D0 D0D7D7:转换完毕的8位数字量输出端。OEOE、STARTSTART、CLKCLK:OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。EOCEOC:转换结束输出信号。当A/D转换开始转换时,该引脚为低电平,当A/D转换结束时,该引脚为高电平。 VRVR(+ +)、)、VRVR():):基准电压输入端。 2 2ADC0809ADC0809结构及转换原理结构及

43、转换原理 结构如结构如图图11-1911-19。采用逐次比较法完成。采用逐次比较法完成A/DA/D转换,单一转换,单一+5V+5V电电源供电。片内带有锁存功能的源供电。片内带有锁存功能的8 8选选1 1模拟开关,由模拟开关,由C C、B B、A A的编的编码码来决定来决定所选的通道所选的通道。完成一次转换需。完成一次转换需100100 s s左右左右(转换时间(转换时间与与CLKCLK脚的时钟频率有关),具有输出脚的时钟频率有关),具有输出TTLTTL三态锁存缓冲器,三态锁存缓冲器,可直接连到单片机数据总线上。通过适当的外接电路,可对可直接连到单片机数据总线上。通过适当的外接电路,可对0 05

44、V5V的模拟信号进行转换。的模拟信号进行转换。4142图图11-10 ADC0809结构框图3 3AT89S51AT89S51单片机与单片机与ADC0809ADC0809的接口的接口单片机单片机如何控制如何控制ADCADC开始转换开始转换,如何得知转换结束如何得知转换结束以及以及如如何读入转换结果何读入转换结果。控制控制ADC0809ADC0809的的转换过程转换过程:先选择:先选择ADC0809ADC0809一个模拟输入通一个模拟输入通道,然后使单片机的道,然后使单片机的WRWR* *信号有效,产生一个启动脉冲。信信号有效,产生一个启动脉冲。信号给号给ADC0809ADC0809的的STAR

45、TSTART脚,对选中通道转换。脚,对选中通道转换。当转换结束后,当转换结束后,08090809发出转换结束发出转换结束EOCEOC(高)信号,该信号可供查询,也可(高)信号,该信号可供查询,也可反相后作为向中断请求信号反相后作为向中断请求信号;当单片机发出读控制信号,通;当单片机发出读控制信号,通过逻辑电路控制过逻辑电路控制OEOE端为高电平,把转换完毕的数字量读入到端为高电平,把转换完毕的数字量读入到存入到存储器中。存入到存储器中。 43单片机读取转换结果时,可采用单片机读取转换结果时,可采用查询查询和和中断控制中断控制两种方式。两种方式。 查询方式查询方式是在单片机把启动信号送到是在单片

46、机把启动信号送到ADCADC之后,执行其之后,执行其他程序,同时他程序,同时对对ADC0809ADC0809的的EOCEOC脚不断进行检测脚不断进行检测,以查询,以查询ADCADC变换是否已经结束,如查询到变换已经结束,则读入转换完变换是否已经结束,如查询到变换已经结束,则读入转换完毕的数据。毕的数据。 中断控制方式中断控制方式是在启动信号送到是在启动信号送到ADCADC之后,单片机执行之后,单片机执行其他程序。其他程序。ADC0809ADC0809转换结束并向单片机发出中断请求信号,转换结束并向单片机发出中断请求信号,单片机响应此中断请求,进入中断服务程序,读入转换完毕单片机响应此中断请求,

47、进入中断服务程序,读入转换完毕的数据。的数据。 中断控制方式效率高,特适合于转换时间较长的中断控制方式效率高,特适合于转换时间较长的ADCADC。44书上图书上图11-1111-11为为AT89S51AT89S51与与ADC0809ADC0809中断方式的接口电路。中断方式的接口电路。 图11-12 ADC0809与AT89S51查询式接口 A/D转换器在转换时需要基准电压,基准电压要单独用高转换器在转换时需要基准电压,基准电压要单独用高精度稳压电源供给,其电压的变化要小于精度稳压电源供给,其电压的变化要小于1LSB,这是保证,这是保证转换精度的基本条件。否则当被转换的输入电压不变,而基转换精

48、度的基本条件。否则当被转换的输入电压不变,而基准电压的变化大于准电压的变化大于1LSB,也会引起,也会引起A/D转换器输出的数字量转换器输出的数字量变化。变化。 由于由于ADC0809片内无时钟,可利用片内无时钟,可利用AT89S51提供的提供的ALE信号经信号经D触发器二分频后获得时钟信号,触发器二分频后获得时钟信号,ALE脚的频率是脚的频率是AT89S51时钟频率的时钟频率的1/6(但要注意,每当访问外部数据存(但要注意,每当访问外部数据存储器时,将少一个储器时,将少一个ALE脉冲)。脉冲)。46 由于ADC0809具有输出三态锁存器,其8位数据输出引脚D0D7可直接与单片机的P0口相连。

49、地址译码引脚C、B、A分别与地址总线的低三位A2、A1、A0相连,以选通IN0IN7中的一个通道。 在启动启动A/D转换转换时,由单片机的写信号WR* 和P2.7控制ADC的地址锁存和转换启动,由于由于ALE和和START连在一起连在一起,因此ADC0809在锁存通道地址的同时,启动并进行转换。在读取转换结果时,用低电平的读信号 和P2.7引脚经一级“或非门”后产生的正脉冲作为OE信号,用来打开三态输出锁存器。47 (1)中断方式)中断方式 【例例11-3】单片机与单片机与ADC0809中断方式接口电路如中断方式接口电路如图图11-11。ADC0809启动转换后,转换结束引脚启动转换后,转换结

50、束引脚EOC(End Of Converge)为低电平,当)为低电平,当A/D转换结束时转换结束时EOC脚变为高电平,脚变为高电平,经取反后作为外中断请求信号触发单片机中断,在中断服务程经取反后作为外中断请求信号触发单片机中断,在中断服务程序中读取序中读取A/D转换的结果。转换的结果。 程序设计:对程序设计:对8路模拟输入依次转换,并把转换结果依次存路模拟输入依次转换,并把转换结果依次存入外部入外部RAM的的0 x20000 x2007单元。本例采用两个指单元。本例采用两个指 48针变量:针变量:*ADCstart和和*ADCdata,分别指向,分别指向0809的端口地的端口地址址0 x7ff

51、f和外部和外部RAM单元地址单元地址0 x20000 x2007。在。在main( )函数中通过赋值语句函数中通过赋值语句“*ADC=i;”语句启动转换,结束时语句启动转换,结束时产生中断请求,在中断函数产生中断请求,在中断函数int1()中,通过赋值语句()中,通过赋值语句“tmp=*ADCdata;”和和“*ADCdata= tmp;”读取读取A/D转转换结果值并存储到外部换结果值并存储到外部RAM单元中去。单元中去。 参参考程序:考程序:49#include unsigned char xdata *ADCstart;/* 定义的定义的0809启动端口地址指针启动端口地址指针*/unsi

52、gned char xdata *ADCdata;/* 定义存放转换结果的外部数据缓冲区定义存放转换结果的外部数据缓冲区指针指针*/unsigned char ivoid main( ); ADCstart=0 x7fff;ADCdata=0 x2000;i=8EA=1;EX1=1;IT1=1 ;/*外中断允许,跳沿触发方式外中断允许,跳沿触发方式*/*ADCstart=i;/*启动启动A/D转换转换*/while(1);50void int1( ) interrupt 2 /*外中断外中断1的中断服务函数的中断服务函数*/unsigned char temp; temp=*ADCstart;

53、/*读入转换结果到读入转换结果到temp中中*/*ADCdata=temp; /*转换结果存入到外部转换结果存入到外部RAM中中*/ADCdata+/*外部外部RAM地址指针增地址指针增1 */i-;/*ADC通道号减通道号减1 */*ADCstart=i; /*启动下一启动下一ADC通道通道*/ 在实际应用中,除可采用指针变量实现对内存地址的直接操在实际应用中,除可采用指针变量实现对内存地址的直接操作外,作外,C51编译器还提供了一组关于访问绝对地址的预定义宏编译器还提供了一组关于访问绝对地址的预定义宏“absacc.h”,利用它可以十分方便地实现对任意内存空间直,利用它可以十分方便地实现对

54、任意内存空间直接操作。采用预定义宏接操作。采用预定义宏“absacc.h”,将上面程序改写如下:,将上面程序改写如下: 51#include #include/*包含绝对地址操作预定义宏的头文件包含绝对地址操作预定义宏的头文件*/#define ADCstart 0 x7fff /*启动转换端口地址启动转换端口地址 */#define ADCdata 0 x2000 /*定义外部数据缓冲区的首地址定义外部数据缓冲区的首地址*/unsigned char ivoid main( );i=8;/*对对8个模拟输入通道进行转换个模拟输入通道进行转换*/EA=1;EX1=1;IT1=1 ;/*中断允许

55、中断允许*/XBYTEADCstart = i;/*启动转换启动转换*/while(i);/*等待等待8个通道转换完毕个通道转换完毕*/void int1( ) interrupt 2 /*外中断外中断1的中断服务函数的中断服务函数*/52 unsigned char temp;temp=XBYTEADCstart;/*读取读取A/D转换结果转换结果*/i-;/*通道号减通道号减1*/XBYTEADCdata+i=tmp;/*转换结果存储到数据缓冲器转换结果存储到数据缓冲器*/XBYTEADCstart= i; /*启动下一个模拟通道开始转换启动下一个模拟通道开始转换*/ (2 2)查询方式)

56、查询方式 单片机把启动信号送到单片机把启动信号送到ADCADC之后,执行其他程序,同时对之后,执行其他程序,同时对ADC0809ADC0809的的EOCEOC脚不断进行检测,以查询脚不断进行检测,以查询ADCADC变换是否已经结束,变换是否已经结束,如查询到变换已经结束,则读入转换完毕的数据。如查询到变换已经结束,则读入转换完毕的数据。 ADC0809 ADC0809与与AT89S51AT89S51的查询方式接口如的查询方式接口如图图11-1211-12。53图图11-12 ADC0809与与AT89S51单片机的查询方式接口单片机的查询方式接口读者可对读者可对【例例11-3】的程序进行改动,

57、编写出查询方式的程序。的程序进行改动,编写出查询方式的程序。 11.3 89S51单片机与单片机与V/F转换器的接口转换器的接口在某些要求数据在某些要求数据长距离传输长距离传输,精确度要求较高的场合,采用一般的A/D转换技术有多不便,可使用使用V/F转换器代替转换器代替A/D器件器件。V/F转换器是把电压信号电压信号转变为转变为频率信号频率信号的器件的器件,有良好的精度、线性和积分输入特点,此外,它的应用电路简单,外围元件性能要求不高,适应环境能力强,转换速度不低于一般的双积分型A/D器件,且价格低,因此V/F转换技术广泛广泛用于非快速的用于非快速的A/D转换过程中转换过程中。55V/F转换器

58、与单片机接口有以下特点转换器与单片机接口有以下特点:(1)接口简单、占用单片机硬件资源少)接口简单、占用单片机硬件资源少。产生的频率信号可输入单片机的一根I/O口线或作为中断信号输入及计数信号输入等。(2)抗干扰性能好)抗干扰性能好。用V/F转换器实现A/D转换,就是频率计数的过程,相当于在计数时间内对频率信号进行积分,因而有较强的抗干扰能力。另外可采用光电耦合器连接V/F转换器与单片机之间的通道,实现光电隔离。(3)便于远距离传输。)便于远距离传输。可通过调制进行无线传输或光传输。56 由于以上特点,V/F转换器适用于一些非快速而需进行远适用于一些非快速而需进行远距离信号传输的距离信号传输的A/D转换过程转换过程。另外,还可以简化电路、降低成本、提高性价比。11.3.1 用用V/F转换器实现转换器实现A/D转换的原理转换的原理 V/F转换工作原理为:转换工作原理为:单片机片内计数器

温馨提示

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

评论

0/150

提交评论