标题: 关于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仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,书中电路和程序设计有详细说明,程序语句条条有注解。
作者: zl2168 时间: 2018-5-24 20:08
实例86 ADC0832串行A-D(虚拟CLK)
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,书中电路和程序设计有详细说明,程序语句条条有注解。
作者: kuailea 时间: 2018-5-25 10:13
特别感谢!!!!
作者: anjunjin 时间: 2020-4-22 02:20
你看一下它的时序图,ADC0832是一个双输入校验
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |