ds18b20温度报错

分类:故障查询网浏览量:3216发布于:2021-04-20 20:16:39

读DS18B20的"存在信号"就可以了.

85度是18b20的默认值,一般没有初始化成功会读出这个温度.另外18b20的转换时间很长,毫秒级的,这个要注意一下,最好采用判断DQ信号线的方法看温度是否转换完成.你的低温度可能跟这个有关.

ds18b20只是一个测温元件,所谓的报警功能要通过程序由单片机来实现. ds18b20温度传感器的内部存储器包括一个高速暂存ram和一个非易失性的可电擦除的eeram.高速暂存ram的结构为8字节的存储器,头2个字节包含测得的温度信息,第3和第4字节th(报警温度上限)和tl(报警温度下限)的拷贝.第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率.第6、7、8字节保留未用. 要实现报警,完成温度转换后,就把测得的温度值与ram中的th、tl字节内容作比较(当然要自己编程序).若t>th或t

只能测试0---15.9度,说明你只读取温度的低八位,也就是a=ds18b20read();从程序上看,你的定义的uint.#define uint unsigned char定义错误,更改成#define uint unsigned int所以在你temp 评论0 0 0

因为定时器中断是强制性的,一旦计时溢出,无论程序执行到何处都会被暂停,优先去执行中断服务程序. DS18B20这种对时序有严格要求的单总线通讯,在发送和接收

#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit DS=P3^7; //define interface 定义DS18B20接口uint temp; // variable of temperatureuchar flag1;

检测方法: 软件上可以这样来判断,在确保程序没问题前提下.初始化结束后,信号线检测送变量,看是否是低,低就是好的,高就是坏的,可以用端口接发光管(亮也灭)来看这个变量的高低,可判断传感器的好坏. 温度传感器DS18B20中,低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.

当达到温度上限后仍然能转换温度!我试过的,温度上下限是设置温度报警时使用的!

代码不报错,只能说明没有语法错误.但不等于程序就是对的.DS18B20读取温度时的时序要求是非常严格的,与晶振频率有关的.就是说,这个程序在其它的单片机上可以读出温度,可换了一个板子,因晶振频率不同,这个程序就不能读取温度了.所以,你的程序是从哪复制来?要根据你的板子实际硬件情况做调整的.还有,仿真通过的程序,在实物板上就不能读.相反,要实物上通过的程序,在仿真上也不能读温度.都需要调整延时.举个简单的例子,写一个最简单的程序如下,这代码肯定不报错,但是能读温度吗?#include void main() { while(1) { P0=0x00; {

给你提一个小建议,但是不会帮你写程序,我看你把温度放到了数组,你可以通过判断数组来开启报警啊,例如: if() { ----------- } 利用if语句判断温度的各位和十位,如果相等就开启蜂鸣器,就这么简单!