基于51单片机与DS18B20的数字温度计设计

合集下载

基于AT89C51DS18B20的数字温度计设计

基于AT89C51DS18B20的数字温度计设计

基于AT89C51DS18B20的数字温度计设计一、本文概述Overview of this article本文旨在探讨基于AT89C51微控制器和DS18B20数字温度传感器的数字温度计设计。

我们将详细介绍如何利用这两种核心组件,结合适当的硬件电路设计和软件编程,实现一个能够准确测量和显示温度的数字温度计。

This article aims to explore the design of a digital thermometer based on AT89C51 microcontroller and DS18B20 digital temperature sensor. We will provide a detailed introduction on how to utilize these two core components, combined with appropriate hardware circuit design and software programming, to achieve a digital thermometer that can accurately measure and display temperature.我们将对AT89C51微控制器和DS18B20数字温度传感器进行简要介绍,包括它们的工作原理、主要特性和适用场景。

然后,我们将详细阐述硬件电路的设计,包括微控制器与温度传感器的连接方式、电源电路、显示电路等。

We will provide a brief introduction to the AT89C51 microcontroller and DS18B20 digital temperature sensor, including their working principles, main characteristics, and applicable scenarios. Then, we will elaborate on the hardware circuit design, including the connection method between the microcontroller and temperature sensor, power circuit, display circuit, etc.在软件编程方面,我们将介绍如何使用C语言对AT89C51微控制器进行编程,实现温度数据的读取、处理和显示。

基于51单片机和DS18B20温度传感器的火灾自动报警系统设计

基于51单片机和DS18B20温度传感器的火灾自动报警系统设计
毕 业 论 文
论文题目:
本系统是一个基于51单片机和DS18B20温度传感器的的火灾自动报警系统。先设定一个报警温度值,然后由DS18B20温度传感器对温度进行实时超过了报警温度值,则驱动蜂鸣器报警。本系统硬件电路简单,程序复杂度不高,可靠性较强,且成本低,稳定度较高,因此具有一定的实用性价值。
1.2
本文中所采用的方案是选用美国DALLAS公司推出的高精度温度传感器DS18B20、STC89C52单片机以及LCD1602液晶显示器等元件来设计火灾自动报警器。可实现温度的实时显示以及温度达到限定值后自动报警功能。该系统性能稳定、硬件电路简单、价格较低,故有一定的应用前景。
为了完成本文所做的工作为:
Key words: 51 SCM、temperature sensor、auto fire alarming system

1.
火,给人类带来了文明的进步、光明以及温暖,但与此同时,当火失去控制时,又会给人类带来巨大灾难。据统计,我国70年代火灾平均损失不到2.5亿元,80年代火灾平均损失接近3.2亿元。进入90年代,特别是1993年以来,火灾造成的直接损失上升到年均十几亿元,年均死亡2000多人。
本系统是一个基于51单片机和DS18B20温度传感器的的火灾自动报警系统。先设定一个报警温度值,然后由DS18B20温度传感器对温度进行实时的监控,并将温度值显示在LCD1602液晶显示屏上,若温度值超过了报警温度值,则驱动蜂鸣器报警。本系统硬件电路简单,程序复杂度不高,可靠性较强,且成本低,稳定度较高,因此具有一定的实用性价值。
关键词:51单片机、温度传感器、火灾自动报警
Abstract
Nowadays , with the popularization of the electronic products , varieties of electronic products have been bought by many families . Those products can provide people with great convenience , but also fire hazards .

基于51单片机的温度监测系统(DS18B20)

基于51单片机的温度监测系统(DS18B20)
为产生写0时隙,在拉低总线后主机必须继续拉低总线以满足时隙持续时间 的要求(至少60μs)。在主机产生写时隙后,DS18B20会在其后的15到60us的一 个时间窗口内采样单总线。在采样的时间窗口内,如果总线为低电平,主机会 向DS18B20写入0。
DS18B20读时序
所有的读时隙都由拉低总线,持续至少1us后再释放总线(由于上拉电阻的作用,总线恢复为 高
配置寄存器
8 位 CRC 生成器
DS18B20的时序
DS18B20复位时序
DS18B20的所有通信都由由复位脉冲组成的初始化序列开始。该初始化序列由主 机发出,后跟由DS18B20发出的存在脉冲(presence pulse)。在初始化步骤中,总线 上的主机通过拉低单总线至少480μs来产生复位脉冲。然后总线主机释放总线并进入接收 模式。当总线释放后,5kΩ的上拉电阻把单总线上的电平拉回高电平。当DS18B20检测 到上升沿后等待15到60us,发出存在脉冲,拉低总线60-240us至此,初始化和存在时序 完毕。时序图如下:
1.主控制器电路和测温
电路的设计
主控制器电路由AT89S52 及外围时钟和复位电路构成, 测温电路由DS18B20、报警 电路组成。AT89C52是此硬 件电路设计的核心,通过 AT89S52的管脚P2.7与 DS18B20相连,控制温度的 读出和显示。硬件电路的功 能都是与软件编程相结合而 实现的。具体电路原理图如 右图2所示。
送1,以拉低总线的方式表示发送0.当发送0的时候,DS18B20在读时隙的末期将会释放总线,总线
将会被上拉电阻拉回高电平(也是总线空闲的状态)。DS18B20输出的数据在下降沿(下降沿产 生读时隙)产生后15us后有效。因此,主机释放总线和采样总线等动作要在15μs内完成。

基于51单片机的测温数字温度计的最小系统

基于51单片机的测温数字温度计的最小系统

●第一章设计目的——————————————3 ●第二章设计内容————————————— 3 ●第三章分析———————————————7 ●第四章示例程序——————————————7 ●第五章总结———————————————13一、设计目的:利用51单片机和ds18b20等元件设计一个实时的测量温度和报警的小系统。

系统可以通过数码管显示实时的温度值,显示的温度的精度是0.01℃。

然后,还可以利用按键进行最高温度值和最低温度值的设定,当温度超过设定的最高温度值的时候,蜂鸣器会响,并且会有一个led灯亮起;当温度值低于设定的最低温度值的时候,蜂鸣器会响,但是led灯不会亮。

二、设计内容:温度计电路设计总体设计方框图如图1所示,控制器采用单片机8051,温度传感器采用DS18B20,显示部分是一个四位一体的数码管,设置电路部分是3个按键和3个用于指示的led灯,报警电路部分是一个led灯和一个蜂鸣器。

图11、 温度传感器DS18B20与8051单片机连接非常简单,只需将DS18B20信号线与单片机一位I/O 线相连,且一位I/O 线可连接多个DS18B20,以实现单点或多点温度测量。

温度计仿真电路部分如图2所示。

图2单片机复位 时钟震荡主 控制 器数码管显示温度传感器报警电路设置电路Ds18b20需要严格的协议以确保数据的完整性。

协议包括集中单线信号类型:复位脉冲.存在脉冲.写0.写1.读0和读1。

所有这些信号,处存在脉冲外,都是由总线控制器发出的。

和ds18b20间的任何通讯都是需要以初始化序列开始,初始化序列见图3,一个复位脉冲跟着一个存在脉冲表明ds18b20已经准备好发送和接收数据。

图3Ds18b20的读写时序图如图4所示,Ds18b20的几个常用的功能命令如下: CCH 跳过ROM指令44H 温度转换指令BEH 读SRAM4EH 写SRAM三、分析:1.程序一开始测得温度并储存,然后对按键1进行判断,若按键1未按下则直接跳到第四步;2.若按键1按下,则开始设置最高温度,然后再判断按键2(3)是否按下,若按下,则对应设置十(个)位。

基于51单片机及DS18B20温度传感器的数字温度计程序及详细注释

基于51单片机及DS18B20温度传感器的数字温度计程序及详细注释

基于51单片机及DS18B20温度传感器的数字温度计程序(详细注释)电路实物图如下图所示:C语言程序如下所示:/********************************************************************zicreate----------------------------- Copyright (C) --------------------------* 程序名; 基于DS18B20的测温系统* 功能:实时测量温度,超过上下限报警,报警温度可手动调整。

K1是用来* 进入上下限调节模式的,当按一下K1进入上限调节模式,再按一下进入下限* 调节模式。

在正常模式下,按一下K2进入查看上限温度模式,显示1s左右自动* 退出;按一下K3进入查看下限温度模式,显示1s左右自动退出;按一下K4消除* 按键音,再按一下启动按键音。

在调节上下限温度模式下,K2是实现加1功能,* K1是实现减1功能,K3是用来设定上下限温度正负的。

* 编程者:Jason* 编程时间:2009/10/2*********************************************************************/#include<AT89X52.h> //将AT89X52.h头文件包含到主程序#include<intrins.h> //将intrins.h头文件包含到主程序(调用其中的_nop_()空操作函数延时)#define uint unsigned int //变量类型宏定义,用uint表示无符号整形(16位)#define uchar unsigned char //变量类型宏定义,用uchar表示无符号字符型(8位)uchar max=0x00,min=0x00; //max是上限报警温度,min是下限报警温度bit s=0; //s是调整上下限温度时温度闪烁的标志位,s=0不显示200ms,s=1显示1s左右bit s1=0; //s1标志位用于上下限查看时的显示void display1(uint z); //声明display1()函数#include"ds18b20.h" //将ds18b20.h头文件包含到主程序#include"keyscan.h" //将keyscan.h头文件包含到主程序#include"display.h" //将display.h头文件包含到主程序/***********************主函数************************/void main(){beer=1; //关闭蜂鸣器led=1; //关闭LED灯timer1_init(0); //初始化定时器1(未启动定时器1)get_temperature(1); //首次启动DS18B20获取温度(DS18B20上点后自动将EEPROM中的上下限温度复制到TH和TL寄存器)while(1) //主循环{keyscan(); //按键扫面函数get_temperature(0); //获取温度函数keyscan(); //按键扫面函数display(temp,temp_d*0.625);//显示函数alarm(); //报警函数keyscan(); //按键扫面函数}}/********************************************************************* 程序名; __ds18b20_h__* 功能:DS18B20的c51编程头文件* 编程者:ZPZ* 编程时间:2009/10/2* 说明:用到的全局变量是:无符号字符型变量temp(测得的温度整数部分),temp_d* (测得的温度小数部分),标志位f(测量温度的标志位‘0’表示“正温度”‘1’表* 示“负温度”),标志位f_max(上限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位f_min(下限温度的标志位‘0’表示“正温度”、‘1’表* 示“负温度”),标志位w(报警标志位‘1’启动报警‘0’关闭报警)。

基于51单片机的数字温度传感器DS18B20的设计制作

基于51单片机的数字温度传感器DS18B20的设计制作

基于51单片机的数字温度传感器DS18B20的设计制作专业:应用电子技术班级:08应电1班制作人:陈艳黄凤蒋斌指导老师:邝永明2009年12月3日引言随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。

传统的温度检测以热敏电阻为温度敏感元件。

热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。

与传统的温度计相比,这里设计的数字温度计具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。

选用AT89C51型单片机作为主控制器件,DS18B20作为测温传感器通过4位共阳极LED数码管串口传送数据,实现温度显示。

通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.1℃。

该器件可直接向单片机传输数字信号,便于单片机处理及控制。

另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。

DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。

本文结合实际使用经验,介绍了DS18B20数字温度传感器在单片机下的硬件连接及软件编程,并给出了软件流程图。

芯片使用了ATMEL公司的AT89S52单片机和DALLAS公司的DS18B20数字温度传感器。

上位机部分使用了通用PC。

该系统可应用于仓库测温、楼宇空调控制和生产过程监控等领域。

第一章1.1系统背景在工、农业生产和日常生活中,对温度的测量及控制占据着极其重要地位。

首先让我们了解一下多点温度检测系统在各个方面的应用领域:消防电气的非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测,各类运输工具之组件的过热检测,保全与监视系统之应用,医疗与健诊的温度测试,化工、机械…等设备温度过热检测。

(完整版)基于51单片机与DS18B20的数字温度计设计定稿毕业论文

(完整版)基于51单片机与DS18B20的数字温度计设计定稿毕业论文

安徽农业大学课程设计报告基于单片机的DS18B20数字温度计设计学生姓名杜恒院系名称物理与电子工程学院专业名称电子信息工程班级2008 级 6 班学号指导教师汪文蝶完成时间2011年 5 月 20 日基于单片机的DS18B20数字温度计设计学生姓名:杜恒指导老师:汪文蝶内容摘要:随着现代信息化技术的飞速发展和传统工业改造的逐步实现,能独立工作的温度检测系统已广泛应用于各种不同的领域。

本文介绍了一个基于STC89C52单片机和数字温度传感器DS18B20的测温系统,并用LED数码管显示温度值,易于读数。

系统电路简单、操作简便,能任意设定报警温度并可查询最近的10个温度值,系统具有可靠性高、成本低、功耗小等优点。

关键词:单片机数字温度传感器温度计1 引言 (4)2 设计要求 (4)2.1 基本要求 (4)2.2 扩展功能 (4)3 总体方案设计 (4)3.1 方案论证 (4)3.1.1 方案一 (4)3.1.2 方案二 (5)3.2 总体设计框图 (5)4 硬件设计 (5)4.1 单片机系统 (5)4.2 数字温度传感器模块 (6)4.2.1 DS18B20性能 (6)4.2.2 DS18B20外形及引脚说明 (7)4.2.3 DS18B20接线原理图 (7)4.2.4 DS18B20时序图 (7)4.2.5 数据处理 (9)4.3 显示电路 (10)4.4 声光报警电路 (10)4.5 键盘输入电路 (11)5 软件设计 (11)5.1 主程序模块 (11)5.2 读温度值模块 (12)5.3 中断模块 (14)5.4 温度查询模块 (15)5.5 温度设定、报警模块 (16)5.6 数码管驱动模块 (18)6 源程序 (19)7 总结 (26)参考文献: (28)1 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。

基于51单片机的DS18B20温度检测设计报告

基于51单片机的DS18B20温度检测设计报告

课程名称:微机原理课程设计题目:温度检测课程设计摘要随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度检测仪。

本设计使用简便,功能丰富。

可以实现温度采集,温度报警,重设上下限温度值等功能。

在现代化的工业生产中,需要对周围环境的温度进行检测和控制。

本设计对温控报警问题展开思考,设计一个能根据需求设置低温到高温进行报警并通过数码管显示的系统。

该系统使用STC89C51单片机,同时运用单线数字温度传感器DS18B20,四位共阴数码管显示,按键控制等模块可实现温度的检测与设置。

课题经过实验验证达到设计要求,具有一定的使用价值和推广价值。

本作品使用四位共阴数码管显示,可以清晰地显示当前的报警温度,一定程度避免使用者使用时出错,安全可靠,可使用于各种食品储存室,植物养殖所等地方,实用性很高。

关键字:温度报警器STC89C51单片机数码管DS18B20目录一、课程设计目的和要求 (1)1.1 设计目的 (1)1.2 设计要求 (1)二、总体设计方案 (1)三、硬件设计 (2)3.1 DS18B20传感器 (2)3.2 STC89C51功能介绍 (6)3.3 时钟电路 (8)3.4 复位电路 (8)3.5 LED显示系统电路 (9)3.6 按键控制电路 (11)3.7 蜂鸣器电路 (11)3.8 总体电路设计 (12)四、软件设计 (14)4.1 keil软件 (14)4.2 系统主程序设计 (14)4.3 系统子程序设计 (15)五、仿真与实现 (18)5.1 PROTEUS仿真软件 (18)5.2 STC-ISP程序烧录软件 (19)5.3 使用说明 (20)六、总结 (21)一、课程设计目的和要求1.1 设计目的熟悉典型51单片机,加深对51单片机课程的全面认识和掌握,对51单片机及其接口的应用作进一步的了解,掌握基于51单片机的系统设计的一般流程、方法和技巧,为我们解决工程实际问题打下坚实的基础。

基于51单片机的DS18B20数字温度计的设计_电子时钟课程设计

基于51单片机的DS18B20数字温度计的设计_电子时钟课程设计

单片机应用课程设计(设计课题: 电子时钟及温度控制器院(系、部): 机械工程系专业: 机械制造及其自动化专业一、单片机电子时钟的设计目录第一章前言 (3)第二章方案论证与比较 (3)2.1数字时钟方案 (3)2.2数码管显示方案 (4)第三章系统设计 (5)3.1总体设计 (5)3.1.1系统说明 (5)3.1.2系统框图..................................................... 错误!未定义书签。

第四章原理图与仿真图. (6)4.1 Protel原理图 (6)4.2 Proteus 仿真图 (7)4.3流程图 (8)4.4源程序清单 (10)4.5设计总结 (18)第五章实验心得体会 (19)第六章参考文献 (20)第一章前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,日期,调整时间,日期,从而到达学习、设计、开发软、硬件的能力。

时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。

在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。

基于51单片机和DS18B20的数字温度计设计说明

基于51单片机和DS18B20的数字温度计设计说明

基于51单片机和DS18B20的数字温度计设计说明
1.硬件设计:
-51单片机:选择合适的型号,如STC89C52或AT89C52等。

-DS18B20温度传感器:该传感器是一种数字温度传感器,具有单总线接口和高精度测量能力。

-接口电路:将51单片机和DS18B20传感器连接起来,要注意电平转换和信号线的阻抗匹配。

2.软件设计:
-初始化:在主函数中,首先对单片机进行初始化设置,包括时钟设置、串口配置等。

-DS18B20通信协议:使用单总线协议与DS18B20传感器进行通信,包括发送复位信号、读写数据等操作。

-温度测量:通过向DS18B20发送读取温度的命令,从传感器中读取温度值并保存。

-数据传输:将温度值转换为可显示的格式,如摄氏度或华氏度,并通过串口输出或LED显示。

3.程序流程:
-初始化单片机,设置时钟和串口参数。

-进入主循环,循环执行以下操作:
-发送复位信号,启动温度转换。

-等待转换完成,发送读取温度命令。

-读取温度值,并进行数据处理转换。

-输出温度值。

4.其他功能:
-可以添加LCD显示模块,将温度值显示在液晶屏上。

-可以添加按键输入模块,通过按键切换温度单位或进行其他操作。

需要注意的是,该设计只是一个简单的示例,实际应用中可能需要根据具体需求进行扩展和修改。

同时,在程序设计过程中,也要注意低功耗和数据稳定性等方面的考虑。

基于C51与DS18B20的温度计(带时钟)设计

基于C51与DS18B20的温度计(带时钟)设计

目录1、概述 (1)1.1设计背景 (1)1.2设计思路 (1)2、系统硬件电路设计 (2)2.1、主控制电路 (2)2.2、DS18B20温度传感器的选择 (5)2.3、显示电路及原理 (9)2.4、复位电路 (12)2.5时钟电路 (13)2.6主电路原理图: (14)3、系统软件设计 (15)4、仿真 (19)4.1 PROTEUS介绍 (19)4.2、Proteus软件具有其它EDA工具软件的功能。

(19)4.3、革命性的特点: (20)5、综合调试 (20)5.1焊接 (20)5.2调试 (21)5.2.3 实物图 (22)6、感言 (23)基于C51与DS18B20的温度计(带时钟)设计1、总体设计概述随着信息技术的飞速发展和传统工业改造的逐步实现,人们在生产过程中会越来越关注精密实用的仪器,能够独立工作的温度检测和显示系统应用于诸多领域。

其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活等提供更好更方便快捷的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。

而热电偶和热电阻测出的一般都是电压,需要利用A/D转换技术转换成相应的温度,硬件电路复杂,软件调试复杂,制作成本高。

我们要做的是一种以C51单片机为主控器件,以DS18B20为温度传感器的数字温度计。

本数字温度计的设计采用美国DALLAS公司推出的一种改进型的智能温度传感器DS18B20作为检测元件。

其温度值可以直接被读出来,通过单片机控制温度的读写和显示。

DS18B20与单片机采用3线制连接,减少了外部的硬件电路,具有低成本和易使用的特点。

1.1设计背景由于单片机体积小、功能全、价格低、编程容易等优点,在工业领域的应用越来越广泛。

数字温度计的实现,主要基于芯片DS18B20和1602LCD的显示功能,把现场测得的温度显示出来。

基于51单片机的DS18B20温度传感器的应用毕业设计(论文) 精品

基于51单片机的DS18B20温度传感器的应用毕业设计(论文) 精品

毕业设计(论文)题目:基于51单片机的DS18B20温度传感器的应用题目类型:工程设计软件开发桂林电子科技大学毕业设计(论文)报告用纸 1摘要温度的测量和控制对人类日常生活、工业生产、气象预报、物资仓储等都起着极其重要的作用。

在许多场合,及时准确获得目标的温度是十分重要的,近年来,温度测控领域发展迅速,并且随着数字技术的发展,温度的测控芯片也相应的登上历史的舞台,能够在工业、农业等各领域中广泛使用。

温控系统通过传感器检测温度将温度数据输入到处理器处理,可以在数码管或LCD等显示出来。

然后由控制器可以控制加热或者制冷,从而达到控温的目的。

本毕业设计就是利用STC89C52单片机和DS18B20温度传感器对目标温度进行检测,使用了单位数码管对检测到温度的显示,通过串口和上位机进行通信,利用VB软件显示温度数据,从而对各空间温度进行远程实时监控,使用LED灯闪烁进行模拟加热和制冷。

本文对各部分的硬件原理图进行了分析,还对各功能程序进行概述。

通过51单片机控制DS18B20检测温度,具有硬件电路简单,编程容易,测温准确,稳定等优点。

而且可以多点检测(本毕设只是单点测温),几个传感器连接也很简单。

关键词:单片机;温控;传感器AbstractTemperature measurement and control of human daily life, industrial production, weather forecast, material storage and so on all play a very important role. On many occasions, timely and accurate to obtain the temperature of the target is very important, in recent years, the temperature measurement and control field is developing rapidly, and with the development of digital technology, the corresponding temperature measurement and control chip mounted on the stage of history, can be widely used in industry, agriculture and so on various areas. Temperature control system through the temperature sensor to detect temperature data input to processing, can be in the digital tube or LED display, etc. And then by the controller to control the heating or cooling, so as to achieve the purpose of temperature control.This graduation design is the use of STC89C52 MCU and DS18B20 temperature sensor to test the room temperature, for testing temperature using digital tube display, through a serial port and PC communication, using VB software display temperature data, thus to remote real-time monitoring of the room temperature, use LED lights to simulate the heating and cooling. By 51 single chip microcomputer control temperature DS18B20 detection, it has a simple hardware circuit, programming easily, temperature measurement accuracy, stability, etc. And can be more testing (this project is only a single point temperature measurement), several sensor connection is also very simple.Keywords: MCU;temperature control;sensor目录引言 (1)1 绪论 (2)1.1 单片微机的发展 (2)1.2 温度检测的意义及发展形势 (2)1.3温控系统设计的核心 (2)2 单片机的简述 (3)2.1单片机的特点及引脚介绍 (3)2.2单片机的电平特性 (5)2.3C51复位电路 (6)2.4时钟电路 (6)3 温控系统的硬件设计 (7)3.1 温度检测模块 (7)3.1.1 温度传感器的概述 (7)3.1.2DS18B20的工作原理及工作时序图 (9)3.2 显示模块 (12)3.3 温超报警模块 (14)3.4 串口通信模块 (15)4 软件设计 (17)4.1 系统整体设计 (17)4.2 温度获取并转换 (19)4.3 温度控制 (20)5 单片机与上位机通信 (21)总结 (23)谢辞 (24)参考文献 (25)附录1电路原理图 (26)附录2 完整C程序代码 (28)附录3 模块调试代码 (34)桂林电子科技大学毕业设计(论文)报告用纸第1页共34 页引言上世纪90年代以来,单片机就进入了一个高速发展的阶段,大部分半导体厂商都注重新型单片机的研制、生产和推广。

基于51单片机的数字温度计设计

基于51单片机的数字温度计设计

基于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单片机和DS18B20的数字温度计设计说明

基于51单片机和DS18B20的数字温度计设计说明

基于51单片机和DS18B20的数字温度计设计说明题目:基于89C51和DS18B20的数字温度计设计一、设计要求数字式温度计要求测温范围为-55~125°C,精度误差在0.1°C以内,LED数码管直读显示。

二、方案论证根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示、报警等功能。

选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

该系统的总体设计思路如下:温度传感器DS18B20把所测得的温度发送到AT89C51单片机上,经过51单片机处理,将把温度在显示电路上显示,本系统显示器用4位共阳LED数码管以动态扫描法实现。

检测范围-55摄氏度到125摄氏度。

按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。

数字温度计总体电路结构框图如图1所示。

图1 数字温度计总体电路结构框图三、系统硬件电路的设计温度计电路设计原理图如图2所示,控制器使用单片机AT89C51,温度传感器使用DS18B20,用4位共阳LED数码管实现温度显示。

图2 数字温度计设计电路原理图1、主控制器AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

2、显示电路显示电路采用4位共阳LED数码管,从P0口输出段码,列扫描用P3.0~P3.3口来实现,列驱动用8550三极管。

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

基于51单片机的DS18B20温度显示

基于51单片机的DS18B20温度显示

基于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数字温度计的设计_课程设计

基于51单片机的DS18B20数字温度计的设计_课程设计

单片机课程设计基于51单片机的DS18B20数字温度计的设计目录1 前言 (1)2 设计任务及要求 (2)2.1 设计任务 (2)2.2 设计要求 (2)3 课程设计方案及器材选用分析 (3)3.1 设计总体方案 (3)3.1.1 方案论证 (3)3.1.2 方案二的总体设计框图 (4)3.2器材选用分析 (4)3.2.1 DS18B20温度传感器 (4)3.2.2 AT89S52单片机介绍 (12)3.3 软件流程图 (15)3.3.1 主程序 (15)3.3.2 读温度子程序 (15)3.3.3 温度转换命令子程序 (16)3.3.4 计算温度子程序 (16)4 硬件电路的设计 (1)4.1 Protel99 SE软件介绍 (1)4.1.1 Protel99 SE软件 (1)4.1.2 主控制电路图 (2)4.2 Proteus 进行仿真 (4)4.2.1 Proteus[6]简介 (4)4.2.2 proteus仿真图 (5)5 调试性能及分析 (6)课程设计心得 (9)参考文献 (10)附录:DS18B20显示程序 (10)1 前言目前,单片机已经在测控领域中获得了广泛的应用,它除了可以测量电信以外,还可以用于温度、湿度等非电信号的测量,能独立工作的单片机温度检测、温度控制系统已经广泛应用很多领域。

单片机是一种特殊的计算机,它是在一块半导体的芯片上集成了CPU,存储器,RAM,ROM,及输入与输出接口电路,这种芯片称为:单片机。

由于单片机的集成度高,功能强,通用性好,特别是它具有体积小,重量轻,能耗低,价格便宜,可靠性高,抗干扰能力强和使用方便的优点,使它迅速的得到了推广应用,目前已成为测量控制系统中的优选机种和新电子产品中的关键部件。

单片机已不仅仅局限于小系统的概念,现已广泛应用于家用电器,机电产品,办公自动化用品,机器人,儿童玩具,航天器等领域。

本次课程设计,就是用单片机实现温度控制,传统的温度检测大多以热敏电阻为温度传感器,但热敏电阻的可靠性差,测量温度准确率低,而且必须经过专门的接口电路转换成数字信号才能由单片机进行处理。

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

四川师范大学课程设计报告基于单片机的DS18B20数字温度计设计学生姓名院系名称物理与电子工程学院专业名称电子信息工程班级学号指导教师完成时间基于单片机的DS18B20数字温度计设计学生姓名:指导老师:内容摘要:随着现代信息化技术的飞速发展和传统工业改造的逐步实现,能独立工作的温度检测系统已广泛应用于各种不同的领域。

本文介绍了一个基于STC89C52单片机和数字温度传感器DS18B20的测温系统,并用LED数码管显示温度值,易于读数。

系统电路简单、操作简便,能任意设定报警温度并可查询最近的10个温度值,系统具有可靠性高、成本低、功耗小等优点。

关键词:单片机数字温度传感器温度计目录1 引言 (4)2 设计要求 (4)2.1 基本要求 (4)2.2 扩展功能 (4)3 总体方案设计 (4)3.1 方案论证 (4)3.1.1 方案一 (4)3.1.2 方案二 (5)3.2 总体设计框图 (5)4 硬件设计 (5)4.1 单片机系统 (5)4.2 数字温度传感器模块 (6)4.2.1 DS18B20性能 (6)4.2.2 DS18B20外形及引脚说明 (7)4.2.3 DS18B20接线原理图 (7)4.2.4 DS18B20时序图 (7)4.2.5 数据处理 (9)4.3 显示电路 (10)4.4 声光报警电路 (10)4.5 键盘输入电路 (11)5 软件设计 (11)5.1 主程序模块 (11)5.2 读温度值模块 (12)5.3 中断模块 (14)5.4 温度查询模块 (15)5.5 温度设定、报警模块 (16)5.6 数码管驱动模块 (18)6 源程序 (19)7 总结 (26)参考文献: (28)1 引言随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,各种数字系统的应用也使人们的生活更加舒适。

数字化控制、智能控制为现代人的工作、生活、科研等方面带来方便。

其中数字温度计就是一个典型的例子。

数字温度计与传统的温度计相比,具有读数方便、测温范围广、测温精确、功能多样话等优点。

其主要用于对测温要求准确度比较高的场所,或科研实验室使用,该设计使用STC89C52单片机作控制器,数字温度传感器DS18B20测量温度,单片机接受传感器输出,经处理用LED数码管实现温度值显示。

2 设计要求2.1 基本要求实现实时温度显示,测温范围0~500C,误差50C以内。

2.2 扩展功能温度报警,能任意设定温度范围实现声光报警;每隔10分钟记录一次温度数据,至少能查询过去10个时刻的温度情况。

3 总体方案设计3.1 方案论证3.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。

这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。

3.1.2 方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。

另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。

以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。

3.2 总体设计框图本方案设计的系统由单片机系统、数字温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如下图1。

图1 系统总体方框图4 硬件设计4.1 单片机系统1.本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:●DS18B20数字温度传感器的初始化和读取温度值●LED数码管显示驱动与控制●按键识别和响应控制●温度设置和报警●温度值的存储和读取2.单片机系统电路原理图:图2 单片机系统原理图4.2 数字温度传感器模块4.2.1 DS18B20性能●独特的单线接口仅需一个端口引脚进行通信●简单的多点分布应用●无需外部器件●可通过数据线供电●零待机功耗●测温范围-55~+125℃,以0.5℃递增●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃●温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字●应用包括温度控制、工业系统、消费品、温度计和任何热感测系统●负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作4.2.2 DS18B20外形及引脚说明图3 DS18B20外形及引脚●GND:地●DQ:单线运用的数据输入/输出引脚●VD:可选的电源引脚4.2.3 DS18B20接线原理图单总线通常要求接一个约4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。

图4 DS18B20接线原理图4.2.4 DS18B20时序图主机使用时间隙来读写DS18B20的数据位和写命令字的位。

1.初始化时序如下图:图5 DS18B20初始化时序2.DS18B20读写时序:图6 DS18B20读写时序4.2.5 数据处理高速暂存存储器由9个字节组成,其分配如表5所示。

当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。

单片机可通过单线接口读到该数据,读取时低位在前,高位在后。

图7 字节分配下表为12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。

例如+125℃的数字输出为07D0H,实际温度=07D0H*0.0625=2000*0.0625=125℃。

例如-55℃的数字输出为FC90H,则应先将11位数据位取反加1得370H(符号位不变,也不作运算),实际温度=370H*0.0625=880*0.0625=55℃。

可见其中低四位为小数位。

图8 DS18B20温度数据表4.3 显示电路LED数码管显示采用动态扫描方式,能简化电路布线,节约单片机I/O端口。

段码和位码由单片机P0送出,分别用74HC673N锁存。

图9 数码管驱动显示电路4.4 声光报警电路当温度超过设定温度值时,实现声光报警,蜂鸣器鸣叫、8个发光二极管点亮。

蜂鸣器由单片机P2^3口控制,用三极管驱动,发光二极管接单片机P1口,由74HC673N锁存。

图10 声光报警电路4.5 键盘输入电路四个键分别连接单片机P3^4、P3^5、P3^6、P3^7构成独立式键盘,分别实现加、减、报警温度设定功能键和温度查询功能键。

图11 键盘输入电路5 软件设计5.1 主程序模块主程序需要调用3个子程序,分别为:●实时温度显示子程序:驱动数码管把实时温度值送出在LED数码管显示●查询记录温度值子程序:查询过去存储的温度值,最多可查询10个值●温度设定、报警子程序:设定报警温度值,当温度超过该值时产生报警,即驱动蜂鸣器鸣叫、8个发光二极管发光主程序流程图:开始定时器初始化、启动显示实时温度温度设定、报警查询记录温度值图12 主程序流程图5.2 读温度值模块读温度值模块需要调用4个子程序,分别为:●DS18B20初始化子程序:让单片机知道DS18B20在总线上且已准备好操作●DS18B20写字节子程序:对DS18B20发出命令●DS18B20读字节子程序:读取DS18B20存储器的数据●延时子程序:对DS18B20操作时的时序控制1.读温度值模块流程图:图13 读温度值子程序流程图2.DS18B20初始化子程序流程图:图14 DS18B20初始化子程序流程图3.DS18B20写字节和读字节子程序流程图:图15 DS18B20写字节子程序流程图图16 DS18B20读字节子程序流程图5.3 中断模块中断采用T0方式1,初始值定时为50ms。

中断模块需调用两个子程序:●读温度值子程序:定时读取温度值,实时更新温度值●记录温度值子程序:定时记录温度值,供查询使用把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。

中断模块流程图:图17中断模块流程图5.4 温度查询模块温度查询模块需要接受按键输入,进入查询界面后,按加减键分别查询上一个和下一个历史温度值,并驱动数码管显示需要查询的温度值。

温度查询模块流程图如下:图18 温度查询模块流程图5.5 温度设定、报警模块此模块跟温度查询模块类似,需要接受按键输入,进入模块界面后,按加减键分别上调和下调设定报警温度值,当实时温度值超过设定值时驱动蜂鸣器发声,并点亮8位发光二极管,实现声光报警。

温度设定、报警模块流程图如下:图19 温度设定、报警模块流程图5.6 数码管驱动模块本设计数码管通过锁存器接单片机P0口,采用动态扫描驱动7段LED数码管进行显示,需调用延时子程序以稳定显示。

模块流程图如下:图20 数码管驱动模块流程图6 源程序#include<reg52.h>#define uchar unsigned char#define uint unsigned int/*************************变量定义************************************/ sbit DQ=P2^2;//ds18b20 端口sbit beep=P2^3;//蜂鸣器使能端sbit dula=P2^6;//数码管段选使能sbit wela=P2^7;//数码管位选使能sbit add=P3^5;//加键sbit sub=P3^4;//减键sbit alarm=P3^6;//设定报警功能键sbit record=P3^7;//查询温度记录功能键uchar code tabled[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, //0~9的七段数码管段码0x40,0x63,0x39};//- c 的段码uchar code tablew[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f};//1~8个数码管的位选码uchar recordtable[10];//存储过去的十个温度值uchar temperature;//温度值uchar countsec,recordnum,count;//计数变量uint countmin;//计数变量uchar alanum=30;//报警温度值,初始值为30摄氏度uchar z=65;//消抖延时函数入口参数/**********************函数声明***************************************/ void delay1(uchar MS);//动态扫描延时子程序void delay(uchar i);//DS18B20工作延时子程序void Init_DS18B20();//DS18B20初始化子程序void WriteOneChar(unsigned char dat);//向DS18B20写一字节数据uchar ReadOneChar(void);//向DS18B20读一字节数据void GetTemperature();//由DS18B20产生温度值void Display(uchar wei,uchar duan);//数码管驱动子程序void Alarm();//温度报警void Showtemperature(uchar tt);//温度显示void Keeprecord();//记录温度值void Showrecord();//显示记录的温度值/*********************主函数*******************************************/ void main(){TMOD=0x01;//定时器初始化,定时器0方式1TH0=(65536-50000)/256;//50msTL0=(65536-50000)%256;EA=1;//开中断ET0=1;TR0=1;//启动定时器while(1){Showtemperature(temperature);//显示实时温度Alarm();//温度设定、报警Showrecord();//查询温度记录值}}/************************动态扫描延时函数********************************/ void delay1(uchar MS){int i,j;for(i=80;i>0;i--)for(j=MS;j>0;j--);}/************************DS18B20工作延时函数*****************************/ void delay(uchar i){while(i--);}/*************************DS18B20初始化函数******************************/ void Init_DS18B20(void){unsigned char x=0;DQ = 1; //DQ复位delay(8); //稍做延时DQ = 0; //单片机将DQ拉低delay(80); //精确延时大于480usDQ = 1; //拉高总线delay(10);x=DQ; //稍做延时后如果x=0则初始化成功x=1则初始化失败delay(5);while(!x){x=DQ;}}/*************************读一个字节**************************************/ uchar ReadOneChar(void){unsigned char i=0;unsigned char dat = 0;for (i=8;i>0;i--){DQ = 0; // 给脉冲信号dat>>=1;DQ = 1; // 给脉冲信号if(DQ)dat|=0x80;delay(5);}return(dat);}/**************************写一个字节*************************************/ void WriteOneChar(unsigned char dat){unsigned char i=0;for (i=8; i>0; i--){DQ = 0;DQ = dat&0x01;delay(5);DQ = 1;dat>>=1;}delay(5);}/*************************产生温度值***************************************/ void GetTemperature(){uchar tempL,tempH;//分别为数据低位和高位uint temp;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序列号的操作WriteOneChar(0x44); // 启动温度转换delay(200);Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度tempL=ReadOneChar();//读出温度低位LSBtempH=ReadOneChar();//读出温度高位MSBtemp=tempH*16+tempL/16;//tempL右移四位去掉小数位temperature=temp&0xff;//测量0~50度,只取temp低八位}/**********************数码管驱动函数*************************************/void Display(uchar wei,uchar duan){dula=0;P0=0xff;wela=1;P0=tablew[wei];wela=0;P0=0;dula=1;P0=tabled[duan];dula=0;delay1(1);}/**********************温度显示函数**************************************/ void Showtemperature(uchar tt){Display(2,tt/10);//显示温度数值Display(3,tt%10);Display(4,11);//显示摄氏度单位Display(5,12);}/********************温度值设定、报警函数**********************************/ void Alarm(){bit flag;if(alarm==0){delay1(80); //延时消抖if(alarm==0){flag=1;//第一次按键进入设置}}while(flag){if(add==0){delay1(z);//延时消抖if(add==0){alanum++;//add键按下,上调设定值if(alanum==51){alanum=0;//最大值为50摄氏度,循环显示}}}if(sub==0){delay1(z);//延时消抖if(sub==0){alanum--;//sub键按下,下调设定值if(alanum==255){alanum=50;//最小值为0摄氏度,循环显示}}}Showtemperature(alanum);Display(0,10);//选中数码管的其他空闲位Display(1,10);//区别于实时温度显示“----”Display(6,10);Display(7,10);if(alarm==0){delay1(80); //延时消抖if(alarm==0){flag=0;//第二次按键退出设置}}if(temperature>alanum)//此处设置报警可以保证调整设定值时即可及时报警{beep=0;//温度大于设定值,声光报警P1=0;}else{beep=1;//温度不大于设定值即不报警P1=0xff;}}if(temperature>alanum)//此处设置报警即保证即使没有进入设置界面任然可以报警{beep=0;//温度大于设定值,声光报警P1=0;else{beep=1;//温度不大于设定值即不报警P1=0xff;}}/***********************温度记录函数**************************************/ void Keeprecord(){uchar i=9;if(countmin==1200)//1分钟{countmin=0;count++;if(count==10)//10分钟{count=0;recordnum++;//记录一次加一,最大记录10个值if(recordnum==10){recordnum=10;}do{recordtable[i]=recordtable[i-1];}while(--i);recordtable[0]=temperature;//最新值填入第一个位置}}}/************************查询记录的温度值*************************************/ void Showrecord(){bit flag;uchar a;if(record==0){delay1(80); //延时消抖if(record==0){flag=1;//record第一次按键置位进入标志}}while(flag)//进入查询Display(0,recordtable[a]/10);//显示温度数值Display(1,recordtable[a]%10);Display(2,11);//显示摄氏度单位Display(3,12);Display(4,10);//数码管第6、7位选中,温度值与记录数之间用--间隔Display(5,10);Display(6,(a+1)/10);//显示第几个记录值Display(7,(a+1)%10);if(add==0){delay1(z);//延时消抖if(add==0)//add按下,查看下一个值{if(recordnum==0){a=0;}else{a++;if(a==recordnum)//循环显示{a=0;}}}}if(sub==0)//sub按下,查看上一个值{delay1(z);if(sub==0){if(recordnum==0){a=0;}else{a--;if(a==255)//循环显示{a=recordnum-1;}}}}if(record==0){delay1(80);if(record==0)//record第二次按下,退出查看{flag=0;}}}}/***********定时器中断0,用于温度检测时间间隔和记录数据时间间隔**************/ void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;//50mscountsec++;countmin++;if(countsec==20)//1s{countsec=0;GetTemperature();//一秒钟更新一次温度值}Keeprecord();//定时记录温度值}7 总结此次课程设计中,难点在于DS18B20的使用,即对它的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。

相关文档
最新文档