ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:387.45KB ,
资源ID:17054581      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17054581.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DS18B20的51单片机LCD1602液晶显示测温系统Word格式文档下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DS18B20的51单片机LCD1602液晶显示测温系统Word格式文档下载.docx

1、2.1总体设计方案说明分别用DS18B20温度传感器和1602液晶显示器来测试温度和现实数据。编写程序和利用51单片机来控制电路。2.2实物电路图3.1DS18B20的工作原理 DS18B20数字温度传感器概述DS18B20数字温度传感器是DALLAS公司生产的1Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。DS18B20产品的特点只要求一个端口即可实现通信。在DS18B20中的每个器件上都有独一无二的序列号。实际应用中不需要外部任何元器件即可实现测温。测量温度范围在55.C到125.C之间。数

2、字温度计的分辨率用户可以从9位到12位选择。内部有温度上、下限告警设置。TO92封装的DS18B20的引脚排列见右图,其引脚功能描述见表序号名称引脚功能描述1GND地信号2DQ数字输入输出引脚,开漏单总线接口引脚,当使用寄生电源时,可向电源提供电源3VDD可选择的VDD引脚,当工作于寄生电源时,该引脚必须接地表3-2DS18B20详细引脚功能描述 DS18B20的内部结构DS18B20的内部框图下图所示,DS18B20 的内部有64 位的ROM 单元,和9 字节的暂存器单元。64位ROM存储器件独一无二的序列号。暂存器包含两字节(0和1字节)的温度寄存器,用于存储温度传感器的数字输出。暂存器还

3、提供一字节的上线警报触发(TH)和下线警报触发(TL)寄存器(2和3字节),和一字节的配置寄存器(4字节),使用者可以通过配置寄存器来设置温度转换的精度。暂存器的5、6和7字节器件内部保留使用。第八字节含有循环冗余码(CRC )。使用寄生电源时,DS18B20不需额外的供电电源;当总线为高电平时,功率由单总线上的上拉电阻通过DQ引脚提供;高电平总线信号同时也向内部电容CPP充电,CPP在总线低电平时为器件供电。(字节58 就不用看了)。 图为 暂存器 暂存器介绍A.温度寄存器(0和1字节)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供

4、,以0.0625/LSB形式表达,其中S为符号位。这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。DS18B20 的温度操作是使用16 位,也就是说分辨率是0.0625。BIT15BIT11 是符号位,为了就是表示转换的值是正数还是负数。要求出正数的十进制值,必须将读取到的LSB 字节,MSB 字节进行整合处理,然后乘以0.0625 即可。Eg:假设从,字节0 读取到0xD

5、0 赋值于Temp1,而字节1 读取到0x07 赋值于Temp2,然后求出十进制值。unsigned int Temp1,Temp2,Temperature;Temp1=0xD0; /低八位Temp2=0x07; /高八位Temperature = (Temp28 ) | Temp1 ) * 0.0625;/又或者Temperature = (Temp1 + Temp2 *256) * 0.0625; /Temperature=125在这里我们遇见了一个问题,就是如何求出负数的值呢?我们必须判断BIT1115 是否是1,然后人为置一负数标志。Eg. 假设从,字节0 读取到0x90 赋值于Tem

6、p1,而字节1 读取到0xFC 赋值于Temp2,然后求出该值是不是负数,和转换成十进制值。 unsigned int Temp1,Temp2,Temperature;unsigned char Minus_Flag=0;Temp1=0x90;Temp2=0xFC; /Temperature = (Temp1 + Temp2 *256) * 0.0625; /Temperature=64656/很明显不是我们想要的答案if(Temp2&0xFC) /判断符号位是否为1Minus_Flag=1; /负数标志置一8 ) | Temp1 ) /高八位第八位进行整合Temperature= (Temp

7、erature)+1); /求反,补一Temperature*= 0.0625; /求出十进制 /Temperature=55;elseMinus_Flag=0;如果我要求出小数点的值的话,那么我应该这样做。假设从,字节0 读取到0xA2 赋值于Temp1,而字节1 读取到0x00 赋值于Temp2,然后求出十进制值,要求连同小数点也求出。/实际值为10.125/Temperature = (Temp20)i-; ds=1; i=4; DS18B20所有的数据交换都由一个初始化序列开始。由主机发出的复位脉冲和跟在其后的由DS18B20发出的应答脉冲构成。当DS18B20发出响应主机的应答脉冲时

8、,即向主机表明它已处在总线上并且准备工作。b.读和写时序 在写时序期间,主机向DS18B20写入指令;而在读时序期间,主机读入来自DS18B20的指令。在每一个时序,总线只能传输一位数据。读/写时序如图3-9所示。写时序存在两种写时序:“写1”和“写0”。主机在写1时序向DS18B20写入逻辑1,而在写0时序向DS18B20写入逻辑0。所有写时序至少需要60s,且在两次写时序之间至少需要1s的恢复时间。两种写时序均以主机拉低总线开始。在写时序开始后的15s期间,DS18B20采样总线的状态。如果总线为高电平,则逻辑1被写入DS18B20;如果总线为低电平,则逻辑0被写入DS18B20。 DS1

9、8B20 写步骤如下:1.单片机拉低电平大约1015us,。2.单片机持续送指定电平大约2045us 的时间。3.释放总线 如果要读或者写一个字节,就要重复以上的步骤八次。使用for 循环,和数据变量的左移和或运算,实现一个字节读与写。函数延迟的时间,必须模拟非常准确,因为单线总线对时序的要求敏感点。/向 1-WIRE 总线上写一个字节void tempwritebyte(BYTE dat) /向18B20写一个字节数据 BYTE j; bit testb; for(j=1;j1; if(testb) /写 1 i+;i+; i=8;while(i else /写 0 读时序DS18B20 读

10、步骤如下:1.在读取的时候单片机拉低电平大约1us2.单片机释放总线,然后读取总线电平。这时候DS18B20 会送出电平。3.读取电平过后,延迟大约4045 微妙/从 1-wire 总线上读取一个字节bit tempreadbit(void) /读1位函数 bit dat; /i+ 起延时作用 dat=ds; return (dat);BYTE tempread(void) /读1个字节 BYTE i,j,dat; dat=0; for(i=1;ii+) j=tempreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat); A

11、. DS18B20 开始转换:1.DS18B20 复位。2.写入跳过ROM 的字节命令,0xCC。3.写入开始转换的功能命令,0x44。4.延迟大约750900 毫秒B . DS18B20 读暂存数据:3.写入读暂存的功能命令,0xee。4.读入第0 个字节LS Byte,转换结果的低八位。5.读入第1 个字节MS Byte,转换结果的高八位。6.DS18B20 复位,表示读取暂存结束。/读取温度void tempchange(void) /DS18B20 开始获取温度并转换 dsreset(); delay(1); tempwritebyte(0xcc); / 写跳过读ROM指令 tempw

12、ritebyte(0x44); / 写温度转换指令uint get_temp() /读取寄存器中存储的温度数据 BYTE a,b; tempwritebyte(0xbe); a=tempread(); /读低8位 b=tempread(); /读高8位 temp=b; temp执行ROM 指令-执行DS18B20 功能指令。而在单点上,可以直接跳过ROM 指令。DS18B20 的转换精度默认为12 位,而分辨率是0.0625。DS18B20 温度读取函数参考步骤:A . DS18B20 开始转换:C . 数据求出十进制:1.整合LS Byte 和MS Byte 的数据2.判断是否为正负数(可选

13、)3.求得十进制值。正数乘以0.0625,一位小数点乘以0.625,二位小数点乘以6.25。4.十进制的“个位”求出。DS18B20的应用电路 DS18B20测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。下面就是DS18B20几个不同应用方式下的测温电路图:1 .DS18B20寄生电源供电方式电路图 如下图所示,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:在信号线DQ处于高电平期间把能量储存在内部 电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。独特的寄生电源方式有三个好处:1)进行远距离测温时,无需本地电源 2)可以在没有常规电源的条件下读取ROM 3)电路更加简洁,仅用一根I/O口实现测温 要想使DS18B20进行精确的温度转换,I/O线必

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1