ADC0804工作原理其程序

上传人:优*** 文档编号:41413516 上传时间:2021-11-20 格式:DOCX 页数:7 大小:198.39KB
收藏 版权申诉 举报 下载
ADC0804工作原理其程序_第1页
第1页 / 共7页
ADC0804工作原理其程序_第2页
第2页 / 共7页
ADC0804工作原理其程序_第3页
第3页 / 共7页
资源描述:

《ADC0804工作原理其程序》由会员分享,可在线阅读,更多相关《ADC0804工作原理其程序(7页珍藏版)》请在装配图网上搜索。

1、 真诚为您提供优质参考资料,若有不当之处,请指正。前言:本文详细说明了ADC0804工作原理及过程,还附有一个ADC0804在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用ADC0804芯片。1、A/D转换概念:即模数转换(Analog to DigitalConversion),输入模拟量(比如电压信号),输出一个与模拟量相对应的数字量(常为二进制形式)。例如参考电压VREF为5V,采用8位的模数转换器时,当输入电压为0V时,输出的数字量为0000 0000,当输入的电压为5V时,输出的数字量为1111 1111。当输入的电压从从0V到5V变化时,输出的数

2、字量从0000 0000到1111 1111变化。这样每个输入电压值对应一个输出数字量,即实现了模数转换。2、分辨率概念:分辨率是指使输出数字量变化1时的输入模拟量,也就是使输出数字量变化一个相邻数码所需输入模拟量的变化值。分辨率与A/D转换器的位数有确定的关系,可以表示成FS / 2 n 。FS表示满量程输入值,n为A/D转换器的位数。例如,对于5V的满量程,采用4位的ADC时,分辨率为5V/16=0.3125V (也就是说当输入的电压值每增加0.3125V,输出的数字量增加1);采用8位的ADC时,分辨率为5V/25619.5mV(也就是说当输入的电压值每增加19.5mV,则输出的数字量增

3、加1);当采用12位的ADC时,分辨率则为5V/40961.22mV(也就是说当输入的电压值每增加1.22mV ,则输出的数字量增加1)。显然,位数越多,分辨率就越高。3、ADC0804引脚功能:CS:芯片片选信号,低电平有效。即CS=0时,该芯片才能正常工作,高电平时芯片不工作。在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。WR:启动ADC0804进行ADC采样,该信号低电平有效,即WR信号由低电平变成高电平时,触发一次ADC转换。RD:低电平有效,即RD=0时,DAC0804把转换完成的数据

4、加载到DB口,可以通过数据端口DB0DB7读出本次的采样结果。VIN(+)和VIN(-):模拟电压输入端,单边输入时模拟电压输入接VIN(+)端,1 / 7VIN(-)端接地。双边输入时VIN(+)、VIN(-)分别接模拟电压信号的正端和负端。当输入的模拟电压信号存在“零点漂移电压”时,可在VIN(-)接一等值的零点补偿电压,变换时将自动从VIN(+)中减去这一电压。VREF/2:参考电压接入引脚,该引脚可外接电压也可悬空,若外接电压,则ADC的参考电压为该外界电压的两倍,如不外接,则VREF与Vcc共用电源电压,此时ADC的参考电压即为电源电压Vcc的值。CLKIN和CLKR:外接RC振荡电

5、路产生模数转换器所需的时钟信号,时钟频率CLK = 1/1.1RC,一般要求频率范围100KHz1460KHz。AGND和DGND:分别接模拟地和数字地。 INTR:转换结束输出信号,低电平有效,当一次A/D转换完成后,将引起INTR=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的INT0,INT1脚),当产生INTR信号有效时,还需等待RD=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将INTR引脚悬空。DB0DB7:输出A/D转换后的8位二进制结果。补充说明:ADC0804片内有时钟电路,只要在外部“CLKIN(引脚4)”和“CLKR(引脚19)

6、”两端外接一对电阻电容即可产生A/D转换所要求的时钟,其振荡频率为fCLK1/1.1RC。其典型应用参数为:R=10K,C=150PF,fCLK640KHz,转换速度为100。若采用外部时钟,则外部fCLK可从CLKIN端送入,此时不接R、C。允许的时钟频率范围为100KHz1460KHz。4、ADC0804工作过程如下图所示,ADC0804的工作时序图(Timing Diagrams):(欲详细了解工作过程,可以结合ADC0804使用手册)图6给出的其实就是使ADC0804正确工作的软件编程模型。由图可见,实现一次ADC转换主要包含下面三个过程:1.启动转换:由图6中的上部“FIGURE 1

7、0A”可知,在CS信号为低电平的情况下,将WR引脚先由高电平变成低电平,经过至少tW(WR)I 延时后,再将WR引脚拉成高电平,即启动了一次AD转换。注:ADC0804使用手册中给出了要正常启动AD转换WR的低电平保持时间tW(WR)I的最小值为100ns,即WR拉低后延时大于100ns即可以,具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于100ns即可。2延时等待转换结束:依然由图6中的上部“FIGURE 10A”可知,由拉低WR信号启动AD采样后,经过1到8个Tclk+INTERNAL Tc延时后,AD转换结束,因此,启动转换后必须加入一

8、个延时以等待AD采样结束。注:手册中给出了内部转换时间“INTERNAL Tc”的时间范围为6273个始终周期,因此延时等待时间应该至少为8+73=81个时钟周期。比如,若R为150K, C为150pF,则时钟频率为Fclk=1/1.1RC=606KHz,因此时钟周期约为Tclk=1/Fclk=1.65us。所以该步骤至少应延时81*Tclk=133.65us. 具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于133.65us即可。3.读取转换结果:由图6的下部“FIGURE 10B”可知,采样转换完毕后,在CS信号为低的前提下,将RD脚由高电

9、平拉成低电平后,经过tACC的延时即可从DB脚读出有效的采样结果。注:手册中给出了tACC的典型值和最大值分别为135ns和200ns,因此将RD引脚拉低后,等待大于200ns后即可从DB读出有效的转换结果。具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于200ns即可。图6:ADC0804手册给出的ADC转换时序图图7:ADC0804手册给出的电器特性表对采样值进行运算变换,换算出实际的滑动变阻器输入电压值。对于任何一个A/D采样器而言,其转换公式如下:其中:输入ADC的模拟电压值。:ADC转换后的二进制值。本试验的ADC0804为八位。:A

10、DC能够表示的刻度总数。ADC0804为八位ADC,因此:ADC参考电压值,本试验ADC0804的被设置为5V因此,对于本试验,转换公式为5、ADC0804在单片机中的简单应用举例如下图所示,本例ADC0804中的VCC=5V, VREF/2引脚悬空(悬空则相当于与VCC共接5V电源),因此ADC转换的参考电压为VCC的值,即5V。VIN-接地,而VIN+连接滑动变阻器RV1的输出,因此VIN+的电压输入范围为0V5V,正好处于参考电压范围内。引脚CS接地, WR和RD分别连接单片机的P36和P37引脚,而DB0DB7连接单片机的P1口.P0口接数码管的段选线,P2口低四位接数码管的位选线。程

11、序主要实现以下功能:(1)控制ADC0804芯片对VIN(+)引脚输入的电压值进行正确采样,读取采样结果。(2)对采样值进行模数变换,将转换后数字量后显示在4段数码管上。C程序如下:#include #include #define uint unsigned int#define uchar unsigned charsbit wr=P36;sbit rd=P37;uchar code dis=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共阳显示代码void delay(uint x) /延时函数 delay(1)延时0.992ms,

12、大约为1ms uchar i; while(x-) for(i=0;i120;i+);void display(uchar db)/数码管显示函数,用于显示模数转换后得到的数字量 uchar bw,sw,gw;/bw,sw,gw分别等于db百位,十位,个位上的数bw=db/100;sw=db%100/10;gw=db%10;P2=0x01; /点亮第一只数码管P0=disbw&0x7f; /最高位置0,点亮第一只数码管的小数点,delay(5);P2=0x02; /点亮第二只数码管P0=dissw;delay(5);P2=0x04; /点亮第三只数码管P0=disgw;delay(5); P2

13、=0x08; /点亮第四只数码管P0=dis0; /第四只数码管一直显示0delay(5); void main()uchar i;while(1)wr=0;/在片选信号CS为低电平情况下(由于CS接地,所以始终为低电平),_nop_(); /WR由低电平到高电平时,即上升沿时,AD开始采样转换wr=1;delay(1); /延时1ms,等待采样转换结束P1=0xff; /这条语句不能少,我也还不知道为什么rd=0;/将RD脚置低电平后,再延时大于135ns左右(这里延时1us),_nop_(); /即可从DB脚读出有效的采样结果,传送到P1口for(i=0;i10;i+) /刷新显示一段时间display(P1); /显示从DB得到的数字量 Proteus仿真运行结果如下:6、上述Proteus仿真文件下载地址: 7、参考文献1彭伟.单片机C语言程序设计实训100例.北京:电子工业出版社.2009 2贾振国,许琳.智能化仪器仪表原理及应用.北京:中国水利水电出版社.2011 温馨提示:最好仔细阅读后才下载使用,万分感谢!

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

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

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


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