ADC0832数模转换芯片
ADC0832
ADC0832设计模块1、ADC0832的主要技术指标:(1)8位分辨率,逐次逼近型。
(2)5V电源供电时,基准电压为5V,输入模拟电压范围为0~5V。
(3)输入和输出电平与TTL和CMOS兼容。
(4)有两个可供选择的模拟输入通道。
(5)在250KHz时钟频率时,转换时间为32µs。
(6)一般功耗仅为15mW。
2、ADC0832引脚说明(1)/CS片选使能,低电平有效。
(2)CHO模拟通道0,差分输入时,作为IN+或IN-使用。
(3)CH1模拟输入通道1,差分输入时,作为IN+或IN-使用。
(4)GND 电源地。
(5)DI数据信号输出,选择通道控制。
(6)DO数据信号输出,转换数据输出。
(7)Vcc/Vre电源输入及参考电压输入(复用)。
(8)CLK芯片时钟信号3、ADC0832时序图4、运用ADC0832设计一个0-5V的数字电压表电路如图所示:设计要求:五位数码管动态显示,第一位显示通道状态(0、1)第二位显示C,第三位是个数,第三位和第四位数码管分别显示十分位和百分位;按键SW1选择通道0,按键SW2选择通道1,并且蜂鸣器和短时间鸣叫;调节滑动变阻器数码管的示数能在0.00~5.00之间变化。
C程序:/************************************************CAUCyeyongan*************************************************/#include <reg52.h>#include <intrins.h>#define uchar unsigned charsbit CS=P3^5;sbit Clk=P1^6; //时钟sbit DO=P3^7; //ADC0832输出引脚sbit DI=P3^6; //ADC0832输入引脚sbit key=P3^3; //按键bit keydownflg; //操作位的定义bit adc_flg;uchar dat,channel;uchar key_buffer;uchar P2_buffer;uchar Beep_cnt;uchar disp_cnt;uchar count4ms;uchar disp_buff[5]; //数码管显示缓存uchar code Tab1[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0 xA1,0x86,0x8E}; //共阳数码表uchar code Tab[5]={0x7f,0xbf,0xdf,0xef,0xf7}; //数码管位选表uchar A_D(uchar CH) //AD函数{uchar i,adval,test; //定义局部变量并初始化adval=0x00;test=0x00;Clk=0; //clk低电平DI=1; //DI初始高电平在第一个时钟脉冲的下降沿前保持高电平,表示启动信号_nop_();CS=0; //片选_nop_();Clk=1; //clk上升沿,起始位写入_nop_();if(CH==0x00) //选择通道0{Clk=0; //clk低电平DI=1;_nop_();Clk=1; //clk上升沿,通道0的第一位写入_nop_();Clk=0;DI=0;_nop_();Clk=1; //clk上升沿,通道0的第二位写入_nop_();}else{Clk=0;DI=1;_nop_();Clk=1; //clk上升沿,通道1的第一位写入_nop_();Clk=0;DI=1;_nop_(); //clk上升沿,通道1的第二位写入Clk=1;_nop_();}Clk=0;DI=1;for(i=0;i<8;i++) //从高位向低位读取八位AD值{_nop_();adval<<=1;Clk=1;_nop_();Clk=0;if(DO)adval|=0x01;elseadval|=0x00;}for(i=0;i<8;i++){test>>=1; //从低位向高位读取八位AD值if(DO)test|=0x80;elsetest|=0x00;_nop_();Clk=1;_nop_();Clk=0;}if(adval==test) dat=test; //判断两个读取值是否相等相等就把读取的数赋值给DAT_nop_();CS=1;DO=1;Clk=1;return dat;}void FillDispBuffer(void) //数码管显示缓存函数{disp_buff[0]=channel; //显示通道disp_buff[1]=12; //显示"C"disp_buff[2]=dat/51; //显示个位disp_buff[3]=dat%51*10/51; //显示十分位disp_buff[4]=((dat%51)*10%51)*10/51; //显示百分位}void dealkey(void) //按键处理{if(keydownflg) return; //keydownflg控制位为1,不对按键进行处理key_buffer=P2;if((key_buffer&0x80)!=0x80) channel=0; //选择通道0if((key_buffer&0x40)!=0x40) channel=1; //选择通道1FillDispBuffer(); //数码管显示缓存Beep_cnt=0;keydownflg=1; //keydownflg控制位置1 }void main(void) //主函数{P0=0xff; //初始化P2=0xff;dat=0x00;disp_cnt=0;count4ms=0;channel=0;TMOD=0x10;TH0=(65535-4000)/256;TL0=(65535-4000)%256;EA=1;TR0=1;ET0=1;while(1){if(adc_flg) //ADC转换控制位,防止输入与输出产生冲突{adc_flg=0;A_D(channel); //ADC函数FillDispBuffer(); //数码管显示缓存}if(!key) //按键dealkey();}}void T0_service(void) interrupt 1 //定时器0中断子函数{TH0=(65535-4000)/256;TL0=(65535-4000)%256;P2_buffer=Tab[disp_cnt]; //查表,数码管的位选择if(keydownflg) //蜂鸣器0.4s的短时间鸣叫{P2_buffer=P2_buffer&0xfe;Beep_cnt++;if(Beep_cnt==100) keydownflg=0;}P2=P2_buffer; //数码管显示数字符号if(disp_cnt==2) //第三位数码管显示小数点P0=Tab1[disp_buff[disp_cnt]]&0x7f;elseP0=Tab1[disp_buff[disp_cnt]];disp_cnt++; //if(disp_cnt==5) disp_cnt=0;count4ms++;if(count4ms==50) //0.2s ADC转换一次{adc_flg=1;count4ms=0;}}。
adc0832的工作原理
adc0832的工作原理ADC0832是一款8位串行模数转换器(ADC),它是一种用于将模拟信号转换为数字信号的集成电路。
在本文中,我们将深入探讨ADC0832的工作原理,包括其结构、工作方式以及应用场景。
首先,让我们来了解ADC0832的结构。
ADC0832由模拟输入端、串行接口、控制逻辑、8位模数转换器和参考电压源等部分组成。
模拟输入端接收来自外部传感器或信号源的模拟信号,串行接口用于与微处理器或其他数字系统进行通信,控制逻辑用于控制转换过程,8位模数转换器将模拟信号转换为8位的数字信号,参考电压源则提供转换过程中所需的参考电压。
其次,我们来看看ADC0832的工作原理。
当外部模拟信号被输入到ADC0832的模拟输入端时,控制逻辑开始转换过程。
首先,ADC0832会使用参考电压源对输入信号进行比较,并将结果转换为数字信号。
转换过程中,ADC0832会将8位的数字信号通过串行接口传输给微处理器或其他数字系统,以便进一步处理或显示。
ADC0832的工作原理可以简单描述为,首先,输入模拟信号被采样并保持;然后,采样保持的信号被与参考电压进行比较,并转换为数字信号;最后,数字信号通过串行接口传输给外部系统。
最后,让我们来看看ADC0832的应用场景。
ADC0832广泛应用于工业控制、仪器仪表、数据采集系统、温度测量、压力测量等领域。
它能够将各种模拟信号转换为数字信号,为数字系统提供准确的数据,从而实现对各种物理量的测量、控制和分析。
总的来说,ADC0832作为一款8位串行模数转换器,具有较为简单的结构和工作原理,但在各种领域都有着重要的应用。
通过本文的介绍,相信读者对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位的值,如果不相同舍去。
ADC0832
ADC08328位串行A/D 转换器ADC08321.功能特点ADC0832是NS(National Semiconductor)公司生产的串行接口8位A/D转换器,通过三线接口与单片机连接,功耗低,性能价格比较高,适宜在袖珍式的智能仪器仪表中使用。
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。
芯片具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件连接和处理器控制变得更加方便。
通过DI 数据输入端,可以轻易的实现通道功能的选择。
其主要特点如下:●8位分辨率,逐次逼近型,基准电压为5V;●5V 单电源供电;●输入模拟信号电压范围为0~5V;●输入和输出电平与TTL 和CMOS 兼容;●在250KHZ 时钟频率时,转换时间为32us;●具有两个可供选择的模拟输入通道;●功耗低,15mW。
2.外部引脚及其说明ADC0832有DIP 和SOIC 两种封装,DIP 封装的ADC0832引脚排列如图6.21所示。
各引脚说明如下:●CS——片选端,低电平有效。
●CH0,CH1——两路模拟信号输入端。
●DI——两路模拟输入选择输入端。
●DO——模数转换结果串行输出端。
●CLK——串行时钟输入端。
●Vcc/REF——正电源端和基准电压输入端。
●GND——电源地。
3.单片机对ADC0832的控制原理一般情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO 和DI 并联在一根数据线上使用。
当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。
当要进行A/D转换时,须先将CS端置于低电平并且保持低电平直到转换完全结束。
此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK提供时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
单片机对adc0832的控制原理
单片机对adc0832的控制原理一、概述ADC0832是一种8位分辨率的单通道模数转换器,采用双重积分架构,可以将模拟信号转换为数字信号。
单片机可以通过控制ADC0832实现对模拟信号的采集和转换。
二、ADC0832的工作原理1. 双重积分架构ADC0832采用双重积分架构,将输入信号与一个内部参考电压进行比较,然后通过积分电路将输出结果逐渐趋近于输入信号。
当输出结果等于输入信号时,积分器停止计数,并将计数值输出为数字信号。
2. 工作模式ADC0832有两种工作模式:单次转换模式和自动转换模式。
单次转换模式下,每次启动一个新的转换需要发送启动命令;自动转换模式下,芯片会不断地进行转换并输出结果。
3. 时序控制在进行AD转换时,需要按照一定的时序进行控制。
具体来说,需要先将片选信号拉低使能芯片,在ADCS引脚上提供时钟脉冲,在START引脚上提供启动命令,在EOC引脚上读取结果并结束本次转换。
4. 数据格式ADC0832输出的数字信号是8位的,采用两个字节进行传输。
其中高字节的最高位为0,低7位存储转换结果;低字节的最高两位为0,低6位存储转换结果。
三、单片机对ADC0832的控制1. 硬件连接将ADC0832的引脚与单片机的引脚相连接,其中需要注意ADC0832的VCC和GND引脚需要与单片机提供的电源相连。
2. 软件编程单片机需要通过软件控制ADC0832进行AD转换。
具体来说,需要按照以下步骤进行编程:(1)初始化:设置ADC0832所连接的端口为输入端口,并设置相应引脚状态。
(2)启动转换:向START引脚发送启动命令,在ADCS引脚上提供时钟脉冲。
(3)等待转换结束:在EOC引脚上等待转换结束,并读取结果。
(4)输出结果:将读取到的结果进行处理并输出。
3. 注意事项在使用单片机控制ADC0832时,需要注意以下事项:(1)时序控制必须准确无误,否则会导致AD转换失败或者出现误差。
(2)电源稳定性对AD转换精度有很大影响,因此需要保证电源质量良好。
adc0832内部工作原理
adc0832内部工作原理一、引言ADC0832是一种8位分辨率的模数转换器,它可以将模拟信号转换为数字信号。
在本文中,我们将详细讨论ADC0832的内部工作原理。
二、基本概念在开始讨论ADC0832的内部工作原理之前,我们需要了解一些基本概念:1. 模拟信号:指连续变化的物理量所组成的信号。
2. 数字信号:指由离散数值表示的信号。
3. 分辨率:指数字转换器可以将模拟信号分成多少个等级。
4. 采样率:指数字转换器每秒钟可以采样多少次。
5. 时钟频率:指数字转换器内部时钟的频率。
三、ADC0832的基本结构ADC0832由以下几个主要部分组成:1. 输入缓冲区输入缓冲区用于保护输入电路不受外界干扰,并提供稳定的输入电压。
它通常由一个差分放大器和一个低通滤波器组成。
差分放大器用于放大差模输入电压,低通滤波器用于去除高频噪声。
2. 参考电压源参考电压源提供一个固定的参考电压,用于将模拟信号转换为数字信号。
它通常由一个精密的电压源和一个放大器组成。
3. 比较器比较器用于将输入信号与参考电压进行比较,并产生一个数字输出。
它通常由一个差分放大器和一个阈值电路组成。
差分放大器用于放大差模输入电压,阈值电路用于产生比较阈值。
4. 采样保持电路采样保持电路用于在ADC0832进行转换之前,将输入信号进行采样并保持其值不变。
它通常由一个开关和一个采样保持电容组成。
5. 计数器计数器用于控制ADC0832的转换速率,并计算转换结果。
它通常由一个时钟发生器和一个二进制计数器组成。
6. 数字输出接口数字输出接口用于将数字信号输出到外部系统。
它通常由一组并行输出引脚或串行输出引脚组成。
四、ADC0832的工作原理ADC0832的工作原理可以分为以下几个步骤:1. 输入缓冲区当模拟信号进入ADC0832时,首先经过输入缓冲区进行处理。
输入缓冲区通过差分放大器将差模输入电压放大,并通过低通滤波器去除高频噪声。
然后,输入缓冲区将处理后的信号送入采样保持电路。
ADC0832
ADC0832ADC08328位串⾏A/D 转换器ADC08321.功能特点ADC0832是NS(National Semiconductor)公司⽣产的串⾏接⼝8位A/D转换器,通过三线接⼝与单⽚机连接,功耗低,性能价格⽐较⾼,适宜在袖珍式的智能仪器仪表中使⽤。
ADC0832为8位分辨率A/D转换芯⽚,其最⾼分辨可达256级,可以适应⼀般的模拟量转换要求。
芯⽚具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独⽴的芯⽚使能输⼊,使多器件连接和处理器控制变得更加⽅便。
通过DI 数据输⼊端,可以轻易的实现通道功能的选择。
其主要特点如下:●8位分辨率,逐次逼近型,基准电压为5V;●5V 单电源供电;●输⼊模拟信号电压范围为0~5V;●输⼊和输出电平与TTL 和CMOS 兼容;●在250KHZ 时钟频率时,转换时间为32us;●具有两个可供选择的模拟输⼊通道;●功耗低,15mW。
2.外部引脚及其说明ADC0832有DIP 和SOIC 两种封装,DIP 封装的ADC0832引脚排列如图6.21所⽰。
各引脚说明如下:●CS——⽚选端,低电平有效。
●CH0,CH1——两路模拟信号输⼊端。
●DI——两路模拟输⼊选择输⼊端。
●DO——模数转换结果串⾏输出端。
●CLK ——串⾏时钟输⼊端。
●Vcc/REF——正电源端和基准电压输⼊端。
●GND——电源地。
3.单⽚机对ADC0832的控制原理⼀般情况下ADC0832与单⽚机的接⼝应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单⽚机的接⼝是双向的,所以电路设计时可以将DO 和DI 并联在⼀根数据线上使⽤。
当ADC0832未⼯作时其CS输⼊端应为⾼电平,此时芯⽚禁⽤,CLK 和DO/DI 的电平可任意。
当要进⾏A/D转换时,须先将CS端置于低电平并且保持低电平直到转换完全结束。
此时芯⽚开始转换⼯作,同时由处理器向芯⽚时钟输⼊端CLK提供时钟脉冲,DO/DI端则使⽤DI端输⼊通道功能选择的数据信号。
adc0832内部工作原理
adc0832内部工作原理1. 简介在嵌入式系统中,ADC(Analog-to-Digital Converter)是一种常见的模数转换器。
adc0832是一款典型的8位模数转换器,用于将模拟信号转换为数字信号。
本文将详细探讨adc0832的内部工作原理。
2. adc0832的构成adc0832由多个模块构成,包括输入电压电平比较器、采样保持电路、逐次逼近注册器(SAR)和数字信号输出缓冲器等。
2.1 输入电压电平比较器输入电压电平比较器用于将模拟信号与参考电压进行比较。
adc0832有两个模拟信号输入引脚,分别是AIN0和AIN1,以便进行差分输入。
输入的模拟信号经过放大和比较后,输出高低电平。
2.2 采样保持电路adc0832的采样保持电路用于将输入信号进行采样和保持。
在采样期间,输入信号的电压被保持在一个电容器上,以便在转换过程中保持稳定。
2.3 逐次逼近注册器(SAR)逐次逼近注册器(SAR)是adc0832的核心部分。
它通过逐位逼近的方式将模拟信号转换为数字信号。
工作原理如下:1.SAR从最高有效位(MSB)开始,将比较结果与DAC(Digital-to-AnalogConverter)输出进行比较。
2.如果比较结果大于DAC输出,则该位设置为1,否则设置为0。
3.SAR切换到下一位,重复上述过程。
4.直到所有位都被处理完毕,转换完成。
2.4 数字信号输出缓冲器数字信号输出缓冲器用于将数字信号进行缓冲,以便输出给外部设备。
3. adc0832的工作流程adc0832的工作流程如下:1.初始化:设置adc0832的工作模式、参考电压和输入信号源等。
2.转换开始信号:通过向adc0832发送一个转换开始信号,启动转换过程。
3.采样与保持:adc0832对输入信号进行采样并保持。
4.逐次逼近转换:adc0832通过逐位逼近的方式进行模拟信号转换,将其转换为数字信号。
5.转换完成信号:adc0832在转换完成后发送一个转换完成信号。
模数转换ADC0832的应用
下面,我们看看这部分程序该怎么写。
图四 这个是读取数值的子函数,二通道独立读取,入口参数是通道值(0 或 1),出口参 数则是读取的结果,里面对两次读取的值进行判断,实际应用中,可以灵活处理,要不要判 断、如果数值不一致要不要返回标志。 应用时,只要写成 变量名=GetValue0832(通道值); 即可返回转换值。 由于 ADC0832 是 8 位分辨率,返回的数值在 0~255 之间,对应模拟数值为 0~5V, 因此每一档对应的电压值约为 0.0196V。大家可以在通道输入端引入模拟信号(0~5V)进 行测试,比如可以在通道脚和地之间接入电池来测试电池电压值。
unsigned int i; for(;ucDelay > 0;ucDelay--)
for(i = 112;i > 0;i--); }
- 专业电子技术交流社区 电子工程师网上家园 -
电子
第 9页
模数转换 ADC0832 的应用
电子园
1、 电子园网站简介
}
unsigned char GetValue0832(bit Channel)
{
unsigned char i,data1=0,data2=0;
clk=0;
dodi=1; cs=0;//cs=0 时 ADC0832 有效
clk=1; clk=0;//第一个脉冲,开始位
dodi=1;
clk=1; clk=0;//第二个脉冲,模式选择 dodi=Channel;//通道选择
adc0832的工作原理
adc0832的工作原理ADC0832是一款8位精密模数转换器,它具有许多特性,使其成为许多数字系统的理想选择。
在本文中,我们将深入探讨ADC0832的工作原理,以便更好地理解它的功能和应用。
首先,让我们来了解一下ADC0832的基本工作原理。
ADC0832采用了双重转换技术,即首先进行采样保持(S/H)转换,然后进行模数(A/D)转换。
在采样保持转换阶段,输入信号被采样并保持在一个电容器中,以确保在进行模数转换时能够获得准确的输入信号。
接下来,在模数转换阶段,采样保持电压被转换成相应的数字输出,该输出可以通过数字接口进行读取和处理。
ADC0832的工作原理主要涉及到其内部的运算放大器、采样保持电路和模数转换器。
首先,运算放大器负责放大输入信号,并将其传递给采样保持电路。
采样保持电路则负责对输入信号进行采样和保持,并将其传递给模数转换器进行数字化处理。
模数转换器则将模拟信号转换为相应的数字输出,以便于数字系统进行进一步处理和分析。
此外,ADC0832还具有一些特殊的工作原理,如内部参考电压源和串行接口。
内部参考电压源可以提供稳定的参考电压,以确保模数转换的准确性和稳定性。
而串行接口则可以方便地与微控制器或其他数字系统进行通信,实现数据的传输和控制。
总的来说,ADC0832的工作原理是基于运算放大器、采样保持电路和模数转换器的协同作用,通过将模拟信号转换为数字输出,实现对输入信号的准确采样和数字化处理。
同时,其内部的特殊工作原理也为数字系统的应用提供了便利和稳定性。
在实际应用中,了解ADC0832的工作原理对于正确使用和优化其性能至关重要。
只有深入理解其内部原理,才能更好地设计和调试数字系统,实现更高的性能和稳定性。
因此,通过深入研究和理解ADC0832的工作原理,可以更好地发挥其在各种数字系统中的作用,为工程应用提供更多可能性和创新空间。
综上所述,ADC0832是一款功能强大的8位精密模数转换器,其工作原理基于运算放大器、采样保持电路和模数转换器的协同作用。
ADC0832驱动程序讲解
调试技巧与工具
使用调试工具
利用调试工具如串口调试器、示波器等,观察程序运行过程中的关键 变量、信号波形等,以便快速定位问题。
逐步执行
在关键代码段逐步执行,观察程序运Байду номын сангаас状态和数据变化,以便找出问 题所在。
内存检查
使用内存检查工具检查程序是否有内存泄漏、越界等问题。
单元测试与集成测试
进行单元测试和集成测试,确保驱动程序各模块之间的协调工作正常。
它采用CMOS技术,具有低功 耗、低成本、高精度等优点。
ADC0832的接口简单,易于与 微控制器连接,广泛应用于各 种模拟信号的采集和转换。
特点与优势
分辨率
ADC0832的分辨率为8位,可以提供256个 不同的等级。
电源电压
ADC0832的电源电压范围为+5V至+15V, 适应不同的电源需求。
转换时间
ADC0832的转换时间较短,最快可以在1微 秒内完成。
接口
ADC0832采用三线制串行接口,可以方便 地与微控制器连接。
应用领域
数据采集
01
ADC0832可以用于各种数据采集系统,如温度、压力、流量等
传感器信号的采集和转换。
控制系统
02
ADC0832可以用于控制系统的模拟信号输入,实现自动控制和
05 ADC0832驱动程序优化 与调试
性能优化
优化代码结构
采用高效的数据结构和算法,减少不 必要的计算和资源占用。
减少中断处理时间
优化中断处理函数,减少中断处理时 间,提高系统响应速度。
合理使用缓存
根据程序需求,合理使用缓存,提高 数据访问速度。
降低功耗
优化电源管理,降低系统功耗,延长 设备使用寿命。
模数转换电路分析(ADC0832)18页
PSEN ALE EA
CH1 作为RV正2 输入端RINV1+进行输入。
96% 100%
10k
10k
1 2 3 4
CS CH0 CH1 GND
VCC CLK
DI DO
8 7 5 6
U2 ADC0832
+88.8
Volts
+88.8
Volts
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
(1)当要进行A/D转换时,须先将CS使能端置于 低电平并且保持低电平直到转换完全结束。此时 芯片开始转换工作;
(2)同时由处理器向芯片时钟输入端CLK 输入时 钟脉冲,DO/DI端则使用DI端输入通道功能;
(3)在第1 个时钟脉冲的下沉之前DI端必须是高 电平,表示启始信号。在第2、3个脉冲下沉之前 DI端应输入2 位数据用于选择通道功能;
模数转换(ADC0832)应用
一、 ADC0832介绍 二、C语言程序设计 三、实训
一、 ADC0832介绍
1、Feature
8-Bit Resolution; Easy Microprocessor interface or Stand-Alone Operation; Operates Ratiometrically or With 5-V Reference; Single Channel or Multiplexed Twin Channels With Single-Ended or Differential Input Options; Input Range 0 to 5 V With Single 5-V Supply; Inputs and Outputs Are Compatible With TTL and MOS Conversion Time of 32 ms at CLK = 250 kHz; Designed to Be interchangeable With National Semiconductor ADC0831 and ADC0832
(完整word版)ADC0832芯片介绍
这一课我们来学习ADC0832芯片的应用。
模-数(AD)和数-模(DA)转换是模拟电路和数字电路进行沟通的渠道,从前面的课程我们知道,数字电路里,电平只有高和低两种状态,比如5V和0V,对应着1和0;模拟电路里,电平则理论上有无数个状态,比如0V、0。
1V、0。
2V…等等。
如何将模拟电平值在数字电路里表达出来呢?这就需要AD转换过程,同理的,也有DA转换过程。
这一课,我们就利用实验板上的ADC0832芯片来实AD转换这一过程。
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℃ to +85℃下面看看它的引脚及功能。
ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求.其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。
芯片转换时间仅为32μS,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。
独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便.通过DI数据输入端,可以轻易的实现通道功能的选择.正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。
但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。
adc0832芯片工作原理
adc0832芯片工作原理
ADC0832芯片是一种8位串行式模数转换器(ADC),其主要用途是将模拟信号转换为数字信号。
它是由8位逐次逼近型模数转换器和一个控制逻辑组成的。
该芯片的工作原理可以简单概括为以下几个步骤:
1. 时钟控制:ADC0832芯片需要外部提供时钟信号,它使用时钟信号来同步转换过程。
时钟信号通常由系统的主时钟提供,并通过控制信号进行配置。
2. 输入信号采样:ADC0832具有单通道输入,它可以接收来自传感器或其他模拟信号源的输入信号。
输入信号被采样并存储在输入采样保持电容中。
3. 开始转换信号:当需要进行模数转换时,通过向ADC0832芯片发送启动转换的控制信号来触发转换过程。
4. 逐次逼近转换:ADC0832使用逐次逼近型模数转换技术。
它将输入信号与一个内部比较器进行比较,并根据比较结果调整一个逐次逼近型数字-模拟转换器(DAC)输出电压。
逼近过程将持续进行,直到
逼近型DAC输出电压与输入信号的比较结果达到一定精度。
5. 转换结果输出:一旦转换完成,ADC0832芯片将转换结果以串行方式输出。
通过数据线将转换结果传输给外部的微控制器或其他数字设备。
需要注意的是,ADC0832芯片还具有一些配置寄存器,用于设置转换精度、参考电压和其他参数。
这些寄存器可以通过发送相应的控制信号来配置。
总的来说,ADC0832芯片通过时钟控制、输入信号采样、逐次逼近转换和转换结果输出等步骤,将模拟信号转换为相应的8位数字信号。
它是一种常用的模数转换器,在许多应用中广泛使用,如传感器接口、数据采集和控制系统等。
adc0832模数转换的串行协议
竭诚为您提供优质文档/双击可除adc0832模数转换的串行协议篇一:单片机和adc0832的ad模数转换单片机和adc0832的ad模数转换在工业控制和智能化仪表中,通常由微型计算机进行实时控制及实时数据处理。
计算机所加工的信息总是数字量,而被控制或被测量的有关参量往往是连续变化的模拟量,如温度、速度、压力等等,与此对应的电信号是模拟信号。
模拟量的存储和处理比较困难,不适合作为远距离传输且易受干扰。
在一般的工业应用系统中传感器把非电量的模拟信号变成与之对应的模拟信号,然后经模拟(analog)到数字(digital)转换电路将模拟信号转成对应的数字信号送微机处理。
这就是一个完整的信号链,模拟到数字的转换过程就是我们经常接触到的adc(analogtodigitalconvert)电路。
模-数转换(adc)简介模-数转换原理adc的转换原理根据adc的电路形式有所不同。
adc电路通常由两部分组成,它们是:采样、保持电路和量化、编码电路。
其中量化、编码电路是最核心的部件,任何adc转换电路都必须包含这种电路。
adc电路的形式很多,通常可以并为两类:间接法:它是将采样-保持的模拟信号先转换成与模拟量成正比的时间或频率,然后再把它转换为数字量。
这种通常是采用时钟脉冲计数器,它又被称为计数器式。
它的工作特点是:工作速度低,转换精度高,抗干扰能力强。
直接法:通过基准电压与采样-保持信号进行比较,从而转换为数字量。
它的工作特点是:工作速度高,转换精度容易保证。
模—数转换的过程有四个阶段,即采样、保持、量化和编码。
采样是将连续时间信号变成离散时间信号的过程。
经过采样,时间连续、数值连续的模拟信号就变成了时间离散、数值连续的信号,称为采样信号。
采样电路相当于一个模拟开关,模拟开关周期性地工作。
理论上,每个周期内,模拟开关的闭合时间趋近于0。
在模拟开关闭合的时刻(采样时刻),我们就“采”到模拟信号的一个“样本”。
量化是将连续数值信号变成离散数值信号的过程。
单片机对adc0832的控制原理
单片机对adc0832的控制原理1. 介绍ADC0832是一种8位串行输出模数转换器,常用于单片机系统中进行模拟信号的数字化转换。
本文将详细介绍单片机对ADC0832的控制原理。
2. ADC0832的基本特性ADC0832具有以下几个基本特性:•输入通道:ADC0832有8个模拟输入通道,可以选择其中一个通道进行模数转换。
•分辨率:ADC0832是一个8位的模数转换器,输出的数字范围为0-255。
•时钟信号:ADC0832需要外部提供时钟信号,以控制数据的转换和输出。
•串行输出:ADC0832的输出是串行的,需要通过SCL(串行时钟线)和SDA (串行数据线)进行传输。
3. 接口连接在单片机系统中,要使用ADC0832进行模数转换,需要将其与单片机连接起来。
连接方式如下:•SCL连接:将ADC0832的SCL引脚连接到单片机的某个GPIO引脚,用于提供时钟信号。
•SDA连接:将ADC0832的SDA引脚连接到单片机的某个GPIO引脚,用于传输数据。
•输入通道选择:将ADC0832的A0、A1、A2引脚连接到单片机的某个GPIO引脚,用于选择输入通道。
•VCC和GND连接:将ADC0832的VCC引脚连接到单片机供电的正电源,将GND引脚连接到单片机供电的地线。
4. 控制流程使用单片机对ADC0832进行控制的流程一般如下:1.配置GPIO引脚:将SCL、SDA和输入通道引脚配置为输出模式。
2.选择输入通道:通过将A0、A1、A2引脚设置为逻辑高或逻辑低,选择要进行模数转换的输入通道。
3.发送启动信号:将SCL引脚设置为高电平,然后将SDA引脚设置为低电平,发送启动信号。
4.控制时钟信号:通过控制SCL引脚的电平,提供时钟信号给ADC0832,控制数据的转换和输出。
5.读取数据:根据ADC0832的时序要求,在时钟信号控制下,读取ADC0832的输出数据。
5. 控制程序以下是一个使用C语言编写的单片机控制ADC0832的示例程序:// 定义GPIO引脚号#define SCL_PIN 1#define SDA_PIN 2#define A0_PIN 3#define A1_PIN 4#define A2_PIN 5// 初始化ADC0832控制引脚void initADC0832Pins() {// 配置为输出模式GPIO_SetPinDirection(SCL_PIN, OUTPUT);GPIO_SetPinDirection(SDA_PIN, OUTPUT);GPIO_SetPinDirection(A0_PIN, OUTPUT);GPIO_SetPinDirection(A1_PIN, OUTPUT);GPIO_SetPinDirection(A2_PIN, OUTPUT);}// 选择输入通道void selectInputChannel(int channel) {// 设置A0、A1、A2引脚的电平GPIO_WritePin(A0_PIN, (channel & 0x01) == 0x01 ? HIGH : LOW);GPIO_WritePin(A1_PIN, (channel & 0x02) == 0x02 ? HIGH : LOW);GPIO_WritePin(A2_PIN, (channel & 0x04) == 0x04 ? HIGH : LOW);}// 发送启动信号void sendStartSignal() {GPIO_WritePin(SCL_PIN, HIGH);GPIO_WritePin(SDA_PIN, LOW);delay(1);GPIO_WritePin(SCL_PIN, LOW);delay(1);}// 控制时钟信号void controlClockSignal() {// 根据时序要求控制SCL引脚的电平// ...}// 读取数据int readData() {int data = 0;// 读取ADC0832的输出数据// ...return data;}// 主程序int main() {initADC0832Pins();while (1) {int channel = 0; // 选择通道0进行模数转换selectInputChannel(channel);sendStartSignal();controlClockSignal();int data = readData();// 处理模数转换结果// ...delay(1000); // 延迟一段时间后进行下一次模数转换}}6. 总结本文介绍了单片机对ADC0832的控制原理,包括ADC0832的基本特性、接口连接、控制流程和控制程序。
实验ADC0832数模转换的显示
硬件连接
将ADC0832的VCC和GND连接 到数字电源和地线
将ADC0832的OUT引脚连接到微 控制器的模拟输入引脚
将ADC0832的 S TA R T / C O N V S T 和 C / D 连 接 到 微 控 制 器 的 S TA R T / C O N V S T 和 C/D引脚
实验ADC0832数模转换 的显示
XX,a click to unlimited possibilities
汇报人:XX
目录
01 添 加 目 录 项 标 题 03 实 验 操 作 步 骤
02 A D C 0 8 3 2 数 模 转 换器介绍
04 实 验 结 果 分 析
05 A D C 0 8 3 2 的 优 缺 点
实验结果:通 过显示器观察 到数字信号转 换为模拟信号 的过程,以及 模拟信号的波
形
结果分析:分 析实验结果, 验证数模转换 的正确性和精
度
实验结论:得 出实验结论, 总结数模转换 在现实应用中 的意义和价值
Part Four
实验结果分析
实验数据展示
输入信号的频率和幅度
数模转换器的分辨率和精 度
集成更多的功能和接口
Part Six
数模转换器的发展 趋势
数模转换器技术发展历程
早期数模转换器: 精度低,速度慢, 应用范围有限
8位数模转换器: 精度提高,速度 加快,广泛应用 于消费电子产品
高精度数模转换 器:12位、16位 甚至更高精度, 满足高精度测量 和控制系统需求
高速数模转换器: 高采样率,低失 真,适用于宽带 信号处理和雷达 系统等
Part Five
ADC0832的优缺 点
DS18B20和ADC0832共同使用
DS18B20和ADC0832共同使用DS18B20是一款数字温度传感器,它采用单总线接口进行通信,只需要一个引脚就能完成数据的传输。
它具有精确的温度测量能力,温度范围为-55℃到+125℃,精度可达±0.5℃。
DS18B20芯片内部有一个ROM存储器,用于存储每个传感器的唯一序列号,可以通过读取序列号来区分不同的传感器。
ADC0832是一款8位模数转换器,它可以将模拟信号转换为数字信号。
ADC0832具有2个模拟输入通道和1个数字输出接口。
它采用串行通信方式与主控芯片进行数据传输,通过配置转换通道和启动转换命令,可以实现对模拟信号的采样和转换。
ADC0832具有较高的转换精度和采样速率,适用于多种数据采集和测量应用。
我们可以将DS18B20和ADC0832结合起来,实现对温度进行采集和转换。
具体实现步骤如下:1. 连接硬件:将DS18B20和ADC0832与主控芯片(如Arduino)连接。
DS18B20通过单总线接口连接到主控芯片的数字引脚,ADC0832通过串行通信接口连接到主控芯片的数字引脚。
确保连接正确,使得主控芯片能够与两个芯片进行通信。
2.初始化DS18B20:在程序中初始化DS18B20传感器,读取每个传感器的唯一序列号,并将其保存在变量中以供后续使用。
可以使用DS18B20的相关库函数来完成这些操作。
3.初始化ADC0832:在程序中初始化ADC0832,配置转换通道和采样参数。
可以使用ADC0832的相关库函数来完成这些操作。
4.温度采集:通过对DS18B20传感器发送读取温度的命令,获取温度值。
可以使用DS18B20的相关库函数来实现温度的读取。
5.模拟信号采集:通过对ADC0832发送启动转换的命令,开始模拟信号的采样和转换。
等待转换完成后,通过读取ADC0832的输出接口,获取转换后的数字信号。
可以使用ADC0832的相关库函数来实现这些操作。
6.数据处理:将获取到的温度值和模拟信号进行处理,可以进行数据显示、保存、传输等操作。
ADC0832模数转换与显示.详述
符串 • Set_Disp_Pos(0x46);
置显示位置 • i=0; • while(Display_Buffer[i]!='\0') • LCD_Write_Data(Display_Buffer[i++]) ;
•
• while(1)
•{
• //获取AD转换值,最大值255对应于最高电压5.00v
• //本例中设计为显示三个数位,故使用500
• d=Get_AD_Result()*500.0/255;
//设置显示位置
//将AD转换后得到数据分解为三个数位 • Display_Buffer[0]=d/100+'0'; • Display_Buffer[2]=d/10%10+'0'; • Display_Buffer[3]=d%10+'0'; • Set_Disp_Pos(0x01);
程序总流程图
2、A/D转换子程序
A/D转换子程序用来控制对输入模块电压信号 的采集测量,并将对应的数值存入相应的 内存单元。
A/D转换子程序流程图
3、LCD显示子程序
LCD显示程序的设计一般先要确定LCD的初 始化、光标定位、确定显示字符。
实物图
总结
• 本次设计即基于A/D转换器原理,通过一个A/D( ADC0832模拟数字转换)芯片采集外界信息后, 将外侧电压信号转换成数字型号,再由AT89C51 单片机分析并进行处理信号,最终输出信号,由 1602液晶曲线显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A/D转换芯片ADC0832的应用
作者:杜洋
2005年10月11日
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
芯片接口说明:
·CS_ 片选使能,低电平芯片使能。
·CH0 模拟输入通道0,或作为IN+/-使用。
·CH1 模拟输入通道1,或作为IN+/-使用。
·GND 芯片参考0电位(地)。
·DI 数据信号输入,选择通道控制。
·DO 数据信号输出,转换数据输出。
·CLK 芯片时钟输入。
·Vcc/REF 电源输入及参考电压输入(复用)。
ADC0832与单片机的接口电路:
图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
如表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
作为单通道模拟信号输入时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芯片接口程序[汇编]:
/*-------------------------------------------
子程序名: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
;====子程序结束====。