DS18B20温度测量设计实验报告2
- 格式:doc
- 大小:322.50 KB
- 文档页数:19
数字温度计DS18B20课程设计报告1. 课程设计背景数字温度计是一款可以测量温度并输出数字信号的电子设备。
它具有高精度、可编程、低功耗等优点,因此在很多领域都有广泛应用,比如环境温度监测、工业控制、食品加工等。
DS18B20是一款数字温度传感器,它以数字方式输出采集到的温度值,精度高达±0.5℃,提供了多种通信协议,应用灵活。
在本次课程设计中,我们将学习如何使用DS18B20来制作一款数字温度计。
2. 课程设计目标在本次课程设计中,我们的目标是:1.学习数字温度计的工作原理和基本构成;2.掌握DS18B20的使用方法和通信原理;3.制作一款数字温度计,并进行温度测量和数据传输。
3. 课程设计内容3.1 数字温度计的工作原理数字温度计的工作原理是利用温度传感器采集温度信息,然后通过模数转换器(ADC)将模拟信号转换成数字信号,并且通过数字信号处理单元进行处理,并显示在屏幕上。
温度传感器一般分为两种类型,即模拟温度传感器和数字温度传感器。
3.2 DS18B20的使用方法和通信原理DS18B20可以通过多种通信协议与主控板进行通信,如1-wire协议、I2C协议等。
1-wire协议是一种仅使用单个总线的串行协议,利用单总线实现数据传输。
3.3 制作数字温度计我们可以通过编程语言来控制DS18B20进行温度采集,并用LCD屏幕显示温度值。
首先要准备所需的材料和工具,包括Arduino开发板、DS18B20传感器、LCD显示屏、杜邦线、面包板等。
具体步骤如下:•连接DS18B20传感器•连接LCD显示屏•编写程序4. 课程设计成果经过学习和实际操作,我们可以掌握数字温度计的工作原理和基本构成,以及DS18B20的使用方法和通信原理。
同时,我们可以独立制作一款数字温度计,在温度测量和数据传输方面有了实际经验。
这些知识和技能对于我们学习和研究电子技术都非常有帮助。
5.通过本次课程设计,我们学习了数字温度计的工作原理和基本构成,以及DS18B20的使用方法和通信原理。
温度传感器ds18b20实验报告温度传感器DS18B20实验报告引言温度传感器在现代生活中扮演着重要的角色,它们被广泛应用于各种领域,包括工业、医疗、农业等。
DS18B20是一种数字温度传感器,具有精准的测量能力和数字输出,因此备受青睐。
本实验旨在通过对DS18B20温度传感器的测试和分析,探讨其性能和应用。
实验目的1. 了解DS18B20温度传感器的工作原理和特性。
2. 测试DS18B20温度传感器的测量精度和响应速度。
3. 探讨DS18B20温度传感器在实际应用中的优缺点。
实验器材1. DS18B20温度传感器2. Arduino开发板3. 4.7kΩ电阻4. 连接线5. 电脑实验步骤1. 将DS18B20温度传感器连接到Arduino开发板上,并接入4.7kΩ电阻。
2. 编写Arduino程序,通过串口监视器输出DS18B20传感器的温度数据。
3. 将DS18B20传感器置于不同的温度环境中,记录其输出的温度数据。
4. 分析DS18B20传感器的测量精度和响应速度。
5. 探讨DS18B20传感器在实际应用中的优缺点。
实验结果经过实验测试,DS18B20温度传感器表现出了较高的测量精度和响应速度。
在不同温度环境下,其输出的温度数据与实际温度基本吻合,误差较小。
此外,DS18B20传感器具有数字输出,易于与各种微控制器和单片机进行连接,应用范围广泛。
然而,DS18B20传感器在极端温度环境下可能出现测量误差,且价格较高,需要根据实际需求进行选择。
结论DS18B20温度传感器具有较高的测量精度和响应速度,适用于各种温度测量场景。
然而,在选择和应用时需要考虑其价格和适用范围,以确保满足实际需求。
希望本实验能够为DS18B20温度传感器的应用提供参考和借鉴,推动其在各个领域的发展和应用。
课程设计说明书(论文)题目: 温度测量课程名称: 单片机课程设计专业: 电子信息工程班级: 电信0901学生姓名:学号: 31 16 10设计地点: 3#北603指导教师:设计起止时间:2012年5月2日至2012年5月22日目录一、设计功能要求: (3)二、系统总体设计方案: (5)1、基本设计思想: (5)2、实施方案论述: (6)三、系统分析与设计: (6)1、程序流程图及说明 (6)2、温度计的的电路设计 (9)四、源码清单: (12)五、改进意见与收获体会: (18)六、主要参考资料: (19)一、设计功能要求:本次的设计主要是利用了数字温度传感器DS18B20测量温度信号,计算后可以在LCD数码管上显示相应的温度值。
其温度测量范围为-55~125℃,精确到0.5℃。
本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
数字温度计所测量的温度采用数字显示,控制器使用单片机89C51,测温传感器使用DS18B20,用LCD1602实现温度显示。
从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。
本次使用的单片机89C51和MCS-51是完全兼容的,是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。
其主要特点如下:• 8位CPU。
•工作频率最高为24M。
• 128B数据存储器。
• 4KB程序存储器。
•程序存储器的寻址空间为64KB。
•片外数据存储器的寻址空间为64KB。
• 128个用户位寻址空间。
• 21个字节特殊功能寄存器。
• 4个8位的并行I/O接口:P0、P1、P2、P3。
•两个16位定时/计数器。
•两个优先级别的5个中断源。
• 1个全双工的串行I/O接口,可多机通信。
• 111条指令,喊乘法指令和除法指令。
课程实训报告《单片机技术开发》专业:机电一体化技术班级: 104201 学号: ******** *名:***浙江交通职业技术学院机电学院2012年5月29日目录一、DS18B20温度测量与控制实验目的……………………二、DS18B20温度测量与控制实验说明……………………三、DS18B20温度测量与控制实验框图与步骤……………………四、DS18B20温度测量与控制实验清单……………………五、DS18B20温度测量与控制实验原理图…………………六、DS18B20温度测量与控制实验实训小结………………1.了解单总线器件的编程方法。
2.了解温度测量的原理,掌握DS18B20 的使用。
本实验系统采用的温度传感器DS18B20是美国DALLAS公司推出的增强型单总线数字温度传感器。
Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20 内部结构DS18B20 内部结构主要由四部分组成:64 位光刻ROM、温度传感器、非挥发的温度报警触发器TH 和TL、配置寄存器。
DS18B20 的管脚排列如下:DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻ROM 中的64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列码。
课程实训报告《单片机技术开发》专业:机电一体化技术班级: 104201学号: 10420134姓名:杨泽润浙江交通职业技术学院机电学院2012年5月29日目录一、DS18B20温度测量与控制实验目的……………………二、DS18B20温度测量与控制实验说明……………………三、DS18B20温度测量与控制实验框图与步骤……………………四、DS18B20温度测量与控制实验清单……………………五、DS18B20温度测量与控制实验原理图…………………六、DS18B20温度测量与控制实验实训小结………………一、实验目的1.了解单总线器件的编程方法。
2.了解温度测量的原理,掌握 DS18B20 的使用。
二、实验说明本实验系统采用的温度传感器DS18B20是美国DALLAS公司推出的增强型单总线数字温度传感器。
Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20 内部结构DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。
DS18B20 的管脚排列如下: DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列码。
实训五 DS18B20温度检测控制实训一、实训目的1.温度传感器电路的工作原理。
2.了解温度控制的基本原理。
3.掌握一线总线接口的使用。
二、实训说明1.DALLAS最新单线数字温度传感器DS18B20简介Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如下:DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校训码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个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即可得到实际温度。
传感器课程设计设计题目:DS18B20温度传感器班级:电子(2)班姓名:梁玉杰,韦小门,李军伟学号:201140620223指导教师:XXX调试地点:509目录一、概述 (2)二、内容 (3)1、课程设计题目 (3)2、课程设计目的 (3)3、设计任务和要求 (3)4、正文 (3)(一)、方案选择与论证 (3)三、系统的具体设计与实现 (5)(1)、系统的总体设计方案 (5)(2)、硬件电路设计 (5)a、单片机控制模块 (5)b、温度传感器模块 (6)四、软件设计 (12)1、主程序 (12)2、读出温度子程序 (12)3、温度转换命令子程序 (12)4、计算温度子程序 (13)五、完整程序如下: (13)六、设计体会 (18)七、参考文献 (19)一、概述随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。
本文主要介绍了一个基于89S51单片机的测温系统,详细描述了利用液晶显示器件传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,特别是数字温度传感DS18B20的数据采集过程。
对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。
DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。
关键词:单片机AT89C51、DS18B20温度传感器、液晶显示LCD1602。
二、内容1、课程设计题目基于DS18B20的温度传感器2、课程设计目的通过基于MCS-51系列单片机AT89C51和DS18B20温度传感器检测温度,熟悉芯片的使用,温度传感器的功能,数码显示管的使用,汇编语言的设计;并且把我们这一年所学的数字和模拟电子技术、检测技术、单片机应用等知识,通过理论联系实际,从题目分析、电路设计调试、程序编制调试到传感器的选定等这一完整的实验过程,培养了学生正确的设计思想,使学生充分发挥主观能动性,去独立解决实际问题,以达到提升学生的综合能力、动手能力、文献资料查阅能力的作用,为毕业设计和以后工作打下一个良好的基础。
绵阳职业技术学院信息工程系单片机应用实训时间 2011年12月26日——31日项目题目 DS18B20数字温度计的设计地点实验楼405 、406、102二O一一年十二月29 日摘要本项目以单片机AT89S52、DS18B20为控制中心,通过DS18B20在—55度~125度的范围内采集不同的数据,将其采集的信号通过通过三线与单片机相连,进行传递。
单片机通过转换输出信号,使用9012PNP三级管作驱动,将输出来的信号通过4共阳数码管显示。
关键词:AT89S52 DS18B20 9012 数码管显示目录一.设计任务及要求 (4)1.1设计目的 (4)1.2设计任务 (4)1.3功能要求 (4)二.方案论证 (5)2.1. 方案一: (5)2.2. 方案二: (6)2.3 两种方案比较 (6)三.电路模块设计与分析 (6)3.1单片机89C52模块 (6)3.2 DS18B20的设计电路 (8)3.1.1、DS18B20简介 (8)3.1.2 DS18B20接线原理图 (10)3.1.3 DS18B20时序图 (10)3.1.4 数据处理 (11)3.1.5 温度传感器的工作原理 (12)四.系统程序的设计 (13)4.1 主程序 (13)4.2 读出温度子程序 (13)4.3 温度转换命令子程序 (14)4.4计算温度子程序 (15)4.5显示数据刷新子程序 (15)五.仿真与调试 (16)5.1 Proteus软件 (16)5.1.1 Proteus简介 (16)5.1.2 4大功能模块 (17)5.1.3 Proteus简单应用 (18)5.1.4 Proteus软件运行流程 (18)5.1.5 硬件调试结果 (20)5.2 Keil软件 (20)5.2.1 Keil软件简介 (20)5.2.2 Keil软件调试流程 (21)六.设计总结与心得体会 (22)七.附录 (23)附录一: (23)附录二: (29)附录三: (30)一.设计任务及要求1.1设计目的以单片机为核心,设计单片机最小系统,构成数字式温度计,能够实现实时温度的显示巩固所学知识、加强综合能力、提高软、硬件设计调试方面的能力、启发创新思维,使将相关专业课程知识综合起来,融会贯通,形成系统的概念,从而实现理论与实践相结合提高设计能力、电子线路的组装调试能力和创新能力,通过查阅资料、选定方案、设计电路、调试软件并下载到芯片中、写出完整的报告等过程.步骤:根据教学内容和实验设备的情况设计课程设计内容。
温度传感器ds18b20实验报告温度传感器DS18B20实验报告引言:温度传感器是一种用于测量环境温度的设备,它在许多领域都有广泛的应用,如气象学、工业控制、冷链物流等。
本实验报告将介绍DS18B20温度传感器的原理、实验装置和实验结果,并对其性能进行评估。
一、实验原理DS18B20温度传感器是一种数字温度传感器,采用单总线接口进行通信。
它采用了最新的数字温度传感器技术,具有高精度、低功耗、抗干扰等特点。
其工作原理是利用温度对半导体材料电阻值的影响,通过测量电阻值的变化来确定温度。
二、实验装置本实验使用的实验装置包括DS18B20温度传感器、Arduino开发板、杜邦线和计算机。
Arduino开发板用于读取传感器的温度数据,并通过串口将数据传输到计算机上进行处理和显示。
三、实验步骤1. 连接电路:将DS18B20温度传感器的VCC引脚连接到Arduino开发板的5V 引脚,GND引脚连接到GND引脚,DQ引脚连接到Arduino开发板的数字引脚2。
2. 编写代码:使用Arduino开发环境编写代码,通过OneWire库和DallasTemperature库读取DS18B20传感器的温度数据。
3. 上传代码:将编写好的代码上传到Arduino开发板上。
4. 监测温度:打开串口监视器,可以看到DS18B20传感器实时的温度数据。
四、实验结果在实验过程中,我们将DS18B20温度传感器放置在不同的环境中,记录了其测得的温度数据。
实验结果显示,DS18B20温度传感器具有较高的精度和稳定性,能够准确地测量环境温度。
五、实验评估本实验评估了DS18B20温度传感器的性能,包括精度、响应时间和抗干扰能力。
实验结果表明,DS18B20温度传感器具有较高的精度,能够在0.5℃的误差范围内测量温度。
响应时间较快,能够在毫秒级别内完成温度测量。
同时,DS18B20温度传感器具有较好的抗干扰能力,能够在干扰环境下保持稳定的测量结果。
温度传感器实验报告
一、实验目的
本实验旨在通过使用温度传感器来检测不同环境下的温度变化,并通过实验数据分析温度传感器的性能和准确度。
二、实验仪器
1. Arduino Uno控制板
2. DS18B20数字温度传感器
3. 杜邦线
4. 电脑
三、实验步骤
1. 连接DS18B20温度传感器到Arduino Uno控制板上。
2. 使用Arduino软件编写读取温度传感器数据的程序。
3. 通过串口监视器读取传感器采集到的温度数据。
4. 将温度传感器放置在不同环境温度下,记录数据并进行分析。
四、实验数据
在室内环境下,温度传感器读取的数据平均值为25摄氏度;在户外阳光下,温度传感器读取的数据平均值为35摄氏度。
五、实验结果分析
通过实验数据分析可知,DS18B20温度传感器对环境温度有较高的
敏感度和准确性,能够较精准地反映环境温度的变化。
在不同环境温
度下,传感器能够稳定地输出准确的温度数据。
六、实验结论
本实验通过对DS18B20温度传感器的测试和分析,验证了其在温
度检测方面的可靠性和准确性。
温度传感器可以广泛应用于各种领域,如气象监测、工业控制等。
通过本次实验,我们对温度传感器的性能
有了更深入的了解。
七、参考文献
1. DS18B20温度传感器数据手册
2. Arduino Uno官方网站
以上为实验报告内容,谢谢!。
信息工程学院成绩课程设计说明书(论文)题目: 温度测量课程名称: 单片机课程设计专业: 电子信息工程班级: 电信0901学生姓名:学号: 31 16 10设计地点: 3#北603指导教师:设计起止时间:2012年5月2日至2012年5月22日目录一、设计功能要求: (3)二、系统总体设计方案: (5)1、基本设计思想: (5)2、实施方案论述: (6)三、系统分析与设计: (6)1、程序流程图及说明 (6)2、温度计的的电路设计 (9)四、源码清单: (12)五、改进意见与收获体会: (18)六、主要参考资料: (19)一、设计功能要求:本次的设计主要是利用了数字温度传感器DS18B20测量温度信号,计算后可以在LCD数码管上显示相应的温度值。
其温度测量范围为-55~125℃,精确到0.5℃。
本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。
数字温度计所测量的温度采用数字显示,控制器使用单片机89C51,测温传感器使用DS18B20,用LCD1602实现温度显示。
从温度传感器DS18B20可以很容易直接读取被测温度值,进行转换即满足设计要求。
本次使用的单片机89C51和MCS-51是完全兼容的,是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器。
其主要特点如下:•8位CPU。
•工作频率最高为24M。
•128B数据存储器。
•4KB程序存储器。
•程序存储器的寻址空间为64KB。
•片外数据存储器的寻址空间为64KB。
•128个用户位寻址空间。
•21个字节特殊功能寄存器。
•4个8位的并行I/O接口:P0、P1、P2、P3。
•两个16位定时/计数器。
•两个优先级别的5个中断源。
•1个全双工的串行I/O接口,可多机通信。
•111条指令,喊乘法指令和除法指令。
•较强的位处理能力。
•采用单一+5V电源。
对于89C52而言,不同之处在于:有256B的数据存储器、8K的程序存储器、全双工串行I/O接口、6个中断源、3个16位定时/计数器,工作频率可升直33Mhz。
比51拥有更高的性能。
单片机要对DS18B20进行读写,主要通过如下子程序进行驱动。
(1)复位:在使用DS18B20时,首先需要对单片机进行复位。
复位时,单片机给DS18B20的单总线至少480us的低电平信号。
当DS18B20检测到此复位信号后会在15-60us内给出一个一个存在脉冲。
该存在脉冲是是一个60-240us的低电平信号。
为了能够接收到此低电平,需要单片机在复位电平结束之后将总线拉高。
(2)ROM指令:包括读ROM指令,指定匹配芯片、跳跃ROM、芯片搜索、报警芯片搜索。
ROM指令为8位长度,功能是对片内的64位光刻ROM 进行操作。
其主要目的是为了分辨总线上的多个器件。
不过,在本系统中由于只有一个DS18B20,所以不需要进行ID辨识,所以可以采用一条特殊的跳过指令。
具体指令可以参看其datasheet。
(3)发送存储器操作指令:在ROM指令发送给DS18B20后,紧接着需要向它发送存储器操作指令,操作指令同样为8位,共六条,分别是写RAM 数据、读RAM数据、将RAM数据复制到EEPROM、温度转换、将EEPROM 中的报警值复制到RAM、工作方式切换。
(4)执行和读写操作:一个存储器操作指令结束后则将进行指令执行或数据读写。
如果是进行温度转换,需要等待DS18B20执行其指令,转换时间一般为500us。
DS18B20温度值格式默认的12位转化后得到的12位数据,存储在18B20的两个8比特的RAM 中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
如图:DS18B20常用ROM指令:指令约定代码功能二、系统总体设计方案1、基本设计思想基本设计方案:根据DS18B20的通讯协议,单片机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM 指令,最后发送RAM 指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU 将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU 收到此信号表示复位成功。
于是,给DS18B20不同的时序,可以读取温度传感器的值,根据温度算法算出当时的温度值,在给显示部分,通过LCD 显示出来。
读ROM 33H 读DS1820温度传感器ROM 中的编码(即64位地址符合 ROM 55H 发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。
搜索 ROM 0FOH 用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。
为操作各器件作好准备。
跳过 ROM 0CCH 忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。
适用于单片工作。
告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。
2、实施方案论述这个课题主要实现温度的检测以及通过数码管显示这两个大功能,以及读取这个相对较为容易的功能。
因此在温度检测这一模块上,利用DS18B20这一目前比较先进的温度传感器,可以很精确地感测实时温度,对于DS18B20的通讯协议的控制,读取测量的温度值,经过一定的算法,可以把温度转化为十进制,分别为高位和低位,先暂存起来。
经显示模块调用,最终在LCD 上显示。
电路方框图二、系统分析与设计1、程序流程图及说明主函数完成对DS18B20的初始化,读取温度的转换值,调用数据处理的子程序然后再生成显示代码,再将温度显示出来,然后根据温度显示的代码判断温度值可以判断它的值是否超出了预设的范围。
然后返回到主函数开始的位置,无论温度值是否超出预设值,程序都会返回开始的位置,重复循环。
时钟电路C51主控电路 DS18B20复位电路 显示电路开始始初始化、设置常量调用DS18B20初始化子程序读温度转换值调用数据处理子程序生成显示码显示温度值主函数流程图DQ置1DS18B20复位FLAG=?1发送OCCH 命令,跳过ROM 匹配发送温度转换命令44H延时750us以上DS18B20初始化跳过ROM匹配发送温度命令OBEH调用读数据子程序返回DS18B20复位子程序DQ置1DQ置0延时至少573msDQ置1短延时等待DS18B20回应DQ=?0F L A G置0FLAG置1延时DQ置1温度值子程序2、温度计的的电路设计温度计采用AT89C51单片机作为微处理器,温度计系统的外围接口电路由晶振、LCD显示电路、复位电路、温度检测电路、LCD驱动电路。
温度计系统的的硬件电路图如下图所示。
温度计的工作过程是:初始化其接收需要检测的温度,并一直处于检测状态,并将检测到的温度值读取,并转化为十进制数值,通过LCD显示出来,再显示温度,方便用户来读数使用记录数据。
具体实现方法是:单片机将从P2.2管脚读进来的数据进行处理,P0.1到P0.7为数码管的段选端口,通过RP1的驱动对LCD进行驱动。
硬件电路原理图时钟电路复位电路显示电路温度检测电路三、源码清单#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define delayNOP() {_nop_();_nop_();_nop_();_nop_();}sbit DQ = P3^3;sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;uchar code Temp_Disp_Title[]={"Current Temp : "}; uchar Current_Temp_Display_Buffer[]={" TEMP: "};uchar code Temperature_Char[8] ={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};uchar code df_Table[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};uchar CurrentT = 0;uchar Temp_Value[]={0x00,0x00}; uchar Display_Digit[]={0,0,0,0};bit DS18B20_IS_OK = 1;void DelayXus(uint x){uchar i;while(x--){for(i=0;i<200;i++);}}bit LCD_Busy_Check(){bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;delayNOP();result = (bit)(P0&0x80);LCD_EN=0;return result;}void Write_LCD_Command(uchar cmd) {while(LCD_Busy_Check());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;}void Write_LCD_Data(uchar dat) {while(LCD_Busy_Check());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;delayNOP();LCD_EN = 1;delayNOP();LCD_EN = 0;}void LCD_Initialise(){Write_LCD_Command(0x01);DelayXus(5);Write_LCD_Command(0x38);DelayXus(5);Write_LCD_Command(0x0c);DelayXus(5);Write_LCD_Command(0x06);DelayXus(5);}void Set_LCD_POS(uchar pos){Write_LCD_Command(pos|0x80); }void Delay(uint x){while(--x);}uchar Init_DS18B20() {uchar status;DQ = 1;Delay(8);DQ = 0;Delay(90);DQ = 1;Delay(8);DQ = 1;return status;}uchar ReadOneByte() {uchar i,dat=0;DQ = 1;_nop_();for(i=0;i<8;i++){DQ = 0;dat >>= 1;DQ = 1;_nop_();_nop_();if(DQ)dat |= 0X80;Delay(30);DQ = 1;}return dat;}void WriteOneByte(uchar dat){uchar i;for(i=0;i<8;i++){DQ = 0;DQ = dat& 0x01;Delay(5);DQ = 1;dat >>= 1;}}void Read_Temperature(){if(Init_DS18B20()==1)DS18B20_IS_OK=0;else{WriteOneByte(0xcc);WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xcc);WriteOneByte(0xbe);Temp_Value[0] = ReadOneByte();Temp_Value[1] = ReadOneByte();DS18B20_IS_OK=1;}}void Display_Temperature(){uchar i;uchar t = 150, ng = 0;if((Temp_Value[1]&0xf8)==0xf8){Temp_Value[1] = ~Temp_Value[1];Temp_Value[0] = ~Temp_Value[0]+1;if(Temp_Value[0]==0x00)Temp_Value[1]++;ng = 1;}Display_Digit[0] = df_Table[Temp_Value[0]&0x0f];CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4); Display_Digit[3] = CurrentT/100;Display_Digit[2] = CurrentT%100/10;Display_Digit[1] = CurrentT%10;Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0';Current_Temp_Display_Buffer[10] = '.';Current_Temp_Display_Buffer[9] = Display_Digit[1] + '0';Current_Temp_Display_Buffer[8] = Display_Digit[2] + '0';Current_Temp_Display_Buffer[7] = Display_Digit[3] + '0';if(Display_Digit[3] == 0)Current_Temp_Display_Buffer[7] = ' ';if(Display_Digit[2] == 0&&Display_Digit[3]==0)Current_Temp_Display_Buffer[8] = ' ';if(ng){if(Current_Temp_Display_Buffer[8] == ' ')Current_Temp_Display_Buffer[8] = '-';else if(Current_Temp_Display_Buffer[7] == ' ')Current_Temp_Display_Buffer[7] = '-';elseCurrent_Temp_Display_Buffer[6] = '-';}Set_LCD_POS(0x00);for(i=0;i<16;i++){Write_LCD_Data(Temp_Disp_Title[i]);}Set_LCD_POS(0x40);for(i=0;i<16;i++){Write_LCD_Data(Current_Temp_Display_Buffer[i]);}Set_LCD_POS(0x4d);Write_LCD_Data(0x00);Set_LCD_POS(0x4e);Write_LCD_Data('C');}void main(){LCD_Initialise();Read_Temperature();Delay(50000);Delay(50000);while(1){Read_Temperature();if(DS18B20_IS_OK)Display_Temperature();DelayXus(100);}}五、改进意见与收获体会:可以加入自动报警系统,方便用于实际的用途,可以在实际的应用中达到自动检测报警的效果,方便人们对于温度的检测。