ds18b20怎么计算温度

作者&投稿:笪律 (若有异议请与网页底部的电邮联系)

89s52用c语言编程读出18b20温度
include<reg51.h> define uchar unsigned char define uint unsigned int code uchar seven_seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};sbit dq = P1^0;uchar a,b;void delay(uint x){ while(x)x--;} uchar read_18b20(){ uchar i,rdata;for(i=8;i>0...

89S52+18B20+LED能显示温度的完整程序C51
邮件已经发送给你了

滑纪15352665341问: 做ds18b20时,怎么把读到的值转换成温度的,希望能讲详细点,我看了很多方法,可是看不懂. -
措美县奇诺回答: DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位.这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度.

滑纪15352665341问: 你好,我们在做实验,用DS18B20具体是怎么测温度的?还有单片机程序怎么写的,谢谢了,我是咸阳的. -
措美县奇诺回答: DS18B20有3个引脚,一个接地,一个接电源,一个接信号端.你只要把信号端接到单片机的你设定好的端口就可以测温了.至于程序怎么写,下面这段程序你参考一下:#include <e51.h>#include <reg51.h> sbit DQ =P3^7; //DS18B20信号定义...

滑纪15352665341问: 以下是一段用DS18b20测温度的程序谁能给解释一下 -
措美县奇诺回答: DS18b20测温度,得出的数值,其单位是 1/16 ℃,即 0.0625 ℃. 如果直接显示,其数值将比真实温度,大了 16 倍. 所以,要乘以 0.0625,改成除以 16,也行.这个程序,是乘以 0.625,即放大了10倍,显示出来,就包括了一位小数.DS18b20测温度,得出的数值,有正有负,都是补码. 如果是负数,利用《求反加一》,即得出原码. 如果是负数,显示时,前面要加上“-”.

滑纪15352665341问: DS18B20温度传感器的使用方法 -
措美县奇诺回答: ;这是关于DS18B20的读写程序,数据脚P2.2,晶振11.0592mhz;温度传感器18B20汇编程序,采用器件默认的12位转化,最大转化时间750微秒;可以将检测到的温度直接显示到AT89C51的两个数码管上;显...

滑纪15352665341问: 单片机ds18b20温度程序解读. -
措美县奇诺回答: t是整形变量,由高低两个8位组成:t = 高8位 * 256 + 低8位 t=b; //b中是第一次读取到的数据(高位) t<<=8; //t * 256 t=t(按位或)a; //由于现在低8位肯定是0x00,所以"按位或"的结果是t=t+a(算法执行速度较直接做加法要高) s=t*0.0625; //AD值转换成实际温度值 t=s*10+ 0.5; //四舍五入 reture(t)

滑纪15352665341问: ds18b20温度寄存器怎么就达到被测温度值下面这段话是ds18b20的测温.我的问题是:"如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,... -
措美县奇诺回答:[答案] 减法计数器1对减法计数器2起作用.

滑纪15352665341问: 用DS18B20采集温度,有段程序不太理解,求大神指教. -
措美县奇诺回答: temp*0.0625 就是实际温度值 但为了传输方便,又要转成整型,还想保留一位小数,那就乘10,因为temp是整型的,temp=f_temp*10+0.5的时候,会发生强制类型转换,等号后面的数据的小数会直接被砍掉,不管是.1还是.9都会别忽略掉,+0.5...

滑纪15352665341问: 用ds18b20测温度时,只需将最后所得的16位数乘以一个0.0625就可以得到实际的温度值? -
措美县奇诺回答: 在DS18B20的技术手册里有说,在12位精度下,以0.0625℃递增,上电默认为12位精度.温度为正时那样算是对,是负时就是错的.规范写法为:temp=temp2; temp=temptemp=temp|temp1; if(temp>0xf000)//负温度 {temp=0xffff-temp+1; temp_f = -(temp * 0.0625); //实际温度值 } else//正温度 temp_f = temp * 0.0625; //实际温度值

滑纪15352665341问: 你好,我在用DS18B20做温度测试的单片机,想知道读取到的DMPL=read - byte( );DMPH=read - byte 是几进制数? -
措美县奇诺回答: 读到的两个字节一个是高8位,一个是低8位,将高8位乘以256再加上低8位,得到的就是DS18B20传回的温度数据,把这个数据乘以0.0625便得到温度数.因为传回的数据是补码表示,而一般的单片机内部的整数也是补码表示,所以直接相乘就可以了,不需要做额外的码制转换.至于你那个语句,应该是舍去了低4位,低4位是小数部分,得到的数据就是温度的整数部分.

滑纪15352665341问: DS18b20中的温度值单片机可以直接用来运算吗? -
措美县奇诺回答: 你令温度值DQ=P1.3,这是什么逻辑啊?你可以写y=DQ*3;但没有任何实际意义,因为y的值要么为0,要么就是3,无出其2,DQ只是18b20的一个IO借口而已,具体温度采集要严格按照18b20的指令顺序和交互数据时序来实现,我这里有18B20采集温度通过串口输出的程序,需要的话可以参考一下.


本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网