ADC0804

前言:本文详细说明了ADC0804工作原理及过程,还附有一个ADC0804在单片机中的典型应用,包含原理图,源程序,程序注释详细清楚,这有助于更好地理解与应用ADC0804芯片。

本文引用了百度文库一篇文章,原文链接:
https://wenku.baidu.com/view/823c5913964bcf84b9d57b78.html?wkts=1672974785358

文章目录

  • ADC0804
    • A/D转换概念
    • 分辨率概念
    • ADC0804引脚功能
    • ADC0804工作过程
    • ADC0804在单片机中的简单应用举例
    • 上述Proteus仿真文件下载地址
    • 参考文献

A/D转换概念

即模数转换(Analog to DigitalConversion),输入模拟量(比如电压信号),输出一个与模拟量相对应的数字量(常为二进制形式)。例如参考电压VREF为5V,采用8位的模数转换器时,当输入电压为0V时,输出的数字量为0000 0000,当输入的电压为5V时,输出的数字量为1111 1111。当输入的电压从从0V到5V变化时,输出的数字量从0000 0000到1111 1111变化。这样每个输入电压值对应一个输出数字量,即实现了模数转换。

分辨率概念

分辨率是指使输出数字量变化1时的输入模拟量,也就是使输出数字量变化一个相邻数码所需输入模拟量的变化值。

分辨率与A/D转换器的位数有确定的关系,可以表示成FS / 2 n 。FS表示满量程输入值,n为A/D转换器的位数。

例如,对于5V的满量程,采用4位的ADC时,分辨率为5V/16=0.3125V (也就是说当输入的电压值每增0.3125V,输出的数字量增加1);采用8位的ADC时,分辨率为5V/256=19.5mV(也就是说当输入的电压值每增加19.5mV,则输出的数字量增加1);当采用12位的ADC时,分辨率则为5V/4096=1.22mV(也就是说当输入的电压值每增加1.22mV ,则输出的数字量增加1)。显然,位数越多,分辨率就越高。

ADC0804引脚功能


CS: 芯片片选信号,低电平有效。即=0时,该芯片才能正常工作,高电平时芯片不工作。在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。
)

WR:启动ADC0804进行ADC采样,该信号低电平有效,即信号由低电平变成高电平时,触发一次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:分别接模拟地和数字地。

INTR:转换结束输出信号,低电平有效,当一次A/D转换完成后,将引起=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的,中断脚),当产生信号有效时,还需等待=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将引脚悬空。

DB0~DB7:输出A/D转换后的8位二进制结果。
补充说明:ADC0804片内有时钟电路,只要在外部“CLKIN(引脚4)”和“CLKR(引脚19)”两端外接一对电阻电容即可产生A/D转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。其典型应用参数为:R=10KΩ,C=150PF,fCLK≈640KHz,转换速度为100μs。若采用外部时钟,则外部fCLK可从CLKIN端送入,此时不接R、C。允许的时钟频率范围为100KHz~1460KHz。

ADC0804工作过程

时序:
ADC0804手册给出的ADC转换时序图

ADC0804手册给出的电器特性表

实现一次ADC转换主要包含下面三个过程:

1.启动转换:由时序图中的上部“FIGURE 10A”可知,在信号为低电平的情况下,将引脚先由高电平变成低电平,经过至少tW(WR)I 延时后,再将引脚拉成高电平,即启动了一次AD转换。

注:ADC0804使用手册中给出了要正常启动AD转换的低电平保持时间tW(WR)I的最小值为100ns,即拉低后延时大于100ns即可以,具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于100ns即可。

2.延时等待转换结束:依然由时序图中的上部“FIGURE 10A”可知,由拉低信号启动AD采样后,经过1到8个Tclk+INTERNAL Tc延时后,AD转换结束,因此,启动转换后必须加入一个延时以等待AD采样结束。

注:手册中给出了内部转换时间“INTERNAL Tc”的时间范围为62~73个始终周期,因此延时等待时间应该至少为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.读取转换结果:由时序图的下部“FIGURE 10B”可知,采样转换完毕后,在信号为低的前提下,将脚由高电平拉成低电平后,经过tACC的延时即可从DB脚读出有效的采样结果。

注:手册中给出了tACC的典型值和最大值分别为135ns和200ns,因此将引脚拉低后,等待大于200ns后即可从DB读出有效的转换结果。具体做法可通过插入NOP指令或者调用delay()延时函数实现,不用太精确,只要估计插入的延时大于200ns即可。

对采样值进行运算变换,换算出实际的滑动变阻器输入电压值。
对于任何一个A/D采样器而言,其转换公式如下:

其中:
Vout: 输入ADC的模拟电压值。
Dsample:ADC转换后的二进制值。本试验的ADC0804为八位。
Dmax:ADC能够表示的刻度总数。ADC0804为八位ADC,因此Dmax=28=256
Vref:ADC参考电压值,本试验ADC0804的Vref被设置为5V
因此,对于本试验,转换公式为

ADC0804在单片机中的简单应用举例

如下图所示,本例ADC0804中的VCC=5V, VREF/2引脚悬空(悬空则相当于与VCC共接5V电源),因此ADC转换的参考电压为VCC的值,即5V。VIN-接地,而VIN+连接滑动变阻器RV1的输出,因此VIN+的电压输入范围为0V~5V,正好处于参考电压范围内。
引脚接地, 和分别连接单片机的P3^6和P3^7引脚,而DB0~DB7连接单片机的P1口.
P0口接数码管的段选线,P2口低四位接数码管的位选线。

程序主要实现以下功能:
(1)控制ADC0804芯片对VIN(+)引脚输入的电压值进行正确采样,读取采样结果。
(2)对采样值进行模数变换,将转换后数字量后显示在4段数码管上。
C程序如下:

#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit wr=P3^6;
sbit rd=P3^7;
uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳显示代码
void delay(uint x) //延时函数 delay(1)延时0.992ms,大约为1ms
{uchar i;while(x--)for(i=0;i<120;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=dis[bw]&0x7f; //最高位置0,点亮第一只数码管的小数点,delay(5);P2=0x02; //点亮第二只数码管P0=dis[sw];delay(5);P2=0x04;  //点亮第三只数码管P0=dis[gw];delay(5);  P2=0x08;   //点亮第四只数码管P0=dis[0]; //第四只数码管一直显示0  delay(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;i<10;i++) //刷新显示一段时间display(P1); //显示从DB得到的数字量 }
}

Proteus仿真运行结果如下:

上述Proteus仿真文件下载地址

链接:https://pan.baidu.com/s/1T8m7dvd1maeFnmOnoHGAKQ
提取码:o42a
–来自百度网盘超级会员V4的分享

参考文献

[1]彭伟.单片机C语言程序设计实训100例.北京:电子工业出版社.2009
[2]贾振国,许琳.智能化仪器仪表原理及应用.北京:中国水利水电出版社.2011

ADC0804工作原理及过程相关推荐

  1. ccd视觉定位教程_ccd视觉定位系统工作原理及过程

    ccd视觉定位系统工作原理及过程 ccd视觉定位由于数字图像处理和计算机视觉技术的迅速发展,越来越多的研究者采用摄像机作为全自主用移动机器人的感知传感器.这主要是因为原来的超声或红外传感器感知信息量有 ...

  2. 通信网络中DNS服务器的位置在哪,DNS服务器的工作原理及其过程

    DNS服务器所提供的服务是完成将主机名和域名转换为IP地址的工作.为什么需要将主机名和域名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是便 ...

  3. DNS工作原理及过程讲解

    0x00前言 想必大家都知道当今上网浏览web页面或访问其他服务一般都是用域名来访问的,这是由于IP地址不容易记住而且使用不方便,这时候科学家们就发明了域名,从而衍生出了各种大大小小的域名解析服务器( ...

  4. Servlet学习笔记-Servlet工作原理和过程

    1.前言   Java Servlet技术简称Servlet技术,是Java开发Web应用的底层技术.由Sun公司于1996年发布,用来代替CGI--当时生成Web动态内容的主流技术.官方文档对Ser ...

  5. DHCP的工作原理及过程

    本篇博客是对DHCP的一些原理介绍,具体实验过程请查询 基于linux下的DHCP实验 一.什么是DHCP? DHCP,动态主机配置协议,前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工 ...

  6. DNS工作原理及其过程

    DNS服务器所提供的服务是完成将主机名或域名转换为IP地址的工作.为什么需要将主机名或域名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是便 ...

  7. ADC0804工作原理

    这种芯片一共有20个引脚,首先简单的介绍各个引脚的作用以及功能,以便后面编码的时候理解. Vin(+),Vin(-):两模拟信号输入端 DB7~DB0:具有三态特性数字信号输出口. AGND:模拟信号 ...

  8. matlab立体坐标定位_【光电视界】视觉导航定位系统工作原理及过程

    今日光电        有人说,20世纪是电的世纪,21世纪是光的世纪:知光解电,再小的个体都可以被赋能.欢迎来到今日光电! ----与智者为伍 为创新赋能---- 当今,由于数字图像处理和计算机视觉 ...

  9. 视觉导航定位系统工作原理及过程

    当今,由于数字图像处理和计算机视觉技术的迅速发展,越来越多的研究者采用摄像机作为全自主用移动机器人的感知传感器.这主要是因为原来的超声或红外传感器感知信息量有限,鲁棒性差,而视觉系统则可以弥补这些缺点 ...

  10. 计算机工作在原理课件,滇人版七年级信息技术下册第一单元第一课第三课时计算机工作原理.ppt...

    1 计算机工作原理 一.教学目标: 1.知识目标: (1)掌握计算机工作的几个基本过程: (2)认识冯诺依曼型体系的计算机结构: (3)了解计算机工作原理: 2.能力目标 (1)培养学生研究计算机工作 ...

最新文章

  1. bit,byte,汉字,KB,MB,GB,TB...
  2. php链接数据库实行增删查改_利用PHP连接数据库——实现用户数据的增删改查的整体操作实例...
  3. Java笔记-Spring-rabbitmq中设置receiveMessage参数为Message
  4. 关于在MathType中内置样式的一些小知识
  5. 杭电2067小兔的棋盘
  6. eclipse配置glassfish、将一个WEB项目部署到glassfigh
  7. Asp.net MVC3 Razor语法小记
  8. 解决getJSON跨域登录Session丢失的问题
  9. 如何部署windows服务?
  10. 概率论速成-基于mooc
  11. 计算机软件购销合同模版,软件销售合同范本
  12. SPSS描述性统计分析
  13. 21个终身受用的顶级思维
  14. 焦作大学对口计算机分数线,焦作大学录取分数线|2021焦作大学分数线|2021年焦作大学高考分数线|2021年焦作大学招生计划录取人数...
  15. 程序员如何恢复被清空的回收站——记录一下
  16. ASP木马Webshell安全解决办案
  17. Jemter+Badboy实战经验一(Badboy录制及基础功能)
  18. ASCII码与字符移动
  19. 解决git报错fatal: Authentication failed for ‘http://10.10.208.29/root/xmh.git/‘
  20. 一个坑firewall-cmd: error: unrecognized arguments

热门文章

  1. 如何分配资源和管理资源
  2. 关于百度机器人搜索你网站的页面权限设置
  3. Git版本管理工具使用知识汇总
  4. win10 下安装wampserver 的几个坑
  5. Win系统 - 如何查看电脑有几个内存条插槽?
  6. 无需安装软件架设NOD32升级服务器指南!
  7. 如何在C++中删除文件
  8. flutter shared_preferences 异步变同步
  9. python读取excel一行一行的读取_python读取excel数据
  10. Swift3.0学习笔记-Error Handling