单片机原理及接口技术(C51编程)第11章-DAC与ADC

上传人:痛*** 文档编号:241997042 上传时间:2024-08-09 格式:PPT 页数:108 大小:2.24MB
返回 下载 相关 举报
单片机原理及接口技术(C51编程)第11章-DAC与ADC_第1页
第1页 / 共108页
单片机原理及接口技术(C51编程)第11章-DAC与ADC_第2页
第2页 / 共108页
单片机原理及接口技术(C51编程)第11章-DAC与ADC_第3页
第3页 / 共108页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,11,章,AT89S51,单片机与,DAC,、,ADC,的接口,1,在单片机测控系统中,非电量如温度、压力、流量、速度等,经传感器先转换成连续变化的模拟电信号(电压或电流),然后再将模拟电信号转换成数字量后才能在单片机中进行处理。,实现模拟量转换成数字量的器件,称为,ADC,(,A/D,转换器)。,单片机处理完毕的数字量,有时根据控制要求需要转换为模拟信号输出。,数字量转换成模拟量的器件,称为,DAC,(,D/A,转换器)。本章从应用的角度,介绍典型的,ADC,、,DAC,芯片与,AT89S51,单片机的硬件接口设计以及接口驱动程序设计。,2,11.1,单片机扩展,DAC,概述,单片机只能输出数字量,但是对于某些控制场合,常常需要输出模拟量,例如直流电动机的转速控制。下面介绍单片机如何扩展,DAC,。,目前集成化的,DAC,芯片种类繁多,设计者只需要合理选用芯片,了解它们的性能、引脚外特性以及与单片机的接口设计方法即可。由于现在部分单片机的芯片中集成了,DAC,,位数一般在,10,位左右,且转换速度也很快,所以单片的,DAC,开始向高的位数和高转换速度上转变。而低端的并行,8,位,DAC,,开始面临被淘汰的危险,但是在实验室或涉及某些工业控制方面的应用,低端,8,位,DAC,以其优异的性价比还是具有较大的应用空间。,1,D/A,转换器简介,购买和使用,D/A,转换器时,要注意有关,D/A,转换器选择的几个问题。,(,1,),D/A,转换器的输出形式,D/A,转换器有两种输出形式:电压输出和电流输出。电流输出的,D/A,转换器在输出端加一个运算放大器构成的,I-V,转换电路,即可转换为电压输出。,(,2,),D/A,转换器与单片机的接口形式,单片机与,D/A,转换器的连接,早期多采用,8,位的并行传输的接口,现在除了并行接口外,带有串行口的,D/A,转换器品种也不断增多,目前较为流行多采用,SPI,串行接口。在选择单片,D/A,转换器时,要根据系统结构考虑单片机与,D/A,转换器的接口形式。,2,主要技术指标,D/A,转换器的指标很多,设计者最关心的几个指标如下。,(,1,)分辨率,分辨率指单片机输入给,D/A,转换器的单位数字量的变化,所引起的模拟量输出的变化,通常定义为输出满刻度值与,2n,之比(,n,为,D/A,转换器的二进制位数),习惯上用输入数字量的位数表示。显然,二进制位数越多,分辨率越高,即,D/A,转换器输出对输入数字量变化的敏感程度越高。例如,,8,位的,D/A,转换器,若满量程输出为,10V,,根据分辨率定义,则分辨率为,10V/2n,,分辨率为,10V/256=39.1mV,,即输入的二进制数最低位数字量的变化可引起输出的模拟电压变化,39.1mV,,该值占满量程的,0.391%,,常用符号,1LSB,表示。,同理:,10,位,D/A,转换,1 LSB=9.77mV=0.1%,满量程,12,位,D/A,转换,1 LSB=2.44mV=0.024%,满量程,16,位,D/A,转换,1 LSB=0.076mV=0.00076%,满量程,使用时,应根据对,D/A,转换器分辨率的需要来选定,D/A,转换器的位数。,(,2,)建立时间,建立时间是描述,D/A,转换器转换速度的参数,表明转换时间长短。其值为从输入数字量到输出达到终值误差,(1/2)LSB,(最低有效位)时所需的时间。电流输出的转换时间较短,而电压输出的转换器,由于要加上完成,I-V,转换的时间,因此建立时间要长一些。快速,D/A,转换器的建立时间可控制在,1,s,以下。,(,3,)转换精度,理想情况下,转换精度与分辨率基本一致,位数越多精度越高。但由于电源电压、基准电压、电阻、制造工艺等各种因素存在误差。严格地讲,转换精度与分辨率并不完全一致。两个相同位数的不同的,DAC,,只要位数相同,分辨率则相同,但转换精度会有所不同。例如,某种型号的,8,位,DAC,精度为,0.19%,,而另一种型号的,8,位,DAC,精度为,0.05%,。,11.2,单片机扩展并行,8,位,DAC0832,的设计,11.2.1 8,位并行,DAC 0832,简介,1,DAC0832,的特性,美国国家半导体公司的,DAC0832,芯片具有,两级输入数据寄存器,的,8,位,DAC,,能直接与,AT89S51,连接,特性如下。,(,1,)分辨率为,8,位。,(,2,)电流输出,建立时间为,1,s,。,(,3,)可双缓冲输入、单缓冲输入或直通输入。,(,4,)单一电源供电(,+5V,+15V,),低功耗,,20mW,。,2,DAC0832,的引脚及逻辑结构,引脚,见,图,11-1,。,内部结构,见,图,11-2,。,7,8,图,11-1,DAC0832,引脚,9,图,11-2,DAC0832,逻辑结构,由图,11-2,,片内共,两级,寄存器,,第一级,为“,8,位输入寄存器”,用于存放单片机送来的数字量,使得该数字量得到缓冲和锁存,由,LE1*,(即,M1=1,时)加以控制;“,8,位,DAC,寄存器”是,第二级,8,位输入寄存器,用于存放待转换的数字量,由,LE2*,控制(即,M3=1,时),这两级,8,位寄存器,构成两级输入数字量缓存。“,8,位,D/A,转换电路”受“,8,位,DAC,寄存器”输出数字量控制,输出和数字量成正比的模拟电流。如要得到模拟输出电压,需外接,I-V,转换电路。,各引脚的功能,如下。,10,DI7,DI0,:,8,位数字,量,输入端,接收发来的数字量。,ILE,、,CS,*,、,WR1,*,:,当,ILE=1,,,CS,*,=0,,,WR1*=0,时,即,M1=1,,,第一级,8,位输入寄存器被选中。待转换的数字信号被锁存到第一级,8,位输入寄存器中。,XFER,*,、,WR2*,:当,XFER,*,=0,,,WR2*=0,时,第一级,8,位输入寄存器中待转换数字进入第二级,8,位,DAC,寄存器中。,I,OUT1,:,D/A,转换电流输出,1,端,输入数字量全为,“,1,”,时,,I,OUT1,最大,输入数字量全为,“,0,”,时,,I,OUT1,最小。,I,OUT2,:,D/A,转换电流输出,2,端,,I,OUT2,+I,OUT1,=,常数。,R,fb,:,I-V,转换时的外部反馈信号输入端,内部已有反馈电阻,R,fb,,根据需要也可外接反馈电阻。,V,REF,:,参考电压输入端。,V,CC,:,电源输入端,在,+5V,+15V,范围内。,DGND,:,数字地。,AGND,:模拟地,最好与基准电压共地,11.2.2,案例设计:单片机扩展,DAC0832,的程控电压源,单片机控制,DAC0832,可实现数字调压,单片机只,要送给,DAC0832,不同数字量,即可实现不同模拟电压输出。,12,DAC0832,输出可用单缓冲方式或双缓冲方式。单缓冲方式是,DAC0832,片内的两级数据寄存器的有一个处于直通方式,另一处于受,AT89S51,控制的锁存方式。实际应用中,如只有一路模拟量输出,或虽是多路模拟量输出,但并不要求多路输出同步情况下,就可采用单缓冲方式。,单片机控制,DAC0832,实现数字调压的单缓冲方式接口电路,见,图,11-3,。由于,XFER,*,=0,、,WR2*,=0,,所以第二级,“,8,位,DAC,寄存器,”,处于直通。第一级,“,8,位输入寄存器,”,为单片机控制的锁存方式,,3,个锁存控制端的,ILE,直接接到有效的高电平,另两个控制端,CS,*,、,WR1,*,分别由,单片机,P2.0,和,P2.1,控制,13,14,图,11-3,单缓冲方式的单片机与,DAC0832,的接口原理电路,DAC 0832,输出电压,Vo,与输入数字量,B,关系为:,由上式见,输出模拟电压,Vo,与,输入数字量,B,以及基准电压,V,REF,成正比,且,B,为,0,时,,Vo,也为,0,,,B,为,255,时,,Vo,为最大的绝对值输出,且不会大于,V,REF,。下面介绍单缓冲方式下单片机扩展,DAC0832,程控电压源的设计。,15,【例,11-1,】,单片机与,DAC0832,单缓冲方式接口,见,图,11-3,,单片机,P2.0,脚控制,DAC0832,的,CS,*,脚,,P2.1,控制,WR1,*,端。当,P2.0,脚为低时,如果同时,WR*,有效,单片机就会把数字量通过,P1,口送入,DAC0832,的,DI7,DI0,端,并转换输出。用虚拟直流电压表测量经运放,LM358N,的,I/V,转换后的电压值,并观察输出电压变化。,仿真运行后,可看到虚拟直流电压表测量输出电压在,2.5V,0V,(参考电压为,2.5V,)范围内不断线性变化。如参考电压为,5V,,则输出电压在,5V,0V,范围内变化。如果虚拟直流电压表太小,看不清楚电压显示值,可用鼠标滚轮放大直流电压表。,单片机送给,DAC0832,不同的数字量,就可得到不同的输出电平,从而使单片机控制,DAC0832,成为一个程控电压源。,16,参考程序如下:,17,11.2.3,案例设计,2,:波形发生器的制作,单片机如把不同波形数据发送给,DAC0832,,就可产生各种不同波形信号。下面介绍单片机控制,DAC0832,产生各种函数波形案例、,【例,11-2,】,单片机控制,DAC0832,产生正弦波、方波、三角波、梯形波和三角波。,Proteus,的原理电路,见,图,11-4,。单片机,P1.0 P1.4,接有,5,个按键,当按键按下时,分别对应产生正弦波、方波、三角波、梯形波和三角波。,18,图,11-4,控制,DAC0832,产生各种波形的原理电路,单片机控制,DAC0832,产生各种波形,实质就是单片机把波形的采样点数据送至,DAC0832,,经,D/A,转换后输出模拟信号。改变送出的函数波形采样点后的延时时间,就可改变函数波形的频率。产生各种波形原理如下。,(,1,),正弦波产生原理,单片机把正弦波的,256,个采样点的数据送给,DAC0832,。正弦波采样数据可用软件编程或,MATLAB,等工具计算。,(,2,),方波产生原理,单片机采用定时器定时中断,时间常数决定方波高、低电平持续时间。,(,3,),三角波产生原理,单片机把初始数字量,0,送,DAC0832,后,不断增,1,,增至,0 xff,后,然后再把送给,DAC0832,的数字量不断减,1,,减至,0,后,再重复上述过程。,(,4,),锯齿波产生原理,单片机把初始数据,0,送,DAC0832,后,数据不断增,1,,增至,0 xff,后,再增,1,则溢出清,“,0,”,,模拟输出又为,0,,然后再重复上述过程,如此循环,则输出锯齿波。,21,(,5,),梯形波产生原理,输入给,DAC0832,数字量从,0,开始,逐次加,1,。当输入数字量为,0 xff,时,延时一段时间,形成梯形波平顶,然后波形数据再逐次减,1,,如此循环,则输出梯形波。,参考程序如下:,#include,sbit,wr,=P36;,sbit,rd=P32;,sbit,key0=P10;/,定义,P1.0,脚的按键为正弦波键,key0,sbit,key1=P11;/,定义,P1.1,脚的按键为方波键,key1,sbit,key2=P12;/,定义,P1.2,脚的按键为三角波键,key2,sbit,key3=P13;/,定义,P1.3,脚的按键为梯形波键,key3,sbit,key4=P14;/,定义,P1.3,脚的按键为锯齿波键,key4,unsigned char flag;/flag,为,1,、,2,、,3,、,4,、,5,时对应正弦波、方波、,/,三角波、梯形波、锯齿波,23,unsigned char const code,/,以下为,正,弦波采样点数组,256,个数据,SIN_code256=0 x80,0 x83,0 x86,0 x89,0 x8c,0 x8f,0 x92,0 x95,0 x98,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb0,0 xb3,0 xb6,0 xb9,0 xbc,0 xbf,0 xc1,0 xc4,0 xc7,0 xc9,0 xcc,0 xce,0 xd1,0 xd3,0 xd5,0 xd8,0 xda,0 xdc,0 xde,0 xe0,0 xe2,0 xe4,0 xe6,0 xe8,0 xea,0 xec,0 xed,0 xef,0 xf0,0 xf2,0 xf3,0 xf4,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0 xfb,0 xfc,0 xfc,0 xfd,0 xfe,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfe,0 xfd,0 xfc,0 xfc,0 xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 xf3,0 xf2,0 xf0,0 xef,0 xed,0 xec,0 xea,0 xe8,0 xe6,0 xe4,0 xe3,0 xe1,0 xde,0 xdc,0 xda,0 xd8,0 xd6,0 xd3,0 xd1,0 xce,0 xcc,0 xc9,0 xc7,0 xc4,0 xc1,0 xbf,0 xbc,0 xb9,0 xb6,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99,0 x96,0 x92,0 x8f,0 x8c,0 x89,0 x86,0 x83,0 x80,0 x7d,0 x79,0 x76,0 x73,0 x70,0 x6d,0 x6a,0 x67,0 x64,0 x61,0 x5e,0 x5b,0 x58,0 x55,0 x52,0 x4f,0 x4c,0 x49,0 x46,0 x43,0 x41,0 x3e,0 x3b,0 x39,0 x36,0 x33,0 x31,0 x2e,0 x2c,0 x2a,0 x27,0 x25,0 x23,0 x21,0 x1f,0 x1d,0 x1b,0 x19,0 x17,0 x15,0 x14,0 x12,0 x10,0 xf,0 xd,0 xc,0 xb,0 x9,0 x8,0 x7,0 x6,0 x5,0 x4,0 x3,0 x3,0 x2,0 x1,0 x1,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x0,0 x1,0 x1,0 x2,0 x3,0 x3,0 x4,0 x5,0 x6,0 x7,0 x8,0 x9,0 xa,0 xc,0 xd,0 xe,0 x10,0 x12,0 x13,0 x15,0 x17,0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x23,0 x25,0 x27,0 x29,0 x2c,0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3b,0 x3d,0 x40,0 x43,0 x46,0 x48,0 x4b,0 x4e,0 x51,0 x54,0 x57,0 x5a,0 x5d,0 x60,0 x63,0 x66,0 x69,0 x6c,0 x6f,0 x73,0 x76,0 x79,0 x7c,24,25,unsigned char,keyscan,()/,键盘扫描函数,unsigned char,keyscan_num,temp,;,P1=0 xff;/P1,口输入,temp=P1;/,从,P1,口读入键值,存入,temp,中,if(temp&0 xff)/,判是否有键按下,即键值不为,0 xff,,则有键按下,if(key0=0)/,产生正弦波的按键按下,,P1.0=0,keyscan_num,=1;/,得到的键值为,1,,表示产生正弦波,else if(key1=0)/,产生方波的按键按下,,P1.1=0,keyscan_num,=2;/,得到键值为,2,,表示产生方波,else if(key2=0)/,产生三角波的按键按下,,P1.2=0,keyscan_num,=3;/,得到的键值为,3,,表示产生三角波,else if(key3=0)/,产生梯形波的按键按下,,P1.3=0,keyscan_num,=4;/,得到的键值为,4,,表示产生梯形波,else if(key4=0)/,产生锯齿波的按键按下,,P1.3=0,keyscan_num,=5;/,得到的键值为,5,,表示产生锯齿波,else,keyscan_num,=0;/,没有按键按下,键值为,0,return,keyscan_num,;/,得到的键值返回,26,27,28,29,30,void main()/,主函数,init_DA0832();/DA0832,的初始化函数,do,flag=,keyscan,();/,将键盘扫描函数得到的键值赋给,flag,while(!flag,);,while(1),switch(flag,),case 1:,do,f lag=,keyscan,();,SIN();,while(flag,=1);,break;,case 2:,Square();,do,flag=,keyscan,();,while(flag,=2);,TR0=0;,break;,case 3:,do,flag=,keyscan,();,Triangle();,while(flag,=3);,break;,31,case 4:,do,flag=,keyscan,();,Trapezoidal();,while(flag,=4);,break;,case 5:,do,flag=,keyscan,();,Sawtooth,();,while(flag,=5);,break;,default:,flag=,keyscan,();,break;,32,void timer0(void)interrupt 1/,定时器,T0,的中断函数,P2=P2;/,方波的输出电平求反,TH0=0 xff;/,重装定时时间常数,TL0=0 x83;,TR0=1;/,启动定时器,T0,本案例在仿真运行时,可看到弹出的虚拟示波器,从虚拟示波器屏幕上可观察到由按键选择的函数波形输出。,如在仿真时关闭该虚拟示波器后,再启用虚拟示波器观察波形,可点击鼠标右键,现下拉菜单,点击“,oscilloscope”,后,仿真界面又会出现虚拟示波器屏幕。,33,11.3 AT89S51,扩展,10,位串行,DAC-TLC5615,11.3.1,串行,DACTLC5615,简介,美国,TI,公司产品,串行接口,DAC,,电压输出型,最大输出电压是基准电压值两倍。带上电复位功能,即上电时把,DAC,寄存器复位至全零。单片机只需用,3,根串行总线就可完成,10,位数据的串行输入,易于和工业标准的微处理器或单片机接口,非常适于电池供电的测试仪表、移动电话,也适用于数字失调与增益调整以及工业控制场合。,TLC5615,的引脚,见,图,11-5,。,34,8,只引脚功能如下:,DIN,:串行数据输入端;,SCLK,:串行时钟输入端;,C,S*,:片选端,低电平有效;,35,图,11-5,TLC5615,引脚,DOUT,:用于级联时的串行数据输出端;,AGND,:,模拟地;,REF,IN,:基准电压输入端,,2V,(VDD-2),;,OUT,:,DAC,模拟电压输出端;,VDD,:,正电源端,,4.5,5.5V,通常取,5V,。,TLC5615,内部功能框图,见,图,11-6,。,37,图,11-6,TLC5615,内部功能框图,主要由以下几部分组成:,10,位,DAC,电路,;,一个,16,位移位寄存器,接收串行移入的二进制数,且有一个级联的数据输出端,D,OUT,;,并行输入输出的,10 bit DAC,寄存器,为,10,位,DAC,电路提供待转换的二进制数据,;,电压跟随器为参考电压端,REF,IN,提供高输入阻抗,大约,10M;,2,电路提供最大值为,2,倍于,REF,IN,输出,;,上电复位电路和控制逻辑电路。,38,两种工作方式:,(,1,),第,1,种,工作方式:,12,位数据序列,。从,图,10-8,看出,,16,位移位寄存器分为高,4,位的虚拟位、低,2,位的填充位以及,10,位有效数据位。在,TLC5615,工作时,只需要向,16,位移位寄存器先后输入,10,位有效位和低,2,位的任意填充位。,(,2,),第,2,种,工作方式,:,级联方式,即,16,位数据列,可将本片的,D,OUT,接到下一片的,D,IN,,需向,16,位移位寄存器先后输入高,4,位虚拟位、,10,位有效位和低,2,位填充位,由于增加了高,4,位虚拟位,所以需要,16,个,时钟脉冲,。,利用带有串行接口的,TLC5615 D/A,转换电路,调节可变电阻器,使输出电压可在,0,5V,内调节。调整电位计,用电压表测量,DAC,转换输出的电压值。,当,TLC5615,片选脚,CS*,为低时,串行输入数据才能被移入,16,位移位寄存器。当,CS*,为低时,在每一个,SCLK,时钟的上升沿将,DIN,的一位数据移入,16,位移寄存器。注意,二进制最高有效位被导前移入。接着,,CS*,的上升沿将,16,位移位寄存器的,10,位有效数据锁存于,10,位,DAC,寄存器,供,DAC,电路进行转换;,当片选端,CS*,为高时,串行输入数据不能被移入,16,位移位寄存器。,11.3.2,案例,设计,:单片机,扩展,串行,DACTLC5615,的设计,【例,11-3,】,单片机控制串行,DAC-TLC5615,进行,D/A,转换,原理电路及仿真,见,图,11-7,。调节可变电位计,RV1,的值,使,TLC5615,的输出电压可在,0,5V,内调节,从虚拟直流电压表可观察到,DAC,转换输出的电压值。,41,图,11-7,单片机与,DAC-TLC5615,的接口电路,参考程序如下:,#include,#include,#define,uchar,unsigned char,#define,uint,unsigned,int,sbit,SCL=P11;,sbit,CS=P12;,sbit DIN=P10;,uchar bdata dat_in_h;,uchar bdata dat_in_l;,sbit h_7=dat_in_h7;,sbit l_7=dat_in_l7;,void,delayms(uint,j),uchar i=250;,for(;j0;j-),while(-i);,i=249;,while(-i);,i=250;,void Write_12Bits(void)/,一次向,TLC5615,中写入,12bit,数据函数,uchar,i;,SCL=0;/,置零,SCL,,为写,bit,做准备;,CS=0;/,片选端,=0,;,for(i,=0;i2;i+)/,循环,2,次,发送高两位;,if(h_7)/,高位先发;,44,DIN=1;/,将数据送出;,SCL=1;/,提升时钟,写操作在时钟上升沿触发,SCL=0;/,结束该位传送,为下次写作准备;,else,DIN=0;,SCL=1;,CL=0;,dat_in_h,=1;,45,for(i,=0;i8;i+)/,循环八次,发送低八位;,if(l_7),DIN=1;/,将数据送出;,SCL=1;/,提升时钟,写操作在时钟上升沿触发,SCL=0;/,结束该位传送,为下次写作准备,else,DIN=0;,SCL=1;,SCL=0;,dat_in_l,=1;,for(i,=0;i2;i+)/,循环,2,次,发送两个填充位,46,DIN=0;SCL=1;SCL=0;,CS=1;SCL=0;,void TLC5615_Start(uint,dat_in,)/,启动,DAC,转换函数,dat_in,%=1024;,dat_in_h,=dat_in/256;,dat_in_l,=dat_in%256;,dat_in_h,=6;,Write_12Bits();,void main()/,主函数,while(1),TLC5615_Start(0 xffff);delayms(1);,47,11.3,单片机扩展,ADC,概述,A/D,转换器(,ADC,)把模拟量转换成数字量,单片机才能进行数据处理。随着超大规模集成电路技术的飞速发展,大量结构不同、性能各异的,A/D,转换芯片应运而生。,1,A/D,转换器简介,目前单片,ADC,芯片较多,对设计者来说,只需合理的选择芯片即可。现在部分的单片机片内也集成了,A/D,转换器,位数为,8,位、,10,位或,12,位,且转换速度也很快,但是在片内,A/D,转换器不能满足需要的情况下,还是需要外扩。因此,作为外部扩展,A/D,转换器的基本方法,读者还是应当掌握。,尽管,A/D,转换器种类很多,但目前广泛应用在单片机应用系统中的主要有逐次比较型转换器和双积分型转换器,此外,-,式转换器也逐渐得到重视和应用。,逐次比较型,ADC,,在精度、速度和价格都适中,是最常用的,A/D,转换器。,双积分型,ADC,,具有精度高、抗干扰性好、价格低廉等优点,与逐次比较型,A/D,转换器相比,转换速度较慢,近年来在单片机应用领域中已得到广泛应用。,-,式,ADC,具有积分式与逐次比较型,ADC,的优点。它对工业现场串模干扰具有较强抑制能力,不亚于双积分,ADC,,它比双积分,ADC,有较高转换速度。与逐次比较型,ADC,相比,有较高信噪比,分辨率高,线性度好。由于上述优点,,-,式,ADC,得到了重视,已有多种,-,式,A/D,芯片可供用户选用。,50,A/D,转换器按照输出数字量的有效位数分为,4,位、,8,位、,10,位、,12,位、,14,位、,16,位并行输出以及,BCD,码输出的位、位、位等多种。目前,除了并行的,A/D,转换器外,带有同步,SPI,串行接口的,A/D,转换器的使用也逐渐增多。串行接口的,A/D,转换器具有占用单片机的端口线少、使用方便、接口简单等优点,已经得到广泛的使用。较为典型的串行,A/D,转换器为美国,TI,公司的,TLC549,(,8,位)、,TLC1549,(,10,位)以及,TLC1543,(,10,位)和,TLC2543,(,12,位)等。,A/D,转换器按照转换速度可大致分为超高速(转换时间,1ns,)、高速(转换时间,1,s,)、中速(转换时间,1ms,)、低速(转换时间,1s,)等几种不同转换速度的芯片。目前许多新型的,A/D,转换器已将多路转换开关、时钟电路、基准电压源、二,/,十进制译码器和转换电路集成在一个芯片内,为用户提供了极大方便。,2,A/D,转换器主要技术指标,(,1,)转换时间或转换速率。,转换时间是指,A/D,转换器完成一次转换所需要的时间。转换时间的倒数为转换速率。,(,2,)分辨率,。分辨率是衡量,A/D,转换器能够分辨出输入模拟量最小变化程度的技术指标。分辨率取决于,A/D,转换器的位数,习惯上用输出的二进制位数或,BCD,码位数表示。例如,,A/D,转换器,AD1674,的满量程输入电压为,5V,,可输出,12,位二进制数,即用,212,个数进行量化,其分辨率为,1LSB,,也即,5V/212=1.22mV,,其分辨率为,12,位,或能分辨出输入电压,1.22mV,的变化。,51,又如,双积分型输出,BCD,码的,A/D,转换器,MC14433,,其满量程输入电压为,2V,,其输出最大的十进制数为,1999,,分辨率为三位半,如果换算成二进制位数表示,其分辨率约为,11,位,因为,1999,最接近于,211=2048,。,量化过程引起的误差称为量化误差。量化误差是由于有限位数字量对模拟量进行量化而引起的误差。量化误差理论上规定为一个单位分辨率的,1/2,LSB,,提高位数既可以提高分辨率,又能减少量化误差。,(,3,)转换精度,。定义为一个实际,A/D,转换器与一理想,A/D,转换器在量化值上的差值,可用绝对误差或相对误差表示。,11.4,单片机并行扩展,8,位,A/D,转换器,ADC0809,1,ADC0809,引脚及功能,逐次比较型,8,路模拟输入、,8,位数字量输出的,A/D,转换器,引脚,见,图,11-8,。,53,图,11-8,ADC0809,引脚,共,28,个引脚,双列直插式封装,引脚功能如下:,IN0,IN7,:,8,路模拟信号输入。,D0,D7,:转换完毕的,8,位数字量输出端。,C,、,B,、,A,与,ALE,:,C,、,B,、,A,端控制,8,路模拟输入通道的切换,分别与单片机的,3,条地址线相连。,C,、,B,、,A=000,111,对应,IN0,IN7,通道地址。各路模拟输入通道之间切换由改变加到,C,、,B,、,A,上的编码来实现。,ALE,为,ADC0809,接收,C,、,B,、,A,编码时的锁存控制信号。,OE,、,START,、,CLK,:,OE,为转换结果输出允许端;,START,为启动信号输入端;,CLK,为时钟信号输入端,,ADC0809,的,CLK,信号须外加。,EOC,:,转换结束输出信号。当,A/D,转换开始时,该引脚为低电平,当,A/D,转换结束时,该引脚为高电平。,VR,(,+,)、,VR,(,-,):,基准电压输入端。,54,2,ADC0809,的内部结构,结构见,图,11-9,。,ADC0809,采用逐次比较方法完成,A/D,转换,由单一,+5V,电源供电。片内带有锁存功能的,8,路选,1,模拟开关,由加到,C,、,B,、,A,引脚编码决定所选通道。,55,图,11-9,ADC0809,结构框图,ADC0809,完成一次转换需,100,s,(此时加在,CLK,引脚的时钟频率为,640MHz,,即转换时间与加在,CLK,引脚的时钟频率有关),它具有输出,TTL,三态锁存缓冲器,可直接连到,AT89S51,单片机的数据总线上。通过适当的外接电路,,ADC0809,可对,0,5V,的模拟信号进行转换。,3,输入模拟电压与输出数字量的关系,ADC0809,输入模拟电压与转换输出结果数字量关系如下:,56,其中:,V,IN,处于(,VREF(+)-VREF(-),)之间,,N,为十进制数。通常情况下,VREF(+),接,+5V,,,VREF(-),接地,即模拟输入电压范围为,0+5V,,对应的数字量输出为,0 x000 xff,。,4,ADC0809,的转换工作原理,讨论接口设计前,先了解单片机如何控制,ADC,开始转换,如何得知转换结束以及如何读入转换结果的问题。,单片机控制,ADC0809,进行,A/D,转换过程如下:首先由加到,C,、,B,、,A,上的编码决定选择,ADC0809,的某一路模拟输入通道,同时产生高电平加到,ADC0809,的,START,引脚,开始对选中通道转换。,当转换结束时,,ADC0809,发出转换结束,EOC,(高电平)信号。当单片机读取转换结果时,需控制,OE,端为高电平,把转换完毕的数字量读入到单片机内。,单片机读取,A/D,转换结果可采用查询方式和中断方式。,查询方式,是检测,EOC,脚是否变为高电平,如为高电平则说明转换结束,然后单片机读入转换结果。,中断方式,是单片机启动,ADC,转换后,单片机执行其他程序。,ADC0809,转换结束后,EOC,变为高电平,,EOC,通过反相器向单片机发出中断请求,单片机响应中断,进入中断服务程序,在中断服务程序中读入转换完毕的数字量。很明显,中断方式效率高,特适合于转换时间较长的,ADC,。,58,11.4.1,案例:单片机控制,ADC0809,进行,A/D,转换,【,例,11-4】,采用查询方式控制,ADC0809,(,Proteus,元件库中没有,ADC0809,,可用库中,ADC0808,替代,与,ADC0809,性能完全相同,用法一样,只是在非调整误差方面有所不同,,ADC0808,为,1/2LSB,,而,ADC0809,为,1LSB,)进行,A/D,转换,原理电路见图,10-12,。输入给,ADC0809,模拟电压可通过调节电位器,RV1,来实现,,ADC0808,将输入的模拟电压转换成二进制数字,并通过,P1,口输出,控制发光二极管亮与灭,来显示转换结果的二进制数字量。,59,图,11-10,单片机控制,ADC0809,进行转换,ADC0808,转换一次约需,100s,,采用查询方式,即使用,P2.3,来查询,EOC,脚电平,判断,A/D,转换是否结束。如果,EOC,脚为高,说明转换结束,单片机从,P1,口读入转换二进制的结果,然后把结果从,P0,口输出给,8,个发光二极管,发光二极管被点亮的位,对应转换结果“,0,”。,#include reg51.h,#define,uchar,unsigned char,#define,uint,unsigned,int,#define LED P0,#define out P1,sbit,start=P21;,sbit,OE=P27;,sbit,EOC=P23;,61,sbit,CLOCK=P20;,sbit,add_a,=P24;,sbit,add_b,=P25;,sbit,add_c,=P26;,void,main(void,),uchar,temp;,add_a,=0;add_b=0;add_c=0;/,选择,ADC0809,的通道,0,while(1),start=0;,start=1;,start=0;/,启动转换,while(1),clock=!,clock;if(EOC,=1)break;/,等待转换结束,62,OE=1;/,允许输出,temp=out;/,暂存转换结果,OE=0;/,关闭输出,LED=temp;/,采样结果通过,P0,口输出到,LED,A/D,转换时须加基准电压,单独用高精度稳压电源供给,其电压变化要小于,1LSB,,这是保证转换精度的基本条件。否则当被转换的输入电压不变,而基准电压的变化大于,1LSB,,也会引起,A/D,转换器输出的数字量变化。如用,中断方式,读取结果。可将,EOC,引脚与单片机,P2.3,脚断开,,EOC,引脚接反相器(例如,74LS04,)的输入,反相器输出接单片机外部中断请求输入端(,INTx,脚),转换结束时,向单片机发出中断请求信号。可将本例接口电路及程序修改,采用中断方式来读取,A/D,转换结果。,63,11.4.2,案例:,2,路输入的数字电压表的设计,【,例,11-5】,设计一个单片机采用查询方式对,2,路模拟电压(,0,5V,)交替采集的数字电压表。原理电路与仿真见,图,11-11,。,2,路,0,5V,被测电压加到,ADC0809IN0,和,IN1,通道,进行,A/D,转换,两路输入电压的大小可通过手动调节,RV1,和,RV2,来实现。,本例将,1.25V,和,2.5V,作为两路输入的报警值,当通道,IN0,和,IN1,的电压分别超过,1.25V,和,2.50V,时,对应二进制数值分别为,0 x40,和,0 x80,。当,A/D,转换结果超过该数值时,将驱动发光二极管,D2,闪烁与蜂鸣器发声,以表示超限。测得的输入电压交替显示在,LED,数码管上,同时也显示在两个虚拟电压表图标上,通过鼠标滚轮来放大虚拟电压表图标,可清楚地看到输入电压测量结果。,图,11-11,查询方式的数字电压表电路原理图与仿真,65,ADC0809,采用的基准电压为,+5V,。由,10.3.2,小节,转换所得结果二进制数字,addata,所代表的的电压的绝对值为,(addata256)5V,,而若将其显示到小数点后两位,不考虑小数点存在(将其乘以,100,),其计算数值为:,(addata100256)5Vaddata1.96 V,控制小数点显示在左边第二位数码管上,即为实际测量电压。,参考程序如下:,#include,unsigned char a16=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,b4,c=0 x01;,sbit,START=P24;,sbit,OE=P26;,sbit,EOC=P25;,sbit,add_a,=P22;,sbit,add_b,=P21;,sbit,add_c,=P20;,sbit,led=P27;,sbit,buzzer=P23;,void Delay1ms(unsigned,int,count)/,延时函数,unsigned,int,i,j,;,for(i,=0;i,count;i,+),for(j,=0;j120;j+);,67,void show()/,显示函数,unsigned,int,r;,for(r,=0;r4;r+),P1=(c=0 x40)/,大于,1.25V,时,则使用,LED,和蜂鸣器报警,for(i,=0;i=100;i+),led=led;,buzzer=buzzer;,69,led=1;/,控制发光二极管,VD2,闪烁,发出光报警信号,buzzer=1;/,控制蜂鸣器发声,发出声音报警信号,else /,否则取消报警,led=0;/,控制发光二极管,VD2,灭,buzzer=0;/,控制蜂鸣器不发声,addata,=,addata,*1.96;/,将采得的二进制数转换成可读的电压值,OE=0;,b0=aaddata%10;/,显示到数码管上,b1=aaddata/10%10;,b2=aaddata/100%10;,b3=aaddata/1000;,70,for(i,=0;i=0 x80)/,当大于,2.5V,时,则使用,LED,和蜂鸣器报警,for(i,=0;i=100;i+),led=led;,buzzer=buzzer;,led=1;,buzzer=1;,else /,否则取消报警,led=0;,buzzer=0;,addata,=,addata,*1.96;/,将采得的二进制数转换成可读的电压,72,OE=0;,b0=aaddata%10;/,显示到数码管上,b1=aaddata/10%10;,b2=aaddata/100%10;,b3=aaddata/1000;,for(i,=0;i=200;i+),show();,73,11.5,单片机扩展串行,8,位,A/D,转换器,TLC549,串行,A/D,转换器与单片机连接具有占用,I/O,口线少的优点,使用较多,大有取代并行,A/D,转换器的趋势。下面介绍单片机扩展串行,8,位,A/D,转换器,TLC549,的应用设计。,11.5.1,TLC,549,的特性及工作原理,TLC549,是美国,TI,公司推出的价廉、高性能的带有,SPI,接口的,8,位,A/D,转换器,,其转换速度小于,17s,,最大转换速率为,40kHz,,内部,系统时钟,的典型值为,4MHz,,电源为,36V,。它能方便与各种单片机通过,SPI,串行接口连接。,1.TLC549,的引脚及功能,引脚见图,11-12,。,图,11-12,TLC549,的引脚,引脚功能,如下:,CS,*,:片选端。,DATAOUT,:转换结果数据,TTL,电平串行输出端,输出时高位在前,。,ANALOGIN,:,模拟信号输入端,,0ANALOGINVcc,,当,ANALOGINREF+,电压时,转换结果为全,“,1,”,(0 xff),,,ANALOGINREF-,电压时,转换结果为全,“,0,”,(0 x00),。,I/O CLOCK,:外接输入,/,输出时钟输入端,同于同步芯片的输入输出操作,,无需与芯片内部系统时钟同步。,REF+,:正基准电压输入,2.5VREF+Vcc+0.1V,。,REF,-,:负基准电压输入端,,-0.1VREF,-,2.5V,。且:(,REF+,)(,REF-,),1V,。,V,CC,:电源,3VVcc6V,。,GND,:地。,2.TLC549,工作时序,工作时序见,图,11-13,。从图可知:,(,1,)串行数据中高位,A7,先输出,,最后输出低位,A0,;,(,2,)在每一次,I/O COLCK,高电平期间,DATA OUT,线上数据产生有效输出,每出现一次,I/O COLCK,,,DATA OUT,线就输出,1,位数据。一个周期出现,8,次,I/O COLCK,信号并对应,8,位数据输出;,图,11-13,TLC549,的工作时序,(,3,)在,CS*,变为低电平后,最高有效位(,A7,)自动置于,DATA OUT,总线。其余,7,位(,A6A0,)在前,7,个,I/O CLOCK,下降沿由时钟同步输出。,B7,B0,以同样方式跟在其后;,(,4,),tsu,在片选信号,CS*,变低后,,I/O COLCK,开始正跳变的最小时间间隔,1.4s,;,(,5,),ten,是从,CS*,变低到,DATA OUT,线上输出数据最小时间(,1.2s,);,(,6,)只要,I/O COLCK,变高就可读取,DATA OUT,线上数据;,(,7,)只有在,CS*,端为低时,,TLC549,才工作;,(,8,),TLC549,的,A/D,转换电路,没有启动控制端,,,只要读取前一次数据后马上就可以开始新的,A/D,转换,。转换完成后就进入保持状态。,TLC549,每次转换所需时间是,17s,,它开始于 变为低电平后,I/OCLOCK,的第,8,个下降沿,没有转换完成标志信号。,当,CS*,变为低电平后,,TLC549,芯片被选中,同时前次转换结果的最高有效位,MSB,(,A7,)自,DATA OUT,端输出,接着要求从,I/O CLOCK,端输入,8,个外部时钟信号,前,7,个,I/O CLOCK,信号的作用,是配合,TLC549,输出前次转换结果的的,A6A0,位,并为本次转换做准备:,在第,4,个,I/O CLOCK,信号由高至低的跳变之后,片内采样,/,保持电路对输入模拟量采样开始,第,8,个,I/O CLOCK,信号的下降沿使片内采样,/,保持电路进入保持状态并启动,A/D,开始转换。转换时间为,36,个时钟周期,最大为,17s,。,直到,A/D,转换完成前的这段时间内,,TLC549,的控制逻辑要求:或者,CS*,保持高电平,或者,I/O CLOCK,时钟端保持,36,个系统时钟周期低电平。,由此可见,在,TLC549,的,I/O CLOCK,端输入,8,个外部时钟信号期间需要完成以下工作:读入前次,A/D,转换结果;对本次转换的输入模拟信号采样并保持;启动本次转换开始,。,11.5.2,案例设计:单片机扩展,TLC549,的设计,【,例,11-6】,单片机控制串行,8,位,A/D,转换器,TLC549,进行,A/D,转换,原理电路与仿真结果见,图,11-14,。由电位计,RV1,提供给,TLC549,模拟量输入,通过调节,RV1,上的“,+”,、“”端,改变输入电压值。编写程序将模拟电压量转换成二进制数字量,本例,用,P0,口输出控制,8,个发光二极管的亮与灭显示转换结果的二进制码,,也可通过,LED,数码管将转换完毕的数字量以,16,进制数形式显示出来。,图,11-14,单片机与,TLC549,接口的原理电路,参考程序如下:,#include,#include,/,包含,_,nop,_(),函数头文件,#define,uchar,unsigned char,#define,uint,unsigned,int,#define led P0,sbit,sdo,=P10;/,定义,P1.0,与,TLC549,的,SDO,脚(即,5,脚,DATA OUT,)连接,sbit,cs,=P11;/,定义,P1.1,与,TLC549,的 脚连接,sbit,sclk,=P12;/,定义,P1.2,与,TLC549,的,SCLK,脚(即,7,脚,I/O CLOCK,)连接,void,delayms(uint,j),/,延时函数,uchar,i=250;,for(;j,0;j-),while(-i);,i=249;,while(-i);,i=250;,void delay18us(void),延时约,18,s,函数,_,nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop,_();,_,nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop,_();,nop_();_nop,_();,uchar,convert(void,),uchar,i,temp,;,cs,=0;,delay18us();,for(i,=0;i8;i+),if(sdo,=1)temp=temp|0 x01;,if(i,7)temp=temp1;,sclk,=1;,_,nop,_();_,nop,_();_,nop_();_nop,_();,sclk,=0;,_,nop,_();_,nop,_();,cs,=1;,return(temp,);,void main(),uchar,result;,led=0;,cs,=1;,sclk,=0;,sdo,=1;,while(1),result=convert();,led=result;/,转换结果从,P0,口输出驱动,LED,delayms(1000);,由于,TLC549,转换时间应大于,17s,,本例采用延时操作方案,延时时间大约,18s,,每次读取转换数据时间大于,17s,即可。,11.6 AT89S51,扩展,12,位串行,ADC-TLC2543,的设计,串行,A/D,转换器与单片机连接具有占用,I/O,口线少优点,使用逐渐增多,随着价格降低,大有取代并行,A/D,转换器趋势。下面首先介绍串行,A/D,转换器,TLC2543,基本特性及工作原理。,10.4.1 TLC2543,的特性及工作原理,美国,TI,的,12,位串行,SPI,接口的,A/D,转换器,转换时间为,10s,。片内有,1,个,14,路模拟开关,用来选择,11,路模拟输入以及,3,路内部测试电压中的,1,路进行采样。为了保证测量结果的准确性,该器件具有,3,路内置自测试方式,可分别测试“,REF+”,高基准电压值,“,REF-”,低基准电压值和“,REF+/2”,值,,88,该器件的模拟量输入范围为,REF+REF-,,一般模拟量的变化范围为,0+5V,,所以此时,REF+,脚接,+5V,,,REF-,脚接地。,由于,TLC2543,与单片机接口简单,且价格适中,分辨率较高,因此在智能仪器仪表中有着较为广泛应用。,1.TLC2543,的引脚,TLC2543,的引脚见,图,11-15,,各引脚功能如下。,AIN0,AIN10,:,11,路模拟量输入端。,CS*,:,片选端。,DATAINPUT,:,串行数据输入端。由,4,位的串行地址输入来选择模拟量输入通道。,DATA OUT,:,A/D,转换结果的三态串行输出端。为高时处于高阻抗状态,为低时处于转换结果输出状态。,EOC,:,转换结束端。,I/O CLOCK,:,I/O,时钟端。,REF+,:,正基准电压端。基准电压的正端(通常为,Vcc,)被加,到,REF+,,最大的输入电压范围为加在本引脚与,REF-,引脚的,电压差。,REF-,:,负基准电压端。基准电压低端(通常为地)加此端。,Vcc,:,电源。,GND,:,地。,90,图,11-15,TLC2543,引脚,2.TLC2543,工作过程,工作过程分为两个周期:,I/O,周期和实际转换周期。,(,1,),I/O,周期,I/O,周期由外部提供的,I/O CLOCK,定义
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!