找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10239|回复: 7
打印 上一主题 下一主题
收起左侧

关于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;
这几行代码如何解释,求大神回答
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:223170 发表于 2018-5-24 16:42 | 只看该作者
读取回来的数据还需要数据左右移位,是看你需要的精度。
回复

使用道具 举报

板凳
ID:223170 发表于 2018-5-24 16:43 | 只看该作者
后面还有一个这个语句   dat|=ADDO;   是为了检验读取回来的数据是否真实
        
回复

使用道具 举报

地板
ID:111634 发表于 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个时钟。
回复

使用道具 举报

5#
ID:111634 发表于 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案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

6#
ID:111634 发表于 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案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

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

特别感谢!!!!
回复

使用道具 举报

8#
ID:713735 发表于 2020-4-22 02:20 | 只看该作者
你看一下它的时序图,ADC0832是一个双输入校验
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表