版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9.1单片机与DAC0832的接口9.1.1D/A转换器概述9.1.2单片机与8位DAC0832的接口9.1.3单片机与DAC0832接口的应用设计9.2单片机与ADC0809的接口9.2.1A/D转换器概述9.2.2与8位逐次比较型ADCADC0809的接口9.2.3单片机控制ADC0809的输入采集设计9.3单片机与串行ADC0832的接口在单片机测控系统中,由于单片机只能处理数字量,对于非电量如温度、压力、流量、速度等非电物理量,必须经传感器先转换成模拟电信号(电压或电流),然后再将模拟电信号转换成数字量后,送单片机处理。实现模数转化的器件称为ADC(A/D转换器)。单片机实现控制算法处理后,常常需要对执行机构进行输出控制,数字量需要转换为模拟量输出。实现数模转换的器件称为DAC(D/A转换器)。本章介绍典型的ADC、DAC芯片与80C51单片机的接口设计。29.1单片机与DAC0832的接口
由于应用场合和控制对象不同,单片机输出控制可以分为以下几类:模拟量控制、开关量控制、电机控制等。单片机开关量控制在第4章已经介绍,电机控制将在第12章介绍,本章介绍模拟量的控制输出,采用D/A转换设计来实现。39.1.1D/A转换器概述D/A转换器性能各异,品种很多。在选购和使用时,首先要了解DAC分类,考虑DAC输入数字量的位数、输入码型、输出模拟量的形式、与单片机的接口形式等,然后进一步了解DAC主要性能指标以及与单片机的接口设计。
1.D/A转换的分类D/A转换器从输入数字量的位数分,主要有8位、10位、12位和16位等;从输入的码型分,主要有二进制和BCD码;从D/A转换器与单片机的接口形式分,主要有并行接口和串行接口,其中,串行接口多采用SPI;从输出模拟量形式分主要有电流输出和电压输出,其中,电压输出型又有单极性和双极性,电流输出型的DAC在输出端加一个运算放大器构成I-V转换电路,可转换为电压输出;从与单片机的输入接口分,有带输入锁存的和不带输入锁存的。2.D/A转换器的主要性能指标
(1)分辨率(Resolution)分辨率指DAC输入单位数字量引起的最小输出模拟增量,定义为输出满刻度值与2n-1之比(n为DAC的二进制位数),习惯上用输入数字量的二进制位数n表示,n越大,DAC输出对输入变化的敏感程度越高,分辨率越高。也可以用最小输出电压(最低有效位1即1LSB对应的输出电压)与最大输出5电压即满量程之比,用符号1LSB表示。例如8位DAC,满量程输出5V,分辨率为5V/(28-1)=5V/255
=
19.6mV,1LSB
=0.0039。选用DAC时,主要根据DAC分辨率的需要选择位数。(2)转换精度(ConversionAccuracy)转换精度是指满量程时,DAC实际模拟输出值和理论值的接近程度。如满量程10V输出9.99~10.01V,则精度为10mV。(3)建立时间建立时间是指描述DAC转换速度的参数,即从输入数字量到输出模拟量(终值误差±1/2LSB)时所需时间。电流输出型6DAC转换时间较短,电压输出时需加I-V变换,建立时间稍长。DAC建立时间较快的可在1us以下。(4)线性度线性度(Linearity)指DAC的实际转换特性曲线和理想直线之间的最大偏移差。(5)偏移量误差偏移量误差(OffsetError)指输入数字量为零时,输出模拟量对零的偏移值。73.单处机与DAC的连接(1)数据线的连接DAC与单片机数据线连接要考虑两个问题:一是DAC位数,当高于8位的DAC与8位数据总线80C51单片机连接时,单片机数据线需要分时输出;二是DAC有无输入锁存器的问题,若DAC内部无输入锁存器时,必须增设锁存器或I/O接口。(2)地址线的连接DAC一般只有片选信号,无地址线。一般需要将单片机地址线通过全译码或部分译码后,控制DAC片选信号,也可由单片机某一位I/O线来控制DAC片选信号。(3)控制线的连接DAC有片选信号、写信号和启动转换信号等控制信号,可以由单片机的I/O线或译码器提供。9.1.280C51与8位DAC0832的接口设计DAC0832是美国NationalSemiconductor公司生产的一种电流型8位DAC,该系列产品包括DAC0830、DAC0831、DAC0832,管脚完全兼容,均为20脚双插直列式封装。DAC1208和DAC1230系列均为美国NationalSemiconductor公司的12位分辨率产品。1.DAC0832的特性(1)DAC0832是8位DAC,当满量程输出5V时,分辨率为19.6mV。(2)输出模拟量为电流。(3)建立时间为1us。10(4)单一电源供电,VCC输入电压范围为+5V~+15V;低功耗,功耗为20mW。
(5)可工作在直通输入、单缓冲输入或双缓冲输入。
2.DAC0832内部结构
DAC0832数字输入端具有两级输入数据寄存器,能直接与80C51单片机连接,实现双缓冲、单缓冲或直通方式输入接口,它的内部结构如图9-1所示。12图9-1DAC0832内部结构13图9-2DAC0832的引脚3.DAC0832的引脚DAC0832采用双列直插式封装,有20只引脚,如图9-2所示。其中,与单片机连接的有8位数字线和5只控制引脚,与外设连接的为3只输出引脚,还有4只与电源相关。各引脚功能如下。(1)数字量输入引脚DI0~DI7:8位数字量输入端,接单片机输出数字量。(2)控制引脚ILE:数据输入锁存允许控制线,高电平有效。:片选信号输入线,低电平有效。:数据锁存器写选通输入线,负脉冲有效。:DAC寄存器写选通输入线,负脉冲有效。:数据传送控制信号输入线,低电平有效。
14
当ILE、、同时有效时,第一级8位输入寄存器被选通。待转换的输入数字量被锁存到第一级8位输入寄存器中。当、同时有效时,第一级输入寄存器中待转换数字量进入第二级8位DAC寄存器中。(3)模拟量输出①IOUT1:模拟电流输出线1,当8位DAC寄存器为全1时,IOUT1最大。8位DAC寄存器为全0时,IOUT1最小。②IOUT2:模拟电流输出线2,IOUT2+IOUT1=常数;采用单极性输出时,IOUT2常常接地。③Rfb:片内反馈电阻引出线,反馈电阻制作在芯片内部,用作外接的I-V转换运算放大器的反馈电阻,改变Rfb外接电阻可调转换满量程精度。(4)电源与地①VREF:基准电压输入线。电压范围为-10V~+10V。②VCC:工作电源输入端,可接+5V~+15V电源。③AGND:模拟地,最好与基准电压供地。④DGND:数字地。4.DAC0832输出电压与输入数字量的关系DAC0832片内8位D/A转换电路由倒T型R-2R电阻网络、8个模拟开关和参考电压VREF等部分组成,如图9-3所示。由倒T型R-2R电阻网络分析计算,可推理得到DAC0832输出电流Iout1与输入8位二进制数的转换表达式为:因此,DAC0832输出电流Iout1和输入二进制数字成线性关系。DAC0832是电流输出型DAC,在其输出端加一个由运算放大器构成的I-V转换电路,将电流输出转换为电压输出。则运算放大器输出的模拟量V0为:在电路内部,Rfb与R相等,上式进一步简化。可见,DAC0832输出的模拟量与输入数字量成正比,实现了从数字量到模拟量的转换。图9-3DAC0832片内8位D/A转换电路5.DAC0832的工作方式单片机控制DAC0832芯片的接口方式有三种:直通方式、单缓冲方式和双缓冲方式。(1)直通方式当、、、直接接地,ILE接电源,即所有控制信号均有效,DAC0832工作于直通方式,不受单片机控制,此时,8位输入寄存器和8位DAC寄存器都直接处于导通状态,DI0~DI7上外接的8位数字量直接进行D/A转换,从输出端得到转换的模拟量。(2)单缓冲方式当第一级输入寄存器和第二级DAC寄存器中的一个处于直通状态,另一个处于受单片机控制的状态,或者两个被控制同时导通,DAC0832就工作于单缓冲方式。单缓冲连接电路如图9-4所示,只要数据写入8位数据输入寄存器,就开始转换,转换结果通过输出端输出。图9-4DAC0832与单片机的单缓冲方式连接(3)双缓冲方式当8位输入寄存器和8位DAC寄存器分时控制导通时,DAC0832工作于双缓冲方式,双缓冲方式适宜多个DAC0832同时输出的场合,例如,分别控制各个DAC0832数据输入寄存器导通并接收数据,再控制各个DAC0832的8位DAC寄存器同时选通,数字量从8位输入寄存器同时传输到DAC寄存器,可同时启动转换,输出多路模拟信号。双缓冲连接电路如图9-5所示。图9-5DAC0832与单片机的双缓冲方式连接6.DAC0832的用途
DAC0832主要用作单极型电压输出和双极型电压输出。
(1)DAC0832作为单极性电压输出(0~5V)
DAC0832作为单极性电压输出电路如图9-6所示。
Vout=-(D×VREF)/256
D=b7*2^7+b6*2^6+…+b0*2^0
上式中,D为输入数字量的十进制值。运放的输出电压与参考电压VREF是反极性。图9-6DAC0832作为单极性电压输出电路例如,设VREF=-5V,当D=FFH=255时,这是最大的输出电压。若D=01H=1时,对应的输出电压最小。图9-7DAC0832作为双极性电压输出电路
(2)DAC作为双极性电压输出(-5~+5V)DAC0832作为双极性电压输出电路如图9-7所示。由电路列方程:I1+I2+I3=0,其中,I1=Va/7.5,I2=Vout/15,I3=VREF/15,Va=-D×VREF/256则有:Vout=(D-128)*VREF/128可见,当VREF=5V,D从0到255变化,输出电压变化范围是:-5~+5v。9.1.3单片机与DAC0832接口的应用设计
DAC0832在实际应用中经常作为波形发生器,利用它产生各种波形。产生波形的原理利用了DAC输出电压模拟量与输入数字量成正比的特点,由单片机向DAC0832送出随时间呈一定规律变化的数字量,则DAC0832转换器输出随时间按一定规律变化的电流量,再经过运算放大器转换成相应的电压波形。27【例9-1】用DAC0832产生锯齿波。单片机与DAC0832以单缓冲方式连接,接口电路如图9-8所示,单片机采用线译码方式,P2.0接DAC0832片选端,由此可确定一组DAC0832的接口地址为FEFFH。将单片机写信号P3.6接端,数据总线P0直接连接DAC0832数据输入端,可直接控制数据输出,当向端口地址送数时,P2.0脚为低,单片机信号有效,数字量通过P0口送入DAC0832,并转换输出。DAC0832是电流输出型DAC,加一运算放大器741构成I-V转换电路,将电流输出转换为电压输出。电路中用虚拟直流电压表测量经运放741经过I-V转换后的电压值,观察电压变化。运行后,看到虚拟直流电压表显示输出电压在0V~5V(参考电压VREF为-5V)。28电路中同时用虚拟示波器观察锯齿波形,仿真运行时,将弹出虚拟示波器,调试示波器旋钮,观察波形输出。当关闭虚拟示波器后,如需再启用示波器,可点击鼠标右键,选择“Oscilloscope”,DAC0832输出0V~5V锯齿波形如图9-9所示。图9-8单片机控制DAC0832产生波形图9-9单片机控制DAC0832产生锯齿波参考程序如下:P0832.c#include<reg51.h>#include<absacc.h>//定义绝对地址访问#defineuintunsignedint#defineDAC0832XBYTE[0xFEFF]voidmain(void){uinti;while(1) {for(i=0;i<0x100;i++) {DAC0832=i;} }}图9-10单片机控制DAC0832产生锯齿波【例9-2】DAC0832工作在单缓冲方式,产生三角波。单片机与DAC0832接口电路如图9-8所示,DAC0832输出0V~5V三角波形如图9-10所示。参考C程序如下:#include<absacc.h>//绝对地址访问#defineucharunsignedchar#defineDAC0832XBYTE[0xFEFF]voidmain(){uchari;while(1){ for(i=0;i<0xff;i++) {DAC0832=i;} for(i=0xff;i>0;i--) {DAC0832=i;}}}图9-11单片机控制DAC0832产生锯齿波【例9-3】DAC0832工作在单缓冲方式,产生方波。单片机与DAC0832接口电路如图9-8所示,DAC0832输出0V和5V方波如图9-11所示。参考程序如下:p0832s.c#include<absacc.h>//绝对地址访问#defineucharunsignedchar#defineDAC0832XBYTE[0xFEFF]voiddelay(void);voidmain(){ uchari; while(1) {DAC0832=0;//输出低电平 delay();//延时 DAC0832=0xff;//输出高电平 delay();//延时 }}voiddelay()//延时函数{ uchari; for(i=0;i<0xff;i++){;}}图9-12DAC0832输出正弦波【例9-4】DAC0832工作在单缓冲方式,产生正弦波。单片机与DAC0832接口电路如图9-8所示,DAC0832输出正弦波如图9-12所示。参考程序如下。p0832sin.c#include<absacc.h>//绝对地址访问#defineucharunsignedchar#defineDAC0832XBYTE[0xFEFF]ucharcodeSINBUF[256]={0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c};voidmain(){ uchari; while(1) { for(i=0;i<=0xff;i++) DAC0832=SINBUF[i]; }}【例9-5】单片机与DAC0832以双缓冲方式连接,编程实现2路DAC0832分时传送数据,同时启动转换并同步输出结果,分别产生三角波和锯齿波,接口电路如图9-13所示。单片机采用线译码方式选通2片DAC0832,单片机P2.5引脚连接DAC0832(U1)片选端,P2.6接DAC0832(U4)片选端,P2.7接DAC0832(U1)和DAC0832(U4)的引脚,将单片机写信号(P3.6)连接2片DAC0832的和,单片机数据总线P0直接连接2片DAC0832数据输入端,由此可确定,转换数据写入DAC0832(U1)输入寄存器的地址为DFFFH,转换数据写入DAC0832(U4)输入寄存器的地址为BFFFH,同时启动DAC0832(U1)和DAC0832(U4)转换寄存器的地址为7FFFH。程序设计思路:单片机首先延时500ms后,向DAC0832(U1)的DFFFH地址送产生三角波数据,向DAC0832(U4)的BFFFH地址送产生锯齿波数据,向7FFFH地址送任意数据则同时启动2片DAC0832开始转换。2片DAC0832分别加一运算放大器741构成I-V转换电路,将电流输出转换为电压输出。仿真结果观测如下:(1)电路中使用2个虚拟直流电压表,测量D/A转换电流经过I-V转换电路(运放741)后的电压值,观察电压变化。仿真运行后,看到2个虚拟直流电压表在三角波上升期间与锯齿波电压变化一致。(2)为了进一步观察2片DAC0832启动转换过程,在Proteus仿真电路中添加了静态图表,说明如下:电路中,在运算放大器741(U3)输出端被测点加电压探针X1;在运算放大器741(U5)输出端被测点加电压探针Y1。在Proteus工具箱中,选择ANALOGUE模拟图形,在原理图中拖出图表框。在图表框中添加X1和Y1探针。双击图表框,将Stoptime改为70(秒),以显示1个以上周期的波形。按空格键或选择菜单Graph→SimulateGraph命令,则生成波形,静态图表如图9-14所示。由静态图表可见,在经过共同的延时时间后,2片DAC0832同步输出三角波和锯齿波,在三角波上升阶段,2输出波形完全重合,在三角波过顶点下降时,锯齿波上升。图9-13DAC0832双缓冲方式同步产生三角波及锯齿波图9-14DAC0832双缓冲产生三角波及锯齿波静态图表参考C程序如下:#include<absacc.h>#defineucharunsignedchar#defineDAC0832_1XBYTE[0xDFFF]#defineDAC0832_2XBYTE[0xBFFF]#defineDAC0832XBYTE[0x7FFF]voiddelay(uchar);voidmain(){ delay(500); while(1) {uchari; for(i=0;i<0xff;i++) {DAC0832_1=i; delay(50);
DAC0832_2=i;delay(50); DAC0832=0x00; } for(i=0xff;i>0;i--) {DAC0832_1=i; delay(50); DAC0832_2=0xfe-i;delay(50); DAC0832=0x00; } }}voiddelay(ucharx)//1ms{ucharj;while(x--){for(j=0;j<125;j++);}}9.280C51单片机与ADC0809的接口A/D转换器(ADC)是将模拟量转换成数字量的器件,模拟量只有转变成数字量才能被单片机CPU采集、分析和处理。模拟量有电压、电流等电信号,也有声、光、压力和温度等随非电物理量,非电物理量可选择合适的传感器转换成电信号,传感器和ADC构成单片机的采集系统。本节介绍ADC原理,详细介绍80C51单片机与8位A/D转换器ADC0809的接口设计与应用。
499.2.1A/D转换器概述以下重点介绍A/D转换器分类、转换原理以及主要技术指标。1.A/D转换器类型及原理随着超大规模集成电路技术的飞速发展,为满足不同测控系统要求,出现了不同内部结构、转换原理的各种ADC芯片。从转换原理分有计数型、逐次比较式、双重积分型和并行式等;按其分辨率可分为4位、8位、10位、12位、14位、16位并行接口输出以及
等BCD码输出ADC芯片。(1)计数型ADC计数型ADC由计数器、比较器和DAC组成,转换开始时,计数器从零开始加一计数,每加一计数后,新计数值送DAC转换,通过比较器比较输入模拟信号与D/A转换后的模拟信号,若输入模拟量大于计数器转换量,则计数值加1后,重复D/A转换和比较过程。直到D/A转换模拟信号大于等于输入的模拟信号,则计数停止,此时计数器中数字量即为与输入模拟量相当的数字量。计数型ADC在需要较高精度时,随着位数增大,转换速度较慢,在实际中很少使用。51(2)逐次逼近型ADC逐次逼近型ADC是由一个比较器、寄存器、DAC以及控制电路组成。转换原理是:转换开始时,寄存器清0,最高位置1,将寄存器内容送DAC转换,将输入的模拟量与DAC转换模拟量送入比较器比较,若DAC转换模拟量比输入的模拟量小,则寄存器中1保留,若转换模拟量比输入模拟量大,则1不保留,寄存器次高位置1,重复上述过程,直至寄存器最低位置1,转换后与输入模拟量比较。则寄存器内容即为输入模拟量对应的数字量。可见,n位的逐次逼近型ADC转换需要比较n次,逐次逼近型ADC转换速度、精度和价格适中,是最常用的ADC。53常用产品有美国NationalSemiconductor公司的ADC0801~ADC0805型、ADC0808/0809型和ADC0816/0817型等8位MOS型ADC,以及美国模拟器件公司的快速12位ADCAD574。(3)双重积分型ADC双重积分型ADC先将输入模拟量变换成与其平均值成正比的时间间隔,再将此时间间隔转换成数字量,属于间接型转换器。其转换过程分为采样和比较两个阶段。在采样阶段,输入模拟电压经积分器进行固定时间的积分,输入模拟量越大(采样值越大),正向积分值越大;在比较阶段,基准电压经积分器反向积分,直至积分器为0,由于基准电压值固定所以采样值越大,反向积分时间越长,即反向积分时间与输入电压值成正比。将反向积分时间转换成数字量,即是与输入模拟量对应的数字量。双重积分型ADC转换精度高,稳定性好,采用的模拟量为输入电压的平均值,而非瞬时值,因此具有较强抗干扰能力,但转换速度较慢,在工业领域应用比较广泛。双重积分式转换器的常用产品有:ICL7106/ICL7107/ICL7126、MC14433/5G14433、ICL7135等。54(4)∑-Δ式ADC∑-Δ式ADC集成双重积分型与逐次比较型ADC的优点。对工业现场的串模干扰抑制能力强,不亚于双重积分型ADC,且比双重积分型ADC转换速度高。同逐次比较型ADC比,分辨率高,具有较高的信噪比,且线性度好。所以∑-Δ式ADC受到越来越广泛的重视。552.ADC主要技术指标(1)分辨率分辨率是衡量ADC能够分辨的输入模拟量最小变化程度,取决于ADC的位数,一般用输出的二进制或BCD位数表示。例如,ADC0809输入模拟电压最高为5V,输出是8位二进制数,即256个量化级,分辨率能力为1LSB,即5V/28=19.53mV,或说能分辨出输入模拟电压19.53mV的变化,其分辨率按位数为12位。又如,AD574A分辨率为12位,其百分数分辨率为:1/4096×100%=0.0244%56模拟信号数字化的实质是用规定的N个电平表示模拟信号样值,此过程称为量化,量化过程中由于用有限位数字量对模拟量进行量化,会引起量化误差。量化误差规定为一个单位分辨率的一半,即±1/2LSB,可见A/D转换位数提高既提高分辨率,又能减少量化误差。(2)量程量程是指ADC输入模拟量的变化范围。如双积分型输出BCD码的ADCMC14433,其最大输入电压为2V。(3)转换时间或转换速率转换速率是指完成一次A/D转换所需要的时间。转换速率与转换时间互为倒数。ADC转换速度有超高速(转换时间≤1ns)、高速(转换时间≤1us)、中速(转换时间≤1ms)、低速(转换时间≤1s)等几种。(4)转换精度转换精度是指实际ADC与理想ADC在量化值上的差值,用绝对误差或相对误差表示。9.2.280C51与逐次比较型8位ADC0809的接口ADC0809是美国NationalSemiconductor公司生产的CMOS工艺、单片型逐次比较型ADC,具有8路电压模拟量输入通道、8位数字量输出,模拟输入电压范围为0~+5V,转换起停可控,转换时间为100s,它的内部结构如图9-15所示。59图9-15ADC0809内部结构图1.ADC0809的内部结构ADC0809是采用逐次比较方式实现A/D转换的,片内结构由带有锁存功能的8选1模拟转换开关、3-8地址锁存译码器、8位逐次逼近ADC和8位三态输出锁存器等组成。采用单一+5V电源供电。ADC0809对0~5V的模拟电压输入信号进行转换。可由80C51单片机控制启动转换,ADC0809转换时间大约需100µs(转换时间与加在CLOCK引脚的时钟频率有关),转换结束后,可由单片机控制其输出8位TTL电平数字量,输出直接送80C51单片机的数据总线上。612.引脚及功能ADC0809芯片采用双列直插式封装,有28只引脚,如图9-16,引脚功能如下:(1)IN0~IN7:8路模拟信号输入通道。(2)D0~D7:8位三态数字量输出端。(3)ADDC、ADDB、ADDA:通道选择输入线,3根输入线的逻辑组合用于控制8路模拟输入通道的切换,对通道的选择情况见表9-1所示。此3只地址输入可分别与单片机的3条地址线或数据线相连。62(4)ALE:地址锁存允许信号,当此引脚输入信号由低电平变高电平时,ADC0809锁存ADDC、ADDB、ADDA3只通道选择输入线上编码信号作为通道选择信号。(5)START:启动转换控制输入线,该引脚由高电平变低电平时启动转换。(6)CLK:转换时钟输入线,ADC0809的CLK信号须外加。典型值640KHz,超过时转换精度下降。(7)EOC:A/D转换结束输出信号。当启动转换时,该引脚为低电平,当A/D转换结束时,该引脚输出高电平。63(8)OE:数据输出允许信号,为输入引脚,高电平有效。当转换结束后,如果从该引脚输入高电平,则打开输出三态门,锁存器的数据从D0~D7输出。OE为低电平时,D7~D0引脚为浮空态。(9)VREF+、VREF-:基准电压输入端。(10)Vcc:电源,接+5V电源。(11)GND:地。64图9-16ADC0809引脚功能表9-1ADC0809通道地址选择表ADDCADDBADDA选择通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN73.ADC0809的工作流程多通道ADC一般都有确定转换通道、启动转换、等待转换结束和读取转换结果等过程,ADC0809的工作流程如图9-17所示。(1)确定转换通道:通过ADDC、ADDB、ADDA引脚输入3位地址,使ALE引脚为高电平,其上升沿将地址存入3-8地址锁存与译码器中,经译码从8路模拟通道中选通一路电压模拟量给比较器。(2)启动转换:给START引脚一高电平信号,该信号上升沿使逐次逼近寄存器复位,下降沿启动A/D转换,且使转换结束输出引脚EOC信号为低电平。67
(3)等待转换结束:A/D转换过程有需要一定的时间,当转结束后,转换的结果送入三态输出锁存器,并使EOC引脚高电平,此信号可通知CPU转换已经结束。(4)读取转换数据:CPU执行读数据指令,使OE为高电平将数据从输出端D0~D1读出。图9-17ADC0809的工作流程单片机读取ADC结果可采用查询方式和中断方式。(1)查询方式可检测EOC引脚是否变为高电平,高电平则表示ADC转换结束,转换结果可读。(2)中断方式可将EOC通过反相器后与单片机外部中断请求引脚连接,单片机响应中断进入中断服务程序,在中断服务程序中读取转换结果。4.ADC0809输出数字量与输入模拟电压量的关系ADC0809输入模拟电压范围为0~+5V,输出是8位数字量,即00~0xFF,转换输出数字量D与输入模拟电压Vin关系如下:D=255·Vin/5其中:转换输出数字量D为十进制数,Vin处于0~5V之间。715.ADC0809的转换工作原理讨论接口设计前,先了解单片机如何控制ADC开始转换,如何得知转换结束以及如何读入转换结果的问题。单片机控制ADC0809进行A/D转换过程如下:首先由加到C、B、A上的编码决定选择ADC0809的某一路模拟输入通道,同时产生高电平加到ADC0809的START引脚,开始对选中通道转换。当转换结束时,ADC0809发出转换结束EOC(高电平)信号。当单片机读取转换结果时,需控制OE端为高电平,把转换完毕的数字量读入到单片机内。9.2.3单片机控制ADC0809的输入采集设计下面介绍单片机扩展ADC0809芯片接口设计及软件编程。【例9-6】单片机控制ADC0809采集电源电压(由于Proteus库中无ADC0809仿真模型,仿真中由与ADC0808性能相同、可完全兼容的ADC0808代替),并将采集结果通过P1口连接的8只LED输出显示。模拟量电源电压通过可变电阻器RV1后,输入ADC0808IN2通道,通道地址线C、B、A分别连接连接单片机数据线D2、D1、D0;ADC0808的输入时钟CLK端连接外部时钟650kHz;由于P2.7端和单片机写信73号经过或非门连接启动和地址控制引脚,P2.7端和单片机读信号经过或非门连接ADC0808的输出控制端,所以可用地址0x0000作为ADC0808的地址。(1)单片机以延时方式读取ADC0808转换结果延时方式读取ADC0808转换结果电路原理图如图9-18所示,由于ADC0809芯片转换一次大约需要100us,单片机启动ADC后,可延时200us后,采集电压值,将ADC0808转换后的二进制结果取反后通过P1口输出。7475图9-18单片机以延时方式读取ADC0809转换结果参考程序如下:#include<reg51.h>#include<absacc.h>//定义绝对地址访问#defineucharunsignedchar#defineP0809XBYTE[0x0000]//ADC0809端口地址voidDelay(unsignedintx)//延时200us函数{ucharj;while(x--){for(j=0;j<25;j++);}}voidmain(void){uchartemp;76while(1){P0809=2;//启动通道2转换Delay(1);temp=P0809; P1=~temp;}}(2)单片机以查询方式读取ADC0809转换结果查询方式读取转换结果电路原理图如图9-19所示,单片机启动ADC0808后,经100us左右转换结束,EOC引脚由低电平变为高电平。电路连接EOC与P2.0引脚,通过查询P2.0引脚,一旦变高后可读ADC0808转换后的二进制结果。图9-19单片机以查询方式读取ADC0809转换结果参考程序如下:#include<reg51.h>#include<absacc.h>//定义绝对地址访问#defineucharunsignedchar#defineP0809XBYTE[0x0000]//通道0的地址sbitEOC=P2^0;voidmain(void){uchartemp;while(1){EOC=1;P0809=2;//启动通道2转换while(!EOC);temp=P0809; P1=~temp;}}80(3)单片机以中断方式控制读取ADC0809转换结果中断方式控制读取转换结果电路原理图如图9-20所示,将EOC引脚经过74LS04反相器后连接单片机外部中断1输入引脚。单片机控制ADC启动后,转换结束时EOC变为高电平后将申请外部中断,单片机可以在外部中断服务程序中读取ADC0808转换后的二进制结果并显示。图9-20单片机以中断方式读取ADC0809转换结果参考程序如下:#include<reg51.h>#include<absacc.h>//定义绝对地址访问#defineucharunsignedchar#defineP0809XBYTE[0x0000]//通道0的地址voidDelay(unsignedintx)//延时1ms函数{ucharj;while(x--){for(j=0;j<125;j++);}}voidmain(void){EA=1;ET1=1;EX1=1;
83P0809=2;//启动通道2转换while(1);// {P1=0xFF;}
}voidadcint(void)interrupt2//中断函数{uchartemp; temp=P0809; P1=~temp; P0809=2;}84【例9-7】设计单片机和ADC0809接口电路,实现一个8路模拟量输入的巡回检测系统,如图9-21所示,使用中断方式采样数据,把采样转换所得的数字量按通道号序存于片内RAM的50H~57H单元中。要求循环采集8路模拟量,并通过P1口以二进制形式显示输出通道IN0的采集结果。85图9-21一个8路模拟量输入的巡回检测系统参考程序如下:#include<reg51.h>#include<absacc.h>//定义绝对地址访问#defineucharunsignedchar#defineAD0809XBYTE[0x0000]//通道0的地址data ucharbuf[8]_at_0x50; //定义8个结果数组地址bitflag=0;uchari=0;voidmain(void){EX1=1; EA=1; P1=0xFF; AD0809=0;while(1)
87{P1=~buf[0];}//等待中断} voidadcint(void)interrupt2{buf[i]=AD0809;//接收转换结果 i++;if(i<8) {AD0809=i;//启动下一个通道返回 } else {i=0; AD0809=i; }}88【例9-8】在上例的基础上,设计单片机和AD0809接口电路,实现一个8路模拟量输入的巡回检测及数码管显示系统,如图9-22所示,使用中断方式采集数据,把采集转换所得的数字量按通道号序存于片内RAM的0x50~0x57单元中。能够循环采集8路模拟电压量,并通过4位数码管依次显示8路输入电压即时值。图9-228路模拟量输入巡回检测及数码管显示参考程序如下:#include<reg51.h>#include<absacc.h>//绝对地址访问#defineucharunsignedchar#defineAD0809XBYTE[0x0000]//AD0809端口地址data ucharsampl[8]_at_0x50; //定义8个结果数组地址ucharleddat[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,},segment[4],bt=0x01,i=0;voidDelay(unsignedintx)//延时函数{unsignedintn,j;while(x--)for(j=0;j<120;j++);}91voiddisplay() //显示函数{ucharp;for(p=0;p<4;p++){P2=bt<<p;P1=segment[p];if(p==3) //显示小数点P1=P1|0x80;Delay(1);}}voidmain(void){EX1=1; EA=1; AD0809=0;
92while(1){; } }voidadcint(void)interrupt2{unsignedintadvalue;ucharm;sampl[i]=AD0809;advalue=sampl[i]*19.608;segment[0]=leddat[advalue%10]; //计算段选码个位segment[1]=leddat[advalue/10%10]; //计算段选码十位segment[2]=leddat[advalue/100%10]; //计算段选码百位 segment[3]=leddat[advalue/1000]; //计算段选码千位
93for(m=0;m<=250;m++) {display(); }i++;if(i<8) {AD0809=i;//启动下一个通道 } else {i=0; AD0809=i; } }9.380C51单片机与串行ADC0832的接口1.ADC0832的结构与引脚ADC0832是美国NationalSemiconductor公司生产的一种8位分辨率、双通道、带SPI串行接口的ADC。供电电源5V,模拟输入电压范围是0~5V,工作频率为250kHz,典型转换时间仅为32μs,功耗为15mW。商用级芯片温宽为0°C~+70°C,工业级芯片温宽为−40°C~+85°C,由于它具有体积小、占用单片机的端口少、接口简单、兼容性强以及性价比高等优点,已得到广泛使用。95图9-23ADC0832引脚ADC0832是8只引脚的双列直插封装,其引脚排列如图9-23所示,能分别对2路模拟输入电压信号进行模-数转换,可在单端输入方式和差分输入方式下工作,输入输出电平与TTL/CMOS相兼容;其引脚和功能说明如下。(1):片选使能,低电平有效。(2)CH0:模拟输入通道0,或作为IN+/-使用。(3)CH1:模拟输入通道1,或作为IN+/-使用。(4)CLK:芯片时钟输入。(5)DI:数字信号输入,选择通道控制。(6)DO:数字信号输出,转换数据输出。(7)Vcc/REF:电源输入及参考电压输入。(8)GND:芯片参考0电位(地)。972.单片机对ADC0832的控制时序正常使用时,单片机与ADC0832接口数据线应有4条,分别是、CLK、DO、DI。电路设计时,由于DO与DI与单片机通信时,并未同时有效且通信方向相反,所以,可以将DO和DI并联后与单片机同一I/O引脚连接。单片机控制ADC转换时序如图9-24所示,说明如下。(1)当ADC0832未工作时,输入端应为高电平,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将片选端置于低电平并且保持低电平直到转换完全结束。(2)芯片开始转换工作时,由单片机向ADC0832时钟输入端CLK输入时钟脉冲。图9-24单片机控制ADC0832转换的时序
(3)单片机向DI引脚送出通道功能选择信号。在第1个时钟脉冲CLK上升沿之前,DI是高电平,表示起始信号。在第2、3个CLK上升沿之前,DI应输入2位数据用于选择通道。第3个脉冲的下降沿后,DI端的输入信号就失去作用,但要保持高电平,直到第4个CLK结束。控制选择通道情况如表9-2所示。表9-2ADC0832通道选择表102(4)单片机通过数据输出DO引脚读取转换结果。从第4个CLK下降沿开始由DO端输出转换数据最高位b7,此后每一个CLK下降沿DO端输出下一位数据。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026黑龙江哈尔滨市公安局阿城分局招聘警务辅助人员25人参考题库含答案
- 2026陕西能源职业技术学院博士招聘40人参考题库含答案
- 课件站介绍教学课件
- 案场安全培训课件
- 2026年保密知识竞赛题库440题及答案
- 2026年揉捏按摩仪项目营销方案
- 2026年智能噪声计项目评估报告
- 中医药现代化:传承与发展
- 中医治疗湿疹的草药配方
- 2026年智能楼宇设备整体更新项目评估报告
- 2026届江苏省常州市高一上数学期末联考模拟试题含解析
- 2026年及未来5年市场数据中国水质监测系统市场全面调研及行业投资潜力预测报告
- 强夯地基施工质量控制方案
- 艺考机构协议书
- 2025年12月27日四川省公安厅遴选面试真题及解析
- 2025-2030中国海洋工程装备制造业市场供需关系研究及投资策略规划分析报告
- 《生态环境重大事故隐患判定标准》解析
- 2025年度吉林省公安机关考试录用特殊职位公务员(人民警察)备考笔试试题及答案解析
- 山东高速集团有限公司2025年下半年校园招聘(339人)模拟笔试试题及答案解析
- 2025年中国作家协会所属单位公开招聘工作人员13人备考题库及一套参考答案详解
- 走进歌乐山课件
评论
0/150
提交评论