ADC0804工作原理其程序_第1页
ADC0804工作原理其程序_第2页
ADC0804工作原理其程序_第3页
ADC0804工作原理其程序_第4页
ADC0804工作原理其程序_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

前言:本文详细说明了ADC0804工作原理及过程,还附有一个ADC0804在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用ADC0804芯片。1、 A/D转换概念:即模数转换(AnalogtoDigita1Conversion),输入模拟量(比如电压信号),输岀一个与模拟量相对应的数字量(常为二进制形式)。例如参考电压VREF为5V,采用8位的模数转换器时,当输入电压为0V时,输出的数字虽:为00000000,当输入的电压为5V时,输出的数字疑为11111111o当输入的电压从从0V到5V变化时,输岀的数字呈:从00000000到1111 1111变化。这样每个输入电压值对应一个输岀数字量,即实现了模数转换。2、 分辨率概念:分辨率是指使输出数字疑变化1时的输入模拟量,也就是使输出数字量变化一个相邻数码所需输入模拟量的变化值。分辨率与A/D转换器的位数有确定的关系,可以表示成FS/ 2noFS表示满量CSvcc丽DBO(LSB)WRDB1CLKINDB2INTRDB3AGNDDB4DGNDDB5VREF/2DB6CLKRDB7(MSB)VIN+VIN-ADC0804-087654321 CM1.1—^11.1.1—11.•••・••••••・••••••10~919程输入值,n为A/D转换器的位数。例如,对于5V的满屋程,采用4位的ADC时,分辨率为5V/16=0.3125V他就是说“1输入的电压值每增加0.3125V,输出的数字量增加1);采用8位的ADC时,分辨率为5V/256=19.5mV(也就是说当输入的电压值每增加19.5mV,则输岀的数字量增加1);当采用12ADC0804-087654321 CM1.1—^11.1.1—11.•••・••••••・••••••10~9193、 ADC0804引脚功能:CS:芯片片选信号,低电平有效。即西=0时,该芯片才能正常工作,高电平时芯片不工作。在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。6~7WR:启动ADC0804进行ADC6~7信号低电平有效,KPWR信号由低电平变成髙电平时,触发一次ADC转换。RD:低电平有效,即辰0时,DAC0804把转换完成的数据加载到DB口,可以通过数据端口DB0〜DB7读出本次的采样结果。VIN(+)和VIN(-):模拟电压输入端,单边输入时模拟电压输入接VIN(+)端,VIN(-)端接地。双边输入时VIN什)、VIN(一)分別接模拟电压信号的正端和负端。.当输入的模拟电压信号存在“零点漂移电压”时,可在VIN(-)接一等值的零点补偿电氐变换时将自动从VIN(+)中减去这一电压。VREF/2:参考电压接入引脚,该引脚可外接电压也可悬空,若外接电压,则ADC的参考电压为该外界电压的两倍,如不外接,则Vref与Vcc共用电源电压,此时ADC的参考电压即为电源电压Vcc的值。CLKIN和CLKR:外接RC振荡电路产生模数转换器所需的时钟信号,时钟频率CLK=1/1.1RC,—般要求频率范围100KHz〜1460KHz。AGND和DGND:分别接模拟地和数字地。丽祁:转换结束输出信号,低电平有效,当一次A/D转换完成后,将引起而丢0、实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的而©而耳脚),当产生而沅信号有效时,还需等待而=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将而诵引脚悬空。DB0〜DB7:输出A/D转换后的8位二进制结果。补充说明:ADC0804片内有时钟电路,只要在外部“CLK1N(引脚4)”和“CLKR(引脚19)”两端外接一对电阻电容即可产生A/D转换所要求的时钟,其振荡频率为f<LK^1/1.1RC。苴典型应用参数为:R=10KQ,C=150PF,f<LK~640K11z,转换速度为100us。若采用外部时钟,则外部fox可从CLKIN端送入,此时不接R、C。允许的时钟频率范帼为lOOKlIz〜1460KHz°4、ADC0804工作过程如下图所示,ADC0804的工作时序图(TimingDiagrams):(欲详细了解工作过程,可以结合ADC0804使用手册)图6给岀的其实就是使ADC0804正确工作的软件编程模型。由图可见,实现一次ADC转换主要包含下而三个过程:1.启动转换:由图6中的上部“FIGURE10A”可知,在厉信号为低电平的情况下,将丽引脚先由髙电平变成低电平,经过至少tW(WR)I延时后,再将丽引脚拉成高电平,即启动了一次AD转换。注:ADC0804使用手册中给出了要正常启动AD转换丽的低电平保持时间tW(WR)I的最小值为lOOiis,即蔽拉低后延时大于1OOns即可以,具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于100ns即可。2.延时等待转换结朿:依然由图6中的上部“FIGURE10A”可知,由拉低蔽信号启动AD采样后,经过1到8个Tclk+INTERNALTc延时后,AD转换结束,因此,启动转换后必须加入一个延时以等待AD采样结束。注:手册中给岀了内部转换时间“INTERNALTc”的时间范围为62〜73个始终周期,因此延时等待时间应该至少为8+73=81个时钟周期。比如,若R为150K.C为150pF.则时钟频率为Fclk=l/1.1RC=606KHz,因此时钟周期约为Tclk=l/Fclk=1.65us<>所以该步骤至少应延时81*Tclk=133.65iis.具体做法可通过插入NOP指令或者调用delayO延时函数实现,不用太精确,只要估计插入的延时大于133.65us即可。读取转换结果:由图6的下部“FIGURE10B”可知,采样转换完毕后,在厉信号为低的前提下,将而脚由髙电平拉成低电平后,经过tACC的延时即可从DB脚读出有效的采样结果。注:手册中给出了tACC的典型值和最大值分別为135ns和200ns,因此将而引脚

拉低后,等待大于200ns后即可从DB读岀有效的转换结果。具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估il•插入的延时大于200ns即可。TimingDiagramscsACTUALINTERNALSTATUSOFTHECONVERTERDJTRnmresetNTS2222221OUTPUTS3L,TimingDiagramscsACTUALINTERNALSTATUSOFTHECONVERTERDJTRnmresetNTS2222221OUTPUTS3L,DATATHREE-STATE(HI-ZIfACCFIGURE10B・OUTPUTENABLEANDRESETWTR图6:ADC0804手册给岀的ADC转换时序图ElectricalSpecifications(Motes1,ElectricalSpecifications(Motes1,7)(Continued)PARAMETERTESTCONDITIONSMINTYPMAXUNITSCONVERTERSPECIFICATIONSV*=57,-55°Cto12S°CancElk=64CKH乙UriessOtherwiseSpe^ffedTocalUnac(uete<jErrorADC08O2VREfJ2-2.S03V•■±1LSBADC08O3Vref/2AdjustedforCorrectFuScaleReadng--±1LSE*丘门2'nputResiszanceInputResistancestPin9•u•2.-kjAnalogInputVorageRange(Mete2)GNC-OOS■(V+)+0.05VDCCon*nton-WodeRejectionOverAnalogInputVoltageRange-±1/9±74LS6PcwerSupplySensitivityV-f=57l10%OverAllcwedInputVoltageRange-±1/804LSBACTIMINGSPECIFICATIONSV+=SVfand%=25°C,UnlessOlhenAseSpeofiedClockFrequency,V4-=6V|Note3)100640128CkHzV+=5V丨八640800kHzClockPeriodsperConversion(Note4).tcow62-73Cbcks/ConvCcnversionRateInFrce-RuinngM<xlc,CRIN1RiectoVvRwith6二OV,(OLK=--8欢Conv's册:fthofVSRhput(StartDuseWidth),W//RUCS=0V(Note5)100■-nsAccessTime:DelayfrorrFallingEdgeofRDtoOutputDat3\rald)?UccCL=1D0pF(UeeBsDriverICforLargerCL>135200n©fhree-S:ateControl(DeiayfromRisingEdgeccFDtomi-zstate),“H,l3HCl=1OpF.丸二10K(oeeThree-stateTestcircuns)12S250nsD6ayfromFaflinaEdaeofWRtoReseto'IKtH.twi.tpi-300450"S图7:ADC0804手册给出的电器特性表对采样值进行运算变换,换算出实际的滑动变阻器输入电压值。。对于任何一个A/D采样器而言,其转换公式如下:Vout=(Vout=(^B!L)xVrefDmax其中:“皿:输入ADC的模拟电压值。DsamPle:ADC转换后的二进制值。本试验的ADC0804为八位。Qmax:ADC能够表示的刻度总数。ADC0804为八位ADC,因此Qmax=2"=256Vref:ADC参考电压值,本试验ADC0804的被设置为5V因此,对于本试验,转换公式为DsamplexVout=( )x5V256ADC0804在单片机中的简单应用举例如下图所示,本例ADC0804中的VCC=5V,VREF/2引脚悬空(悬空则相当于与VCC共接5V电源),因此ADC转换的参考电压为VCC的值,即5V。VIN-接地,而VIN+连接滑动变阻器RV1的输岀,因此VIN+的电压输入范国为0V〜5V,正好处于参考电压范国内。引脚厉接地,WR^IRD分别连接单片机的P3人6和P3八7引脚,而DB0〜DB7连接单片机的Pl口.P0口接数码管的段选线,P2口低四位接数码管的位选线。ABCDEFGDP 12342U1EO1O•馆XTAL1FO.O/ADOFO.1/AP1FO.2/A02XTAL2FO2/AD2F0.4/AP4FO.6/AD5FO6/AD6RSTFO.7/AP7P2O/AfiF2.1/A9P2.2/A10PSENP2.3/A1\ALEP24/A12EAP2.5/A13P2.6ZA14P2.7/A16P1.0P3J0/FUDP1.1ABCDEFGDP 12342U1EO1O•馆XTAL1FO.O/ADOFO.1/AP1FO.2/A02XTAL2FO2/AD2F0.4/AP4FO.6/AD5FO6/AD6RSTFO.7/AP7P2O/AfiF2.1/A9P2.2/A10PSENP2.3/A1\ALEP24/A12EAP2.5/A13P2.6ZA14P2.7/A16P1.0P3J0/FUDP1.1P3J/TXDP仁2P22/TNT0P1.3P33flNT1PI.4P3.4/TOPI.5P3.6/HP1.6P3.6/WRP1.7P37fRDATO6C5-129•GOEZAO•TM2AC•兮朋4M•口AJj7A738-•Ed•A1-17•37D2A2 g96-•田•妁怔•35-•田• •14•34E6A5 忖箱•E6•姐•归.32--&7•A7•竹•30-1RV1k/CCrc壽DoUCLboJVD1 FVn7D厶f\QOiinINTR□MJr\Q/;AQNUDGNDVREF.^□MouUS(?0r(M3OJCLKKiaa丄Vin+VIN-Y)RD15OpFVCC卫厂|卜•Q*W•必】'• • •81kOIJVR0RD10k程序主要实现以下功能:控制ADC0804芯片对VIN(+)引脚输入的电圧值进行正确釆样,读取采样结果。对采样值进行模数变换,将转换后数字量后显示在4段数码管上。C程序如下:include<reg51.1i>include<intrins・h>defineumtunsignediiitdefineucliariinsignedcharsbitwr=P36:sbitrd=P3'7;ucharcodedis[]={Oxc0,0xf9.0xa4,0xbO,0x99,0x92,0x82.0xf8,0x80,0x90};//共阳显示代码voidde1ay(uintx)〃延时函数delay(1)延时0.992ms»大约为1nis{uchari;whi1e(x--)for(i=0;ivl20;i++)?)voiddisplay(uchardb) //数码管显示函数,用于显示模数转换后得到的数字量{Ucharbw,sw,gw;//bw,sw,gw分别等于db百位.十位,个位上的数4y\v=db/100;sw=db%100/l0;gw=db%10:P2=0x01://点亮第一只数码管P0=dis[bw]&0x7f: //最高位巻0,点亮第一只数码管的小数点,MeIay(5);P2=0x02; //点亮第二只数码管卫0=dis[sw]:»delay(5);P2=0x04; //点亮第三只数码管P0=dis[gAv];de1ay(5);卫2=0x08: //点亮第四只数码管P0=dis[0]:〃第四只数码管一直显示0・de1ay(5);}voidmamO{ucliari;win1e(1)。{owr=0:。//在片选信号CS为低电平情况下(由于CS接地,所以始终为低电平),_nop_();//W由低电平到髙电平时,即上升沿时,AD开始采样转换FT=];odelay(l);//延时1ms,等待采样转换结朿 。。P1=0xff: 〃这条语句不能少,我也还不知道为什么-rd=0;//WRD脚置低电平后,再延时大于135as左右(这里延时1us),<>_nop_0;〃即可从DB脚读出有效的采样结果,传送到P1口ofor(i=0;ivio:i++)〃刷新显示一段时间「display(Pl);//显示从DB得到的数字量。}}Proteus仿真运行结果如下:2H001234・■・・ui^ZTAL1■?CrU212_N8・3£HL31"Aflr・32・g?•■A

温馨提示

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

最新文档

评论

0/150

提交评论