ADC--ADC0832及其应用

合集下载

单片机驱动ADC0832模数转换程序

单片机驱动ADC0832模数转换程序

单片机驱动ADC0832模数转换程序ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道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℃ to +85℃模数转换芯片是用来模拟信号转为数字信号以便电脑处理的,可以用来对传感器的数据进行收集分析。

本来想买ADC0809的,它可以对8个模拟量进行采集,假如是一个脚用三个压力传感器,那就正好够用了。

这个ADC0832是跟单片机开发板一个淘宝店买的,因为那个淘宝店没有ADC0809。

网上搜了个ADC0832的转换函数,拼了个程序在开发板的四位数码管上显示转换过来的数据,要注意的是那个显示函数是调一次只显示四位数码管的一位的,所以不能转换显示转换显示这样,要转换,显示一次二次三次四次,转换,显示一次二次三次四次这样。

ADC0832引脚及代码如下:(一晚没睡,等下准备回家过清明扫墓去。

归去来兮!问西楼禁烟何处好?绿野晴天道。

马穿杨柳嘶,人倚秋千笑,探莺花总教春醉倒。

)//头文件: #include ; #include ;//变量定义:unsigned char ly_dis[4];//定义显示缓冲区code unsigned chartable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90};//表:共阳数码管 0-9unsigned char l_posit=0; //显示位置//引脚定义:sbit SMG_q = P3^4; //定义数码管阳级控制脚(千位)sbit SMG_b = P3^5; //定义数码管阳级控制脚(百位)sbit SMG_s = P3^7; //定义数码管阳级控制脚(十位)sbit SMG_g = P3^6; //定义数码管阳级控制脚(个位) sbit CS= P0^5;sbit Clk = P0^6;sbit DATI = P0^4;sbit DATO = P0^4;unsigned char dat = 0x00;//AD值unsigned char count = 0x00;//定时器计数unsigned char CH;//通道变量//函数声明:void display(void);//显示函数,显示缓冲区内容void delay(void);//unsigned char GetValue0832(bit Channel); unsigned char adc0832(unsigned char CH);//主函数,C语言的入口函数:void main(){unsigned int i=0;int ltemp;while(1){if(i==100){ltemp=adc0832(1);//隔时取模数转换(0~255对应0.00-5.00的电压) ly_dis[0]=ltemp/100;//显示百位值ltemp=ltemp%100;ly_dis[1]=ltemp/10; //显示十位值ltemp=ltemp%10;ly_dis[2]=ltemp/1; //显示个位值ly_dis[3]=0; //显示小数点后一位0}i++;if(i==3000)i=0;display(); //调用显示调一次只显示一位轮流显示四位delay();}}//显示函数,参数为显示内容void display(){P0=0XFF;//switch(l_posit){case 0: //选择千位数码管,关闭其它位SMG_q=0;SMG_b=1;SMG_g=1;P0=table[ly_dis[0]]; //输出显示内容 break;case 1: //选择百位数码管,关闭其它位 SMG_q=1;SMG_b=0;SMG_s=1;SMG_g=1;P0=table[ly_dis[1]];break;case 2: //选择十位数码管,关闭其它位 SMG_q=1;SMG_b=1;SMG_s=0;SMG_g=1;P0=table[ly_dis[2]]&0x7f;break;case 3: //选择个位数码管,关闭其它位 SMG_q=1;SMG_b=1;SMG_s=1;P0=table[ly_dis[3]];break;}l_posit++; //每调用一次将轮流显示一位if(l_posit>;3)l_posit=0;}//延时子函数,短暂延时void delay(void){unsigned char i=10;while(i--);}/************************************************ ****************************函数功能:AD转换子程序入口参数:CH出口参数:dat************************************************* ***************************/unsigned char adc0832(unsigned char CH) {unsigned char i,test,adval;adval = 0x00;test = 0x00;Clk = 0;//初始化DATI = 1;_nop_();CS = 0;_nop_();Clk = 1;_nop_();if ( CH == 0x00 )//通道选择{Clk = 0;DATI = 1;//通道0的第一位_nop_();Clk = 1;_nop_();Clk = 0;DATI = 0;//通道0的第二位 _nop_();Clk = 1;_nop_();}else{Clk = 0;DATI = 1;//通道1的第一位 _nop_();Clk = 1;_nop_();Clk = 0;DATI = 1;//通道1的第二位_nop_();Clk = 1;_nop_();}Clk = 0;DATI = 1;for( i = 0;i ;>;= 1; if (DATO)test |= 0x80;elsetest |= 0x00;_nop_();Clk = 1;_nop_();Clk = 0;}if (adval == test)//比较前8位与后8位的值,如果不相同舍去。

ADC0832CCN中文资料

ADC0832CCN中文资料

Key Specifications
n n n n n Resolution Total Unadjusted Error Single Supply Low Power Conversion Time 8 Bits
Features
n NSC MICROWIRE compatible — direct interface to COPS family processors n Easy interface to all microprocessors, or operates “stand-alone”
If Military/Aerospace specified devices are required, please contact the National Semiconductor Sales Office/ Distributors for availability and specifications. Current into V (Note 3) Supply Voltage, VCC (Note 3) Voltage Logic Inputs Analog Inputs Input Current per Pin (Note 4) Package Storage Temperature Package Dissipation at TA = 25˚C (Board Mount)
Top View
Top View ADC0832 2-Channel MUX Small Outline Package (WM)
ADC0831 Single Differential Input Dual-In-Line Package (N)
ADC0831 Single Differential Input Small Outline Package (WM)

ADC0832模数转换之5v内电压测量

ADC0832模数转换之5v内电压测量

void main(void) //入口函数
{
unsigned char i=0;
unsigned int tmp;
RST=0;
while(1)
{
if(i==0) //这里为循环255个周期读取一次0831,因CPU运行比较快,没必要每次循环都去读取
{
tmp=ad0832read(1,0)*100;//ad0832read函数里的两个参数代表的意义分别是:
ADC0832.c /*************************************************************************** 标题: ADC0832模数转换程序,电压表 效果: 调节模拟采集量电位器,数码管显示相应的分压。 说明: 做这个例子的朋友,先看完这段话,一定要看完再做实验。
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef, 0x40, 0x3e, 0x00};
"0-9",第二行是"0-9且有小数点的" ,接下来三行分别是"-"、 "U" 、"空" unsigned char l_tmpdate[]={0,0,0,0}; //存放显示内容的数组
//第一个上升沿
SDA=SGL;_nop_();_nop_(); SCL=1;_nop_();_nop_(); SCL=0;_nop_();_nop_();
//输入数据SGL //第二个上升沿
SDA=ODD;_nop_();_nop_(); SCL=1;_nop_();_nop_(); SCL=0;_nop_();_nop_();

ADC0832引脚图

ADC0832引脚图

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;芯片顶视图:(图1、图2)ADC0832程序:程序占用资源有累加器A,工作寄存器R7,通用寄存器B 和特殊寄存器CY。

通道功能寄存器和转换值共用寄存器B。

在使用转换子程序之前必须确定通道功能寄存器B 的值,其赋值语句为“MOV B,#data”(00H~03H)。

运行转换子程序后的转换数据值被放入B 中。

子程序退出后即可以对B 中数据处理。

ADC0832 芯片接口程序[汇编] :/*------------------------------------------- 子程序名: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 ;初始化通道选择NOPNOPCLR ADCS ;拉低/CS端NOPNOPSETB ADCLK ;拉高CLK端NOPCLR ADCLK ;拉低CLK端,形成下降沿MOV A,BMOV C,ACC.1 ;确定取值通道选择MOV ADDI,CNOPNOPSETB ADCLK ;拉高CLK端NOPNOPCLR ADCLK ;拉低CLK端,形成下降沿2 MOV A,BMOV C,ACC.0 ;确定取值通道选择MOV ADDI,CNOPNOPSETB ADCLK ;拉高CLK端NOPNOPCLR ADCLK ;拉低CLK端,形成下降沿3 SETB ADDINOPNOPMOV R7,#8 ;准备送下后8个时钟脉冲AD_1:MOV C,ADDO ;接收数据MOV ACC.0,CRL A ;左移一次SETB ADCLKNOPCLR ADCLK ;形成一次时钟脉冲NOPNOPDJNZ R7,AD_1 ;循环8次MOV C,ADDO ;接收数据MOV ACC.0,CMOV B,AMOV R7,#8AD_13:MOV C,ADDO ;接收数据MOV ACC.0,CRR A ;左移一次SETB ADCLKNOPNOPCLR ADCLK ;形成一次时钟脉冲NOPNOPDJNZ R7,AD_13 ;循环8次CJNE A,B,ADCONV ;数据校验SETB ADCS ;拉高/CS端CLR ADCLK ;拉低CLK端SETB ADDO ;拉高数据端,回到初始状态RET;====子程序结束====。

用51控制ADC0832的原理

用51控制ADC0832的原理

用51控制ADC0832的原理ADC0832是一款八位串行输出模数转换器。

它可以将模拟输入信号转换为数字输出信号,常用于单片机等数字系统的模数转换。

ADC0832的工作原理如下:1. ADC0832主要由SAR(Sequential Approximation Register) ADC转换器、控制逻辑、时钟发生器和接口电路组成。

a. SAR ADC是一种逐次逼近寄存器的转换方式,通过比较输入信号和DAC (数字模拟转换器)输出的电压来逐渐逼近输入信号的数值。

b. 控制逻辑用来控制转换的进行,包括输入信号的采样、控制电压的设定、转换过程等。

c. 时钟发生器提供精确的时钟信号,用于同步转换过程。

d. 接口电路用来与外部系统连接,包括输入信号接口、数字输出接口等。

2. 在使用ADC0832之前,需要设置ADC的控制位,包括参考电压、时钟选择、输入通道等。

a. 参考电压(Vref)决定了转换的量程范围。

ADC0832可以选择外部参考电压或内部基准电压。

b. 时钟选择(CLK)决定了转换速度。

ADC0832可以选择外部时钟或内部时钟。

c. 输入通道决定了转换的输入信号。

ADC0832有多个输入通道,可以选择单端输入或差分输入。

3. 在进行转换时,需要按照以下步骤进行:a. 设置控制位,包括参考电压、时钟选择和输入通道。

b. 启动转换。

通过将ADC的转换启动位(START)置高,开始转换过程。

c. 等待转换完成。

ADC0832的转换时间取决于时钟频率,一般为几十微秒到几百微秒。

d. 读取转换结果。

转换完成后,ADC将转换结果存储在SAR ADC转换器中,可以通过读取输出数据线上的数据来获取转换结果。

4. 转换结果是一个八位的数字输出信号,表示输入信号的数值。

可以通过对输出数据进行解码和处理,得到对应的模拟输入信号的数值。

总结:ADC0832是一款基于SAR ADC转换方式的模数转换器。

它通过逐次逼近的方式将模拟输入信号转换为数字输出信号。

ADC0832简单应用c程序

ADC0832简单应用c程序

#include <reg52.h>#include <intrins.h>#include <absacc.h>#define uchar unsigned char#define uint unsigned int#define led_wei 0xefff#define led_duan 0xf7ffsbit ADCLK =P1^6; //时钟接口sbit ADDO =P3^5; //数据输出接口sbit ADDI =P1^7; //数据输入接口sbit ADCS =P1^5; //使能接口uchar buff[] = {0};uint data i;uchar code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x 8e};void disp(uchar n){uchar dis0,dis1;dis0=n&0x0f;dis1=(n&0xf0)>>4;XBYTE[led_duan]=seg[dis0];XBYTE[led_wei]=0xfe;//for(i=0;i<60000;i++){_nop_();}XBYTE[led_wei]=0xfc;XBYTE[led_duan]=seg[dis1];XBYTE[led_wei]=0xfd;//for(i=0;i<60000;i++){_nop_();}XBYTE[led_wei]=0xfc;}/************************************* *********程序名称:ADC0832子程序作者:liuanggh时间:2006.12.30************************************* *********//************************************* *******************函数名称:void AD_init(uchar i)函数作用:初始化ADC0832参数说明:i=2,表示通道0,i=3,表示通道1 ************************************* *******************/void AD_init(uchar i){ADDI = 1; /*在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号*/_nop_();_nop_();ADCS = 0; //使能ADC0832_nop_();_nop_();ADCLK = 0;_nop_();_nop_();_nop_();ADCLK = 1; //形成上升降沿1_nop_();_nop_(); /*在第2、3个脉冲下沉之前DI端应输入2位数据用于选择通道功能*/_nop_();ADCLK = 0;_nop_();_nop_();ADDI = 1;_nop_();_nop_(); ADCLK = 1;//lock sgl _nop_();_nop_(); ADCLK = 0;_nop_();_nop_();if(i==0x02)ADDI = 0;if(i==0x03)ADDI = 1;_nop_();_nop_(); ADCLK = 1;_nop_();_nop_();ADCLK = 0;_nop_();_nop_();_nop_();_nop_();}/************************************* *******************函数名称:uchar AD_read()函数作用:读取ADC0832转换的数据参数说明:无函数返回:返回8位的数据************************************* *******************/uchar AD_read(){uchar temp = 0;uchar temp1 = 0;uchar temp2 = 0;uchar i = 0;uchar flag = 0;for(i = 0; i < 8; i++){ ADDO=1;ADCLK = 1;_nop_();_nop_();ADCLK = 0; //形成下降沿_nop_();_nop_();if(ADDO)temp1|=0x01;temp1 = temp1 << 1;}if(ADDO)temp2 |= 0x80;for(i = 0; i < 8; i++){temp2 = temp2 >> 1;ADCLK = 1;_nop_();_nop_();if(ADDO)temp2|=0x80;ADCLK = 0; //形成下降沿_nop_();_nop_();}//if(temp1 == temp2)return temp1;}unsigned int Adc0832(unsigned char channel) {uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_();_nop_();ADCS=0;//拉低CS端_nop_();_nop_();ADCLK=1;//拉高CLK端_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿1 _nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿2 _nop_();_nop_();ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;//拉低CLK端,形成下降沿3 ADDI=1;//控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j=0;j=j|ADDO;//收数据ADCLK=1;_nop_();_nop_();ADCLK=0;//形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=1;}ADCS=1;//拉低CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat); //return ad data }main(){uchar n;uint i,m;while(1){m=Adc0832(1); disp(m);}}。

光敏电阻和adc0832采集电路原理

光敏电阻和adc0832采集电路原理

光敏电阻和adc0832采集电路原理一、光敏电阻原理光敏电阻是一种用于测量光强度的传感器,其原理是基于光敏材料的电导率随着光照强度的变化而发生变化。

当有光照射到光敏电阻上时,其电导率会降低,反之则会升高。

因此,可以通过测量光敏电阻的电阻值来间接测量光照强度。

二、ADC0832采集电路原理ADC0832是一种8位串行模数转换器,它可以将模拟信号转换为数字信号输出。

ADC0832采集电路主要由模拟输入部分和数字输出部分组成。

1. 模拟输入部分模拟输入部分主要由采样保持电路和模数转换器组成。

采样保持电路用于对输入信号进行采样和保持,以确保在转换过程中输入信号的稳定性。

模数转换器则将采样后的信号转换为相应的数字信号输出。

2. 数字输出部分数字输出部分主要由串行数据输出接口和控制逻辑组成。

串行数据输出接口用于将数字信号以串行方式输出,控制逻辑则负责控制整个转换过程,并将转换结果输出。

三、光敏电阻和ADC0832采集电路的结合原理将光敏电阻和ADC0832采集电路结合起来,可以实现对光照强度的精确测量。

具体实现过程如下:1. 将光敏电阻作为模拟输入信号接入ADC0832采集电路中的采样保持电路。

2. 通过控制逻辑,启动模数转换器对输入信号进行转换,并将转换结果输出到串行数据输出接口。

3. 通过串行数据输出接口,将数字信号传输到单片机或其他处理器中进行处理。

4. 在单片机或其他处理器中,可以根据数字信号的大小计算出对应的光照强度值,并进行相应的控制或显示等操作。

四、注意事项在使用光敏电阻和ADC0832采集电路时,需要注意以下几点:1. 光敏电阻应该放置在光线直射处以获得最佳效果。

2. ADC0832采集电路应该被正确地连接并按照规定方式使用。

3. 应该根据实际需求选择合适的参考电压和采样率以获得准确的测量结果。

4. 在使用过程中需要注意避免干扰源,以确保测量结果的准确性。

五、总结光敏电阻和ADC0832采集电路结合可以实现对光照强度的精确测量,是一种常用的光照强度传感器。

ADC0832简单应用c程序

ADC0832简单应用c程序

ADC0832简单应用c程序#include#include "intrins.h"#define uint unsigned int#define uchar unsigned char//ADC0832的引脚sbit ADCS =P1^0; //ADC0832 chip seclectsbit ADDI =P1^2; //ADC0832 k insbit ADDO =P1^2; //ADC0832 k outsbit ADCLK =P1^1; //ADC0832 clock signalunsigned chardispbitcode[8]={0xf7,0xfb,0xfd,/*0xfe,0xef,0xdf,0xbf,0x7f*/}; //位扫描unsigned chardispcode[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x 80,0x90,0xff} ; //共阳数码管字段码unsigned char dispbuf[3];uint temp;uchar getdata; //获取ADC转换回来的值void delayms(void) //12mhz delay 1.01ms{unsigned char x,y;x="10";while(x--){y="4";while(y--);}}void display(void) //数码管显示函数{char k;for(k=0;k<3;k++){P0 = dispbitcode[k];P2 = dispcode[dispbuf[k]];delayms();if(k==2) //加上数码管的dp小数点P2&=0x7f;delayms();P0=0xff;}}/************读ADC0832函数************///采集并返回unsigned int Adc0832(unsigned char channel) //AD转换,返回结果{uchar i="0";uchar j;uint dat="0";uchar ndat="0";if(channel==0)channel=2;if(channel==1)channel=3;ADDI="1";_nop_();_nop_();ADCS="0";//拉低CS端_nop_();_nop_();ADCLK="1";//拉高CLK端_nop_();_nop_();ADCLK="0";//拉低CLK端,形成下降沿1 _nop_();_nop_();ADCLK="1";//拉高CLK端ADDI="channel"&0x1;_nop_();_nop_();ADCLK="0";//拉低CLK端,形成下降沿2 _nop_();_nop_();ADCLK="1";//拉高CLK端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK="0";//拉低CLK端,形成下降沿3 ADDI="1";//控制命令结束_nop_();_nop_();dat="0";for(i=0;i<8;i++){dat|=ADDO;//收数据ADCLK="1";_nop_();_nop_();ADCLK="0";//形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i==7)dat|=ADDO;}for(i=0;i<8;i++){j="0";j="j|ADDO";//收数据ADCLK="1";_nop_();_nop_();ADCLK="0";//形成一次时钟脉冲_nop_();_nop_();j="j"<<7;ndat="ndat|j";if(i<7)ndat>>=1;}ADCS="1";//拉低CS端ADCLK="0";//拉低CLK端ADDO="1";//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat); //return ad k}void main(void){while(1){getdata="Adc0832"(0);temp="getdata"*1.0/255*500; //电压值转换,5V做为参考电压,分成256份。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DAC0832一) D/A转换器DAC0832DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。

如图4-82所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。

运算放大器输出的模拟量V0为:图4-82由上式可见,输出的模拟量与输入的数字量()成正比,这就实现了从数字量到模拟量的转换。

一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。

输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。

图4-83是DAC0832的逻辑框图和引脚排列。

图4-83D0~D7:数字信号输入端。

ILE:输入寄存器允许,高电平有效。

CS:片选信号,低电平有效。

WR1:写信号1,低电平有效。

XFER:传送控制信号,低电平有效。

WR2:写信号2,低电平有效。

IOUT1、IOUT2:DAC电流输出端。

Rfb:是集成在片内的外接运放的反馈电阻。

Vref:基准电压(-10~10V)。

Vcc:是源电压(+5~+15V)。

AGND:模拟地 NGND:数字地,可与AGND接在一起使用。

DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。

实验线路如图4-84所示。

图4-85IN0~IN7:8路模拟信号输入端。

A1、A2、A0 :地址输入端。

ALE地址锁存允许输入信号,在此脚施加正脉冲,上升沿有效,此时锁存地址码,从而选通相应的模拟信号通道,以便进行A/D转换。

START:启动信号输入端,应在此脚施加正脉冲,当上升沿到达时,内部逐次逼近寄存器复位,在下降沿到达后,开始A/D转换过程。

EOC:转换结束输出信号(转换接受标志),高电平有效。

OE:输入允许信号,高电平有效。

CLOCK(CP):时钟信号输入端,外接时钟频率一般为640kHz。

Vcc:+5V单电源供电。

、Vref(+),Vref(-):基准电压的正极、负极。

一般Vref(+)接+5V电源,Vref(-)接地。

D7~D0:数字信号输出端。

由A2、A1、A0三地址输入端选通8路模拟信号中的任何一路进行A/D转换。

ADC0832的封装以及工作模式的选取芯片接口说明:· CS_ 片选使能,低电平芯片使能。

· CH0 模拟输入通道 0,或作为 IN+/-使用。

· CH1 模拟输入通道 1,或作为 IN+/-使用。

· GND 芯片参考 0 电位(地)。

· DI 数据信号输入,选择通道控制。

· DO 数据信号输出,转换数据输出。

· CLK 芯片时钟输入。

· Vcc/REF 电源输入及参考电压输入(复用)。

ADC0832 与单片机的接口电路:用汇编编写下面是测试程序,选择CH1,单片机晶振为,18.432MHz;ADC0832简单测试(改)A_0832_CS EQU P1.0 ;CSA_0832_CLK EQU P1.1 ;CLKA_0832_DI EQU P1.2 ;DIA_0832_D EQU P1.3 ;DOA_0832_T EQU 40H ;读取时的脉冲计数A_0832_DA EQU 41H ;数据所存位置ORG 0LJMP MAINORG 30HMAIN: LCALL ADC_RDMOV A,A_0832_DAAJMP $ADC_RD:MOV A_0832_T,#8CLR A_0832_CLKCLR A_0832_CSSETB A_0832_DI ;STARTSETB A_0832_CLK ;第一个上升沿NOPNOPNOPCLR A_0832_CLKNOPNOPSETB A_0832_DI ;选择CH1,通过组合选取通道(SGL/DIF) NOPSETB A_0832_CLK ;第二个上升沿NOPNOPNOPCLR A_0832_CLKNOPNOPSETB A_0832_DI ;选择CH1,通过组合选取通道(ODD/SIGN) NOPSETB A_0832_CLK ;第三个上升沿NOPNOPNOPCLR A_0832_CLK ;首个下降沿NOPNOPNOPSETB A_0832_CLKNOPNOPA_0832_RD: ;读取前,8位CLR A_0832_CLKNOPNOPNOPSETB A_0832_CLKMOV C,A_0832_DRLC ADJNZ A_0832_T,A_0832_RDMOV A_0832_DA,ARR AMOV A_0832_T,#7A_0832_RD1: ;读后7位,+前1位CLR A_0832_CLKNOPNOPNOPSETB A_0832_CLKMOV C,A_0832_DRRC ADJNZ A_0832_T,A_0832_RD1CJNE A,A_0832_DA,ADC_RDSETB A_0832_CSRETENDADC0832 模数转换例程,用C语言编写//可调电阻CH0通道/*当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+进行输入.从第4个脉冲下沉开始由DO,端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据.*/#i nclude <at89x52.h>#define _rrca_() CY = ACC & 0x01 //产生RRC A指令#define _rlca_() CY = ACC & 0x80 //产生RLC A指令#define bADcs P3_7#define bADcl P1_6#define bADda P1_7unsigned char ucCH0;bit bAD_ok; //AD转换完成unsigned char code dx58[3] _at_ 0x3b;//保留0x3b开始的3个字节void ad_change(void){unsigned char cycle ;bADcs = 0;//当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用.bADcl = 0;bADda = 1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平.bADcl = 1; bADcl = 0;//pulse 1 down//ch0 dADda = 1;bADcl = 1; bADcl = 0;//pulse 2 downbADda = 0;bADcl = 1; bADcl = 0;//pulse 3 downfor(cycle = 8; cycle > 0; cycle-- ){bADda = 1;bADcl = 1; bADcl = 0;//pulseCY = bADda;_rlca_(); //RRC A}B = ACC;for(cycle = 8; cycle > 0; cycle-- ){bADda = 1;bADcl = 1; bADcl = 0;//pulseCY = bADda;_rrca_(); //RLC A}if( ACC == B ){ucCH0 = B;P1_5 = 0; //指示灯亮bAD_ok = 1;}bADcs = 1;//当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束}main(){ad_change();while(1);}例3ADC0832 为 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 所示,当此 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转换的结束。

相关文档
最新文档