视频放大后不清晰,可将鼠标放在视频上,右上角出现“去bilibili观看”进行点击,转到B站观看清晰版本

一、实物图

二、原理图

 

编号 名称 功能
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。

发表评论

后才能评论

本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。

最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或联络我们。

对于会员专享、整站源码、程序插件、网站模板、网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。

如果您已经成功付款但是网站没有弹出成功提示,请联系站长提供付款信息为您处理

源码素材属于虚拟商品,具有可复制性,可传播性,一旦授予,不接受任何形式的退款、换货要求。请您在购买获取之前确认好 是您所需要的资源