基于单片机的温度传感器讲解
- 格式:doc
- 大小:443.50 KB
- 文档页数:27
第一章绪论1.1设计目的我国是一个农业大国,粮食是一个国家生存的根本,为了防备战争、灾害与各种突发事件的发生,粮食的安全储藏具有重要的意义。
目前,我国各地区的各种大型粮库都还存在着程度不同的粮食储存变质问题,而影响粮食储藏的主要参数又是温度。
根据国家粮食保护法规定,必须定期抽样检查粮库各点的粮食温度,以便与时采取相应的措施,防止粮食的变质。
过去粮食温度的检测是靠人工手测进行,不但测试速度慢、测试精度低,而且人员劳动强度非常大。
随着计算机和信息技术的发展,计算机测量系统越来越多的场合得到了广泛应用。
传统的人工查看粮温的方法,已逐步被电子检温设备所取代,小的储粮设备一般采用小型测温仪检测粮温,大中型储粮设备已逐步配备微机测温系统。
前一种方式多数采用由拨动手动开关逐点查看粮温的方法,有些也采用自动巡检方式并配备小型打印机记录粮温数据。
后一种方式则可在微机机房监测粮温情况,并能利用微机对粮温数据进行分析对比。
保证粮库中储藏粮食的安全,一个十分重要的条件就是要求粮食储藏温度保持在18℃~20℃之间。
对于出现不正常升温或降温,要求能够迅速的测量并且报警使工作人员可以马上采取措施降温或升温。
本设计采用的DS18B20是美国DALLAS公司生产的智能温度传感器。
可以通过程序设定9~12位的分辨率,测量温度围为-55℃~+125℃,在-10℃~+85℃围精度为士0.5℃,DS18B20支持“一线总线”接口,用一根线对信号进行双向传输,具有接口简单容易扩展等优点,适用于单主机、多从机构成的系统。
DS18B20测量的现场温度直接以“一线总线”的数字方式传输,提高了系统的抗干扰性,适合各种恶劣环境的现场温度测量。
DS18B20支持3V~ 5.5V的电压围。
分辨率、报警温度可设定存储在DS18B20的E2PROM中,掉电后依然保存。
- 1 - / 491.2 设计容(1)一线总线制单片机中的应用。
(2)点阵式液晶显示器的使用。
引言:温度是一个常见的物理量,对于许多领域的应用来说,准确地测量温度非常重要。
单片机作为一种常见的嵌入式系统,具有强大的数据处理和控制能力。
本文将介绍基于单片机的温度测量技术及其应用。
概述:温度测量是一项广泛应用于工业自动化、环境监测、医疗设备等领域的技术。
传统的温度测量方法主要基于热敏电阻、热电偶、红外线等。
而基于单片机的温度测量技术则结合了传感器、单片机和通信等技术,能够实时、精确地监测和控制温度。
正文:1. 传感器选择1.1 热敏电阻热敏电阻是一种根据温度变化导致电阻值变化的传感器。
它的特点是响应速度快、精度高,但对环境温度和供电电压的稳定性要求较高。
1.2 热电偶热电偶是一种使用两个不同金属的导线连接的传感器。
它的优点是测量范围广,适用于极高或极低温度的测量,但精度较低,受电磁干扰影响较大。
1.3 红外线传感器红外线传感器是一种测量物体表面温度的传感器。
它可以通过接收物体发出的红外辐射来测量温度,适用于无接触测量,但精度受物体表面性质影响较大。
2. 单片机选择2.1 嵌入式系统单片机作为一种常见的嵌入式系统,集成了处理器、存储器和外设接口。
它具有较强的计算和控制能力,适用于温度测量应用中的数据处理和控制任务。
2.2 选择合适的单片机型号选择合适的单片机型号是确保系统稳定运行的关键。
应根据温度测量的要求确定所需要的计算能力、引脚数量、通信接口等因素,选择合适的单片机型号。
3. 温度采集与处理3.1 模拟信号采集通过选定的传感器,将温度信号转换为模拟电压信号。
使用单片机的模拟输入接口,对模拟电压信号进行采集,获取温度数据。
3.2 数字信号处理单片机通过内置的模数转换器(ADC)将模拟信号转换为数字信号。
根据所选单片机型号的计算能力,可以进行进一步的数据处理和算法运算,包括滤波、校正等。
4. 数据存储与通信4.1 存储器选择根据温度测量系统的要求,可以选择合适的存储器类型,如闪存、EEPROM等。
单片机中的温度传感器原理与应用单片机(Microcontroller)是一种集成了处理器核心、存储器和外设接口等功能于一体的集成电路芯片。
温度传感器则是一种用于测量环境温度并将其转换为电信号的装置。
在许多单片机应用中,温度传感器被广泛使用以监测和控制温度。
本文将探讨单片机中常用的温度传感器原理与应用。
一、温度传感器原理温度传感器是一种能够将温度转换成电信号的传感器。
常见的温度传感器有电阻温度计(RTD)、热电偶(Thermocouple)和半导体温度传感器等。
1. 电阻温度计(RTD)电阻温度计是一种使用金属材料电阻随温度变化的特性来进行温度测量的传感器。
最常见的电阻温度计材料之一是铂金,其中常用的有白金电阻温度计(Pt100)和铂铑电阻温度计(Pt1000)。
电阻温度计通过测量电阻值变化来计算温度。
2. 热电偶热电偶是一种利用两种不同金属的热电效应来测量温度的传感器。
热电偶由两种不同金属的导线组成,两个导线的接合处称为热电偶焊点。
当热电偶的焊点处于不同温度下时,会产生一个电动势。
通过测量这个电动势来计算温度。
3. 半导体温度传感器半导体温度传感器是一种利用半导体材料的电阻随温度变化的特性进行温度测量的传感器。
常见的半导体温度传感器有硅(Silicon)温度传感器和石墨烯(Graphene)温度传感器等。
半导体温度传感器通常采用微型芯片方式制造,具有体积小、精度高、响应速度快等优点。
二、温度传感器在单片机中的应用单片机中的温度传感器广泛应用于温度检测、温度控制、温度补偿等场景。
以下介绍几种常见的应用案例。
1. 温度检测单片机可以通过温度传感器来实时检测环境的温度。
例如,温度传感器可以被用于室内温度监测系统中,单片机可以实时读取传感器输出的温度值,并根据温度变化进行相应的控制操作,如开启或关闭空调、加热等。
2. 温度控制单片机可以根据温度传感器的反馈信号来实现温度控制。
例如,温度传感器可以用于温度控制器中,单片机可以根据实时的温度值与设定的目标温度进行比较,并通过控制输出来调节加热或制冷设备,以维持恒温状态。
引言:数字温度计是一种基于51单片机的温度测量装置,它通过传感器感知环境的温度,并使用单片机将温度值转换为数字形式,并显示在液晶屏上。
本文将详细介绍数字温度计的设计原理、硬件连接、软件编程以及应用领域。
概述:数字温度计基于51单片机的设计理念,其基本原理是通过传感器将温度转换为电信号,然后通过ADC(模数转换器)将电信号转换为数字信号,最后使用单片机将数字信号转换为温度值。
同时,数字温度计还将温度值显示在液晶屏上,方便用户直观地了解环境温度。
正文内容:1. 硬件连接:1.1 使用温度传感器感知环境温度:常用的温度传感器有NTC热敏电阻和DS18B20数字温度传感器。
通过将传感器连接到51单片机的引脚上,可以实现对环境温度的感知。
1.2 连接ADC进行模数转换:ADC是将模拟信号转换为数字信号的关键部件。
通过将51单片机的引脚连接到ADC芯片的输入端,可以将模拟的温度信号转换为数字信号。
1.3 连接液晶屏显示温度值:通过将51单片机的引脚连接到液晶屏的控制引脚和数据引脚,可以将温度值以数字形式显示在液晶屏上。
2. 软件编程:2.1 初始化引脚和ADC:在软件编程中,需要初始化51单片机的引脚设置和ADC的工作模式。
通过设置引脚为输入或输出,以及设置ADC的参考电压和工作模式,可以确保硬件正常工作。
2.2 温度测量算法:根据传感器的工作原理和电压-温度特性曲线,可以编写相应的算法将ADC测得的电压值转换为温度值。
例如,对于NTC热敏电阻,可以使用Steinhart-Hart公式进行温度计算。
2.3 温度值显示:将温度值以数字形式显示在液晶屏上。
通过设置液晶屏的控制引脚和数据引脚,可以控制液晶屏的显示内容,并将温度值以数字形式显示在屏幕上。
3. 基于51单片机的数字温度计应用:3.1 家庭温度监测:数字温度计可以安装在家庭中的不同区域,实时监测室内温度,并通过数字显示提供直观的温度信息。
这对于家庭的舒适性和节能都有重要意义。
任务书利用数字温度传感器DS18B20与单片机结合来测量温度。
利用数字温度传感器DS18B20测量温度信号,计算后在LED数码管上显示相应的温度值。
其温度测量范围为−55℃~125℃,精确到0.5℃。
数字温度计所测量的温度采用数字显示,控制器使用单片机AT89C51,测温传感器使用DS18B20,用LED数码管实现温度显示。
目录第一章、绪论 (3)1、1单片机概述 (3)1、2选题背景及设计意义 (3)1、3设计方案论证 (4)第二章、硬件设计 (6)2、1硬件电路的设计 (6)1、时钟电路 (7)2、复位电路 (8)3、显示电路 (10)2、2 元器件的介绍 (11)1、单片机AT89C51 (11)2、温度传感器DS18B20 (15)第三章、系统软件设计 (17)1、系统工作流程图 (17)2、温度传感器子程序流程图 (18)第四章、汇编语言程序部分(略) (19)第五章、调试部分 (19)参考文献 (20)第一章绪论1.1 单片机概述单片机的结构特征是将组成计算机的基本部件集成在一块晶体芯片上,构成一台功能独特的单片微型计算机。
一台典型的单片机的基本组成结构包括中央处理器(CPU),存储器(ROM和RAM),并行I/O口,串行I/O口,定时器/计数器,定时电路及元件。
由此可见,单片机在结构上突破了常规的按逻辑功能划分芯片。
由多片构成了微型计算机的设计思想,将构成计算机的许多功能集成在一块晶体芯片上。
1.2 选题背景及设计意义最早的温度计是在1593年由意大利科学家伽利略发明的。
他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。
使用时先给玻璃泡加热,然后把玻璃管插入水中。
随着温度的变化,玻璃管中的水面就会上下移动,根据移动的多少就可以判定温度的变化和温度的高低。
这种温度计,受外界大气压强等环境因素的影响较大,所以测量误差大。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
基于DS18B20的单片机温度监测系统一、引言近年来,随着物联网技术的快速发展,各种智能设备得到了广泛应用。
其中,温度监测系统在生活、工业和农业等领域发挥着重要作用。
基于DS18B20的单片机温度监测系统是一种成本低、精度高、易于实现的温度监测方案。
本文将详细介绍基于DS18B20的单片机温度监测系统的原理、设计和实现。
二、系统原理基于DS18B20的单片机温度监测系统由DS18B20温度传感器、单片机和显示设备组成。
DS18B20是一种数字温度传感器,通过单总线协议与单片机进行通信。
单片机负责接收DS18B20传感器的数据,并将温度值显示在相应的显示设备上。
三、硬件设计1. DS18B20温度传感器DS18B20温度传感器具有较高的温度测量精度和广泛的工作温度范围。
它采用单总线接口,只需要一个IO口即可完成与单片机的通信。
在设计中,将DS18B20的VDD引脚连接到单片机的供电引脚,GND引脚连接到单片机的地引脚,DQ 引脚连接到单片机的IO口。
2. 单片机单片机是温度监测系统的核心控制器,负责接收DS18B20传感器的数据并进行处理。
常用的单片机型号有STC89C52、AT89S52等。
在设计中,将单片机的IO口连接到DS18B20传感器的DQ引脚,通过单总线协议与传感器进行通信。
3. 显示设备显示设备用于将温度值显示出来,常用的显示设备有LCD液晶显示屏、LED数码管等。
在设计中,将单片机的IO口连接到显示设备的控制引脚,通过控制引脚向显示设备发送温度值。
四、软件设计1. 单片机程序设计单片机程序设计是整个系统的核心,主要包括初始化配置、与DS18B20传感器通信、温度数据处理和显示等功能。
在程序设计中,首先需要初始化单片机的IO口和定时器,使其能够与DS18B20传感器进行通信。
接着,通过单总线协议与传感器进行通信,从传感器读取温度数据。
然后,对读取的温度数据进行处理,计算出实际的温度值。
基于51单片机和DS18B20的数字温度计设计说明
1.硬件设计:
-51单片机:选择合适的型号,如STC89C52或AT89C52等。
-DS18B20温度传感器:该传感器是一种数字温度传感器,具有单总线接口和高精度测量能力。
-接口电路:将51单片机和DS18B20传感器连接起来,要注意电平转换和信号线的阻抗匹配。
2.软件设计:
-初始化:在主函数中,首先对单片机进行初始化设置,包括时钟设置、串口配置等。
-DS18B20通信协议:使用单总线协议与DS18B20传感器进行通信,包括发送复位信号、读写数据等操作。
-温度测量:通过向DS18B20发送读取温度的命令,从传感器中读取温度值并保存。
-数据传输:将温度值转换为可显示的格式,如摄氏度或华氏度,并通过串口输出或LED显示。
3.程序流程:
-初始化单片机,设置时钟和串口参数。
-进入主循环,循环执行以下操作:
-发送复位信号,启动温度转换。
-等待转换完成,发送读取温度命令。
-读取温度值,并进行数据处理转换。
-输出温度值。
4.其他功能:
-可以添加LCD显示模块,将温度值显示在液晶屏上。
-可以添加按键输入模块,通过按键切换温度单位或进行其他操作。
需要注意的是,该设计只是一个简单的示例,实际应用中可能需要根据具体需求进行扩展和修改。
同时,在程序设计过程中,也要注意低功耗和数据稳定性等方面的考虑。
单片机中的温度传感器应用实例温度传感器是一种可以测量和监控环境中温度变化的设备。
在单片机应用中,温度传感器广泛应用于各种领域,如智能家居、工业自动化、医疗设备等。
本文将分析和介绍单片机中温度传感器的应用实例。
一、温度传感器的基本原理和类型温度传感器根据其工作原理可以分为接触式和非接触式两种类型。
1. 接触式温度传感器接触式温度传感器通过与被测物体直接接触来测量其温度。
常见的接触式温度传感器包括热电偶和热敏电阻。
热电偶是利用两种不同材料在温度变化下产生的热电势差来进行温度测量的传感器。
它的优点是测量范围广,能够适应高温环境,但准确度相对较低。
热敏电阻是一种电阻随温度变化而变化的传感器。
它的优点是价格便宜,尺寸小,但只能适用于低温环境。
2. 非接触式温度传感器非接触式温度传感器可以通过无需直接接触被测物体而进行温度测量。
常见的非接触式温度传感器有红外线传感器和热像仪。
红外线传感器是一种利用物体辐射出的红外线来测量其温度的传感器。
它的优点是测量速度快,响应迅速,适用于不同类型的物体。
热像仪可以实时显示物体表面的温度分布。
它的优点是可以一次性测量多个点的温度。
二、单片机中温度传感器的应用实例1. 温度监测与控制系统在智能家居中,使用单片机结合温度传感器可以实现对室内温度的监测和控制。
当室内温度超过设定的阈值时,单片机可以通过控制空调或加热器来调节室内温度,以提供一个舒适的居住环境。
2. 工业热处理控制在工业自动化中,温度传感器广泛用于热处理过程的控制。
通过与单片机连接,可以实时监测和记录物体的温度曲线,并根据设定的处理要求来控制加热时间和温度,确保产品质量。
3. 医疗设备中的体温检测在医疗设备中,温度传感器可以用于测量人体的体温。
通过与单片机的连接,可以实现对体温的实时监测。
这在疫情期间尤为重要,可以帮助医护人员及时发现异常体温,并采取相应的防控措施。
4. 温度报警系统通过将温度传感器与单片机连接,可以实现温度报警系统。
基于51单片机的数字温度计设计数字温度计是一种广泛使用的电子测量设备,通过传感器将温度转化为数字信号,并显示出来。
本文将介绍基于51单片机的数字温度计的设计。
该设计将使得使用者能够准确、方便地测量温度,并实时显示在液晶显示屏上。
1. 硬件设计:- 传感器选择:在设计数字温度计时,我们可以选择使用NTC(负温度系数)热敏电阻或者DS18B20数字温度传感器作为温度传感器。
这里我们选择DS18B20。
- 信号转换:DS18B20传感器是一种数字传感器,需要通过单总线协议与51单片机进行通信。
因此,我们需要使用DS18B20专用的驱动电路,将模拟信号转换为数字信号。
- 51单片机的选择:根据设计要求选择合适的51单片机,如STC89C52、AT89S52等型号。
单片机应具备足够的IO口来与传感器和液晶显示屏进行通信,并具备足够的计算和存储能力。
- 显示屏选择:为了实时显示温度,我们可以选择使用1602型字符液晶显示屏。
该显示屏能够显示2行16个字符,足够满足我们的需求。
通过与51单片机的IO口连接,我们可以将温度数据显示在屏幕上。
2. 软件设计:- 采集温度数据:通过51单片机与DS18B20传感器进行通信,采集传感器传输的数字温度数据。
通过解析传感器发送的数据,我们可以获得当前的温度数值。
- 数据处理:获得温度数据后,我们需要对其进行处理。
例如,可以进行单位转换,从摄氏度到华氏度或者开尔文度。
同时,根据用户需求,我们还可以对数据进行滤波、校准等处理。
- 显示数据:通过与液晶显示屏的连接,我们可以将温度数据显示在屏幕上。
可以使用51单片机内部的LCD模块库来控制液晶显示屏,显示温度数据以及相应的单位信息。
- 用户交互:可以设置一些按键,通过与51单片机的IO口连接,来实现用户与数字温度计的交互。
例如,可以设置一个按钮来进行温度单位的切换,或者设置一个按钮来启动数据保存等功能。
3. 功能拓展:- 数据存储:除了实时显示当前温度,我们还可以考虑增加数据存储功能。
基于51单片机数字温度计的设计与实现数字温度计是一种能够测量环境温度并显示数值的设备。
基于51单片机的数字温度计设计与实现是指利用51单片机作为核心,结合温度传感器和其他辅助电路,实现一个能够测量温度并通过数码管显示温度数值的系统。
本文将从硬件设计和软件实现两个方面介绍基于51单片机数字温度计的具体设计与实现过程。
一、硬件设计1. 温度传感器选取在设计数字温度计时,首先需要选取合适的温度传感器。
市面上常用的温度传感器有热敏电阻、功率型温度传感器(如PT100)、数字温度传感器(如DS18B20)等。
根据设计需求和成本考虑,我们选择使用DS18B20数字温度传感器。
2. 电路设计基于51单片机的数字温度计的电路设计主要包括单片机与温度传感器的连接、数码管显示电路和电源电路。
(1)单片机与温度传感器的连接在电路中将51单片机与DS18B20数字温度传感器相连接,可采用一线总线的方式。
通过引脚的连接,实现单片机对温度传感器的读取控制。
(2)数码管显示电路为了能够显示温度数值,我们需要设计一个数码管显示电路。
根据温度传感器测得的温度值,通过数字转换和数码管驱动,将温度数值显示在数码管上。
(3)电源电路电源电路采用稳压电源设计,保证整个系统的稳定供电。
根据实际需求选择合适的电源电压,并添加滤波电容和稳压芯片,以稳定电源输出。
3. PCB设计根据电路设计的原理图,进行PCB设计。
根据电路元件的布局和连线的走向,绘制PCB板的线路、元件和连接之间。
二、软件实现1. 单片机的编程语言选择对于基于51单片机的数字温度计的软件实现,我们可以选择汇编语言或者C语言进行编程。
汇编语言的效率高,但编写难度大;C语言的可读性好,开发效率高。
根据实际情况,我们选择使用C语言进行编程。
2. 温度传感器数据获取利用单片机的IO口与温度传感器相连,通过一线总线协议进行数据的读取。
根据温度传感器的通信规则,编写相应的代码实现数据的读取。
课设报告—基于单片机的温度检测报警一、引言随着科技的不断发展,单片机技术在各个领域得到了广泛应用。
本文将介绍一种基于单片机的温度检测报警系统。
该系统能够实时监测环境温度,并在温度超过设定阈值时发出报警信号,以保证环境的安全和稳定。
二、系统设计该系统主要由温度传感器、单片机、报警器和显示器等组成。
温度传感器负责实时采集环境温度数据,传输给单片机进行处理。
单片机根据设定的温度阈值,判断是否超过安全范围,并控制报警器发出声音或光信号。
同时,单片机还可以将温度数据显示在显示器上,方便用户实时了解环境温度情况。
三、硬件设计1. 温度传感器:选择合适的温度传感器进行温度采集。
常用的温度传感器有NTC热敏电阻和DS18B20数字温度传感器等,可根据具体需求选择适合的传感器。
2. 单片机:选择适合的单片机进行数据处理和控制。
常用的单片机有STC系列、AVR系列和PIC系列等,可根据个人熟悉程度和项目需求选择合适的单片机。
3. 报警器:选择适合的报警器进行声音或光信号发出。
常用的报警器有蜂鸣器和LED灯等,可根据项目需求选择合适的报警器。
4. 显示器:选择适合的显示器进行温度数据的显示。
常用的显示器有LCD液晶显示器和LED数码管等,可根据项目需求选择合适的显示器。
四、软件设计1. 温度采集:通过单片机的AD转换功能,将模拟温度信号转换为数字信号进行处理。
根据传感器的特性和转换公式,将采集到的数字信号转换为实际温度值。
2. 温度比较:将采集到的温度值与设定的阈值进行比较。
若温度超过阈值,则触发报警信号;若温度在安全范围内,则不进行任何操作。
3. 报警控制:当温度超过阈值时,单片机控制报警器发出声音或光信号,提醒用户温度异常。
4. 数据显示:单片机将采集到的温度数据显示在显示器上,方便用户实时了解环境温度情况。
五、系统应用该系统可以广泛应用于各个领域,如工业生产、农业温室、医疗设备等。
在工业生产中,可以用于监测机器设备的温度,及时发现异常情况并采取措施,保证生产安全和设备稳定性。
基于51单片机的DS18B20温度显示本讲内容:了解温度传感器DS18B20的使用,并通过一个例程展示温度传感器DS18B20测温过程。
DS18B20简介:DS18B20 是单线数字温度传感器,即“一线器件”,其具有独特的优点:(1)采用单总线的接口方式与微处理器连接时仅需要一条口线即可实现微处理器与 DS18B20 的双向通讯。
单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻松地组建传感器网络。
(2)测量温度范围宽,测量精度高。
DS18B20 的测量范围为-55 ℃ ~+ 125 ℃;在 -10~+ 85°C 范围内,精度为± 0.5°C 。
(3)多点组网功能多个 DS18B20 并联在惟一的单线上,实现多点测温。
DS18B20的存储器由一个高速暂存RAM 和一个非易失性、电可擦除(E2)RAM 组成。
配置寄存器:出场设置默认R0、R1为11。
也就是12位分辨率,也就是1位代表0.0625摄氏度。
DS18B20经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
所以当我们只想简单的读取温度值的时候,只用读取暂存器中的第0和第1个字节就可以了。
简单的读取温度值的步骤如下: 1:跳过ROM 操作 2:发送温度转换命令 3:跳过ROM 操作 4:发送读取温度命令 5:读取温度值 DS18B20接口电路图:DS18B20的初始化:主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。
若无低电平出现一直都是高电平说明总线上无器件应答。
做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。
基于51单片机的DS18B20温度传感器驱动程序加详解//此部分为18B20的驱动程序//本程序验证通过,晶振为12MHz#include <reg52.H>#include <intrins.h>sbit D18B20=P3^7; //DQ接P3^7#define NOP() _nop_()#define _Nop() _nop_()void TempDelay (unsigned char idata us); //延时函数定义void Init18b20 (void); //初始化函数定义void WriteByte (unsigned char idata wr); //单字节写入void read_bytes (unsigned char idata j); //定义多字节数据读取unsigned char CRC (unsigned char j);//定义校验码数组void GemTemp (void); //数据处理void Config18b20 (void); //配置上下限即处理位数(9/10/11) void ReadID (void); //读取器件ID,即ROM中的数据void TemperatuerResult(void); //最终数据输出//bit flag;unsigned int idata Temperature,D[10]; //定义温度数组unsigned char idata temp_buff[9]; //定义RAM数据暂存数组//存储读取的字节,read scratchpad为9字节,read rom ID为8字节unsigned char idata id_buff[8]; //定义ROM数据暂存数组unsigned char idata *p,TIM; //指针变量unsigned char idata crc_data; //CRC计算变量定义unsigned char code CrcTable [256]={0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62 , 96, 130, 220,35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 12 8, 222, 60, 98,190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29 , 67, 161, 255,70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 2 05,17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 2 38,50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 1 45, 207, 45, 115,202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 2 44, 170, 72, 22,233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 2 15, 137, 107, 53};//CRC数据表//Function:延时处理void TempDelay (unsigned char idata us){while(us--);}//Function:18B20初始化void Init18b20 (void){D18B20=1; //侦测到下跳沿,初始化_nop_();D18B20=0;TempDelay(160); //delay480 us (480)_nop_();D18B20=1; //释放总线TempDelay(30); //delay 96 us (60-112)_nop_();_nop_();_nop_(); //18B20侦测到此上升沿,会自动应答//发送presence信号//if(D18B20==0)// flag = 1; //detect 1820 success!//else// flag = 0; //detect 1820 fail!TempDelay(30); //delay 96 us(60-240)_nop_(); //发送应答脉冲_nop_();D18B20 = 1; //释放总线}//Function:向18B20写入一个字节void WriteByte (unsigned char idata wr) //单字节写入{unsigned char idata i;for (i=0;i<8;i++){D18B20 = 1;_nop_();D18B20 = 0; //侦测到下跳沿,初始化_nop_();D18B20=wr&0x01; //写数据在(60-120)us内TempDelay(30); //delay 96(60-120)us_nop_();_nop_(); //至少大于1us恢复时间D18B20=1; //释放总线wr >>= 1; //一个字节8位,总共写8次}}//Function:读18B20的一个字节unsigned char ReadByte (void) //读取单字节{unsigned char idata i,u=0;for(i=0;i<8;i++){D18B20 = 1;_nop_();D18B20 = 0; //负跳沿,初始化u >>= 1;D18B20 = 1; //释放总线if(D18B20==1)u |= 0x80;TempDelay (3); //15us内采样_nop_();}return(u);}//Function:读18B20void read_bytes (unsigned char idata j){unsigned char idata i;for(i=0;i<j;i++){*p = ReadByte();p++;}}//Function:CRC校验unsigned char CRC (unsigned char j){unsigned char idata i,crc_data=0;for(i=0;i<j;i++) //查表校验crc_data = CrcTable[crc_data^temp_buff[i]]; return (crc_data);//返回i=8时的crc_data}//若为0,校验正确,即此时的temp_buff[8]=0x00; //Function:读取温度void GemTemp (void){read_bytes (9);if (CRC(9)==0) //校验正确{ //暂存器第0字节低8位,第一字节为高8位。
目录0. 前言 (1)1. 总体方案设计 (2)2. 硬件电路的设计 (3)2.1 温度传感器 (3)2.1.1温度传感器选用细则 (3)2.1.2 温度传感器DS18B20 (4)2.1 单片机片子 (7)2.2 显示电路设计 (9)3 软件设计 (11)3.1主程序方案 (11)3.2 各模块子程序 (11)3.2.1 温度采集程序 (11)3.2.2 显示程序 (14)4.联合调试 (15)5. 课设小结及进一步设想 (16)参考文献 (16)课设体会 (17)附录I 元件清单 (18)附录II 整体电路图 (19)附录III 源程序清单 (20)基于单片机的温度采集系统设计(DS18B20)摘要:随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。
在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要。
计算机技术特别是单片机技术的发展,单片机的应用领域越来越广泛,单片机在工业控制、数据采集以及仪器仪表自动化等许多领域都起着十分重要的作用。
但在实际应用中,在要求响应速度快、实时性强、控制量多的应用场合,单个单片机往往难以胜任。
本课题以AT89C51单片机系统为核心,能对多点的温度进行实时巡检。
DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。
关键词:温度测量;DS18B20温度传感器;单片机0.前言在人类的生活环境中,温度扮演着极其重要的角色。
无论你生活在哪里,从事什么工作,无时无刻不在与温度打着交道。
目录设计目的和要求 (3)设计内容 (3)1 温度测量系统硬件部分 (3)2. 主控制器的介绍 (4)2.4.2 LED显示单元部分 (11)3系统程序的设计 (14)3.1主程序 (15)3.2读出温度子程序 (15)3.3温度转换命令子程序 (16)3.4计算温度子程序 (16)3.5 温度数据显示子程序 (17)结论及致谢 (17)参考文献 (18)附录 (19)摘要随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。
采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
我们采用美国DALLAS半导体公司继DS18B20之后推出的一种改进型智能温度传感器DS18B20作为检测元件,温度范围为-55~125 ºC,最高分辨率可达0.0625 ºC。
DS18B20可以直接读出北侧温度值,而且采用三线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
本文介绍了基于AT89C51单片机的一种温度测量及报警电路,该电路采用DS18B20作为温度监测元件,测量范围0℃-~+100℃,使用LED模块显示,能设置温度报警上下限。
正文着重给出了软硬件系统的各部分电路,介绍了集成温度传感器DS18B20的原理,AT89C51单片机功能和应用。
该电路设计新颖、功能强大、结构简单。
现在温度测量报警领域正在蓬勃快速的发展,各国都在进行着各项测试研究,以更好的检测温度,进行控制,让人类能更好的生活、工作和学习。
另外,温度测量控制领域也在不断的扩大,很多国家也共同合作,在共同研制仪器,去进行温度测量控制,温度测量控制这项研究也正在想全球化发展。
关键字:温度测量;温度传感器;单片机AT89C51;数字显示;数码管设计目的和要求基于单片机的数字温度计的设计通过此设计深入了解单片机的原理及应用巩固所学知识提高对知识的综合应用能力。
数字式温度计要求测温范围为-55~125°C ,精度误差在0.1°C 以内,LED 数码管直读显示。
选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。
设计内容1 温度测量系统硬件部分温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用4位LED 数码管以串口传送数据实现温度显示。
设计总框图见图2-1:温度显示主控机(51单片机)温度检测超温低温报警图2-1总体设计方框图2. 主控制器的介绍本课题主控制器采用单片机AT89C51单片机。
2.1 89C51的信号引脚89C51的引脚排列请参见图2-2。
图2-2 89C51引脚①信号引脚介绍P0.0 ~P0.7:P0口8位双向口线。
P1.0 ~P1.7 :P1口8位双向口线。
P2.0 ~P2.7 :P2口8位双向口线。
P3.0 ~P3.7 :P3口8位双向口线。
EA:访问程序存储控制信号。
当EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。
RST:复位信号。
当输入的复位信号延续2个机器周期以上高电平即为有效,用以完成单片机的复位初始化操作。
XTAL1和XTAL2 :外接晶体引线端。
当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
②P3口的第二功能P3口的8条口线都定义有第二功能,详见表2.1。
引脚第二功能信号名称P3.0 RXD 串行数据接收P3.1 TXD 串行数据发送外部中断0申请P3.2INT外部中断1申请P3.3INTP3.4 T0 定时器/计数器0的外部输入P3.5 T1 定时器/计数器1的外部输入P3.6 WR外部RAM写选通P3.7 RD外部RAM读选通表2.1 P3口的第二功能2.2时钟电路与复位电路①时钟电路时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各地信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。
单片机的时钟电路,如图2-7所示。
图2-7 时钟振荡电路一般电容C1,C2取30pF 左右,晶体的振荡频率范围是1.2MHz ~12 MHz 。
晶体振荡频率高, 则系统的时钟频率也高, 单片机运行速度也就快。
MCS-51在通常应用情况下,使用振荡频率为的6MHz 或12MHz 。
②单片机的复位电路单片机复位的条件是:必须使RST/VPD 或RST 引脚(9)加上持续二个机器周期(即24个振荡周期)的高电平。
单片机常见的复位电路如图2-8(a )(b )所示。
MCS-51VCCVCCRESETVSS22uF1KMCS-51VCCVCCRESET VSS22uF1KRE SETR1R2200(a ) 上电复位电路 (b) 按键复位电路图2-8 常见的复位电路图2-8(a )为上电复位电路,它是得用电容充电来实现的。
在接电瞬间,RST 端的电位与VCC 的相同,随着充电电流的减小,RST 的电位逐渐下降。
图2-8(b )为按键复位电路。
该电路除具有上电复位功能外,若要复位,只需按图2-8(b )中的RESET 键,此时电源VCC 经电阻R1、R2分压,在RST 端产生一个复位高电平。
2.3 温度传感器部分硬件DS18B20温度传感器是美国DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式。
TO -92封装的DS18B20的引脚排列见下图,其引脚功能描述见表2-2。
(底视图)图2-9 DS18B20引脚图序号名称引脚功能描述1 GND 地信号2 DQ 数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3 VDD 可选择的VDD引脚。
当工作于寄生电源时此引脚必须接地。
表2.2DS18B20详细引脚功能描述DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5V;零待机功耗;温度以9或12位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20采用3脚PR-35封装或8脚SOIC封装,其内部结构框图如图2-10所示。
图2-10 DS18B20内部结构64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。
温度报警触发器TH和TL,可通过软件写入户报警上下限。
DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。
高速暂存RAM的结构为8字节的存储器,结构如图2-11所示。
头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。
第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。
DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。
该字节各位的定义如图3-5所示。
低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。
DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。
因此,在实际应用中要将分辨率和转换时间权衡考虑。
高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。
第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。
..TM R11R01111..图2-11 DS18B20字节定义当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。
单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。
表2-3是一部分温度值对应的二进制温度数据。
R1 R0 分辨率/位温度最大转换时间/ms0 0 9 93.750 1 10 187.51 0 11 3751 1 12 750表2-3 DS18B20温度转换时间表DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。
若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行报警搜索。
在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。
主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。
DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。
器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
温度/℃二进制表示十六进制表示+125 0000 0111 1101 0000 07D0H+85 0000 0101 0101 0000 0550H+25.0625 0000 0001 1001 0000 0191H+10.125 0000 0000 1010 0001 00A2H+0.5 0000 0000 0000 0010 0008H0 0000 0000 0000 1000 0000H-0.5 1111 1111 1111 0000 FFF8H-10.125 1111 1111 0101 1110 FF5EH-25.0625 1111 1110 0110 1111 FE6FH-55 1111 1100 1001 0000 FC90H表2-4一部分温度对应值表减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。