一、实物图

二、原理图

编号 名称 功能
1 CS 片选使能,低电平芯片使能。
2 CH0 模拟输入通道0,或作为IN+/-使用。
3 CH1 模拟输入通道1,或作为IN+/-使用。
4 GND 电源地
5 DI 数据信号输入,选择通道控制。
6 DO 数据信号输出,转换数据输出。
7 CLK 芯片时钟输入。
8 VCC/REF 电源输入及参考电压输入(复用)。

为什么DO和DI引脚连在一个引脚上?

由于ADC0832在通信时并不是会同时使用DO和DI端口,并且DO和DI端口与单片机的接口是双向的,所以在设计电路中可以用一根线将DO端和DI端连接到一起。

三、简介(ADC:Analog Digital Converter)

ADC是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。

计算公式:

电器参数:

  • 8位分辨率;
  • 双通道 A/D 转换;
  • 输入输出电平与 TTL/CMOS 相兼容;
  • 5V电源供电时输入电压在 0~5V 之间;
  • 工作频率为 250KHZ,转换时间为 32μS;
  • 一般功耗仅为15mW;
  • 8P、14P—DIP(双列直插)、SOP多种封装;
  • 商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85°C;

四、内部框图

五、通信协议

ADC0832的外部连接采用SPI总线结构,这样便把它的连接方式与其他设备统一起来了。

ADC0832采用同步串行传输,同步是通过时钟线进行数据同步;串行传输通过DO 数据口一位一位传输数据。

六、通道配置

当配置位2位数据为1、0时,只对CH0 进行单通道转换。当配置2位数据为1、1时,只对CH1进行单通道转换。当配置2位数据为0、0时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入,输出为两端的压差。当配置2位数据为0、1时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入,输出为两端的压差。

七、时序解析

由工作时序图可知:当芯片不进行模数转换时,片选端CS需要置1。在当芯片需要模数转换时,片选端CS需要置0,并且需要持续到模数转换完成。芯片使能选通后,在第1个CLK下降沿到来之前,DI需要置1,这意味着开始转换。之后在下两个CLK下降沿到来之前,DI需输入两位选择A/D转换器4个工作通道模式的数据。到这一步,本次模数转换中DI端工作部分已完成,不再输入数据,而是由DO端进行工作。在随后的CLK下降沿到来之前开始输出转换后的数字信号,先输出8位数据的最高位,之后在每一个CLK下降沿到来之前依次输出数据的一位,直到输出8位数据的最低位;随后的每一个CLK下降沿到来之前依次输出相反字节的数据次低位到最高位,这就完成了一次A/D转换。在编程时会比较两次输出的8位数据是否一致,若一致说明A/D转换数据没有错误,就会将其数据保存下来。

代码如下:

/****

*******获取adc值函数

*******参量定义:CH:通道数  0:通道0   1:通道1

*******返回值:adc值

*****/

uint Adc0832_Get_Value(uchar CH)

{

uchar i, data1=0, data2=0;

ADC_CS = 0;                   //使能ADC0832

//初始化

ADC_CLK = 0;

ADC_DATI = 1;

_nop_();

ADC_CLK = 1;

_nop_();

//通道选择

if(CH == 0)                  //通道0

{

ADC_CLK = 0;

ADC_DATI = 1;              //通道0的第一位

_nop_();

ADC_CLK = 1;

_nop_();

ADC_CLK = 0;

ADC_DATI = 0;              //通道0的第二位

_nop_();

ADC_CLK = 1;

_nop_();

}

else                         //通道1

{

ADC_CLK = 0;

ADC_DATI = 1;              //通道1的第一位

_nop_();

ADC_CLK = 1;

_nop_();

ADC_CLK = 0;

ADC_DATI = 1;              //通道1的第二位

_nop_();

ADC_CLK = 1;

_nop_();

}

ADC_CLK = 0;

ADC_DATI = 1;

_nop_();

for(i=0; i<8; i++)         //读取前8位的值

{

ADC_CLK = 1;

_nop_();

ADC_CLK = 0;

_nop_();

data1 = (data1 << 1) | (uchar)ADC_DATO;

}

for (i=0; i<8; i++)       //读取后8位的值

{

data2 = data2 | (uchar)ADC_DATO << i;

ADC_CLK = 1;

_nop_();

ADC_CLK = 0;

_nop_();

}

ADC_CS = 1;                   //释放ADC0832

return (data1 == data2) ? data1 : 0;      //两次数据是否一致,一致则输出数据,否则输出0

}

八、流程设计

首先初始化引脚,然后CS拉低使能ADC,接着DI拉高开始转换,先配置通道,如果是通道0,则通道选择第一位和第二位分别置1和0;如果是通道1,则通道选择第一位和第二位分别置1和1。配置好通道后,开始读取前8位数据,然后读取后8位数据,数据读取完后CS拉高释放ADC。最后判断前8位数据是否等于后8位数据,如果相等,则返回数据,如果不等,则返回0。

【mcuclub】模数转换ADC0832相关推荐

  1. 基于ADC0832模数转换+数码管/LCD显示+proteus仿真

    目录 前言: ADC0832时序图: ADC0832模数转换 数码管显示函数代码 LCD1602显示函数 主函数 proteus仿真图 前言: 模数A/D转换理论知识持续学习:2022--7--24 ...

  2. 24 基于单片机空气PM2.5浓度粉尘颗粒物检测系统设计

    本设计系统以 AT89C52 单片机为基本核心,主要包括粉尘传感器采集模块,A/D 模数转换ADC0832模块,单片机作为控制模块,显示屏作为显示模块.设计系统通过传感器电路检测PM2.5粉尘信息,由 ...

  3. 51单片机ADC0832模数转换+ LCD1602显示+Proteus仿真

    51单片机ADC0832模数转换+ LCD1602显示+Proteus仿真 Proteus仿真 在Proteus SP2仿真过程中发现无法读取ADC0832的数据.解决办法:在proteus安装目录下 ...

  4. ADC0832的AD模数转换原理及编程

    ✅作者简介:嵌入式领域优质创作者,博客专家 ✨个人主页:咸鱼弟

  5. 51单片机 ADC0832酒精传感器

    ADC0832 环境: 软件: uVision proteus 芯片 80c51 ADC0832.LCD1602 仿真图 相关函数编写电平时 代码 1602 头文件 #include<reg51 ...

  6. 模数转换,你必须知道的8个经典ADC转换电路方案

    模数转换器即A/D转换器,或简称ADC,通常是指一个将模拟信号转变为数字信号的电子元件.通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号.由于数字信号本身不具有实际意义,仅仅表示一个相对大 ...

  7. adc0804模数转换实验报告_51proteus仿真:adc0804实现模数转换

    原标题:51proteus仿真:adc0804实现模数转换 系统采集到的信号,几乎都是模拟信号.学习单片机的模拟数字ad转换是必须的. 这个仿真就是利用把模拟电压转换为数字信号,然后再输出到数码管. ...

  8. ADC0832测电阻原理及51单片机1602显示

    前言:今天中午和高中老同学一起吃了个饭,同学计算机专业代码大佬,问起我有没有CSDN,我说有些时候会在上面看一些程序,他随即向我说起了他已经在CSDN上发表了很多文章目前排名一万多,因为我学集成电路专 ...

  9. adc0808温度换算公式_adc0808模数转换电路图及程序

    ADC0808是采样分辨率为8位的.以逐次逼近原理进行模/数转换的器件.其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换.ADC0808是AD ...

最新文章

  1. Centos7 安装Mini后相关配置
  2. ubuntu 安装Gogland
  3. linux 如何以树形结构显示文件目录结构
  4. [渝粤教育] 西南科技大学 高等数学1 在线考试复习资料
  5. a*算法matlab代码_NSGAII多目标优化算法讲解(附MATLAB代码)
  6. 繁体字_如何简单快速地批量认识繁体字?
  7. 安卓 SQLite error:SQLite database locked exception while compling : PRAGMA journal_mode .....
  8. java-web乱码问题解决
  9. mysql root拿shell_mysql的几种获取shell和提权的方式
  10. php中的$_get参数带分号,PHP中GET传参,各参数之间使用分号(;)符号进行分隔。...
  11. “高校”行业智能运维解决方案解析(含落地实践)
  12. 【排序(C++实现)】:二分归并排序
  13. 网分测花岗岩介电常数测试方案
  14. 001-电脑操作规范-2019年03月.doc
  15. 花生壳配置域名以及公网ip
  16. Lua FFI 实战
  17. 经典再现,看到就是赚到。尚硅谷雷神 - SpringBoot 2.x 学习笔记 - 核心功能篇
  18. window 下蓝牙开发
  19. Monkey常见面试问题
  20. 风头正劲 | 徕芬第三代吹风机正式官宣,1月13日发布

热门文章

  1. 进程之joinableQueue
  2. 使用iMX53 IPU SISG功能控制摄像头闪光灯
  3. WPF嵌入技术1_嵌入WPF到cad(MFC,win32窗体),Win32API嵌入WPF位置跳走的解决方案
  4. 我最欣赏的一句话:天道酬勤
  5. c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
  6. 二进制和 四,八,十,十六,三十二进制的转换
  7. 顺口溜:国足欢迎你(贬)
  8. 十进制换算成二进制、八进制、十六进制
  9. JavaScript HSL拾色器
  10. 如何避免数据湖变成数据沼泽