武警政治工作网:ADC0832 - 幸福的猫咪的日志 - 网易博客

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 19:27:06

ADC0832

硬件设计知识   2008-12-27 11:10   阅读10   评论0   字号:    

A/D转换芯片ADC0832的应用2007-08-20 12:44
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;
芯片顶视图:(图1、图2)

图1 图2

-DYDIYE-
mail:DYDIY@126.COM 第 2 页
芯片接口说明:
· CS_ 片选使能,低电平芯片使能。
· CH0 模拟输入通道0,或作为IN+/-使用。
· CH1 模拟输入通道1,或作为IN+/-使用。
· GND 芯片参考0 电位(地)。
· DI 数据信号输入,选择通道控制。
· DO 数据信号输出,转换数据输出。
· CLK 芯片时钟输入。
· Vcc/REF 电源输入及参考电压输入(复用)。
ADC0832 与单片机的接口电路:

 

图3

-DYDIYE-
mail:DYDIY@126.COM 第 3 页
ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应
一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟
电压输入在0~5V之间。芯片转换时间仅为32μS,据有双数据输出可作为数据
校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使
多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现
通道功能的选择。
单片机对ADC0832 的控制原理:
正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、
DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双
向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。(见图3)
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和
DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并
且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯
片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的
数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。
在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能项
见表1。

 

表1    

-DYDIYE-
mail:DYDIY@126.COM 第 4 页
如表1 所示,当此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置高电平禁用芯片,直接将转换后的数据进行处理就可以了。
更详细的时序说明请见表2。

 

表2

-DYDIYE-
mail:DYDIY@126.COM 第 5 页
作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时
的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设
定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+
与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为
00H。
ADC0832 芯片接口程序的编写:
ADC0832 数据读取程序流程:
为了高速有效的实现通信,我们采用汇编
语言编写接口程序。由于ADC0832 的数据转
换时间仅为32μS,所以A/D转换的数据采样
频率可以很快,从而也保证的某些场合对A/D
转换数据实时性的要求。数据读取程序以子程
序调用的形式出现,方便了程序的移植。
程序占用资源有累加器A,工作寄存器R7,
通用寄存器B 和特殊寄存器CY。通道功能寄
存器和转换值共用寄存器B。在使用转换子程
序之前必须确定通道功能寄存器B 的值,其赋
值语句为“MOV B,#data”(00H~03H)。运
行转换子程序后的转换数据值被放入B 中。子
程序退出后即可以对B 中数据处理。

 

ADC0832 芯片接口程序[汇编]:

-DYDIYE-
mail:DYDIY@126.COM 第 6 页
/*-------------------------------------------
子程序名: ADC0832子程序
编写人: 杜洋
初写时间: 2005年10 月10日
程序功能: 将模拟电压量转换成数字量
实现方法: 串行通信。
CPU说明: MCS-51
植入说明: 占用A、B、CY、R7
-------------------------------------------*/
;以下接口定义根据硬件连线更改
ADCS BIT P3.5 ;使能接口
ADCLK BIT P3.4 ;时钟接口
ADDO BIT P3.3 ;数据输出接口(复用)
ADDI BIT P3.3 ;数据输入接口
;以下语句在调用转换程序前设定
MOV B,#00H ;装入通道功能选择数据值
;以下为ADC0832读取数据子程序
;==== ADC0832读数据子程序====
ADCONV:
SETB ADDI ;初始化通道选择 
NOP
NOP
CLR ADCS ;拉低/CS端
NOP
NOP
SETB ADCLK ;拉高CLK端
NOP
NOP
CLR ADCLK ;拉低CLK端,形成下降沿
MOV A,B
MOV C,ACC.1 ;确定取值通道选择
MOV ADDI,C
NOP
NOP
SETB ADCLK ;拉高CLK端
NOP
NOP
CLR ADCLK ;拉低CLK端,形成下降沿2
MOV A,B
MOV C,ACC.0 ;确定取值通道选择
MOV ADDI,C
NOP

NOP
SETB ADCLK ;拉高CLK端
NOP
NOP
CLR ADCLK ;拉低CLK端,形成下降沿3
SETB ADDI
NOP
NOP
MOV R7,#8 ;准备送下后8个时钟脉冲
AD_1:
MOV C,ADDO ;接收数据
MOV ACC.0,C
RL A ;左移一次
SETB ADCLK
NOP
NOP
CLR ADCLK ;形成一次时钟脉冲
NOP
NOP
DJNZ R7,AD_1 ;循环8次
MOV C,ADDO ;接收数据    接收数据的最后一位
MOV ACC.0,C
MOV B,A
MOV R7,#8
AD_13:
MOV C,ADDO ;接收数据
MOV ACC.0,C
RR A ;右移一次
SETB ADCLK
NOP
NOP
CLR ADCLK ;形成一次时钟脉冲
NOP
NOP
DJNZ R7,AD_13 ;循环8次
CJNE A,B,ADCONV ;数据校验
SETB ADCS ;拉高/CS端
CLR ADCLK ;拉低CLK端
SETB ADDO ;拉高数据端,回到初始状态
RET
;====子程序结束====