收藏 分享(赏)

ADC0804工作原理其程序.docx

上传人:HR专家 文档编号:6046832 上传时间:2019-03-25 格式:DOCX 页数:7 大小:200.15KB
下载 相关 举报
ADC0804工作原理其程序.docx_第1页
第1页 / 共7页
ADC0804工作原理其程序.docx_第2页
第2页 / 共7页
ADC0804工作原理其程序.docx_第3页
第3页 / 共7页
ADC0804工作原理其程序.docx_第4页
第4页 / 共7页
ADC0804工作原理其程序.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、2012 年 8 月 6 日星期一1 / 7前言:本文详细说明了 ADC0804 工作原理及过程,还附有一个 ADC0804 在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用 ADC0804 芯片。1、A/D 转换概念:即模数转换(Analog to DigitalConversion) ,输入模拟量(比如电压信号) ,输出一个与模拟量相对应的数字量(常为二进制形式) 。例如参考电压 VREF 为5V,采用 8 位的模数转换器时,当输入电压为 0V 时,输出的数字量为 0000 0000,当输入的电压为 5V 时,输出的数字量为 1111 1111。当输入的

2、电压从从 0V 到 5V 变化时,输出的数字量从 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 时,分

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

4、,该信WR号低电平有效,即 信号由低电平变成高电平WR时,触发一次 ADC 转换。:低电平有效,即 =0 时,DAC0804RD RD把转换完成的数据加载到 DB 口,可以通过数据端口 DB0DB7 读出本次的采样结果。VIN(+)和 VIN(- ):模拟电压输入端,单边输入时模拟电压输入接 VIN(+)端,2012 年 8 月 6 日星期一2 / 7VIN(-)端接地。双边输入时 VIN(+) 、VIN(-)分别接模拟电压信号的正端和负端。当输入的模拟电压信号存在“零点漂移电压”时,可在 VIN(-)接一等值的零点补偿电压,变换时将自动从 VIN(+)中减去这一电压。VREF/2:参考电压接

5、入引脚,该引脚可外接电压也可悬空,若外接电压,则 ADC 的参考电压为该外界电压的两倍,如不外接,则 VREF 与 Vcc 共用电源电压,此时 ADC 的参考电压即为电源电压 Vcc 的值。CLKIN 和 CLKR:外接 RC 振荡电路产生模数转换器所需的时钟信号,时钟频率 CLK = 1/1.1RC,一般要求频率范围 100KHz1460KHz。AGND 和 DGND:分别接模拟地和数字地。:转换结束输出信号,低电平有效,当一次 A/D 转换完成后,将引起 =0,实际 INTR INTR应用时,该引脚应与微处理器的外部中断输入引脚相连(如 51 单片机的 , 脚) ,INT0INT1当产生

6、信号有效时,还需等待 =0 才能正确读出 A/D 转换结果,若 ADC0804 单独使INTR RD用,则可以将 引脚悬空。INTRDB0DB7:输出 A/D 转换后的 8 位二进制结果。补充说明:ADC0804 片内有时钟电路,只要在外部“CLKIN (引脚 4) ”和“CLKR (引脚19) ”两端外接一对电阻电容即可产生 A/D 转换所要求的时钟,其振荡频率为fCLK1/1.1RC 。其典型应用参数为:R=10K,C=150PF,f CLK640KHz,转换速度为100。若采用外部时钟,则外部 fCLK 可从 CLKIN 端送入,此时不接 R、C。允许的时钟频率范围为 100KHz146

7、0KHz。4、ADC0804 工作过程如下图所示,ADC0804 的工作时序图(Timing Diagrams):(欲详细了解工作过程,可以结合 ADC0804 使用手册)图 6 给出的其实就是使 ADC0804 正确工作的软件编程模型。由图可见,实现一次 ADC 转换主要包含下面三个过程:1.启动转换:由图 6 中的上部“FIGURE 10A”可知,在 信号为低电平的情况下,将 引CS WR脚先由高电平变成低电平,经过至少 tW(WR)I 延时后,再将 引脚拉成高电平,即启动WR了一次 AD 转换。注:ADC0804 使用手册中给出了要正常启动 AD 转换 的低电平保持时间 tW(WR)IW

8、R的最小值为 100ns,即 拉低后延时大于 100ns 即可以,具体做法可通过插入 NOP 指令或者WR调用 delay()延时函数实现,不用太精确,只要估计插入的延时大于 100ns 即可。2延时等待转换结束:依然由图 6 中的上部“FIGURE 10A”可知,由拉低 信号启WR动 AD 采样后,经过 1 到 8 个 Tclk+INTERNAL Tc 延时后,AD 转换结束,因此,启动转换后必须加入一个延时以等待 AD 采样结束。注:手册中给出了内部转换时间“INTERNAL Tc ”的时间范围为 6273 个始终周期,因此延时等待时间应该至少为 8+73=81 个时钟周期。比如,若 R

9、为 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为低的前提下,将 脚由高电平拉成低电平后,经过 tACC 的延时即可从 DB 脚读出有效RD的采样结果。注:手册中给出了 tACC 的典型值和最大值分别为 135ns 和 2

10、00ns,因此将 引脚拉RD2012 年 8 月 6 日星期一3 / 7低后,等待大于 200ns 后即可从 DB 读出有效的转换结果。具体做法可通过插入 NOP 指令或者调用 delay()延时函数实现,不用太精确,只要估计插入的延时大于 200ns 即可。图 6:ADC0804 手册给出的 ADC 转换时序图2012 年 8 月 6 日星期一4 / 7图 7:ADC0804 手册给出的电器特性表对采样值进行运算变换,换算出实际的滑动变阻器输入电压值。对于任何一个 A/D 采样器而言,其转换公式如下:()maxDspleVoutVrf其中:输入 ADC 的模拟电压值。t:ADC 转换后的二进

11、制值。本试验的 ADC0804 为八位。saple:ADC 能够表示的刻度总数。ADC0804 为八位 ADC,因此mxD 8max256D:ADC 参考电压值,本试验 ADC0804 的 被设置为 5VVref Vref因此,对于本试验,转换公式为 ()526sapleoutV5、ADC0804 在单片机中的简单应用举例如下图所示,本例 ADC0804 中的 VCC=5V, VREF/2 引脚悬空(悬空则相当于与VCC 共接 5V 电源) ,因此 ADC 转换的参考电压为 VCC 的值,即 5V。VIN-接地,而VIN+连接滑动变阻器 RV1 的输出,因此 VIN+的电压输入范围为 0V5V

12、,正好处于参考电压范围内。2012 年 8 月 6 日星期一5 / 7引脚 接地, 和 分别连接单片机的 P36 和 P37 引脚,而 DB0DB7 连接单片机CS WRRD的 P1 口.P0 口接数码管的段选线,P2 口低四位接数码管的位选线。程序主要实现以下功能:(1)控制 ADC0804 芯片对 VIN(+)引脚输入的电压值进行正确采样,读取采样结果。(2)对采样值进行模数变换,将转换后数字量后显示在 4 段数码管上。C 程序如下:#include #include #define uint unsigned int#define uchar unsigned charsbit wr=P

13、36;sbit rd=P37;uchar code dis=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共阳显示代码void delay(uint x) /延时函数 delay(1)延时 0.992ms,大约为 1msuchar i;while(x-)for(i=0;i120;i+);2012 年 8 月 6 日星期一6 / 7void display(uchar db) /数码管显示函数,用于显示模数转换后得到的数字量uchar bw,sw,gw; /bw,sw,gw 分别等于 db 百位,十位,个位上的数bw=db/100;sw=d

14、b%100/10;gw=db%10;P2=0x01; /点亮第一只数码管P0=disbw /最高位置 0,点亮第一只数码管的小数点,delay(5);P2=0x02; /点亮第二只数码管P0=dissw;delay(5);P2=0x04; /点亮第三只数码管P0=disgw;delay(5); P2=0x08; /点亮第四只数码管P0=dis0; /第四只数码管一直显示 0delay(5); void main()uchar i;while(1)wr=0; /在片选信号 CS 为低电平情况下(由于 CS 接地,所以始终为低电平) ,_nop_(); /WR 由低电平到高电平时,即上升沿时,AD

15、 开始采样转换wr=1;delay(1); /延时 1ms,等待采样转换结束P1=0xff; /这条语句不能少,我也还不知道为什么rd=0; /将 RD 脚置低电平后,再延时大于 135ns 左右(这里延时 1us) ,_nop_(); /即可从 DB 脚读出有效的采样结果,传送到 P1 口for(i=0;i10;i+) /刷新显示一段时间display(P1); /显示从 DB 得到的数字量 Proteus 仿真运行结果如下:2012 年 8 月 6 日星期一7 / 76、上述 Proteus 仿真文件下载地址: http:/ 7、参考文献1彭伟.单片机 C 语言程序设计实训 100 例.北京: 电子工业出版社.2009 2贾振国,许琳.智能化仪器仪表原理及应用.北京:中国水利水电出版社.2011

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报