谁知道ad0832的工作原理?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-07
ADC0832的作用是什么?

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


扩展资料
正常情况下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 位数据用于选择通道功能。

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

逐次比较形的AD转换器 哦 是ADC 还是 DAC ?????

AD0832是8位逐次逼近模数转换器,可支持两个单端输入通道和一个差分输入通道。是8位逐次逼近模数转换器,可支持两个单端输入通道和一个差分输入通道。

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,当要进行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+进行输入。

在完成输入启动位、通道选择之后,就可以开始读出数据,转换得到的数据会被送出二次,一次高位在前传送,一次低位在前传送,连续送出。在程序读取二个数据后,我们可以加上检验来看看数据是否被正确读取。 

由于ADC0832是8位分辨率,返回的数值在0~255之间,对应模拟数值为0~5V,因此每一档对应的电压值约为0.0196V。大家可以在通道输入端引入模拟信号(0~5V)进行测试,比如可以在通道脚和地之间接入电池来测试电池电压值。为使两位数码管显示电压值大小,在写程序是可将对应比值改位0.196,同理,如果想要显示精度更高,可用三位或四位显示,那么响应的改一下比值为1.96或19.6,当然,需要注意你所得数据的大小是否超出数据类型的大小。

时序图



串行AD转换器ADC0832的使用

单片机控制系统中通常要用到AD转换,根据输出格式,常用的AD转换方式可分为并行AD和串行AD。并行方式一般在转换后可直接接收,但芯片的引脚比较多;串行方式所用芯片引脚少,封装小,但需要软件处理才能得到所需要的数据。可是单片机I/O引脚本来就不多,使用串行器件可以节省I/O资源。

ADC0832是8位逐次逼近模数转换器,可支持两个单端输入通道和一个差分输入通道。相同功能的器件还有ADC0834,ADC0838,ADC0831。所不同的是它们的输入通道数量不同。它们的通道选择和配置都是通过软件设置。AD0832的主要特点如下:

● 易于和微处理器接口或独立使用;

● 可满量程工作;

● 可用地址逻辑多路器选通各输入通道;

● 单5V供电,输入范围为0~5V;

● 输入和输出与TTL、CMOS电平兼容;

ADC0832通过内部多路器来控制选择通道,处理器的控制命令通过DI引脚输入。引脚图如右图所示,通道配置命令和通道选择命令如下:

输入配置可在多路器寻址时序中进行。多路器地址可通过DI端移入转换器。多路器地址选择模拟输入通道可决定输入是单端输入还是差分输入。当输入是差分时,应分配输入通道的极性,并应将差分输入分配到相邻的输入通道对中。例如通道0和通道1可被选为一对差分输入。另外,在选择差分输入方式时,极性也可以选择。一对输入通道的两个输入端的任何一个都可以作为正极或负极。通常ADC0832在输出以最高位(MSB)开头的数据流后,会以最低位(LSB)开头重输出一遍(前面的数据流)。(因此,编程时要发两轮脉冲,第一次取数据,第二次若不要从低到高的数据,也要发一轮8 个脉冲将0832中寄存器的数据移出。是的,)其工作时序如下所示:

ADC0832有8只引脚,CH0和CH1为模拟输入端,CS为片选引脚,只有CS置低才能对ADC0832进行配置和启动转换。CLK为ADC0832的时钟输入端。CS在整个转换过程中都必须为低,当CS为低时,在数据输入端DI(数据输入端)加一个高电平(这个高电平是否算在送到DI的一位之中?如果算,那么后面就只要再送两位。是的,这个高电平是作为起始标志),接着在CLK上加一个时钟,DI上的逻辑1就会使ADC0832的DI脱离高阻态,然后通道配置数据拌随着时钟通过DI端移入多路器,当最后一位数据移入多路器时(数据是三位吗?还是可以有更多位?是否因为是仅仅作状态设置,所以只须三位?数据是三位,前一位标志输入开始,后两位是用来作通道设置和选择),DI变为高阻态,在这以前DO(数据输出端)都为高阻态(这个“以前”的概念是什么?就是CS从高跳到低到现在)。在经过一个时钟(是指在最后一个数据从DI移入后,还要再经过一个时钟?是的,当最后一位数据移入DI,需要再加一个时钟使DO脱离高阻态),DO脱离高阻态并启动转换。接着从处理器接收时钟信号,每经过一个时钟,转换后的数据就会从高位到低位逐次从DO移出,经过8个时钟后,数据又以从低位到高位的形式从DO移出(也是每个时钟移一位)。当最后一位数据移出时转换完成。当CS从低变为高时,ADC0832内部所有寄存器清零。如想要进行下一次转换,CS必须做一个从高到低的跳变,后跟着地此配置数据重复上面的过程。

在进行单片机和ADC0832的连接时,因为DI和DO并不是同时使用,所以DI和DO可以共用单片机的一条I/O线,再加上一条时钟线和一条片选线就可以实现单片机和ADC0832的连接,电路连接例子如下图所示:

ADC0832在51单片机上的AD转换程序的设计也不复杂,下面给出以上图为例的51单片机程序:

adc_0832_cs bit p2.2

adc_0832_clk bit p2.1

adc_0832_di bit p2.0

adc_0832_ch0 equ 38h ;buf of ch0

adc_0832_conv: push a

push psw

push 0

clr adc_0832_clk ;clear clok

clr adc_0832_di

setb adc_0832_cs ;set CS to enable converters

clr adc_0832_cs ; cs作一个从高到低的跳变。

setb adc_0832_di ;set start bit to enable data input

setb adc_0832_clk ; clk作一个从高到低的跳变,并不是从高到低跳变,而是一个上升脉冲,因为在这步以前clk处于低电平,现在是先高,然后又低,形成一个上升脉冲

clr adc_0832_clk ;上面指令中di的1进入寄存器。

setb adc_0832_di ;MSB address select CH0

setb adc_0832_clk ; clk第二个从高到低的跳变,

clr adc_0832_clk ;上面指令中di再进一个1到寄存器。

clr adc_0832_di ;LSB address

setb adc_0832_clk

clr adc_0832_clk ;上面指令中,di进入的数据为110。

setb adc_0832_clk ;设高位先行进入。

clr adc_0832_clk ;上面说的再进一个时钟就是最后的这个吧?是的,这个时钟使DO脱离高阻态

adc_conv: mov r0,#08h ;该段从0832取数。

adc_next_bit: mov c,adc_0832_di

rlc a

setb adc_0832_clk

clr adc_0832_clk

nop

djnz r0,adc_next_bit

mov r0,#08h ;该段就是所说的0832又从低位到高位再送一次数,

adc_skip_byte: setb adc_0832_clk ;但这里不作保存,只空操作8个时钟,

clr adc_0832_clk ;将0832从低位到高位的8个数据扔出去。

djnz r0,adc_skip_byte

setb adc_0832_clk

clr adc_0832_clk

setb adc_0832_cs ;完事后将cs置高。

mov r0,#adc_0832_ch0

mov @r0,a

pop 0

pop psw

pop a

ret

这是8位的AD模数转换器,逐次比较式的,速度很快,抗干扰差。



  • 谁知道ad0832的工作原理?
    答:AD0832是8位逐次逼近模数转换器,可支持两个单端输入通道和一个差分输入通道。是8位逐次逼近模数转换器,可支持两个单端输入通道和一个差分输入通道。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换...
  • 单片机里面ADC0832和AD0832一样吗?是同一个概念吗
    答:只是有些地方叫AD0832;本来的名称是ADC0832;是一款模拟转数字的芯片;
  • DA0832芯片做DA转换中的那个Vref作为参考电压有啥用啊?貌似和AD转换逐...
    答:是不太一样,AD里的Vref是做比较电压,由运放跟输入电压作比较,输入电压小于Vref就是0,大于就是1,而DA里的Vref是提供电流,DA内部有T型网络电阻,I=verf/R,从右往左推每个2R和2R并联阻值为1R,1R再串联左侧1R则为2R,推得当D7=1时,得到电流为1/2的I,D6=1时,为1/4的I,当D5=1...
  • 单片机date=ad0832read什么意思
    答:ad0832read()是一个带返回值的子程序(函数),这样就 把这个子程序的返回值赋给了date这个变量 date意思是“数据”,不是“日期”由于data 是C语言关键字,不能做变量名称,所以常用 date 或value 作为和它同义的变量名,你也可以用汉语拼音”shuju“做为变量名称 ...
  • ad0832转换器与单片机的连接的外围电路
    答:你好,可以参照下图啊。
  • adc0832程序为啥输出的是1---255,怎么才能输出0--255
    答:unsigned char i,dat;CS=1; //一个转换周期开始 CLK=0; //为第一个脉冲作准备 CS=0; //CS置0,片选有效 DIO=1; //DIO置1,规定的起始信号 CLK=1; //第一个脉冲 CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平 DIO=1; //DIO置1, 通道选择信号 CLK=1;...
  • ad0832不会用啊
    答:uchar read_adc(){ uchar i,dat1=0,dat2=0;CS = 1; //transfer cycle start CLK = 0; // CS = 0; //ChipSelect enable DIO = 1; _nop_(); _nop_(); //DI=1 for START bit CLK = 1; _nop_(); _nop_(); //first pluse DIO = 0; //DI reverse ...
  • 单片机原理课程设计 题目:电阻量测量
    答:你好!AD0832可以采集,然后通过计算,算出被测电阻,题目库完成
  • ad0832和51单片机比较电压值,帮我写下程序
    答:/***AD0832初始化***/ void AD_init(void){ CS=1;//开始禁止芯片工作 CLK=0;//初始到0,芯片还没工作,没影响 CS=0;//开始芯片工作 D1=1;CLK=1;D1=1;CLK=0;CLK=0;//延时用 CLK=1;D1=1;CLK=0;CLK=0;//延时用 CLK=1;D1=0;CLK=0;_nop_();} /***AD0832值计算***...
  • ...电路的电压,在实物搭建的过程中,是不是只要将AD0832的
    答:AD0832的电源端应该接5V电源。