读取18B20传感器,当温度升高到60多度,再读数就成FF ?

作者&投稿:前受 (若有异议请与网页底部的电邮联系)
18b20温度传感器读一个字节问题~

先解释dat|=0x80;这条语句
都知道18B20在串行传输数据时是先传低位的所以将读到的数据从左往右移直到最先读的那位移到最低位才结束,比如dat的值是01010000B 假设传输的下一位是1 那么就将01010000B与10000000(0x80)进行与 那么最高位就是变成1了 这样在dat>>=1;循环往右移 就会把本来在高位的数 移到低位了 也就是最先读到的数据最终会被移到低位的 不知这样说明不明白。
DQ = 0; // 给脉冲信号
dat>>=1;
DQ = 1; // 给脉冲信号
这是编程技巧的问题,其实应该这样的:
dat>>=1;
DQ = 0; // 给脉冲信号
_NOP();
DQ = 1; // 给脉冲信号
将移位语句夹在中间只是耗了1个时钟周期而已。

第一句话就是把两个8位数据组合成一个16位数据,之后除以16。16只是一个系数,可能是多次求和之后取均值,也可能是一个固定的比例系数,这要看你temp_buff里放的是什么数据。

正常现象,时序参数没调整好,参考1wire时序图和18b20时序图仔细调,另外主频不同时参数也要改的,否则可能就读不出来了!别光顾读写函数,初始化也很重要!

时序要求好严格的,以前我用的时候,两个数值很接近的晶振换一下就读不出来了。现在对数字传感器历历在目啊

显然驱动有问题

不会是温度高了,B20也中暑了?

读取18B20传感器,当温度升高到60多度,再读数就成FF ?
答:正常现象,时序参数没调整好,参考1wire时序图和18b20时序图仔细调,另外主频不同时参数也要改的,否则可能就读不出来了!别光顾读写函数,初始化也很重要!

请教关于DS18B20温度传感器的温度读取
答:4位数码管显示18B20当前通道温度值(一位小数),负号位与正温度百位1用同一位数码管显示,该位为0不显示,如:0 27.9、1 123.1、2 -35.6。连接方法:三个18B20均接P3.7,P0口(JP10)接8位数码管段码口(J12)。

使用温度传感器DS18B20设计一温控系统,当温度超过35度或低于20度时,L...
答://温控系统控制程序//版本号:V1.0;2015.6.19//温度传感器:DS18B20//显示方式:LED#include <reg51.h>#define uchar unsigned charsbit keyup=P1^0;sbit keydn=P1^1;sbit keymd=P1^2;sbit out=P3^7; //接控制继电器sbit DQ = P3^4; //接温度传感器18B20uchar t[2],number=0,...

STC11F32XE-51单片机读取DS18B20温度传感器,为何有时读到温度字节是FFH...
答:可能是延迟时间不合适,没有允许读造成的。

用单片机控制DS18B20温度传感器采集温度的工作过程是不是这样?_百度知 ...
答:总线上有多个传感器18B20时,时序:复位→ROM匹配(0x55)→发送8字节ROM ID →温度转换(0x44)→延时→复位→ROM匹配→再次发送8字节ROMID→读指令→分别读取温度两个字节 当然,在第一次发送温度转换之前 可以忽略ROM匹配,此时所有的传感器都进行温度转换 ...

单片机18B20传感器测温问题
答:问题可能出在,实际电路的时钟与仿真时的系统时钟不同,导致1WIRE驱动时序发生变化,无法与DS18B20通讯,拿到的温度就是FFF了。

做ds18b20时,怎么把读到的值转换成温度的,希望能讲详细点,我看了很多...
答:DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于...

ds18b20 如何读取数据?
答:1、首先双击电脑中的proteus软件,然后点击左侧的“P”按钮,如图。2、接着找到“关键字”输入框,如图。3、输入“DS18B20”,在列表中选择它,如图,最后点击“确定”。4、紧接着在图纸中点击左键,此时出现一个DS18B20的虚影,如图。5、拖动DS18B20虚影到图纸的合适位置,再次点击左键,如图,这样...

DS18B20温度传感器单片机c51实现温度的控制高于上限启动降温低于下限启 ...
答:第一,你可以直接使用18B20的设置上下限,然后当温度到所设定的上下限是,它会自动报警,然后你再加相就的动作。第二,你可以设置一个变量,将从18B20读来的数据与这个比较,然后判断,做出相应的动作就行了。

一般情况下,当温度达到多少度温度传感器DS18B20才会报警?
答:报警温度是自己设定的哈 你可以设定20°也可以设定75° 关键是看你自己 设置报警温度就是设置寄存器的值 采集值与设置的报警值相比较 我当时设置了报警上限和报警下限,比较准确