电子发烧友网 > 可编程逻辑 > HDL语言及源代码 > 正文

ADC0832程序完整版源码+Proteus仿真资料汇总

2017年11月14日 08:58 次阅读

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

  单片机对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个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

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

  ADC0832程序完整版源码+Proteus仿真资料汇总

  ADC0832的程序代码,用Proteus仿真,最后都会出现一些奇怪的问题,有的根本没法读取数据,有的数据有错误。

  当参考电压为5V时,如果把输入电压从0一直调到5V,读取的数据应该是从0到255,2.5V时应该是128。但是我发现一些源码在输入0~2.5V时读取出来的是0~255,到2.5V时读取的数据为0,从2.5到5V,读出的值又从0增加到255,始终不正确。

  小编特地查阅的ADC0832英文原版的DataSheet,又参考了一篇中文文档,终于写出了其完整的程序,并且先后读取了MSB FIRST DATA和LSB FIRST DATA,进行比较,如果两个数据相等,返回读取的数据,否则返回0,这样可以避免读取发生错误,更稳定可靠。并通过了Proteus仿真。

  下图是ADC0832的时序图:

  ADC0832程序完整版源码+Proteus仿真资料汇总

  其中T-SetUp为250ns,由于使用的是51单片机,晶振11.0592MHz,机器周期比这个值大,可以不考虑,但为了防止出现异常,还是延时了两个机器周期。注意在第11个时钟下降沿之后,DO上的电平既是MSB FIRST输出的最后一位,又是LSB FIRST输出的第一位。以下是读取ADC0832的代码。

  [cpp] view plain copysbit CS_0832 = P1^0;

  sbit CLK_0832 = P1^1;

  sbit DO_0832 = P1^2; // DI、DO不同时有效,可共用一个接口

  sbit DI_0832 = P1^2;

  extern void _nop_ ( void );

  #define pulse0832() _nop_();_nop_();CLK_0832=1;_nop_();_nop_();CLK_0832=0

  //把模拟电压值转换成8位二进制数并返回

  unsigned char read0832()

  {

  unsigned char i, ch = 0, ch1 = 0;

  CS_0832=0; // 片选,DO为高阻态

  DI_0832=1;

  // 此处暂停T-SetUp: 250ns (由pulse0832完成)

  pulse0832(); // 第一个脉冲,起始位,DI置高

  DI_0832=1;

  pulse0832(); // 第二个脉冲,DI=1表示双通道单极性输入

  DI_0832=1;

  pulse0832(); // 第三个脉冲,DI=1表示选择通道1(CH2)

  // 51单片机为准双向IO口:应先写入1再读取

  DI_0832=1;

  // MSB FIRST DATA

  for(i = 0; i 《 8; ++i) {

  pulse0832();

  ch 《《= 1;

  if(DO_0832==1)

  ch |= 0x01;

  }

  // MSB FIRST输出的最后一位与LSB FIRST输出的第一位是在

  // 同一个时钟下降沿之后,故此处先执行读取,后执行pulse

  // LSB FIRST DATA

  for(i = 0; i 《 8; ++i) {

  ch1 》》= 1;

  if(DO_0832==1)

  ch1 |= 0x80;

  pulse0832();

  }

  CS_0832=1; // 取消片选,一个转换周期结束

  return (ch==ch1) ? ch : 0; // 返回转换结果

  }

技术专区

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

排阻在proteus中怎么找

本文开始介绍了排阻的概念和排阻的作用,其次阐述了排阻的识别方法,最后分析了排阻在proteus中的寻...

发表于 2018-03-28 10:13 60次阅读
排阻在proteus中怎么找

proteus仿真打不开文件

发表于 2018-03-25 09:24 122次阅读
proteus仿真打不开文件

Arduino单片机系统开发设计(Proteus...

Arduino是一款便捷灵活、方便上手的开源电子原型平台,具有接口丰富、编程环境简便、自由度大与可拓...

发表于 2018-03-20 11:17 294次阅读
Arduino单片机系统开发设计(Proteus...

proteus仿真max232失败,说找不到max232模型。不知如何设置

发表于 2018-03-18 22:04 223次阅读
proteus仿真max232失败,说找不到max232模型。不知如何设置

有什么运算放大器能达到输出电压在70V左右吗?要能在proteus里能找到

发表于 2018-03-18 16:46 338次阅读
有什么运算放大器能达到输出电压在70V左右吗?要能在proteus里能找到

proteus仿真显示压力值

发表于 2018-03-18 12:40 166次阅读
proteus仿真显示压力值

proteus无法仿真

发表于 2018-03-15 12:43 213次阅读
proteus无法仿真

关于单片机C语言include和proteus

发表于 2018-03-01 19:57 383次阅读
关于单片机C语言include和proteus

proteus 只可以仿真汇编语言不可以仿真c语言吗?

发表于 2018-02-27 23:00 405次阅读
proteus 只可以仿真汇编语言不可以仿真c语言吗?

proteus哪个版本好?proteus8.0破...

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真...

发表于 2018-02-26 10:32 331次阅读
proteus哪个版本好?proteus8.0破...

proteus和protel的区别

PROSPICE 是结合ISIS 原理图设计环境使用的混合型电路仿真器。基于工业标准SPICE3F5...

发表于 2018-02-26 10:17 297次阅读
proteus和protel的区别

proteus步进电机仿真

步进电机是一种能够将电脉冲信号转换成角位移或线位移的机电元件,它实际上是一种单相或多相同步电动机。单...

发表于 2018-02-26 09:56 305次阅读
proteus步进电机仿真

Proteus中如何将焊盘的孔型改成长方形啊?

发表于 2018-02-25 05:37 415次阅读
Proteus中如何将焊盘的孔型改成长方形啊?

小白新人贴 Proteus 8.6仿真STM32F103C6分享

发表于 2018-02-03 20:42 1084次阅读
小白新人贴  Proteus 8.6仿真STM32F103C6分享

proteus 8卸载问题

发表于 2018-01-30 17:34 571次阅读
proteus 8卸载问题

基于Proteus与单片机的交通灯控制电路设计

本文主要介绍了一种基于Proteus与单片机的交通灯控制电路设计。系统电路设计由时钟电路、复位电路、...

发表于 2018-01-09 15:01 465次阅读
基于Proteus与单片机的交通灯控制电路设计

adc0832与at89s52接口电路及真空度数...

本文介绍了adc0832与at89s52接口电路及真空度数据采集,并利用单片机AT89S52的程序控...

发表于 2017-12-19 14:54 298次阅读
adc0832与at89s52接口电路及真空度数...

模数转换芯片adc0832的使用方法

介绍了模数转换芯片adc0832的使用方法,ADC0832为8位分辨率A/D转换芯片,其内部电源输入...

发表于 2017-12-19 14:04 742次阅读
模数转换芯片adc0832的使用方法

adc0832简单应用c程序

ADC0832由于体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。...

发表于 2017-12-19 10:41 334次阅读
adc0832简单应用c程序

adc0832工作原理详解_引脚图及功能_内部结...

美国国家半导体公司生产的ADC0832是广泛应用的8 位分辨率、双通道A/D转换芯片。ADC0832...

发表于 2017-12-19 10:14 2918次阅读
adc0832工作原理详解_引脚图及功能_内部结...

基于proteus的七种跑马灯效果的实现

本文介绍了在Proteus软件中实现联合仿真51单片机实现七种跑马灯效果。七种跑马灯效果,惊喜不断!

发表于 2017-12-18 13:44 712次阅读
基于proteus的七种跑马灯效果的实现

单片机仿真软件有哪些?单片机仿真软件proteu...

 仿真软件专门用于仿真的计算机软件。它与仿真硬件同为仿真的技术工具。仿真软件是从50年代中期开始发展...

发表于 2017-12-06 09:47 3028次阅读
单片机仿真软件有哪些?单片机仿真软件proteu...

Multisim,protel和proteus的...

Multisim可以进行复杂模拟/数字电路的仿真、简单的PCB板设计、简单的单片机仿真Protel可...

发表于 2017-11-17 16:54 335次阅读
Multisim,protel和proteus的...

proteus使用入门教程

Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,...

发表于 2017-11-17 16:01 1366次阅读
proteus使用入门教程

单片机和ADC0832的AD模数转换

 模拟信号只有通过A/D转化为数字信号后才能用软件进行处理,这一切都是通过A/D转换器(ADC)来实...

发表于 2017-11-15 10:48 773次阅读
单片机和ADC0832的AD模数转换

如何使用Proteus制作PCB步骤图解

PROTEUS是一个很强悍的仿真软件,可以仿真模拟电路,数字电路,单片机,8086和8088,ARM...

发表于 2017-11-10 16:23 1141次阅读
如何使用Proteus制作PCB步骤图解

如何proteus原理图生成pcb?步骤详解

 时下,利用Keil C51和Proteus来进行单片机系统开发已成为众多单片机爱好者的首选。Kei...

发表于 2017-11-10 15:20 796次阅读
如何proteus原理图生成pcb?步骤详解

adc0832与单片机连接,单片机控制DAC08...

STC89C52单片机是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编...

发表于 2017-11-08 16:45 445次阅读
adc0832与单片机连接,单片机控制DAC08...

一段话教会你熟练掌握单片机

先说单片机,现在用的比较多的以51为内核的8位单片机(考虑到成本及引脚资源在实际开发中用的51单片机...

发表于 2017-04-20 11:03 773次阅读
一段话教会你熟练掌握单片机

Proteus仿真软件介绍与使用说明

导读:Proteus软件是常用的EDA工具软件,用于单片机等数字电路仿真。Proteus分为两个版本...

发表于 2016-07-26 19:41 4187次阅读
Proteus仿真软件介绍与使用说明

有图有真相,移动健康传感器大有钱途

移动医疗市场正在迅猛增长。新技术让医生和用户都看到了移动医疗市场的价值。

发表于 2015-07-03 09:35 1329次阅读
有图有真相,移动健康传感器大有钱途

电子工程师必备的八大技能

作为一个电子工程师(electronic engineer)必备技能:抄板,焊板,画板,仿真,编程,...

发表于 2014-11-07 10:05 8113次阅读
电子工程师必备的八大技能

基于软件开发的LED显示控制系统

为了实现基于Proteus和Keil μVision3软件联调环境下利用单片机AT89C51芯片采用...

发表于 2014-05-08 10:55 1260次阅读
基于软件开发的LED显示控制系统

基于单片机的汽车转向灯控制器

随着社会的发展,道路上到处都是飞速的汽车。如何保证行人安全,一直都是人们关注的重心。要减少交通事故,...

发表于 2012-06-04 09:49 2621次阅读
基于单片机的汽车转向灯控制器

Proteus的单片机演奏系统

介绍了基于Proteus 的单片机演奏系统的基本原理、硬件电路及软件设计。Proteus的单片机演奏...

发表于 2011-12-23 10:03 1860次阅读
Proteus的单片机演奏系统

Proteus软件功能及应用概述

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真...

发表于 2011-11-10 17:32 1543次阅读
Proteus软件功能及应用概述

多路舵机控制PWM发生器的设计与Proteus仿...

本文通过在Proteus中对电路的设计和Keil中对软件的编写,用51单片机实现了多路PWM脉冲的输...

发表于 2011-07-26 09:40 2754次阅读
多路舵机控制PWM发生器的设计与Proteus仿...

基于Proteus的单片机虚拟开发环境

单片机是国内大专院校电子技术类专业的必修课程之一,很多学生毕业之后也在从事单片机的软硬件设计工作

发表于 2011-06-07 10:01 785次阅读
基于Proteus的单片机虚拟开发环境

基于PROTEUS技术的ARM7显示系统设计

  引言   随着科技的发展,ARM在社会各个方面的应用越来越广。ARM芯片广泛应用于无线产品、P...

发表于 2010-11-26 09:57 1289次阅读
基于PROTEUS技术的ARM7显示系统设计

基于Proteus的汉字点阵显示电路设计

  0 引言   Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件...

发表于 2010-11-04 10:51 3302次阅读
基于Proteus的汉字点阵显示电路设计

Proteus软件概述及功能

  简介   概述   Proteus软件是英国Labcenter electronics公司出...

发表于 2010-08-13 10:27 1111次阅读
Proteus软件概述及功能

PROTEUS7.5嵌入式仿真软件在印刷电路板设...

 PROTEUS7.5嵌入式系统仿真与开发平台主要包括强大的ISIS原理布图工具、PROS...

发表于 2010-07-08 11:19 975次阅读
PROTEUS7.5嵌入式仿真软件在印刷电路板设...

基于PROTEUS软件的数字电压表印刷电路板设计

PROTEUS7.5嵌入式系统仿真与开发平台主要包括强大的ISIS原理布图工具、PROSPICE混合...

发表于 2010-06-14 06:58 488次阅读
基于PROTEUS软件的数字电压表印刷电路板设计

Proteus与ICCAVR调试方法

    今天给大家介绍一种即能像AVR Studio 一样进行代码级调...

发表于 2010-06-07 08:26 540次阅读
Proteus与ICCAVR调试方法

Proteus的LED滚屏设计与仿真

Proteus的LED滚屏设计与仿真 本文以40×16的小屏幕为例来介绍滚动屏幕的制作方法。该设计...

发表于 2010-05-05 09:26 1638次阅读
Proteus的LED滚屏设计与仿真

Proteus在单片机系统设计中的应用简介

Proteus在单片机系统设计中的应用简介    本文结合实例,介绍了基于Proteus...

发表于 2010-03-29 15:08 370次阅读
Proteus在单片机系统设计中的应用简介

proteus如何移动整块电路

proteus如何移动整块电路 按住鼠标右键框选即可,我的6.5sp5工具栏上有这些按钮啊,是绿色...

发表于 2010-03-21 18:48 2098次阅读
proteus如何移动整块电路

Proteus中示波器使用技巧

Proteus中示波器使用技巧 左下角

发表于 2010-03-21 18:46 8321次阅读
Proteus中示波器使用技巧

proteus常用快捷键及设置方法

proteus常用快捷键及设置方法 F8:全部显示 当前工作区全部显示F6:放大 以鼠标为中心放大...

发表于 2010-03-21 18:45 4619次阅读
proteus常用快捷键及设置方法

基于Proteus的嵌入式应用系统仿真中的源码调...

基于Proteus的嵌入式应用系统仿真中的源码调试 0 引 言   ...

发表于 2009-12-22 17:49 951次阅读
基于Proteus的嵌入式应用系统仿真中的源码调...

基于Proteus的Arm处理器的SPI接口实现

基于Proteus的Arm处理器的SPI接口实现  引言   现在,人们生活中的每个角落都有嵌...

发表于 2009-12-07 09:51 466次阅读
基于Proteus的Arm处理器的SPI接口实现

ProteuS在ARM系统设计中的应用

ProteuS在ARM系统设计中的应用  引 言   现在,人们生活中的每个角落都有嵌入式设备...

发表于 2009-11-07 11:10 467次阅读
ProteuS在ARM系统设计中的应用

基于Proteus的远程抄表系统设计与仿真

随着生活水平的提高,人们对资源的消费日益增长,资源消费的计量、管理和收费工作日益繁杂,提高管理层次和...

发表于 2009-06-29 08:14 354次阅读
基于Proteus的远程抄表系统设计与仿真

Proteus常见问题集

Proteus常见问题集 1.proteus 中怎样使用模板file--〉new design:在...

发表于 2009-04-21 12:00 7637次阅读
Proteus常见问题集

Proteus鼠标基本操作

Proteus 鼠标基本操作Proteus 鼠标基本操作与我们的一般习惯是刚好相反的,在Proteu...

发表于 2009-04-21 11:41 389次阅读
Proteus鼠标基本操作

单片机虚拟实验室的建立

单片机虚拟实验室的建立单片机课程是机电、自动化等专业的一门重要课程,可以充分体现学生利用已学知识解决...

发表于 2009-04-21 11:24 446次阅读
单片机虚拟实验室的建立

基于Proteus软件的单片机实验室建设

基于Proteus 软件的单片机实验室建设单片机技术是现代电子工程领域一门迅速发展的技术,应用于各种...

发表于 2009-04-21 11:21 418次阅读
基于Proteus软件的单片机实验室建设

Proteus模型,元件库

Proteus模型,元件库 (一)Proteus VSM 高级外设模型 (二)Proteu

发表于 2009-04-21 11:19 2120次阅读
Proteus模型,元件库

proteus元件名称中文名说明

proteus元件名称中文名说明 元件名称  中文名  说  明 ...

发表于 2009-04-21 09:45 1124次阅读
proteus元件名称中文名说明

Proteus软件仿真与Keil的单片机系统设计...

Proteus软件仿真与Keil的单片机系统设计方案   随着半导体技术的飞速发展,以及移动通信、...

发表于 2009-03-29 15:07 988次阅读
Proteus软件仿真与Keil的单片机系统设计...

Proteus仿真电路原理图

Proteus中没有GARMINGPS25LP,但可以通过键盘

发表于 2008-10-24 13:00 3640次阅读
Proteus仿真电路原理图

Proteus的定位系统仿真设计

Proteus的定位系统仿真设计 引 言   随着单片机技术在工控领域及社会生活的各个方面得到...

发表于 2008-10-24 12:58 1427次阅读
Proteus的定位系统仿真设计