很多人在使用ADC0832的时候不知怎么实现双通道AD转换,下面我将简单介绍一下,附有程序和仿真电路图。

ADC0832使用介绍:

ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用ADC0832 可是使我们了解A/D转换器的原理,有助于我们单片机技术水平的提高。

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

芯片接口说明:
· CS_ 片选使能,低电平芯片使能。
· CH0 模拟输入通道0,或作为IN+/-使用。
· CH1 模拟输入通道1,或作为IN+/-使用。
· GND 芯片参考0 电位(地)。
· DI 数据信号输入,选择通道控制。
· DO 数据信号输出,转换数据输出。
· CLK 芯片时钟输入。
· Vcc/REF 电源输入及参考电压输入(复用)。

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

单片机对ADC0832 的控制原理:
正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能项见官方资料。

如资料 所示,当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行
输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATD0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。

程序:

#include
sbit ADC_CLK=P0^0;
sbit ADC_DI =P0^1;
sbit ADC_DO =P0^2;
sbit ADC_CS =P0^3;

/*******************************************************************/
void Delay(unsigned char x)

{
unsigned char i;
for(i=0;i

}

unsigned char ReadADC(void) //把模拟电压值转换成8位二进制数并返回

{
unsigned char i,ch;

ADC_CS=0; //片选,DO为高阻态
ADC_DO=0;
Delay(2);

ADC_CLK=0;
Delay(2);
ADC_DI=1;
ADC_CLK=1;//第一个脉冲,起始位
Delay(2);

ADC_CLK=0;
Delay(2);
ADC_DI=1;
ADC_CLK=1;//第二个脉冲,DI=1表示双通道单极性输入
Delay(2);

ADC_CLK=0;
Delay(2);
ADC_DI=0; //第三个脉冲,DI=1表示选择通道1(CH2),DI=0时选择通0(CH1)
ADC_CLK=1;
Delay(2);

ADC_DI=0; //DI转为高阻态,失去输入意义;
ADC_DO=1; //DO脱离高阻态为输出数据作准备

ADC_CLK=1;
Delay(2);
ADC_CLK=0; //第一个下降沿,为去数准备;
Delay(2); //这里加一个脉冲AD才能正确读出数据,不加的话读出的数据少一位,且是错的。

for (i=0; i<8; i++) //读取数据
    {
    ADC_CLK=1;
    Delay(2);
    ADC_CLK=0;
    Delay(2);
    ch=(ch<<1)|ADC_DO;//在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数
   }
  
     ADC_CS=1;//取消片选,一个转换周期结束
   return(ch);//把转换结果返回
}
main()
{
while(1)
{
   P3=ReadADC();//观察P3仿真结果变化
}
}

ADC0832双通道实现AD电压转换相关推荐

  1. 案例分享:Qt高频fpga采集数据压力位移速度加速度分析系统(通道配置、电压转换、采样频率、通道补偿、定时采集、距离采集,导出excel、自动XY轴、隐藏XY轴、隐藏显示通道,文件回放等等)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/120345072 红胖子(红模仿)的博文大全:开发技术集 ...

  2. 单片机 -AD电压检测调试遇到的坑,请避让!

    简单的驱动模块,却遭遇一波三折,实现功能简单,但做到稳定却不一回事: 一.电路设计问题 1.AD电路中,设计滤波电路,采用的电容值过大(104),本身AD电路对电压十分敏感,电容有缓慢充电的特性,而A ...

  3. AD/DA转换(XPT2046)

    AD/DA介绍 AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转 ...

  4. 3.3.13 电流-电压转换电路

    3.3.13 电流-电压转换电路 电流-电压(I-V)转换电路将微弱的输入电流转换为与之成比例.容易测量的电压输出,I-V电路在光电二极管.光电池.光电倍增管等传感器前置放大单元中比较常见. I-V转 ...

  5. 案例分享:Qt多通道数据采集系统(通道配置、电压转换、采样频率、通道补偿值、定时采集、导出excel和图表、自动XY轴、隐藏XY轴、实时隐藏显示通道)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110941614 长期持续带来更多项目与技术分 ...

  6. [网友问答1]STM32驱动PCF8591模块,实现AD/DA转换

    欢迎关注 程序员小哈带你玩转嵌入式,微信搜索:嵌入式从0到1,更多干货等着你. 想进小哈技术交流群,请加程序员小哈个人微信,带你嵌入式入门进阶. 问题原由 粉丝提问,STM32如何驱动PCF8591? ...

  7. PCF8591芯片的AD/DA转换(适用于蓝桥杯单片机)

    目录 1.PCF8591的引脚介绍 2.用IIC发送或接收字节 发送的第一个字节 发送的第二个字节 发送第三个字节 3.发送和接收的字节转换 4.全部代码 IIC部分 接收电压数据 发送电压数据 1. ...

  8. 使用LDO进行电压转换,24V转5V电路为什么中间要加一个中间电压做转化

    问题:我的输入是24v,输出是5V,有两个方案, 方案一:使用LM7805直接从24V转5V 假如后面的负载电流是100ma 那么LM7805上的发热功率就是W=19*0.1w=1.9w 方案二:先使 ...

  9. K型热电偶(k-type)温度与电压转换计算笔记

    一.热电偶简介 热电偶是一种简单的温度测量装置,由两种不同金属组成 热电偶类别 代号 分度号 测量范围 电压范围 基本误差限 镍铬-镍硅 WRN K -200-1370℃ -6.5mV~55mV ±0 ...

最新文章

  1. PHP开发中,让var_dump调试函数输出更美观 ^_^#
  2. mysql 外键有啥用途_Mysql外键是什么?有哪些用处?(图文+视频)
  3. 7-1 最大子列和问题
  4. tfs java开发需要jar_使用Spring框架开发最少需要哪些jar包,依赖jar包有哪些?
  5. 【NLP实战系列】朴素贝叶斯文本分类实战
  6. oracle hint禁用索引,【轉】Oracle索引HINT的使用
  7. 如何维护笔记本电脑的电池
  8. Java FlameGraph 火焰图
  9. C++学习基础篇 —— 引用()的用法和应用
  10. 开课吧:C++入门必知必会的基础知识汇总
  11. java web初始化实例_Struts2中实现web应用的初始化实例详解
  12. PyTricks : Python is Cool
  13. 封装kmalloc/malloc的一些小函数
  14. 在线的pdf阅读器(javaweb)
  15. discuz源代码分析
  16. 用循环队列模拟滑动窗口动态求最值及峰峰值
  17. word文档页眉清除和页码设置
  18. 【033】Bootstrap实现标签页效果
  19. PostgreSQL 磁盘空间的保护伞 PG_repack VS 表膨胀
  20. 【简约奶茶色系装修风格案例】温柔纯粹的雅致美家~

热门文章

  1. 对于STM32F103三轴机械臂控制器进行基本功能测试-上下运动功能
  2. 使用数字示波器DS6104测量交流信号的幅值和相位
  3. npm 卸载_完全免费!GitHub发布软件包管理服务:NPM瑟瑟发抖
  4. h30-t10 android phone,荣耀(荣耀)3C H30-T10/2GB RAM/移动3G手机系统介绍评测-ZOL中关村在线...
  5. java 取不同的随机数_Java实现获取指定个数的不同随机数
  6. python玩王者荣耀皮肤_利用Python完成对王者荣耀英雄全皮肤的下载
  7. 怎么用计算机实现矩阵摹乘法,基于距离矩阵摹乘法的生鲜产品配送路径优化
  8. 计算机编辑功能在哪,注册表编辑器怎么打开-电脑的剪切板在哪里 电脑剪切板里面的内容怎么修改...
  9. tf2.0环境下“module ‘tensorflow‘ has no attribute ‘log‘”的解决办法
  10. HDLBits 系列(36)Arbitration circuit implemented by FSM