DS18B20的报告(附带程序)_第1页
DS18B20的报告(附带程序)_第2页
DS18B20的报告(附带程序)_第3页
DS18B20的报告(附带程序)_第4页
DS18B20的报告(附带程序)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、DS18B20温度传感器数字温度传感器DS18B20是由Dallas半导体公司生产的,它具有耐磨耐碰,体积小,使用方便,封装形式多样(如图1.1.1),适用于各种狭小空间设备数字测温和控制领域。 图1.1.1引脚说明:GND为接地引脚;DQ为数据输入输出脚。用于单线操作,漏极开路;VCC接电源正;单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。如图1.1.2是温度传感器DS18B20的接线图图1.1.2温度传感器DS18B20的参数:适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电温范围55125,在-10+85时精度为±0

2、.5可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快被测温度用符号扩展的16位数字量方式串行输出有两种供电方式既可以直接加3.05.5V的电源,也可以采用寄生电源方式由数据线供电DS18B20内部结构及功能:DS18B20的内部结构如图1.1.3所示。主要包括:寄生电源,温度传感器,64位ROM和单总线接口,存放中间数据的高速暂存器RAM,用于存储用户设定温度上下限值的TH和TL触发器,存储与控制逻辑,8位循环冗余校验码(

3、CRC)发生器等7部分。 图1.1.364 位闪速ROM的结构如下:8bit检验CRC48bit序列号8bit工厂代码(10H)MSBLSBMSBLSBMSBLSB开始8位是产品类型的编号,接着共有48 位是DS18B20 唯一的序列号。最后8位是前面56 位的CRC 检验码,这也是多个DS18B20 可以采用一线进行通信的原因。高速暂存存储器:高速暂存存储器由9个字节组成,其分配如图所示。高速暂存存储器字节01 温度寄存器当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可通过单线接口读到该数据

4、,读取时低位在前,高位在后。温度值格式如下图:DS18B20 的温度操作是使用16 位,也就是说分辨率是0.0625。BIT15BIT11 是符号位,为了就是表示转换的值是正数还是负数。DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625LSB形式表示。表2是部分温度值对应的二进制温度表示数据。DS18B20温度与表示值对应表字节 23:TH 和TL配置TH 与TL 就是所谓的温度最高界限,和温度最低界限的配置。字节 4:配置寄存器R1 与R0 位组合了四个不同的转换精度,00 为9 位转换精度而转换时间是93.75ms,01 为10

5、 位转换精度而转换时间是187.5ms,10 为11 位转换精度而转换时间是375ms,11 为12 位转换精度而转换时间是750ms(默认)。DS18B20时序图:DS18B20 的复位时序如下:1.单片机拉低总线480us950us, 然后释放总线(拉高电平)。2.这时DS18B20 会拉低信号,大约60240us 表示应答。3.DS18B20 拉低电平的60240us 之间,单片机读取总线的电平,如果是低电平,那么表示复位成功。4.DS18B20 拉低电平60240us 之后,会释放总线。DS18B20读写时序:DS18B20 写逻辑0 的步骤如下:1.单片机拉低电平大约1015us,。

6、2.单片机持续拉低电平大约2045us 的时间。3.释放总线DS18B20 写逻辑1 的步骤如下:1.单片机拉低电平大约1015us,。2.单片机拉高电平大约2045us 的时间。3.释放总线DS18B20 读逻辑0 的步骤如下:1.在读取的时候单片机拉低电平大约1us2.单片机释放总线,然后读取总线电平。3.这时候DS18B20 会拉低电平。4.读取电平过后,延迟大约4045 微妙DS18B20 读逻辑1 的步骤如下:1.在读取的时候单片机拉低电平大约1us2.单片机释放总线,然后读取总线电平。3.这时候DS18B20 会拉高电平。4.读取电平过后,延迟大约4045 微妙DS18B20温度计

7、C程序/使用AT89s52单片机,12MHZ晶振,用共阳LED数码管/P0口输出段码,P2口扫描/#pragma src(d:aa.asm)#include "reg51.h"#include "intrins.h" /_nop_();延时函数用#define Disdata P0 /段码输出口#define discan P2 /扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P37; /温度输入口sbit DIN=P07; /LED小数点控制uint h;/*温度小数部分用

8、查表法*/uchar code ditab16=0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09;/uchar code dis_712=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf;/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "

9、7" "8" "9" "不亮" "-" */ uchar code scan_con4=0xef,0xdf,0xbf,0x7f; / 列扫描控制字uchar data temp_data2=0x00,0x00; / 读出温度暂放uchar data display5=0x00,0x00,0x00,0x00,0x00;/显示单元数据,共4个数据,一个运算暂存用/*11微秒延时函数*/void delay(uint t)for(;t>0;t-);/*显示扫描函数*/scan()char k; for(k

10、=0;k<4;k+) /四位LED扫描控制 Disdata=dis_7displayk; if(k=1)DIN=0; discan=scan_conk;delay(90);discan=0xff; /*18B20复位函数*/ow_reset(void)char presence=1;while(presence)while(presence) DQ=1;_nop_();_nop_();DQ=0; /delay(50); / 550usDQ=1; / delay(6); / 66uspresence=DQ; / presence=0继续下一步 delay(45); /延时500uspres

11、ence = DQ;DQ=1; /*18B20写命令函数*/向 1-WIRE 总线上写一个字节void write_byte(uchar val)uchar i;for (i=8; i>0; i-) /DQ=1;_nop_();_nop_(); DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();/5usDQ = val&0x01; /最低位移出delay(6); /66usval=val/2; /右移一位DQ = 1;delay(1); /*18B20读1个字节函数*/从总线上读取一个字节uchar read_byte(void)uch

12、ar i;uchar value = 0;for (i=8;i>0;i-)DQ=1;_nop_();_nop_();value>>=1;DQ = 0; /_nop_();_nop_();_nop_();_nop_(); /4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); /4us if(DQ)value|=0x80;delay(6); /66usDQ=1;return(value);/*读出温度函数*/read_temp()ow_reset(); /总线复位write_byte(0xCC); / 发Skip ROM命令write_byte(

13、0xBE); / 发读命令temp_data0=read_byte(); /温度低8位temp_data1=read_byte(); /温度高8位ow_reset();write_byte(0xCC); / Skip ROMwrite_byte(0x44); / 发转换命令/*温度数据处理函数*/work_temp()uchar n=0; /if(temp_data1>127) temp_data1=(256-temp_data1);temp_data0=(256-temp_data0);n=1;/负温度求补码display4=temp_data0&0x0f;display0=d

14、itabdisplay4;display4=(temp_data0&0xf0)>>4)|(temp_data1&0x0f)<<4);/display3=display4/100;display1=display4%100;display2=display1/10;display1=display1%10;if(!display3)display3=0x0A;if(!display2)display2=0x0A;/最高位为0时都不显示if(n)display3=0x0B;/负温度时最高位显示"-"/ /*主函数*/main()Disdata=0xff; /初始化端口discan=0xff;for(h=0;h<4;h+)displayh=8;/开机显示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论