基于ds18b20的数字温度计

合集下载

基于DS18B20温度传感器的数字温度计

基于DS18B20温度传感器的数字温度计

收稿日期:2007202206; 定稿日期:2007204218基金项目:国家重点基础研究发展(973)计划资助项目(2004CB217702204201)基于DS18B20温度传感器的数字温度计张 越1,张 炎2,赵延军1(1.河北理工大学计算机与自动控制学院,河北唐山 063009;2.唐山供电公司,河北唐山 063000)摘 要: 详细介绍了一种基于51单片机和DS18B20数字温度传感器来进行温度测量的方法,包括温度传感器芯片的选取、单片机与温度传感器接口电路的设计,以及实现温度信息采集和数据传输的软件设计。

DS18B20数字温度传感器是单总线器件,与51单片机组成一个测温系统,具有线路简单、体积小等特点,而且在一根通信线上,可以挂接很多这样的测温系统,十分方便。

关键词: 数字温度计;单片机;温度传感器;单线技术中图分类号: TP212.11 文献标识码: A 文章编号:100423365(2007)0520709203Digital T emperature Measurement System B ased on DS 18B 20ZHAN G Yue 1,ZHAN G Yan 2,ZHAO Yan 2jun 1(1.School of Com p uter and A utomatic Cont rol Engi neeri ng ,Hebei Pol ytechnic Uni versit y ,Tangshan ,Hebei 063009,P.R.China;2.Tangshan Power S u p pl y Com pany ,Tangshan ,Hebei 063000,P.R.Chi na )Abstract : A practical temperature measuring method based on microcontroller and DS18B20digital temperature sensor was presented.The selection of temperature sensor chip was discussed and the design of hardware interface circuit and related software were dealt with in more details.The proposed design is simple in hardware connection lines and small in size.In addition ,it is applicable for different temperature measuring systems based on DS18B20temperature sensors hung on one communication line.K ey w ords : Temperature measurement system ;Microcontroller ;Temperature sensor ;12wire technologyEEACC : 1200 1 引 言单片机在测控领域中具有十分广泛的应用,它既可以测量电信号,又可以测量温度、湿度等非电信号。

基于DS18B20的数字温度计的设计

基于DS18B20的数字温度计的设计

摘要人们的生活水平在日益提高,实现单片机的控制无疑是人们追求的目标之一,它在人们生活及工作中起到的作用也是不可否定的,其中温度计数字显示就是一个典型的例子。

本课题是研究温度传感器(DS18B20)以及串口通信,用液晶显示温度结果。

本课题所研究的温度传感器有很多优点,比如测温方便,测温准确,其输出可用液晶显示,主要用于对测温度测量要求比较严格的场所。

利用AT89S51单片机控制DS18B20进行数据采集并由LM016L液晶显示模块显示结果,采集结果可由MAX-232送入另外一块单片机显示并存储,利用AT89C51芯片进行存储,实现温度测量存储与再现。

关键字:温度采集串行通信温度传输液晶显示AbstractPeople's living standards in the increasing control of the microcontroller is undoubtedly one of the goals of the people to pursue it play a role in people's lives and work is undeniable, thermometer digital display is a typical example, but people its increasingly high demand, to provide mankind with better facilities will need to start from the microcontroller technology, all toward the digital control, intelligent control direction. This article describes the design based on DS18B20 digital thermometer and how to use the single-chip transmission temperature and display. The design introduced digital thermometer thermometer has a wide temperature range, easy reading, accurate temperature measurement, the output temperature with digital display, is mainly used for measuring temperature measurement requirements more stringent workplace, or scientific experiments scheme of the room. AT89S51 MCU DS18B20 data collection by the the LM016L liquid crystal display module displays the results In addition, the acquisition results by MAX-232 fed to a microcontroller and stored using AT89C51 chip storage, temperature measurement storage and reproduction.1、引言1.1选题目的和意义随着电子科学技术的发展,人们的生活也日趋数字化。

基于DS18B20的数字温度计设计

基于DS18B20的数字温度计设计

基于DS18B20的数字温度计设计一、课程设计目的1.培养学生文献检索的能力,如何利用Internet检索需要的文献资料。

2.培养学生综合分析问题、发现问题和解决问题的能力。

3.培养学生综合运用知识的能力和工程设计的能力。

4.培养学生理论联系实际的能力。

5.提高学生课程设计报告撰写水平。

二、设计内容、技术条件和要求1设计内容数字温度计的设计要能实现温度的实时采集与显示,以AT89S51单片机为核心芯片,使用DS18B20数字温度传感器采集环境温度,并通过一组4位共阴极数码管将温度显示出来,也可用LM1602液晶显示屏。

方案一:使用按钮控制温度的采集与显示。

方案二:使用定时控制温度的采集与显示,时间间隔1S。

2 设计要求•设计单片机最小系统(包括复位按钮、晶振电路等);•DS18B20应用电路设计。

•按键电路设计。

•可使用实验室的实验箱实物实现,也可使用仿真软件Proteus实现。

•绘制实现本设计内容的硬件电路(原理图),系统的组成框图。

•编写本课程设计内容的软件设计(包含程序流程图和对程序注释)。

三、总体设计思想本设计以检测温度并显示温度提供上下限报警为目的,按照系统设计功能的要求,确定系统由5个模块组成:主控器[4]、测温电路,报警电路,按键电路及显示电路。

系统以DS18B20为传感器用以将温度模拟量转化为电压数字量以总线传入单片机,以AT89S51为主芯片,在主芯片对DS18B20传入的温度值进行处理,由单片机程序控制,将经处理后的温度由LM1602液晶显示屏显示出来。

图3-1 数字温度计设计总体的原理图四、硬件设计1、硬件设计图见附件。

2、单片机复位电路工作原理及设计。

硬件图如下图一原理是通过使复位端经电阻与Vcc电源接通而产生按键复位电平,保证复位信号高电平持续时间大于2个机器周期。

3、单片机晶振电路工作原理及设计硬件图如下图二晶振电路是提供系统时钟信号。

为了各部分的同步应当引入公用的外部脉冲信号作为振荡脉冲。

基于DS18B20温度传感器的温度计

基于DS18B20温度传感器的温度计

基于DS18B20温度传感器的温度计设计摘要:以DS18B20温度传感器,4位7段数码管和AT89C52RC微控制器为主要部分实现数字温度计的设计,利用DS18B20本身具有的模数转换功能和暂时存储功能将模拟量——气温转换为微控制器可处理的数字量,并使用AT89C52RC的输入输出及定时器中断功能通过DS18B20的单线连接结构与DS18B20进行信息传输,读取温度值并用数码管显示出来。

1.设计选题的目的、意义通过数字温度计的设计进一步熟悉单片机微控制器及相关数字/模拟电路的原理和功能,熟悉单片机的程序设计,学会传感器的使用和相关文献的查找及学习。

2.硬件电路设计硬件部分主要包括微控制器、温度传感器模块和数码管显示模块三部分。

2.1 微控制器主要功能电路如下图,包括电源,接地,复位电路,时钟脉冲电路(11.0592MHz)。

2.2 温度传感器模块如下图,使用外部电源,可以减少程序复杂程度。

DS18B20特性:●独特的单线接口仅需一个端口进行通讯●简单的多点分布应用●无需外部器件●可通过数据线供电●零待机功耗●测温范围-55~+125℃●温度以12位数字量读出●温度数字量转换时间750ms(12位)●用户可定义的非易失性温度警报设置●报警搜索命令识别并超过程序限定温度(温度报警条件)的器件●应用包括温度控制、工业系统、消费品、温度计或任何热感测系统2.3 数码管显示模块如上图,由两片SN74HC573N八路透明锁存器分别控制共阳极数码管位和段的锁存,实现只用MCU的一组I/O口分别控制数码管位和段的选通。

3.软件电路设计软件同样包括三个部分:传感器控制,显示控制,主程序。

3.1 温度传感器控制A.DS18B20内部存储读写与控制原理右图是DS18B20内部9字节的暂存器的结构,向其传送读取命令后,暂存器会依次将9个字节的数据通过单线送出,每个字节都是低位在先。

在本课题,只需0字节和1字节,也就是温度LSB(低8位)和温度MSB(高8位)中的数据。

基于DS18B20数字温度计的设计

基于DS18B20数字温度计的设计
1.2.1
如果将8位1)第一阶段(1976-1978):单片机的探索阶段。以Intel公司的MCS–48为代表。MCS–48的推出是在工控领域的探索,参与这一控索的公司还有Motorola、Zilog等,都取得了满意的效果。这就是SCM的诞生年代,“单机片”一词即由此而来。
Keywords:microcontroller, digital control, thermometer

1.1
温度计是测温仪器的总称。根据所用测温物质的不同和测温范围的不同,有煤油温度计、酒精温度计、水银温度计、气体温度计、电阻温度计、温差电偶温度计、辐射温度计和光测温度计等。
最早的温度计是在1593年由意大利科学家伽利略(1564~1642)发明的。他的第一只温度计是一根一端敞口的玻璃管,另一端带有核桃大的玻璃泡。使用时先给玻璃泡加热,然后把玻璃管插入水中。随着温度的变化,玻璃管中的水面就会上下移动,根据移动的多少就可以判定温度的变化和温度的高低。这种温度计,受外界大气压强等环境因素的影响较大,所以测量误差大。
(1)CMOS化
摘要
随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。对于温度的测量方法与装置的研究就凸显得非常重要。由单片机与温度传感器构成的测温系统可广泛应用于很多领域。
本文将介绍一种基于单片机控制的数字温度计,从硬件和软件两方面介绍了单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,该设计控制器使用单片机AT89C2051,测温传感器使用DS18B20,用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到以上要求。DS18B20数字温度传感器是单总线器件与51单片机组成的测温系统,具有线路简单、体积小等特点,而且在一根通信线上,可以挂接多个DS18B20,因此可以构成多点温度测控系统。

基于DS18B20的数字温度计

基于DS18B20的数字温度计

Hefei University of T echnology课程设计题目:基于数字温度传感器的数字温度计。

设计要求:利用数字温度传感器DS18B20与单片机结合来测量温度。

数字温度传感器DS18B20测量温度并转化成二进制数保存在其内部的存储器中;单片机读取其中的信息并处理,在LED数码管上显示相应的温度值。

数字温度计所测量的温度采用数字显示,微控制器使用单片机STC89C54RD+,测温传感器使用DS18B20,用4位共阴极LED数码管以串口传送数据,实现温度显示。

(1)DS18B20DS18B20温度传感器是美国DALLAS半导体公司推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字读数方式。

下面介绍DS18B20的主要特点和部分使用方法,其他详细信息见DS18B20的数据手册:(a)主要特点独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

与此同时,更低的硬件开销意味者软件的复杂程度增加,而且必须严格按照其规定的时序进行读、写操作。

工作电压3.0~5.5V/DC,在温度不是太高的情况下,还可以使用“寄生电源”模式,即DS18B20的电源引脚不接电源,而是从数据总线中“窃取”能量。

向DS18B20发送测量温度指令之后,DS18B20将温度数据分成两个字节存放。

第一个字节LSB存放温度数据小数部分(存放在LSB的低四位)和整数部分的低四位(存放在LSB的高四位);第二个字节MSB存放温度数据整数部分的高四位(存放在MSB的低四位),MSB的高四位存放温度数据的正负标志。

所有的数据都是以二进制补码的形式存放的。

(b)使用方法:见C51程序的注释。

(2)STC89C54RD+单片机STC89C54RD+单片机是由80C51改良得到的,原理相同,操作方法类似。

基于DS18B20的数字温度计设计

基于DS18B20的数字温度计设计

目录(一)设计内容及要求 (2)(二)系统的硬件选择及设计 (3)2.1核心处理器的设计 (3)1、AT89C51引脚图 (3)2、AT89C51引脚功能介绍 (3)2.2温度采集电路的设计 (5)1、单线技术 (5)2、DS18B20的简介 (6)3、DS18B20内部结构 (8)4、DS18B20测温原理 (11)5、温度采集电路 (12)2.3温度显示电路的设计 (13)1、LED数码管的操作 (13)2、温度显示电路 (13)(三)系统的软件设计 (15)3.1概述 (15)3.2 DS18B20的单线协议和命令 (15)(1)初始化 (15)(2)ROM操作命令 (15)(3)内存操作命令 (16)3.3温度采集程序流程图的设计 (18)3.4温度显示程序流程图的设计 (19)(四) 结论 (19)(五)汇编代码 (20)(六)参考文献 (27)基于DS18B20的数字温度计设计摘要:在本设计中选用AT89C51型单片机作为主控制器件,采用DS18B20数字温度传感器作为测温元件,通过两位共阴极LED数码显示管并行传送数据,实现温度显示。

本设计的内容主要分为两部分,一是对系统硬件部分的设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用汇编语言实现温度的采集与显示。

通过DS18B20直接读取被测温度值,送入单片机进行数据处理,之后进行输出显示,最终完成了数字温度计的总体设计。

其系统构成简单,信号采集效果好,数据处理速度快,便于实际检测使用。

关键词:单片机AT89C51;温度传感器DS18B20;LED数码管;数字温度计(一)设计内容及要求本设计主要介绍了用单片机和数字温度传感器DS18B20相结合的方法来实现温度的采集,以单片机AT89C51芯片为核心,辅以温度传感器DS18B20和LED 数码管及必要的外围电路,构成了一个多功能单片机数字温度计。

本次设计的主要思路是利用51系列单片机,数字温度传感器DS18B20和LED 数码显示器,构成实现温度检测与显示的单片机控制系统,即数字温度计。

基于ds18b20的数字温度计设计报告

基于ds18b20的数字温度计设计报告

基于ds18b20的数字温度计设计报告
一、引言
随着科技的进步,温度的测量和控制变得越来越重要。

DS18B20是一款数字温度传感器,具有测量准确度高、体积小、接口简单等优点,广泛应用于各种温度测量场合。

本报告将介绍基于DS18B20的数字温度计设计。

二、DS18B20简介
DS18B20是一款由美国Dallas公司生产的数字温度传感器,可以通过数据线与微处理器进行通信,实现温度的测量。

DS18B20的测量范围为-55℃~+125℃,精度为±0.5℃。

三、数字温度计设计
1.硬件设计
数字温度计的硬件部分主要包括DS18B20温度传感器、微处理器、显示模块等。

其中,DS18B20负责采集温度数据,微处理器负责处理数据并控制显示模块显示温度。

2.软件设计
软件部分主要实现DS18B20与微处理器的通信和控制显示模块显示。

首先,微处理器通过数据线向DS18B20发送命令,获取温度数据。

然后,微处理器将数据处理后发送给显示模块,实现温度的实时显示。

四、测试结果
经过测试,该数字温度计的测量精度为±0.5℃,符合设计要求。

同时,该温度
计具有测量速度快、体积小、使用方便等优点,可以广泛应用于各种温度测量场合。

五、结论
基于DS18B20的数字温度计具有高精度、低成本、使用方便等优点,可以实现高精度的温度测量和控制。

随着科技的发展,数字温度计的应用将越来越广泛,具有广阔的市场前景。

基于ds18b20的温度计设计代码

基于ds18b20的温度计设计代码

基于DS18B20的温度计设计代码一、介绍DS18B20温度计DS18B20是一种数字温度传感器,由美国达拉斯半导体公司生产。

它采用单总线通信协议,并可以通过单总线接口进行多级串联。

DS18B20具有精度高、稳定性好、响应速度快等特点,因此在各种温度测量应用中被广泛使用。

二、DS18B20温度计设计代码在使用DS18B20温度传感器时,我们通常需要编写相应的代码来读取传感器的数据并进行温度计算。

以下是基于Arduino评台的DS18B20温度计设计代码:```c#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2 // 设置DS18B20数据线连接的Arduino 引脚OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);void setup() {Serial.begin(9600);sensors.begin();}void loop() {sensors.requestTemperatures(); // 发送获取温度命令float temperatureC = sensors.getTempCByIndex(0); // 获取温度值(摄氏度)float temperatureF = sensors.toFahrenheit(temperatureC); // 转换为华氏度Serial.print("Temperature: ");Serial.print(temperatureC);Serial.print("°C / ");Serial.print(temperatureF);Serial.println("°F");delay(1000); // 延时1s}```以上代码使用了OneWire库和DallasTemperature库来实现对DS18B20的温度测量。

基于DS18B20的数字温度计设计

基于DS18B20的数字温度计设计

基于DS18B20的数字温度计设计学生姓名:指导教师:所在学院:专业:摘要温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生活中的更加广泛应用,利用新型数字温度传感器实现对温度的测试与控制得到更快的开发,本文设计了一种基于AT89S51的温度检测及报警系统。

该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工作、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。

该系统设计和布线简单,结构紧凑,抗干扰能力强,在大型仓库、工厂、智能化建筑等领域的温度检测中有广泛的应用前景。

关键词:单片机DS18B20温度传感器智能化ABSTRACTTemperature measurement and control of industrial process is one of the typical applications, as sensors have more extensive application in today, to use the new digital temperature sensors for temperature testing and controlling get fast development, this paper design a system based on AT89S51 for temperature testing and alarming. The system is easy to realize the temperature gathering and displaying, and can according to need set temperature for arming, it is very convenient to use it, It has the advantages of high precision, ranging wide, high sensitivity, small volume, low power, it suits our daily life work and agriculture temperature testing, also can be used as temperature processing modules in other systems as auxiliary part in other main system. The system design and wiring simple, compact structure, strong anti-jamming capability, it has broad application protest in large warehouse, factories, intelligent building and other areas of temperature testing.Keywords: Microcontroller Temperature sensor DS18B20 Intelligent目录摘要 (I)ABSTRACT (II)前言 (IV)1 绪论 (1)1.1多功能数字温度计设计的背景 (1)1.2课程设计的目的和意义 (1)2 总体设计方案 (2)2.1整体功能说明 (2)2.2硬件功能模块组成 (2)2.3软件功能组成模块 (2)2.4测试计划 (3)2.5本章小结 (3)3 系统硬件电路的设计 (4)3.1整体功能说明 (4)3.2硬件功能模块组成 (4)3.3本章小结 (15)4 系统的软件设计 (16)4.1主程序 (16)4.2读出温度子程序 (17)4.3温度转换命令子程序 (17)4.4计算温度子程序 (18)4.5显示数据刷新子程序 (18)4.6本章小结 (19)参考文献 (21)致谢..................................... 错误!未定义书签。

基于DS18b20温度传感器的可报警数字温度计

基于DS18b20温度传感器的可报警数字温度计

基于DS18b20温度传感器的可报警数字温度计1. 任务书1:要求用DS18B20测量室温,用LCD显示,并能设置显示精度,达到所设温度上限或温度下限时报警。

2:课程设计要求:设计要求、系统结构、原理设计、各个模块的设计与实现、软件设计、调试过程、电路图和源程序。

2:摘要本文主要介绍了一个基于89C51单片机和DS18b20的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,适合于我们日常生活和工、农业生产中的温度测量。

3:方案说明采用数字温度芯片DS18B20 测量温度,输出信号全数字化。

便于单片机处理及控制,省去传统的测温方法的很多外围电路。

该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。

在0—100 摄氏度时,最大线形偏差小于1 摄氏度。

DS18B20 的最大特点之一采用了单总线的数据传输。

该系统利用AT89C51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上下限报警温度。

4:系统器件选择DS18B20 的性能特点如下:●独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯●适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数据线供电●温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作4.4: DS18B20使用中的注意事项DS18B20 虽然具有测温系统简单、测温精度高等优点,但在实际应用中也应注意以下几方面的问题:●DS18B20 从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。

基于Ds18B20的数字显示温度计

基于Ds18B20的数字显示温度计

基于Ds18B20的数字显示温度计摘要:整套系统是由控制器、温度检测传感器、LCD显示屏及键盘部分组成。

涉及到温度传感器芯片的选取、单片机与温度传感器接口电路的设计。

以及实现温度信息采集、数据传输和温度显示的软件设计。

本温度计属于多功能温度计,可以设置上下报警温度,当温度超过设置范围内时,可以声光报警。

关键词:DSl8820 AT89C51 LCDl602温度测量第1章系统硬件设计我们设计温度系统是由中央控制器、温度检测器、显示器及键盘部分组成。

控制器采用单片机A T89C51,温度检测部分采用DSl8820温度传感器,用LCDl602做显示器,四位显示。

本文从硬件和软件两方面介绍了AT89C51单片机温度控制系统的设计,对硬件原理图和程序图作了简洁的描述。

用AT89c51作CPU,A T89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,其内部有128byte的RAM及4kbyte的EEPROM,可满足本系统多功能的需要,采用单片机控制技术,对于系统功能的多样化。

智能化起着关键性的作用。

显示电路由LCDl602组成,用来显示当前的测试温度以及设置上下限时的温度值。

报警装置置由蜂鸣器组成,用来提示用户出现超出温度的上下限的情况。

1.1单片机最小系统单片机最小系统。

或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。

对51系列单片机来说,最小系统包括:单片机、晶振电路、复位电路。

前面已经提到单片机选用AT89C51。

单片机及外围电路如图1.2所示。

1.时钟电路AT89C51内部有一个用于构成振荡器的高增益反相放大器,引脚XTALl和XTAL2分别是此放大器的输入端和输出端。

时钟可以由内部方式产生或外部方式产生。

内部方式的时钟电路如图1.3(a)所示,在XTALl和XTAL2引脚上外接定时兀件,内部振荡器就产生自激振荡。

定时元件通常采用石英晶体和电容组成的并联谐振回路。

基于DS18B20温度传感器的数字温度计课程设计

基于DS18B20温度传感器的数字温度计课程设计

基于DS18B20温度传感器的数字温度计课程设计基于DS18B20温度传感器的数字温度计课程设计摘要本文设计了一种基于AT89C51 单片机与DS18B20 的温度测量装置。

通过AT89C51 单片机驱动数字温度传感器DS18B20,进行温度数据采集、读取、处理,并通过数码管显示出来。

该系统还可扩展成为多点温度采集系统。

关键词:温度、控制、监测。

方案论证:1、温度传感器:方案一:采用热敏电阻可满足方案要求,但热敏电阻精度低,重复性和可靠性差,对于精度要求较高的温度不适用,而且采用热敏电阻要求复杂的电路和算法,增加了设计复杂度。

方案二:采用专用的集成温度传感器(如AD590、LM35/LM45)和数字化温度传感器(DS18B20、DS1620)测温,数字化温度传感器具有接口简单、直接数字量输出、精确度高等优点。

DS18B20是DALLAS 公司的最新单线数字温度传感器,它是世界上第一片支持“一线总线”接口的温度传感器,一线总线独特而且经济的的特点,使用户可轻松的组件传感网络,它的温度测量范围为-55~+125℃,在-10~+85℃范围内,精度为+0.5℃。

现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性,适合于恶劣环境的温度测量,如:环境控制、设备活过程控制、温度类消费电子产品等DS18B20支持3~5.5V 的电压范围,是系统设计更灵活,更方便,更便宜,体积更小,DS18B20可疑程序设定9~12位的分辨率,精度为+0.5℃,分辨率设定及用户设定的报警温度存储在E2RPOM中,掉电后依然保存。

因此本方案选用DS18B20作为温度测量传感器。

2、单片机系统,电源模块。

显示模块由于本课程设计是基于已有的AT89C51单片机,该单片机需要仿真实现软硬件的调试,所以电源采用电脑供电,显示模块采用单片机上的共阴数码管。

3、确定方案:为了其智能性和通用性,本方案采用已有的AT89c51单片机作为控制器,单总线温度传感器DS18B20进行温度采集,由于AT89C51需用电脑进行软硬件的调试,因此电源模块采用单片机电源供电,显示模块采用单片机上的共阴数码管。

基于DS18B20的数字温度计的设计与实现

基于DS18B20的数字温度计的设计与实现

基于DS18B20的数字温度计的设计与实现一、实验目的1.了解DS18B20数字式温度传感器的工作原理。

2.利用DS18B20数字式温度传感器和89C51设计温度控制系统。

二、实验内容与要求1.基本要求:(1)检测的温度范围:0℃~100℃。

(2)检测精度 0.5℃。

(3)能对所测试的温度进行显示。

三、数字温度传感器DS18B20由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。

它具有体积小,接口方便,传输距离远等特点。

1.DS18B20性能特点DS18B20的性能特点:①采用单总线专用技术,既可通过串行口线,也可通过其它I/O 口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位),②测温范围为-55℃-+125℃,测量分辨率为0.0625℃,③内含64位经过激光修正的只读存储器ROM,④适配各种单片机或系统机,⑤用户可分别设定各路温度的上、下限,⑥内含寄生电源。

2.DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。

64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。

不同的器件地址序列号不同。

DS18B20的管脚排列如图1所示。

图1 DS18B20引脚分布图DS18B20高速暂存器共9个存储单元,如表所示:序号寄存器名称作用序号寄存器名称作用0 温度低字节以16位补码形式存放4 配置寄存器1 温度高字节5、6、7保留2 TH/用户字节1存放温度上限8 CRC3 HL/用户字节2存放温度下限以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。

基于DS18B20在单片机AT89S52上实现的数字式温度计

基于DS18B20在单片机AT89S52上实现的数字式温度计
MOV R0,#38H ;将温度的最高位符号位放入Ro寄存器
MAIN:
LCALL RESET ;调用复用子程序
MOV A,#0CCH ;写跳过ROM命令
LCALL WRITE ;调用写子程序
MOV A,#44H ;启动温度转换
LCALL WRITE
LCALL RESET ;调用复用子程序
MOV A,#0CCH ;写跳过ROM命令
LCALL WRITE
MOV A,#0BEH ;发读存储器命令
LCALL WRITE
6.用户可自设定报警上下限温度
7.报警搜索命令可识别和寻址哪个器件的温度超出预定值。
8.DS18B20的分辩率由用户通过EEPROM设置为9~12位
9.DS18B20可将检测到温度值直接转化为数字量,并通过串行通信的方式与主控制器进行数据通信。
DS18B20内部结构及功能
DS18B20的内部结构如下图所示,主要包括:寄生电源,温度传感器,64位ROM和单总线接口,存放中间数据的高速暂存器RAM,用于存储用户设定温度上下限值的TH和TL触发器,存储与控制逻辑,8位循环冗余校验码(CRC)发生器等7部分
本数字温度设计采用美国DALLAS半导体公司继DS1820之后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55~125℃,最大分辩率可达0.0625℃。DS18B20可以直接读出被测温度值,而且采用1-wire与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
系统硬件电路的设计
2.每只DS18B20具有一个独有的,不可修改的64位序列号,根据序列号访问地应的器件。
3.低压供电,电源范围从3~5V,可以本地供电,也可以直接从数据线上窃取电源(寄生电源方式)。

基于DS18B20的数字温度计

基于DS18B20的数字温度计

基于DS18B20的数字温度计 黄建文温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用4位LED 数码管以串口传送数据实现温度显示温度传感器DS18B20DS18B20温度传感器是美国DALLAS 半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

TO -92封装的DS18B20的引脚排列见下图,其引脚功能描述见表1。

(底视图)DS18B20DS18B20详细引脚功能描述序号 名称 引脚功能描述1 GND 地信号2 DQ 数据输入/输出引脚。

开漏单总线接口引脚。

当被用着在寄生电源下,也可以向器件提供电源。

3 VDD 可选择的VDD 引脚。

当工作于寄生电源时,此引脚必须接地。

DS18B20的性能特点如下:●独特的单线接口仅需要一个端口引脚进行通信;●多个DS18B20可以并联在惟一的三线上,实现多点组网功能;●无须外部器件;●可通过数据线供电,电压范围为3.0~5.5V;●零待机功耗;●温度以9或12位数字;●用户可定义报警设置;●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;●负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。

该字节各位的定义如图3所示。

低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度主控 制 器 LED 显示 温 度 传 感 器单片机复位 时钟振荡 报警点按键调整位数,来设置分辨率。

TM R11R01111....DS18B20字节定义当DS18B20接收到温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。

基于DS18B20的数字温度计设计

基于DS18B20的数字温度计设计

国家级中职骨干教师培训毕业设计(论文)题目:基于DS18B20的数字温度计设计培训专业:电子电器应用与维修学员姓名:倪培展参训时间:2007年第四期目录中文摘要〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 关键词〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1实现功能说明〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2设计思路分析〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2.1关于温度传感器DS18B20〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2.2单线技术〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 3硬件电路设计〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 3.1主要器件〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 3.2电路原理图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃7 4软件设计〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃8 4.1DS18B20的单线协议和命令〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃8 4.2程序流程〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃10 4.3程序说明〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃11 5总结〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃14 参考文献〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃14基于DS18B20的数字温度计设计摘要单片机已经在测控领域中获得了广泛的应用,它除了可以测量电信号以外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度监测、温度控制系统已经广泛应用于很多领域。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于DS18B20的数字温度计学院:专业:姓名:指导老师:摘要:随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字温度计。

关键词:单片机DS18B20 LCD1602 温度计1引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89S51,测温传感器使用DS18B20,用LCD1602显示温度。

2 设计方案2.1数字温度计设计方案论证2.1.1方案一由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

2.1.2 方案二进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。

2.2总体设计图3 程序流图:4 原件介绍DS1B2B20:DS18B20采用了独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

DS18B20的管脚排列1. GND为电源地;2. DQ为数字信号输入/输出端;3. VDD为外接供电电源输入端(在寄生电源接线方式时接地,DS18B20 内部结构主要由四部分组成:64 位光刻ROM 、温度传感器、非挥发的温度报警触发器TH 和TL 、配置寄存器。

光刻ROM 中的64 位序列号是出厂前被光刻好的,它可以看作是该DS18B20 的地址序列码。

64 位光刻ROM 的排列是:开始8 位(地址:28H )是产品类型标号,接着的48 位是该DS18B20 自身的序列号,并且每个DS18B20 的序列号都不相同,因此它可以看作是该DS18B20 的地址序列码;最后8 位则是前面56 位的循环冗余校验码(CRC=X8+X5+X4+1 )。

由于每一个DS18B20 的ROM 数据都各不相同,因此微控制器就可以通过单总线对多个DS18B20 进行寻址,从而实现一根总线上挂接多个DS18B20 的目的。

DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。

DS18B20的工作时序DS18B20的一线工作协议流程是:初始化→ROM操作指令→存储器操作指令→数据传输。

其工作时序包括:初始化时序,写时序,读时序初始化时序主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。

若无低电平出现一直都是高电平说明总线上无器件应答。

做为从器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现,如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存在脉冲,告诉主机本器件已做好准备。

若没有检测到就一直在检测等待。

LCD1602:1602LCD主要技术参数:显示容量:16×2个字符芯片工作电压:4.5—5.5V工作电流:2.0mA(5.0V)模块最佳工作电压:5.0V字符尺寸:2.95×4.35(W×H)mm引脚功能说明1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表10-13所示:编号符号引脚说明编号符号引脚说明1 VSS 电源地9 D2 数据2 VDD 电源正极10 D3 数据3 VL 液晶显示偏压11 D4 数据4 RS 数据/命令选择12 D5 数据5 R/W 读/写选择13 D6 数据6 E 使能信号14 D7 数据7 D0 数据15 BLA 背光源正极8 D1 数据16 BLK 背光源负极第1脚:VSS为地电源。

第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:D0~D7为8位双向数据线。

第15脚:背光源正极。

第16脚:背光源负极。

LCD1602的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置#include<reg51.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件unsigned char code digit[10]={"0123456789"}; //定义字符数组显示数字unsigned char code Str[]={"Test by DS18B20"}; //说明显示的是温度unsigned char code Error[]={"Error!Check!"}; //说明没有检测到DS18B20unsigned char code Temp[]={"Temp:"}; //说明显示的是温度unsigned char code Cent[]={"Cent"}; //温度单位/****************************************************************************** 以下是对液晶模块的操作程序******************************************************************************* sbit RS=P2^0; //寄存器选择位,将RS位定义为P2.0引脚sbit RW=P2^1; //读写选择位,将RW位定义为P2.1引脚sbit E=P2^2; //使能信号位,将E位定义为P2.2引脚sbit BF=P0^7; //忙碌标志位,,将BF位定义为P0.7引脚/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}/*****************************************************函数功能:延时若干毫秒入口参数:n***************************************************/void delaynms(unsigned char n){unsigned char i;for(i=0;i<n;i++)delay1ms();}/*****************************************************函数功能:判断液晶模块的忙碌状态返回值:result。

result=1,忙碌;result=0,不忙***************************************************/bit BusyTest(void){bit result;RS=0; //根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1; //E=1,才允许读写_nop_(); //空操作_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间result=BF; //将忙碌标志电平赋给resultE=0; //将E恢复低电平return result;}/*****************************************************函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate***************************************************/void WriteInstruction (unsigned char dictate){while(BusyTest()==1); //如果忙就等待RS=0; //根据规定,RS和R/W同时为低电平时,可以写入指令RW=0;E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,// 就是让E从0到1发生正跳变,所以应先置"0"_nop_();_nop_(); //空操作两个机器周期,给硬件反应时间P0=dictate; //将数据送入P0口,即写入指令或地址_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:指定字符显示的实际地址入口参数:x***************************************************/void WriteAddress(unsigned char x){WriteInstruction(x|0x80); //显示位置的确定方法规定为"80H+地址码x"}/*****************************************************函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)***************************************************/void WriteData(unsigned char y){while(BusyTest()==1);RS=1; //RS为高电平,RW为低电平时,可以写入数据RW=0;E=0; //E置低电平(根据表8-6,写指令时,E为高脉冲,// 就是让E从0到1发生正跳变,所以应先置"0"P0=y; //将数据送入P0口,即将数据写入液晶模块_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=1; //E置高电平_nop_();_nop_();_nop_();_nop_(); //空操作四个机器周期,给硬件反应时间E=0; //当E由高电平跳变成低电平时,液晶模块开始执行命令}/*****************************************************函数功能:对LCD的显示模式进行初始化设置***************************************************/void LcdInitiate(void){delaynms(15); //延时15ms,首次写指令时应给LCD一段较长的反应时间WriteInstruction(0x38); //显示模式设置:16×2显示,5×7点阵,8位数据接口delaynms(5); //延时5ms,给硬件一点反应时间WriteInstruction(0x38);delaynms(5); //延时5ms,给硬件一点反应时间WriteInstruction(0x38); //连续三次,确保初始化成功delaynms(5); //延时5ms,给硬件一点反应时间WriteInstruction(0x0c); //显示模式设置:显示开,无光标,光标不闪烁delaynms(5); //延时5ms,给硬件一点反应时间WriteInstruction(0x06); //显示模式设置:光标右移,字符不移delaynms(5); //延时5ms,给硬件一点反应时间WriteInstruction(0x01); //清屏幕指令,将以前的显示内容清除delaynms(5); //延时5ms,给硬件一点反应时间}/************************************************************************以下是DS18B20的操作程序************************************************************************/sbit DQ=P3^3;unsigned char time; //设置全局变量,专门用于严格延时/*****************************************************函数功能:将DS18B20传感器初始化,读取应答信号出口参数:flag***************************************************/bit Init_DS18B20(void){bit flag; //储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在DQ = 1; //先将数据线拉高for(time=0;time<2;time++) //略微延时约6微秒;DQ = 0; //再将数据线从高拉低,要求保持480~960usfor(time=0;time<200;time++) //略微延时约600微秒; //以向DS18B20发出一持续480~960us的低电平复位脉冲DQ = 1; //释放数据线(将数据线拉高)for(time=0;time<10;time++); //延时约30us(释放总线后需等待15~60us让DS18B20输出存在脉冲)flag=DQ; //让单片机检测是否输出了存在脉冲(DQ=0表示存在)for(time=0;time<200;time++) //延时足够长时间,等待存在脉冲输出完毕;return (flag); //返回检测成功标志}/*****************************************************函数功能:从DS18B20读取一个字节数据出口参数:dat***************************************************/unsigned char ReadOneChar(void){unsigned char i=0;unsigned char dat; //储存读出的一个字节数据for (i=0;i<8;i++){DQ =1; // 先将数据线拉高_nop_(); //等待一个机器周期DQ = 0; //单片机从DS18B20读书据时,将数据线从高拉低即启动读时序dat>>=1;_nop_(); //等待一个机器周期DQ = 1; //将数据线"人为"拉高,为单片机检测DS18B20的输出电平作准备for(time=0;time<2;time++); //延时约6us,使主机在15us内采样if(DQ==1)dat|=0x80; //如果读到的数据是1,则将1存入datelsedat|=0x00;//如果读到的数据是0,则将0存入dat//将单片机检测到的电平信号DQ存入r[i]for(time=0;time<8;time++); //延时3us,两个读时序之间必须有大于1us的恢复期}return(dat); //返回读出的十进制数据}/*****************************************************函数功能:向DS18B20写入一个字节数据入口参数:dat***************************************************/WriteOneChar(unsigned char dat){unsigned char i=0;for (i=0; i<8; i++){DQ =1; // 先将数据线拉高_nop_(); //等待一个机器周期DQ=0; //将数据线从高拉低时即启动写时序DQ=dat&0x01; //利用与运算取出要写的某位二进制数据,//并将其送到数据线上等待DS18B20采样for(time=0;time<10;time++);//延时约30us,DS18B20在拉低后的约15~60us期间从数据线上采样DQ=1; //释放数据线for(time=0;time<1;time++);//延时3us,两个写时序间至少需要1us的恢复期dat>>=1; //将dat中的各二进制位数据右移1位}for(time=0;time<4;time++); //稍作延时,给硬件一点反应时间}/****************************************************************************** 以下是与温度有关的显示设置******************************************************************************/ /*****************************************************函数功能:显示没有检测到DS18B20***************************************************/void display_error(void){unsigned char i;WriteAddress(0x00); //写显示地址,将在第1行第1列开始显示i = 0; //从第一个字符开始显示while(Error[i] != '\0') //只要没有写到结束标志,就继续写{WriteData(Error[i]); //将字符常量写入LCDi++; //指向下一个字符delaynms(100); //延时100ms较长时间,以看清关于显示的说明}while(1) //进入死循环,等待查明原因;}/*****************************************************函数功能:显示说明信息***************************************************/void display_explain(void){unsigned char i;WriteAddress(0x00); //写显示地址,将在第1行第1列开始显示i = 0; //从第一个字符开始显示while(Str[i] != '\0') //只要没有写到结束标志,就继续写{WriteData(Str[i]); //将字符常量写入LCDi++; //指向下一个字符delaynms(100); //延时100ms较长时间,以看清关于显示的说明}}/*****************************************************函数功能:显示温度符号***************************************************/void display_symbol(void){unsigned char i;WriteAddress(0x40); //写显示地址,将在第2行第1列开始显示i = 0; //从第一个字符开始显示while(Temp[i] != '\0') //只要没有写到结束标志,就继续写{WriteData(Temp[i]); //将字符常量写入LCDi++; //指向下一个字符delaynms(50); //延时1ms给硬件一点反应时间}}/*****************************************************函数功能:显示温度的小数点***************************************************/void display_dot(void){WriteAddress(0x49); //写显示地址,将在第2行第10列开始显示WriteData('.'); //将小数点的字符常量写入LCDdelaynms(50); //延时1ms给硬件一点反应时间}/*****************************************************函数功能:显示温度的单位(Cent)***************************************************/void display_cent(void){unsigned char i;WriteAddress(0x4c); //写显示地址,将在第2行第13列开始显示i = 0; //从第一个字符开始显示while(Cent[i] != '\0') //只要没有写到结束标志,就继续写{WriteData(Cent[i]); //将字符常量写入LCDi++; //指向下一个字符delaynms(50); //延时1ms给硬件一点反应时间}}/*****************************************************函数功能:显示温度的整数部分入口参数:x***************************************************/void display_temp1(unsigned char x){unsigned char j,k,l; //j,k,l分别储存温度的百位、十位和个位j=x/100; //取百位k=(x%100)/10; //取十位l=x%10; //取个位WriteAddress(0x46); //写显示地址,将在第2行第7列开始显示WriteData(digit[j]); //将百位数字的字符常量写入LCDWriteData(digit[k]); //将十位数字的字符常量写入LCDWriteData(digit[l]); //将个位数字的字符常量写入LCDdelaynms(50); //延时1ms给硬件一点反应时间}/*****************************************************函数功能:显示温度的小数数部分入口参数:x***************************************************/void display_temp2(unsigned char x){WriteAddress(0x4a); //写显示地址,将在第2行第11列开始显示WriteData(digit[x]); //将小数部分的第一位数字字符常量写入LCDdelaynms(50); //延时1ms给硬件一点反应时间}/*****************************************************函数功能:做好读温度的准备***************************************************/void ReadyReadTemp(void){Init_DS18B20(); //将DS18B20初始化WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换for(time=0;time<100;time++); //温度转换需要一点时间Init_DS18B20(); //将DS18B20初始化WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器,前两个分别是温度的低位和高位}/*****************************************************函数功能:主函数***************************************************/void main(void){unsigned char TL; //储存暂存器的温度低位unsigned char TH; //储存暂存器的温度高位unsigned char TN; //储存温度的整数部分unsigned char TD; //储存温度的小数部分LcdInitiate(); //将液晶初始化delaynms(5); //延时5ms给硬件一点反应时间if(Init_DS18B20()==1)display_error();display_explain();display_symbol(); //显示温度说明display_dot(); //显示温度的小数点display_cent(); //显示温度的单位while(1) //不断检测并显示温度{ReadyReadTemp(); //读温度准备TL=ReadOneChar(); //先读的是温度值低位TH=ReadOneChar(); //接着读的是温度值高位TN=TH*16+TL/16; //实际温度值=(TH*256+TL)/16,即:TH*16+TL/16//这样得出的是温度的整数部分,小数部分被丢弃了TD=(TL%16)*10/16; //计算温度的小数部分,将余数乘以10再除以16取整,//这样得到的是温度小数部分的第一位数字(保留1位小数)display_temp1(TN); //显示温度的整数部分display_temp2(TD); //显示温度的小数部分delaynms(10);}}5 PROTUES仿真5.1.1功能特点Proteus软件具有其它EDA工具软件(例:multisim)的功能。

相关文档
最新文档