标题: 关于ADC0832的数据输出输入问题 [打印本页]

作者: kuailea    时间: 2018-5-24 16:05
标题: 关于ADC0832的数据输出输入问题
        for(i=0;i<8;i++)
        {        //八位读取,从高往低读。
        //dat或上数据并存放于dat内,并左移一位,再接收下一位数据
                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;
        }

关于ADC0832这个我一直不明白一点,就是后面为什么需要读取相反字节的数据呢,前面不是已经读取了八位了吗,另外               
j=j<<7;
ndat=ndat|j;
if(i<7)
ndat>>=1;
这几行代码如何解释,求大神回答

作者: anyhowlk    时间: 2018-5-24 16:42
读取回来的数据还需要数据左右移位,是看你需要的精度。
作者: anyhowlk    时间: 2018-5-24 16:43
后面还有一个这个语句   dat|=ADDO;   是为了检验读取回来的数据是否真实
        
作者: zl2168    时间: 2018-5-24 20:03
本帖最后由 zl2168 于 2018-5-24 20:06 编辑

ADC 0832串行A/D转换工作时序

图6-12为ADC0832串行A-D转换工作时序,从图中看出,其工作时序分为两个阶段:第一阶段为起始和通道配置,由CPU发送,从ADC0832 DI端输入;第二阶段为A-D转换数据输出,由ADC0832从DO端输出,CPU接收。

⑴ 起始和通道配置
表6-3   ADC 0832通道选择
编码
通道选择
CH0    CH1
00
+      -
01
-      +
10
11
  +
该阶段由4个时钟组成。在片选CS满足条件(完成从高到低的跳变)后,第1个时钟脉冲的上升沿,测得DI=1,即启动ADC0832;第2、3个时钟上升沿输入A-D通道地址选择:00和01为差分输入,10和11为单端输入,如表6-3所示;第3个时钟下降沿,DI关断;第4个时钟是ADC0832使多路转换器选定的通道稳定,DO脱离高阻状态。⑵ A-D转换数据串行输出 ADC0832输出的A-D转换数据分为二帧:第一帧从高位(MSB)到低位(LSB),第二帧从低位到高位,二帧数据合用一个最低位,共需要15个时钟。

作者: zl2168    时间: 2018-5-24 20:06
本帖最后由 zl2168 于 2018-5-24 20:07 编辑

实例85  ADC0832串行A-D(TXD输出CLK)
Proteus仿真一下,确认有效。
实例85 ADC0832串行A-D( TXD输出CLK).rar (36.86 KB, 下载次数: 73)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,书中电路和程序设计有详细说明,程序语句条条有注解。

作者: zl2168    时间: 2018-5-24 20:08
实例86  ADC0832串行A-D(虚拟CLK)
Proteus仿真一下,确认有效。
实例86 ADC0832串行A-D(虚拟CLK).rar (35.29 KB, 下载次数: 49)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,书中电路和程序设计有详细说明,程序语句条条有注解。

作者: kuailea    时间: 2018-5-25 10:13
zl2168 发表于 2018-5-24 20:08
实例86  ADC0832串行A-D(虚拟CLK)
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿 ...

特别感谢!!!!
作者: anjunjin    时间: 2020-4-22 02:20
你看一下它的时序图,ADC0832是一个双输入校验




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1