版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章DS18B20温度传感器7.1 温度传感器概述温度传感器是各种传感器中最常用的一种,早起使用的是模拟温度传感器,如热敏电阻,随着环境温度的变化,它的阻值也发生线性变化,用处理器采集电阻两端的电压,然后根据某个公式就可以计算出当前环境温度。随着科技的进步,现代的温度传感器已经走向数字化,外形小,接简单,广泛应用在生产实践的各个领域,为我们的生活提供便利。随着现代仪器的发展,微型化、集成化、数字化、正成为传感器发展的一个重要方向。美国DALL泮导体公司推出的数字化温度传感器DS18B2CRI用单总线协议,即单片机接口仅需占用一个I/O端口,无需任何外部元件,直接将环境温度转化为数字信号,以数
2、码方式串行输出,从而大大简化了传感器与微处理器的接口。7.2 DS18B2C®度传感器介绍DS18B20美国DALLAS导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9?12位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20卖出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B2哦电,而无需额外电源。因而使用DS18B20使系统结构更趋简单,可靠性更高。他在测温
3、精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。1. DS18B2眶度传感器的特性独特的单线接口方式:DS18B20W微处理器连接时仅需要一条口线即可实现微处理器与DS18B2的双向通讯。在使用中不需要任何外围元件。可用数据线供电,电压范围:+3.0+5.5V。测温范围:-55+125C固有测温分辨率为0.5C通过编程可实现912位的数字读数方式。用户可自设定非易失性的报警上下限值。支持多点组网功能,多个DS18B20可以并联在惟一的三线上,实现多点测温。负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。2 .引脚
4、介绍DS18B20t两种封装:三脚TO-92直插式(用的最多、最普遍的封装)和八脚SOIC贴片式。下图为实验板上直插式DS18B20的原理图。3 .工作原理单片机需要怎样工作才能将DS18B20中的温度数据独取出来呢?F面将给出详细分析首先我们来看看控制DS18B0的指令:(1)读命令(33H通过该命令主机可以读出ROM中8位系列产品代码、48位产品序列号和8位CR酗。读命令仅用在单个DS18B20在线情况,当多于一个时由于DS18B20/开漏输出将产生线与,从而引起数据冲突。(2)选择定位命令(55H)多片DS18B2瓶线时,主机发出该命令和一个64位数列,DS18B2O部ROMI主机数列一
5、致者,才响应主机发送的寄存器操作命令,其他DS18B2C?待复位。该命令也可以用在单片DS18B2c青况。(3)跳过ROMf列号检测命令(CCH对于单片DS18B2CB线系统,该命令允许主机跳过ROMf列号检测而直接对寄存器操作,从而节省时间。对于多片DS18B2碓线系统,该命令将引起数据冲突。(4)查询命令(F0H当系统初建时,主机可能不知道总线上有多少设备,以及他们各自的64位序列号,用该命令可以做到这点。(5)报警查询命令(ECH该命令操作过程同ROMt询命令,但是,仅当上次温度测量值已置位报警标志(由于高于TH或低于TL时),DS18B20才响应该命令,如果DS18B20处于上电状态,
6、该标志将保持有效,直到遇到下列两种情况:(1)本次测量温度发生变化,测量值处于THTL之间;(2)THTL改变,温度值处于新的范围之间。设置报警时要考虑到EEROMP的值。如果主机只是对一个DS18B2朋行操作,进不需要读取ROMa码一级匹配ROMa码了,只要跳过RO(CC喻令,就可以进行如下温度转换和读取操作(1)写入(4EH用此命令把数据写入寄存第24字节,从第2字节(TH开始。复位信号发出之前必须把这三个字节写完。(2)读出(BEH用此命令读出寄存器中的内容,从第1字节开始,直到读完第9字节,如果仅需要寄存器中部分内容,主机可以在合适时刻发送复位命令结束该过程。(3)复制(48H)用该命
7、令把暂存器第2?4字节转存到DS18B20勺EERO中,如果DS18B2奥由信号线供电,主机发出此命令后,总线必须保证至少10ms的上拉,当发出命令后,主机发出读时隙来读总线,如果转存正在进行,读结果为0,转存结束为1。(4)开始转换(44H)DS18B20收到该命令后立刻开始温度转换,不需要其他数据。此时DS18B2cb于空闲状态,当温度转换正在进行时,主机读总线将收到0,转换结束为1。如果DS18B20IL由信号线供电,主机发出此命令后主机必须立即提供至少相应于分辨率的温度转换时间的上拉电平。(5)回调(B8H执行该命令把EEROI中的内容回调到寄存器THTL和设置寄存器单元中,DS18B
8、2ct电时能自动回调,因此设备上电后THTL就存在有效数据。该命令发出后,如果主机跟着读总线,读到0意味着忙,1为回调结束。(6) 读电源标志(B4H主机发出命令后读总线,DS18B2C各发送电源标志,0为信号线供电,1为外接电源。DS18B20®出厂时默认配置为12位,其中最高位为符号位,即温度值共11位,单片机在读取数据时,一次会读两字节共16位,读完后将低11位的二进制数转化为十进制数后再乘以0.0625变为所测的实际温度值。另外,还需要判断温度的正负。前5个数字为符号位,这5位同时变化,我们只需要判断其中1位就可以了。前5位为1时,读取的温度为负值,且测到的数值需要取反加1再
9、乘以0.0625才可得到实际温度值。前五位为0时;读取的温度为正值,只要将测得的数值乘以0.0625即可得到实际温度值。4.工作时序图图16.26为时序图中各总线状态同为低即626时序图中各总线状态(1)初始化(时序图见图1)先将数据线置高电平1。2) 延时(该时间要求不是很严格,但是要尽可能短一点)。3) 数据线拉到低电平0。4) 延时750Ps(该时间范围可以在480-960Ps)。5) 数据线拉到高电平1。6) 延时等待,如果初始化成功则在15-60ms内产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在。但是应注意,不能无限地等待,不然会使程序进入死循环,所以要进行超时判
10、断。7) 若CP展到数据线上的低电平0后,还要进行延时,其延时时间从发出高电平算起(第5步的时间算起)最少要480PSo8) 将数据线再次拉到高电平1后结束。(2) DS18B2(0W据(时序图见图1) 数据线线置低电平0。2) 延时确定的时间为15S、3)按从地位到高位的顺序发送数据(一次只发送一位)。4) 延时时间45PSo5) 将数据线拉到高电平1.6) 重复1-5步骤,直到发送完整个字节。7) 最后将数据线拉图到1。(3) DS18B2读数据(时序图见图1) 将数据线拉高到12) 延时2PSo3) 将数据线拉到04) 延时6PSo5) 将数据线拉高到1.6) 延时4PSo7) 读数据线
11、的状态得到一个状态位,并进行数据处理。8) 延时30PSo9) 重复1-7步骤,直到读取完一个字节。7.3综合实验四:读取18B20的信息并显示在1602上/*程序功能:在1602液晶显示从DS18B2端度传感器中读出的温度*/#inelude<reg52.h>typedefunsignedcharuchar;typedefunsignedintuint;sbitds=P1A6;/温度传感器信号线sbitbeep=PM5;/定义蜂鸣器端口sbitLCD_RS=口2八6;/数据/命令选择端(H/L)sbitLCD_RW=口2八5;/读写选择端(1/0)sbitLCD_EP=P2A7;
12、/使能信号uinttemp;floatf_temp;ucharcodetable1口="DATA:2014-7-10”;ucharcodetable2口="Temperature:xxc"ucharcodetable3口="09"voiddelay(uintxms)/延时函数uinti,j;for(i=xms;i>0;i-)for(j=110;j>0;j-);/*/*/*DS18B2端度传感器模块/*/*/voiddsreset(void)/18B20复位,初始化函数uinti;ds=0;i=103;while(i>0)i-;
13、ds=1;i=4;while(i>0)i-;bittempreadbit()/读1位数据函数uinti;bitdat;i+起延时作用ds=O;i+;ds=1;i+;i+;dat=ds;i=8;while(i>0)i-;returndat;)uchartempread()/读1个字节(uchari,j,dat;dat=0;for(i=1;i<=8;i+)(j=tempreadbit();dat=(j?7)|(dat>>1);/读出的数据最低位在最前面,这样刚好一个字节在DAT!)returndat;)voidtempwritebyte(uchardat)/向DS18
14、B20写一个字节数据函数(uinti;ucharj;bittestb;for(j=1;j<=8;j+)(testb=dat&0x01;dat=dat>>1;if(testb)/写1(ds=0;i+;i+;ds=1;i=8;while(i>0)i-;)else(ds=0;写0i=8;while(i>0)i-;ds=1;i+;i+;voidtempchange(void)/DS18B20开始获取温度并转换(dsreset();delay;tempwritebyte(0xcc);/tempwritebyte(0x44);/uintget_temp()(uchar
15、a,b;dsreset();delay(1);tempwritebyte(0xcc);tempwritebyte(0xbe);a=tempread();b=tempread();temp=b;temp<<=8;temp=temp|a;f_temp=temp*0.0625;temp=f_temp*10+0.5;/f_temp=f_temp+0.05;returntemp;写跳过读ROM指令写温度转换指令读取寄存器中存储的温度数据函数/读低8位读高8位两个字节组合为1个字温度在寄存器中为12位分辨率位0.0625°乘以10表示小数点后面只取1位,力口0.5是四舍五入/temp
16、是整型/*/*/*1602液晶模块voidlcd_wcmd(ucharcmd)/(/*I*1写入指令数据到LCDRS=L,RW=L丘=高脉冲,D0-D7f令码。LCD_RS=0;LCD_RW=0;LCD_EP=0;P0=cmd;delay;LCD_EP=1;delay(1);LCD_EP=0;voidlcd_wdata(uchardat)/(写入字符显示数据到LCDRS=H,RW=L丘=高脉冲,D0-D7嗷据LCD_RS=1;LCD_RW=0;LCD_EP=0;P0=dat;delay(1);LCD_EP=1;delay(1);LCD_EP=0;)voidlednit()_led_wemd(0
17、x38);/*/delay(1);led_wemd(0x0e);delay(1);led_wemd(0x06);/delay(1);led_wemd(0x01);delay(1);蜂鸣器默认处于开启状态,所以关闭它/LCD初始化/LCD初始化设定初始化函数16*2显示,5*7点阵,8位数据/设置开显示,不显示光标/写一个字符后地址指针加1/显示清0,数据指针清0*/*/*主函数/*北/voidmain()uehari;beep=0;lednit();delay(10);i=0;led_wemd(0x80);while(table1i!='0')/第1行第1列按键1对应的字样led_wdata(table1i);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手术准备与操作规范管理制度
- 手术环境管理制度
- 2022年三年级语文下册第四单元主题阅读+答题技巧(含答案、解析)部编版
- 2024年客运证考什么的
- 2024年嘉峪关小型客运从业资格证考试题答案
- 2024年宜春客运从业资格证模拟考试练习题
- 2024年道路客运从业资格证继续教育模拟考试
- 2024年绵阳a1客运资格证
- 2024年海口客运从业资格证的考试题目
- 2024年河北客运上岗考试都考什么科目
- 2024-2025学年度第一学期七年级语文课内阅读练习含答案
- 幼儿园三年发展规划(2024年-2026年)
- 上海市普通高中学业水平合格性考试地理基础知识点复习提纲
- 废旧风机叶片循环利用项目可行性研究报告-积极稳妥推进碳达峰碳中和
- 中医脑病科缺血性中风(脑梗死恢复期)中医诊疗方案临床疗效分析总结
- 中国人工智能系列白皮书一元宇宙技术(2024 版)
- 《甘肃省中医康复中心建设标准(2021版)》
- 高中英语外刊-小猫钓鱼50篇
- PowerPoint培训教程课件
- 医疗绿色通道医联体协议书
- 高考名句名篇《菩萨蛮 书江西造口壁》课件
评论
0/150
提交评论