if(dq==1)value0x23|=0x80;这句是什么意思?关于ds18b20的

在Proteus中有DS18b20这个元件库可以直接调鼡如图所示。

上图就是用LED显示检测问题的的仿真图A表示正,温度检测的程序如下

//饮水槽温控系统控制程序

WriteOneChar(0xBE); //读取温度寄存器等(共可读9個寄存器)前两个就是温度

  y=t[1]|x; //将高低字节的有效值的整数部分拼成一个字节

//以下程序段消去随机误检查造成的误判,只有连续12次检测到温度超出限制才切换加热装置

}
比如说读暂存器字节0与字节1(读轉换好的数据)是发送一个指令后,18b20一直不停输出那些数据还是每次需要我给它一个信号说:我要读下一个位了。它才把下一位输出來PS:资料上木... 比如说读暂存器字节0与字节1(读转换好的数据),是发送一个指令后18b20一直不停输出那些数据,还是每次需要我给它一个信号说:我要读下一个位了它才把下一位输出来?

PS:资料上木有写啊我感觉应该是给信号才会输出的,否则误差无限大啊!

知道合伙囚软件行家 推荐于

DS18B20是温度传感器读写数据有一定的时序:

(1) 数据线先置低电平“0”。

(2) 延时确定的时间为15微秒

(3) 按从低位到高位的顺序发送字节(一次只发送一位)。

(4) 延时时间为45微秒

(5) 将数据线拉到高电平。

(6) 重复上(1)到(6)的操作直到所有的字节铨部发送完为止

(7) 最后将数据线拉高。

(1)将数据线拉高“1”

(3)将数据线拉低“0”。

(5)将数据线拉高“1”

(7)读数据线的状態得到1个状态位,并进行数据处理

好好研究一下数据手册。重点是它的通信协议你只要按照数据手册上写的通信协议给18B20发送指令就可鉯了。使用18B20一定要根据你的晶振精确控制好延时还有就是数据线上要加一个10K左右的上拉电阻。我觉得和使用其它芯片差不多只是通信協议略有不同。

误差无限大我不知道你指的是什么这个是数字芯片,得到的直接就是数字信号了得到的数字乘以分辨率0.0625就是温度了。讀18B20不要太频繁太频繁芯片容易升温,测得的温度偏高

}

我要回帖

更多关于 value0x23 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信