基于单片机的DS18B20温度测量
基于AT89C51DS18B20的数字温度计设计
![基于AT89C51DS18B20的数字温度计设计](https://img.taocdn.com/s3/m/63115a8aab00b52acfc789eb172ded630a1c987d.png)
基于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)](https://img.taocdn.com/s3/m/07a358c0482fb4daa48d4bd8.png)
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内完成。
基于DS18B20的多路温度检测系统设计
![基于DS18B20的多路温度检测系统设计](https://img.taocdn.com/s3/m/2b02c433580216fc700afd88.png)
i to u e e i n wh c a e tt m p r t r s o i e e t p i t , W ih d g tlt mp r t r e s rD S 8 0 n r d c sa d sg i h c n t s e e a u e fd f r n o n s t i i e e au e s n o 1 B2 a a he t m p r t r e s r m e t d v c s st e e a u e m a u e n e i e ,wih AT8 C5]a o t o n t fm u t—p i e t 9 s c n r l u i o li o ntt mpe a u e c n b s rt r a e d t c e n o to y t m , n i e h y t m a d r ic i a d s fwa e f w h r . n t e s s m ,d t e e t d a d c n r ls se a d g v s t e s se h r wa e cr u t n o t r o c a t I h y t l e aa
术和通信 网络的发展[ . J 电讯技术, 1 . 】 2 0 0
陈小芳. 于泰克R A 基 s 的分析评估和优化R I FD
系统 [. 测试, 0 () J电子 】 2 76. 0
10 1010 1010 0 001 0010 ,为 1110 1010 100 0 11 1 0 0 0
价格便宜,具有很高的性价 比,可 以定时循环检 测和通过 L D 62 C 10 显示 多路 的温 度,因此 选择
LCD1 0 6 2。
23 串 口通 讯 电路 设 计 .
A 8C 1 T 9 5 有一个全双工的串行通讯口,所以
DS18B20温度检测
![DS18B20温度检测](https://img.taocdn.com/s3/m/9b7758853c1ec5da51e27055.png)
目录1引言 (1)2系统描述 (2)2.1系统功能 (2)2.2系统设计指标 (2)3系统的主要元件 (3)3.1单片机 (3)3.2温度传感元件 (4)3.3LCD显示屏 (6)4硬件电路 (7)4.1系统整体原理图 (7)4.2单片机晶振电路 (7)4.3温度传感器连接电路 (8)4.4LCD电路 (9)4.5报警和外部中断电路 (10)5结论 (11)温度监测系统硬件设计摘要:利用DS18B20为代表的新型单总线数字式温度传感器实现温度的监测,可以简化硬件电路,也可以实现单线的多点分布式温度监测,而不会浪费单片机接口,提供了单片机接口的利用率。
同时提高了系统能够的抗干扰性,使系统更灵活、方便。
本系统主要实现温度的检测、显示以及高低温的报警。
也可以通过单总线挂载多个DS18B20实现多点温度的分布式监测。
关键词: DS18B20,单总线,温度,单片机1引言在科技广泛发展的今天,计算机的发展已经越来越快,它的应用已经越来越广泛。
而单片机的发展和应用是其中的重要一方面。
单片机在工业生产(机电、化工、轻纺、自控等等)和民用家电各方面有广泛的应用。
其中,单片机在工业生产中的应用尤其广泛。
单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因此被广泛应用。
在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要测量参数。
例如:在冶金工业、化工工业、电力工程、机械制造和食品加工等许多领域中,人们都需要对各类加热炉、热处理炉、反映炉和锅炉,尤其是热学试验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中的温度进行测量,并经常会对其进行控制。
传统的方式是采用热电偶或热电阻,但是由于模拟温度传感器输出为模拟信号,必须经过A/D 转换环节获得数字信号后才能够被单片机等微处理器接收处理,使得硬件电路结构复杂,制作成本较高。
近年来,美国DALLAS公司生产的DS18B20为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中。
基于51单片机和DS18B20的数字温度计设计说明
![基于51单片机和DS18B20的数字温度计设计说明](https://img.taocdn.com/s3/m/314c11c105a1b0717fd5360cba1aa81144318fb1.png)
基于51单片机和DS18B20的数字温度计设计说明
1.硬件设计:
-51单片机:选择合适的型号,如STC89C52或AT89C52等。
-DS18B20温度传感器:该传感器是一种数字温度传感器,具有单总线接口和高精度测量能力。
-接口电路:将51单片机和DS18B20传感器连接起来,要注意电平转换和信号线的阻抗匹配。
2.软件设计:
-初始化:在主函数中,首先对单片机进行初始化设置,包括时钟设置、串口配置等。
-DS18B20通信协议:使用单总线协议与DS18B20传感器进行通信,包括发送复位信号、读写数据等操作。
-温度测量:通过向DS18B20发送读取温度的命令,从传感器中读取温度值并保存。
-数据传输:将温度值转换为可显示的格式,如摄氏度或华氏度,并通过串口输出或LED显示。
3.程序流程:
-初始化单片机,设置时钟和串口参数。
-进入主循环,循环执行以下操作:
-发送复位信号,启动温度转换。
-等待转换完成,发送读取温度命令。
-读取温度值,并进行数据处理转换。
-输出温度值。
4.其他功能:
-可以添加LCD显示模块,将温度值显示在液晶屏上。
-可以添加按键输入模块,通过按键切换温度单位或进行其他操作。
需要注意的是,该设计只是一个简单的示例,实际应用中可能需要根据具体需求进行扩展和修改。
同时,在程序设计过程中,也要注意低功耗和数据稳定性等方面的考虑。
基于单总线器件DS18B20的温度测量仪
![基于单总线器件DS18B20的温度测量仪](https://img.taocdn.com/s3/m/6f9030d480eb6294dd886c8c.png)
基于单总线器件DS18B20的温度测量仪廖琪梅,韩彬,杨文昭,屈景辉时间:2008-08-281 引言许多情况下需要测量温度参数。
通常测温系统的主要器件是热敏电阻,由于它体积小、重复性好、测量方法简单,所以在测温系统中广泛应用。
但采用热敏电阻的测温系统需要A/D转换,而且测量精度不高。
本文采用Dallas公司生产的一种新型温度传感器DS18B20,它集温度测量、A/D转换于一体,其测量范围宽(-55℃~+125℃),精度高(0.0625℃),DS18B20是一款具有单总线结构的器件。
由DS18B20组建的温度测量单元体积小,便于携带、安装。
同时,DS18B20的输出为数字量,可以直接与单片机连接,无需后级A/D转换,控制简单。
由于DS18B20具有单总线特性,便于扩展,可在一根总线上挂接多个DS18B20来组建温度测量网络。
2 硬件电路设计本系统设计采用 Mega8单片机控制DS18B20,由显示电路显示当前温度。
其系统硬件电路如图1所示。
Atmel的Mega8单片机采用RTSC(精简指令集),指令执行速度快,内嵌8 KB Flash程序存储器,支持ISP(在系统编程),片内含有大容量的RAM 区,具有SPT总线、I2C总线、ADC功能。
Mega8单片机体积小,功能强,具有PDIP-28封装及TQFP封装。
DS18B20采用单总线方式和Mega8单片机相连,即DS18B20的1引脚和3引脚接地,2引脚通过一只240 Ω的电阻接至Mega8的PB7引脚,同时将PB7引脚采用一只4.7 kΩ的电阻上拉至VCC。
单总线即只用一根信号线,既供电,又传输数据,而且数据传输是双向的,单总线具有"线与"功能,连接方便,便于扩展。
由于DS18B20采用 CMOS技术,耗电量很小,从总线上"偷"一点电保存到DS18B20内的电容中就可供给器件工作。
串联240 Ω电阻的目的是防止有缺陷的程序损坏DS18B20,如果没有正确地采用OC(集电极开路)或OD(漏极开路)结构驱动DS18B20,而是选择推挽方式,DS18B20可能被烧坏。
基于ds18b20的数字温度计设计报告
![基于ds18b20的数字温度计设计报告](https://img.taocdn.com/s3/m/6163ec4f591b6bd97f192279168884868762b89e.png)
基于ds18b20的数字温度计设计报告
一、引言
随着科技的进步,温度的测量和控制变得越来越重要。
DS18B20是一款数字温度传感器,具有测量准确度高、体积小、接口简单等优点,广泛应用于各种温度测量场合。
本报告将介绍基于DS18B20的数字温度计设计。
二、DS18B20简介
DS18B20是一款由美国Dallas公司生产的数字温度传感器,可以通过数据线与微处理器进行通信,实现温度的测量。
DS18B20的测量范围为-55℃~+125℃,精度为±0.5℃。
三、数字温度计设计
1.硬件设计
数字温度计的硬件部分主要包括DS18B20温度传感器、微处理器、显示模块等。
其中,DS18B20负责采集温度数据,微处理器负责处理数据并控制显示模块显示温度。
2.软件设计
软件部分主要实现DS18B20与微处理器的通信和控制显示模块显示。
首先,微处理器通过数据线向DS18B20发送命令,获取温度数据。
然后,微处理器将数据处理后发送给显示模块,实现温度的实时显示。
四、测试结果
经过测试,该数字温度计的测量精度为±0.5℃,符合设计要求。
同时,该温度
计具有测量速度快、体积小、使用方便等优点,可以广泛应用于各种温度测量场合。
五、结论
基于DS18B20的数字温度计具有高精度、低成本、使用方便等优点,可以实现高精度的温度测量和控制。
随着科技的发展,数字温度计的应用将越来越广泛,具有广阔的市场前景。
基于ds18b20的温度计设计代码
![基于ds18b20的温度计设计代码](https://img.taocdn.com/s3/m/3d44f1c5e43a580216fc700abb68a98271feaccf.png)
基于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的温度测量。
基于51单片机的DS18B20温度检测_设计报告
![基于51单片机的DS18B20温度检测_设计报告](https://img.taocdn.com/s3/m/d4d355817cd184254a353556.png)
课程名称:微机原理课程设计题目:温度检测课程设计随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的温度检测仪。
本设计使用简便,功能丰富。
可以实现温度采集,温度报警,重设上下限温度值等功能。
在现代化的工业生产中,需要对周围环境的温度进行检测和控制。
本设计对温控报警问题展开思考,设计一个能根据需求设置低温到高温进行报警并通过数码管显示的系统。
该系统使用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单片机的系统设计的一般流程、方法和技巧,为我们解决工程实际问题打下坚实的基础。
(完整word版)基于单片机的DS18B20设计实验报告
![(完整word版)基于单片机的DS18B20设计实验报告](https://img.taocdn.com/s3/m/33f09548763231126edb117b.png)
第1章引言在日常生活及工农业生产中经常要涉及到温度的检测及控制,传统的测温元件有热点偶,热敏电阻还有一些输出模拟信号得温度传感器,而这些测温元件一般都需要比较多的外部硬件支持。
其硬件电路复杂,软件调试繁琐,制作成本高,阻碍了其使用性。
因此美国DALLAS半导体公司又推出了一款改进型智能温度传感器——DS18B20。
本设计就是用DS18B20数字温度传感器作为测温元件来设计数字温度计。
本设计所介绍的数字温度计与传统温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于测温比较准确得场所,或科研实验室使用。
该设计控制器使用单片机STC89C51,测温传感器使用DS18B20,显示器使用LED.第2章任务与要求2.1测量范围-50~110°C,精确到0.5°C;2.2利用数字温度传感器DS18B20测量温度信号;2.3所测得温度采用数字显示,计算后在液晶显示器上显示相应得温度值;第3章方案设计及论证3.1温度检测模块的设计及论证由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,其中还涉及到电阻与温度的对应值的计算,感温电路比较麻烦。
而且在对采集的信号进行放大时容易受温度的影响出现较大的偏差。
进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。
3.2显示模块的设计及论证LED是发光二极管Light Emitting Diode 的英文缩写。
LED显示屏是由发光二极管排列组成的一显示器件。
51单片机DS18B20温度传感器原理及实验
![51单片机DS18B20温度传感器原理及实验](https://img.taocdn.com/s3/m/4c71a700a9956bec0975f46527d3240c8447a19a.png)
51单片机DS18B20温度传感器原理及实验一、引言温度传感器是一种常用的传感器器件,它的作用是将物体的温度变化转换为电信号输出,以实现温度的监测和控制。
DS18B20是一种数字温度传感器,采用数字信号输出,具有体积小、精度高、线性度好等特点,被广泛应用于各种温度控制系统中。
本文将介绍DS18B20的工作原理及实验方法。
二、DS18B20的工作原理DS18B20是一种基于一线传输协议的数字温度传感器,其工作原理如下:1.接口电路:DS18B20具有三个引脚,分别是VDD、DQ和GND。
其中,VDD是供电引脚,DQ是数据引脚,GND是地引脚。
2.传感器原理:DS18B20内部包含一个温度传感器和一个数字转换器。
温度传感器采用热敏电阻的原理,通过测量热敏电阻的电阻值来反映物体的温度变化。
数字转换器将传感器测得的电阻值转换为数字信号输出。
三、实验流程以下是使用51单片机对DS18B20温度传感器进行实验的详细流程:1.硬件准备:-将DS18B20的VDD引脚连接到单片机的VCC引脚,DQ引脚连接到单片机的任意IO引脚,GND引脚连接到单片机的GND引脚。
-确保DS18B20的供电电压和单片机的工作电压一致。
2.初始化:-在程序中定义DS18B20的DQ引脚所对应的单片机的IO引脚。
-初始化DS18B20,即发送初始化指令给DS18B20。
3.温度转换:-发送温度转换指令给DS18B20,DS18B20开始测量温度。
-等待一定的延时,确保DS18B20完成温度转换。
4.读取温度:-发送读取温度指令给DS18B20,DS18B20将温度的原始数据发送给单片机。
-单片机通过计算将原始数据转换为温度值。
-温度值可以通过串口或LCD等方式进行显示。
5.循环实验:-以上步骤需要不断重复,以便实时监测温度的变化。
四、总结DS18B20温度传感器是一种常用的数字温度传感器,具有精度高、体积小、线性度好等特点,适用于各种温度控制系统。
基于单片机和DS18B20的数字温度计
![基于单片机和DS18B20的数字温度计](https://img.taocdn.com/s3/m/ae571ff49e3143323968932d.png)
温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验中,有特别重要的意义。
随着人们生活水平的不断提高,,人们对温度计的要求越来越高,传统的温度计功能单一、精度低,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
数字温度计(Digital Thermometer)简称D温度是许多监控系统中的一个重要参数。
TM,它是采用数字化测量技术,把连续的温度值转换成不连续、离散的数字形式并加以显示的仪表。
采用单片机控制的数字温度计,由于精度高、可扩展性强、集成方便、抗干扰能力强,得到了广泛的应用。
本设计以单片机和温度传感器为核心,设计数字温度计。
实现对温度的采集、监视和报警。
在温度采集的实现中,使用了AT89C51单片机和温度传感器DS18B20,温度监视部分利用动态驱动技术,以单片机驱动4位LED数码管。
温度测量范围-55℃~+125℃,通过按键设置上下限报警温度,并用4位共阳极LED数码管以串口传送数据,实现温度显示,能准确达到设计要求。
正文还介绍了AT89C51和集成温度传感器DS18B20。
1 设计的意义及主要功能 (3)1.1 意义 (3)1.2 主要功能 (3)2 总体方案设计 (4)2.1 方案比较 (4)2.2 方案论证 (5)2.3 方案选择 (5)3 硬件电路设计 (6)3.1 元器件的选择 (6)3.2 电路原理图 (6)3.3 特殊元器件的介绍 (6)3.3.1 AT89C51介绍 (6)3.3.2 DS18B20介绍 (9)4 总结 (13)5 参考文献 (13)附录 (14)1 设计的意义及主要功能1.1 意义随着人们生活水平的不断提高,数字化无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,一切向着数字化控制,智能化控制方向发展。
数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
基于51单片机——Ds18B20温度采集,LCD显示汇编程序(附带proteus仿真图)
![基于51单片机——Ds18B20温度采集,LCD显示汇编程序(附带proteus仿真图)](https://img.taocdn.com/s3/m/b3bb81000740be1e650e9ab8.png)
TEMP_ZH EQU 24H ;实测温度值存放单元TEMPL EQU 25HTEMPH EQU 26HTEMP_TH EQU 27H ;高温报警值存放单元TEMP_TL EQU 28H ;低温报警值存放单元TEMPHC EQU 29H ;正、负温度值标记TEMPLC EQU 2AHTEMPFC EQU 2BHK1 EQU P1.4 ;查询按键K2 EQU P1.5 ;设置/调整键K3 EQU P1.6 ;调整键K4 EQU P1.7 ;确定键BEEP EQU P3.7 ;蜂鸣器RELAY EQU P1.3 ;指示灯LCD_X EQU 2FH ;LCD 字符显示位置LCD_RS EQU P2.0 ;LCD 寄存器选择信号 LCD_RW EQU P2.1 ;LCD 读写信号LCD_EN EQU P2.2 ;LCD 允许信号FLAG1 EQU 20H.0 ;DS18B20是否存在标志 KEY_UD EQU 20H.1 ;设定按键的增、减标志 DQ EQU P3.3 ;DS18B20数据信号ORG 0000HLJMP MAINORG 0030HMAIN: MOV SP,#60HMOV A,#00HMOV R0,#20H ;将20H~2FH 单元清零MOV R1,#10HCLEAR: MOV @R0,AINC R0DJNZ R1,CLEARLCALL SET_LCDLCALL RE_18B20START: LCALL RST ;调用18B20复位子程序JNB FLAG1,START1 ;DS1820不存在LCALL MENU_OK ;DS1820存在,调用显示正确信息子程序MOV TEMP_TH,#055H ;设置TH初值85度MOV TEMP_TL,#019H ;设置TL初值25度LCALL RE_18B20A ;调用暂存器操作子程序LCALL WRITE_E2 ;写入DS18B20LCALL TEMP_BJ ;显示温度标记JMP START2START1: LCALL MENU_ERROR ;调用显示出错信息子程序 LCALL TEMP_BJ ;显示温度标记SJMP $START2: LCALL RST ;调用DS18B20复位子程序JNB FLAG1,START1 ;DS18B20不存在MOV A,#0CCH ;跳过ROM匹配命令LCALL WRITEMOV A,#44H ;温度转换命令LCALL WRITELCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0BEH ;读温度命令LCALL WRITELCALL READ ;调用DS18B20数据读取操作子程序LCALL CONVTEMP ;调用温度数据BCD 码处理子程序LCALL DISPBCD ;调用温度数据显示子程序LCALL CONV ;调用LCD显示处理子程序LCALL TEMP_COMP ;调用实测温度值与设定温度值比较子程序LCALL PROC_KEY ;调用键扫描子程序SJMP START2 ;循环;*************************** 键扫描子程序*****************************PROC_KEY:JB K1,PROC_K1LCALL BEEP_BLJNB K1,$MOV DPTR,#M_ALAX1MOV A,#1LCALL LCD_PRINTLCALL LOOK_ALARMJB K3,$LCALL BEEP_BLJMP PROC_K2PROC_K1: JB K2,PROC_ENDLCALL BEEP_BLJNB K2,$MOV DPTR,#RST_A1MOV A,#1LCALL LCD_PRINTLCALL SET_ALARMLCALL RE_18B20 ;将设定的TH,TL值写入DS18B20LCALL WRITE_E2PROC_K2: LCALL MENU_OKLCALL TEMP_BJPROC_END:RET;*************************** 设定温度报警值TH、TL ***************************SET_ALARM:LCALL LOOK_ALARMAS0: JB K1,AS00LCALL BEEP_BLJNB K1,$CPL 20H.1 ;UP/DOWN 标记AS00: JB 20H.1,ASZ01 ;20H.1=1,增加JMP ASJ01 ;20H.1=0,减小ASZ01: JB K2,ASZ02 ;TH值调整(增加)LCALL BEEP_BLINC TEMP_THMOV A,TEMP_THCJNE A,#120,ASZ011MOV TEMP_TH,#0ASZ011: LCALL LOOK_ALARMLCALL DELAYJMP ASZ01ASZ02: JB K3,ASZ03 ;TL值调整(增加) LCALL BEEP_BLINC TEMP_TLMOV A,TEMP_TLCJNE A,#99,ASZ021MOV TEMP_TL,#00HASZ021: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP ASZ02ASZ03: JB K4,AS0 ;确定调整LCALL BEEP_BLJNB K4,$RETASJ01: JB K2,ASJ02 ;TH值调整(减少) LCALL BEEP_BLDEC TEMP_THMOV A,TEMP_THCJNE A,#0FFH,ASJ011ASJ011: LCALL LOOK_ALARMMOV R5,#10LCALL DELAYJMP AS0ASJ02: JB K3,ASJ03 ;TL值调整(减少)LCALL BEEP_BLDEC TEMP_TLMOV A,TEMP_TLCJNE A,#0FFH,ASJ021JMP ASJ022ASJ021: LCALL LOOK_ALARM ;MOV R5,#10LCALL DELAYJMP AS0ASJ022: CPL 20H.1JMP ASZ01ASJ03: JMP ASZ03RETRST_A1: DB " SET ALERT CODE " ,0;*********************** 实测温度值与设定温度值比较子程序**********************TEMP_COMP:MOV A,TEMP_THSUBB A,TEMP_ZH ;减数>被减数,则JC CHULI1 ;借位标志位C=1,转 MOV A,TEMPFCCJNE A,#0BH,COMPSJMP CHULI2COMP: MOV A,TEMP_ZHSUBB A,TEMP_TL ;减数>被减数,则JC CHULI2 ;借位标志位C=1,转MOV DPTR,#BJ5LCALL TEMP_BJ3CLR RELAY ;点亮指示灯RETCHULI1: MOV DPTR,#BJ3LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RETCHULI2: MOV DPTR,#BJ4LCALL TEMP_BJ3SETB RELAY ;熄灭指示灯LCALL BEEP_BL ;蜂鸣器响RET;-----------------------------------------TEMP_BJ3: MOV A,#0CEHLCALL WCOMMOV R1,#0MOV R0,#2BBJJ3: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ3RETBJ3: DB ">H"BJ4: DB "<L"BJ5: DB " !";;**************************** 显示温度标记子程序***************************TEMP_BJ: MOV A,#0CBHLCALL WCOMMOV DPTR,#BJ1 ;指针指到显示消息MOV R1,#0MOV R0,#2BBJJ1: MOV A,R1MOVC A,@A+DPTRLCALL WDATAINC R1DJNZ R0,BBJJ1RETBJ1: DB 00H,"C";******************************** 显示正确信息子程序***************************MENU_OK: MOV DPTR,#M_OK1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_OK2 ;指针指到显示消息MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_OK1: DB " DS18B20 OK ",0M_OK2: DB " TEMP: ",0;******************************** 显示出错信息子程序***************************MENU_ERROR:MOV DPTR,#M_ERROR1 ;指针指到显示消息MOV A,#1 ;显示在第一行LCALL LCD_PRINTMOV DPTR,#M_ERROR2 ;指针指到显示消息1MOV A,#2 ;显示在第一行LCALL LCD_PRINTRETM_ERROR1: DB " DS18B20 ERROR ",0M_ERROR2: DB " TEMP: ---- ",0;****************************DS18B20复位子程序*****************************RST: SETB DQNOPCLR DQMOV R0,#6BH ;主机发出延时复位低脉冲MOV R1,#04HTSR1: DJNZ R0,$MOV R0,#6BHDJNZ R1,TSR1SETB DQ ;拉高数据线NOPNOPNOPMOV R0,#32HTSR2: JNB DQ,TSR3 ;等待DS18B20回应DJNZ R0,TSR2JMP TSR4 ; 延时TSR3: SETB FLAG1 ; 置1标志位,表示DS1820存在JMP TSR5TSR4: CLR FLAG1 ; 清0标志位,表示DS1820不存在 JMP TSR7TSR5: MOV R0,#06BHTSR6: DJNZ R0,$ ; 时序要求延时一段时间TSR7: SETB DQRET;************************ DS18B20暂存器操作子程序***************************RE_18B20:JB FLAG1,RE_18B20ARETRE_18B20A:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEWR_SCRAPD:MOV A,#4EH ;写暂器LCALL WRITEMOV A,TEMP_TH ;TH(报警上限)LCALL WRITEMOV A,TEMP_TL ;TL(报警下限)LCALL WRITEMOV A,#7FH ;12位精度LCALL WRITERET;************************ 复制暂存器子程序*******************************WRITE_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#48H ;把暂存器里的温度报警值拷贝到EEROMLCALL WRITERET;*********************** 重读EEROM子程序********************************READ_E2:LCALL RSTMOV A,#0CCH ;跳过ROM匹配LCALL WRITEMOV A,#0B8H ;把EEROM里的温度报警值拷贝回暂存器LCALL WRITERET;************************ 将自定义字符写入LCD的CGRAM中*********************STORE_DATA:MOV A,#40HLCALL WCOMMOV R2,#08HMOV DPTR,#D_DATAMOV R3,#00HS_DATA: MOV A,R3MOVC A,@A+DPTRLCALL WDATA ;写入数据INC R3DJNZ R2,S_DATARETD_DATA: DB 0CH,12H,12H,0CH,00H,00H,00H,00H;*********************** DS18B20数据写入操作子程序************************WRITE: MOV R2,#8 ;一共8位数据CLR CWR1: CLR DQ ;开始写入DS18B20总线要处于复位(低)状态MOV R3,#07DJNZ R3,$ ;总线复位保持16微妙以上RRC A ;把一个字节DATA 分成8个BIT 环移给CMOV DQ,C ;写入一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙SETB DQ ;重新释放总线NOPDJNZ R2,WR1 ;写入下一位SETB DQRET;********************** DS18B20数据读取操作子程序**************************READ: MOV R4,#4 ;将温度低位、高位、TH、TL从DS18B20中读出MOV R1,#TEMPL ;存入25H、26H、27H、28H单元RE00: MOV R2,#8RE01: CLR CYSETB DQNOPNOPCLR DQ ;读前总线保持为低NOPNOPNOPSETB DQ ;开始读总线释放MOV R3,#09 ;延时18微妙DJNZ R3,$MOV C,DQ ;从DS18B20总线读得一位MOV R3,#3CHDJNZ R3,$ ;等待100微妙RRC A ;把读得的位值环移给ADJNZ R2,RE01 ;读下一位MOV @R1,AINC R1DJNZ R4,RE00RET;************************ 温度值BCD 码处理子程序*************************CONVTEMP: MOV A,TEMPH ;判温度是否零下ANL A,#08HJZ TEMPC1 ;温度零上转CLR CMOV A,TEMPL ;二进制数求补(双字节)CPL A ;取反加1ADD A,#01HMOV TEMPL,AMOV A,TEMPHCPL AADDC A,#00HMOV TEMPH,AMOV TEMPHC,#0BH ;负温度标志MOV TEMPFC,#0BHSJMP TEMPC11TEMPC1: MOV TEMPHC,#0AH ;正温度标志MOV TEMPFC,#0AHTEMPC11: MOV A,TEMPHCSWAP AMOV TEMPHC,AMOV A,TEMPLANL A,#0FH ;乘0.0625MOV DPTR,#TEMPDOTTABMOVC A,@A+DPTRMOV TEMPLC,A ;TEMPLC LOW=小数部分 BCDMOV A,TEMPL ;整数部分ANL A,#0F0H ;取出高四位SWAP AMOV TEMPL,AMOV A,TEMPH ;取出低四位ANL A,#0FHSWAP AORL A,TEMPL ;重新组合MOV TEMP_ZH,ALCALL HEX2BCD1MOV TEMPL,AANL A,#0F0HSWAP AORL A,TEMPHC ;TEMPHC LOW = 十位数BCDMOV TEMPHC,AMOV A,TEMPLANL A,#0FHSWAP A ;TEMPLC HI = 个位数BCDORL A,TEMPLCMOV TEMPLC,AMOV A,R4JZ TEMPC12ANL A,#0FHSWAP AMOV R4,AMOV A,TEMPHC ;TEMPHC HI = 百位数BCDANL A,#0FHORL A,R4MOV TEMPHC,ATEMPC12: RET;************************ 二-十进制转换子程序*****************************HEX2BCD1: MOV B,#064HDIV ABMOV R4,AMOV A,#0AHXCH A,BDIV ABSWAP AORL A,BRETTEMPDOTTAB: DB 00H,00H,01H,01H,02H,03H,03H,04H ; 小数部分码表DB 05H,05H,06H,06H,07H,08H,08H,09H;********************** 查询温度报警值子程序***************************LOOK_ALARM: MOV DPTR,#M_ALAX2 ;指针指到显示信息区MOV A,#2 ;显示在第二行LCALL LCD_PRINTMOV A,#0C6HLCALL TEMP_BJ1MOV A,TEMP_TH ;加载TH数据MOV LCD_X,#3 ;设置显示位置LCALL SHOW_DIG2H ;显示数据MOV A,#0CEHLCALL TEMP_BJ1MOV A,TEMP_TL ;加载TL数据MOV LCD_X,#12 ;设置显示位置LCALL SHOW_DIG2L ;显示数据RETM_ALAX1: DB " LOOK ALERT CODE",0M_ALAX2: DB "TH: TL: ",0TEMP_BJ1: LCALL WCOMMOV DPTR,#BJ2 ;指针指到显示信息区 MOV R1,#0MOV R0,#2BBJJ2: MOV A,R1MOVC A,@A+DPTRLCALL WDATADJNZ R0,BBJJ2RETBJ2: DB 00H,"C";************************** LCD显示子程序**********************************SHOW_DIG2H: MOV B,#100DIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BMOV A,#0AHXCH A,BDIV ABADD A,#30HINC LCD_XPUSH BMOV B,LCD_XLCALL LCDP2INC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RETSHOW_DIG2L: MOV B,#100DIV ABMOV A,#0AHXCH A,BDIV ABADD A,#30HPUSH BMOV B,LCD_XLCALL LCDP2POP BINC LCD_XMOV A,BMOV B,LCD_XADD A,#30HLCALL LCDP2RET;************************ 显示区BCD 码温度值刷新子程序**********************DISPBCD: MOV A,TEMPLCANL A,#0FHMOV 70H,A ;小数位MOV A,TEMPLCSWAP AANL A,#0FHMOV 71H,A ;个位MOV A,TEMPHCANL A,#0FHMOV 72H,A ;十位MOV A,TEMPHCSWAP AANL A,#0FHMOV 73H,A ;百位DISPBCD2: RET;*************************** LCD 显示数据处理子程序*************************CONV: MOV A,73H ;加载百位数据MOV LCD_X,#6 ;设置位置CJNE A,#1,CONV1JMP CONV2CONV1: CJNE A,#0BH,CONV11MOV A,#"-" ;"-"号显示JMP CONV111CONV11: MOV A,#" " ;"+"号不显示CONV111: MOV B,LCD_XLCALL LCDP2JMP CONV3CONV2: LCALL SHOW_DIG2 ;显示数据CONV3: INC LCD_XMOV A,72H ;十位LCALL SHOW_DIG2INC LCD_XMOV A,71H ;个位LCALL SHOW_DIG2INC LCD_XMOV A,#'.'MOV B,LCD_XLCALL LCDP2MOV A,70H ;加载小数点位INC LCD_X ;设置显示位置LCALL SHOW_DIG2 ;显示数据RET;*************************** 第二行显示数字子程序*************************SHOW_DIG2:ADD A,#30HMOV B,LCD_XLCALL LCDP2RET;*************************** 第二行显示数字子程序*************************LCDP2: PUSH ACCMOV A,B ;设置显示地址ADD A,#0C0H ;设置LCD的第二行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;*************************** 对LCD 做初始化设置及测试*************************SET_LCD: CLR LCD_ENLCALL INIT_LCD ;初始化 LCDLCALL STORE_DATA ;将自定义字符存入LCD的CGRAM RET;****************************** LCD初始化***********************************INIT_LCD: MOV A,#38H ;2行显示,字形5*7点阵LCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#38HLCALL WCOMLCALL DELAY1MOV A,#0CH ;开显示,显示光标,光标不闪烁 LCALL WCOMLCALL DELAY1MOV A,#01H ;清除 LCD 显示屏LCALL WCOMLCALL DELAY1RET;***************************** 清除LCD的第一行字符**************************CLR_LINE1:MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOMMOV R0,#24 ;设置计数值C1: MOV A,#' ' ;载入空格符至LCDLCALL WDATA ;输出字符至LCDDJNZ R0,C1 ;计数结束RET;************************* LCD的第一行或第二行显示字符**********************LCD_PRINT:CJNE A,#1,LINE2 ;判断是否为第一行LINE1: MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#80H ;设置 LCD 的第一行地址LCALL WCOM ;写入命令JMP FILLLINE2: MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOM ;写入命令LCALL CLR_LINE ;清除该行字符数据MOV A,#0C0H ;设置 LCD 的第二行地址LCALL WCOMFILL: CLR A ;填入字符MOVC A,@A+DPTR ;由消息区取出字符CJNE A,#0,LC1 ;判断是否为结束码RETLC1: LCALL WDATA ;写入数据INC DPTR ;指针加1JMP FILL ;继续填入字符RET;*************************** 清除1行LCD 的字符****************************CLR_LINE: MOV R0,#24CL1: MOV A,#' 'LCALL WDATADJNZ R0,CL1RETDE: MOV R7,#250DJNZ R7,$RET;**************************** LCD 间接控制方式命令写入*************************WCOM: MOV P0,A ;写入命令CLR LCD_RS ;RS=L,RW=L,D0-D7=指令码,E=高脉冲 CLR LCD_RWSETB LCD_ENLCALL DELAY1CLR LCD_ENRET;**************************** LCD 间接控制方式数据写入*************************WDATA: MOV P0,A ;写入数据SETB LCD_RSCLR LCD_RWSETB LCD_ENLCALL DELCALL DERET;************************** 在LCD的第一行显示字符**************************LCDP1: PUSH ACCMOV A,B ;设置显示地址ADD A,#80H ;设置LCD的第一行地址LCALL WCOM ;写入命令POP ACC ;由堆栈取出ALCALL WDATA ;写入数据RET;****************************** 声光报警子程序*******************************BEEP_BL: MOV R6,#100BL2: LCALL DEX1CPL BEEPCPL RELAYDJNZ R6,BL2MOV R5,#10RETDEX1: MOV R7,#180DE2: NOPDJNZ R7,DE2RET;****************************** 延时子程序*******************************DELAY: MOV R6,#50DL1: MOV R7,#100DJNZ R7,$DJNZ R6,DL1DJNZ R5,DELAYRETDELAY1: MOV R6,#25 ;延时5毫秒DL2: MOV R7,#100DJNZ R7,$DJNZ R6,DL2RETEND。
基于DS18B20的单片机多点温度测量系统
![基于DS18B20的单片机多点温度测量系统](https://img.taocdn.com/s3/m/bea4a7d528ea81c758f57825.png)
基于DSl8820的单片机多点温度测量系统韦珑砷,杨荣松(四川大学制造科学与工程学院,四川成都610065)SeveralPointsTemperatureMeasuringSystemBasedonDSl8820WEILoIlg—shen,YANGRong—song(Sch001ofM删hctuflngScienccandEngineedng,SichuanUniver5i‘y,Che醒du610。
65·Chlna)摘要:通过运用Dsl8820数字温度传感器的测温原理和特性,利用它独特的单线总线接口方式,与AT89c5l单片机相结合实现多点刹温。
并给出了测温系统中对DSl8820操作的c51编程实倒。
实现了系统接口简单、精度高、抗干扰能力强、工作稳定等特点。
关键词:单片机;Dsl8820;c5l编程;温度中国分类号:TP212;TP368文献标识码:B文章编号:1001—2257(2007)11一0042—03Abstract:Withusingthemeasuringprincipleandcharacteristicsofthenumericaltem口eraturesensorofDSl8820,maki“guseofspecialcharac。
teristicso£sin91e1ineasthetotal1lne,andcombinetogetherwithAT89C51torealizeseveralpointstemperaturemeasunng.A1sot11ispapergivetheexampleoftheC51programwhichisusedtooperatetotheDSl8820.Makesvstemhavecharacter—isticsofsimp{e,h塘haccuracy,stro“ganti—inte卜ferenceabnitv,stableworketc.Keywords:SCM;DSl8820;C51program;te"DeratureO引言系统采用美国DALLAS半导体公司推出的一种改进型智能温度传感器DBl8820。
DS18B20的工作原理
![DS18B20的工作原理](https://img.taocdn.com/s3/m/d0f89e230a1c59eef8c75fbfc77da26924c59647.png)
DS18B20的工作原理DS18B20是一种数字温度传感器,采用单总线接口进行通信。
它可以精确测量环境温度,并将温度值以数字形式传输给微控制器或其他设备。
DS18B20是一种广泛应用于工业自动化、家用电器、医疗设备等领域的温度传感器。
DS18B20的工作原理如下:1. 温度测量原理:DS18B20采用了基于半导体的温度测量原理。
它内部集成了温度传感器和模数转换器(ADC),可以将环境温度转换为数字信号。
DS18B20使用的是温度依赖的电阻器件,称为温度传感器。
当温度升高时,温度传感器的电阻值会发生变化,DS18B20利用这种变化来测量温度。
2. 单总线通信:DS18B20采用了单总线通信协议,即通过单根数据线进行数据传输。
这种通信方式简化了连接和控制的复杂性,只需使用一个引脚即可实现数据的传输和控制。
在单总线通信中,DS18B20作为从设备,由主控制器发出指令,DS18B20接收指令并返回温度数据。
3. 工作原理:DS18B20的工作原理可以分为三个步骤:初始化、温度转换和读取温度。
3.1 初始化:在通信开始前,主控制器需要发送初始化指令来识别和准备DS18B20。
初始化指令包括发送复位脉冲和读取DS18B20的存在脉冲。
复位脉冲使DS18B20进入准备接收指令的状态,存在脉冲用于检测DS18B20是否存在于总线上。
3.2 温度转换:初始化完成后,主控制器发送温度转换指令给DS18B20。
温度转换指令包括启动温度转换和等待转换完成。
DS18B20接收到指令后,开始测量环境温度,并将结果存储在内部寄存器中。
温度转换时间取决于DS18B20的分辨率设置,一般为750ms到12秒不等。
3.3 读取温度:温度转换完成后,主控制器发送读取温度指令给DS18B20。
DS18B20将温度值以数字形式传输给主控制器。
主控制器接收到温度数据后,可以进行进一步的处理和显示。
4. 分辨率设置:DS18B20支持多种温度分辨率设置,包括9位、10位、11位和12位。
基于51单片机DS18B20温度采集器详解
![基于51单片机DS18B20温度采集器详解](https://img.taocdn.com/s3/m/47626c9c336c1eb91a375dea.png)
一核心器件的基本构成及特性1.1 AT89S51功能特性89C51是INTEL公司MCS-51系列单片机中基本的产品,它采用INTEL公司可靠的CHMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。
它结合了HMOS的高速和高密度技术及CHMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于80C51基础型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能。
89C51内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C51还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU 而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
89C51有PDIP(40pin)和PLCC(44pin)两种封装形式。
1.2 AT89S51管脚介绍AT89C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上。
如果按功能划分,它由如下功能部件组成,即微处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、并行I/O口(4个8位I/O口)、串行口、定时器/计数器、中断系统及特殊功能寄存器。
它们都是通过片内单一总线连接而成,其基本结构依旧是微处理器(CPU)加上外围芯片的传统结构模式。
但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式,以实现不同的功能。
AT89C51单片机如图所示。
1.1.1引脚功能介绍Vcc(40引脚):接+5V电源。
Vss(20引脚):接地。
XTAL1(19引脚):片内振荡器反相放大器和时钟发生器电路的输入端。
XTAL2(18引脚):片内震荡器反相放大器的输出端。
RST:复位引脚,高电平有效。
基于DS18B20的数字温度测量系统
![基于DS18B20的数字温度测量系统](https://img.taocdn.com/s3/m/349acf3fee06eff9aef80761.png)
可 以 向所 挂接 的 D 1B 0供 电 , S82 而无 需 额外 电源. 而使用 D 1B 0可使 系 统 结构更 趋 简单 , 因 S82 可靠 性更
高. 它在 测 温精度 、 转换 时间 、 传输 距 离 、 辨率 等方 面较 D 1 2 分 S 8 0有 了很 大 的改进 , 用 户带来 了更 方便 给 的使 用和 更令 人满 意的效 果. 独特 的单 线 接 口方式 : S 8 2 D 1 B 0与 微处 理 器 连接 时仅 需 要一 条 口线 即可 实现 微 处理 器 与 D 1 B 0 S 8 2
基于 DS 8 2 1B 0的数字温度测量 系统
毋 剑
320 ) 5 10
( 德 师 范学 院 物 理 与 电气 工 程 系 , 建 宁 德 宁 福 摘
要 : 介 绍 一 种 新 型 的 可 编 程 温 度 传 感器 D IB 0 它 能 代 替 模 拟 温 度 传 感 器 和 信 号 处理 电路 , 接 S 82 , 直
与 单 片 机 沟通 , 成 温度 采 集 和 数 据 处 理 . 且 能够 人 工 设 置 温 度 , 温 度 超 过 或低 于 人 为设 定 的温 度 时 , 出 完 并 当 发 红 灯 或 黄 灯 报 警 .S 8 2 D IB 0与 A 8 S 1 片 机 结 合 实 现 最 简温 度 检 测 系 统 , 系 统 结 构 简单 , 干扰 能力 强 , T9 5 单 该 抗
电源 极性 接反 时 , 度计 不会 因发 热而烧 毁 , 不能 正常工 作【 温 但 2 】 .
2
系统 硬 件 电路 分 析
系统 电路 如 图 1 示. 所
3. D 1 B 0电 路 1 S 82
D 1 B 0具 有 独特 的单线 接 口方式 , S82 在硬 件 电路 设 计上 D 1 B 0与 单 片机 A 8 S 1连接 时 , S8 2 T 95 仅需 要 一 条 口线 即可 实 现与 D 1 B 0的双 向通 讯 . 现对 D 1 B 0的 控制 , 将 D 1B 0传感 器 采集 到 的 S82 实 S82 并 S82
stm32基于ds18b20的温度测量实例 实验原理
![stm32基于ds18b20的温度测量实例 实验原理](https://img.taocdn.com/s3/m/d25575201fd9ad51f01dc281e53a580216fc50f8.png)
stm32基于ds18b20的温度测量实例实验原理
DS18B20是一款数字温度传感器,其测温范围为-55℃到+125℃,在-10℃到+85℃范围内误差为±°。
主机和从机通信使用单总线,即使用单线进行数据的发送和接收,在使用中不需要任何外围元件,独立芯片即可完成工作。
每个DS18B20都有独立唯一的64位-ID,此特性决定了它可以将任意多的DS18b20挂载到一根总线上,通过ROM搜索读取相应DS18B20的温度值。
单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。
One-Wire总线利用一根线实现双向通信,其协议对时序的要求较严格,如应答等时序都有明确的时间要求。
基本的时序包括复位及应答时序,写一位时序,读一位时序。
在复位及应答时序中,主器件发出复位信号后,要求从器件在规定的时间内送回应答信号;在位读和位写时序中,主器件要在规定的时间内读回或写出数据。
DS18B20的原理是基于以上这些特性的。
如果需要更详细的实验原理,可
以查阅相关资料或咨询专业人士获取帮助。
基于DS18B20在单片机AT89S52上实现的数字式温度计
![基于DS18B20在单片机AT89S52上实现的数字式温度计](https://img.taocdn.com/s3/m/9a57b81c4431b90d6c85c75f.png)
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,可以本地供电,也可以直接从数据线上窃取电源(寄生电源方式)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于DS18B20的温度测量系统组员:计佳辰11221120组员:徐文杰112211101.课题要求测量环境中的温度,以BCD码的形式在LED上显示2. 设计背景随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测和显示系统应用于诸多领域。
传统的温度检测以热敏电阻为温度敏感元件。
热敏电阻的成本低,但需后续信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差,这里设计的数字温度计具有读数方便,测温围广,测温精确,数字显示,适用围宽等特点。
本设计选用AT89C51单片机作为主控制器件,DS18B20作为测温传感器,通过LM016L 实现温度显示。
通过DS18B20直接读取被测温度值,进行数据转换,该器件的物理化学性能稳定,线性度较好,在0℃~100℃最大线性偏差小于0.01℃。
该器件可直接向单片机传输数字信号,便于单片机处理及控制。
另外,该温度计还能直接采用测温器件测量温度,从而简化数据传输与处理过程。
3.设计方案3.1总体设计思路方案与系统框图采用数字温度芯片DS18B20测量温度,输出信号全数字化。
采用了单总线的数据传输,由数字温度计DS18B20和AT89C51单片机构成的温度测量装置,DS18B20的DQ与AT89C51的P3.7口相连,与它直接输出温度的数字信号,采用AT89C51单片机控制,温度显示由四位八段LED显示屏完成,LED的D0~D7为8位双向数据端,与AT89C51的P1口相连,系统框图如下图所示。
3.2 DS18B20芯片介绍DS18B20引脚定义:(1)DQ为数字信号输入输出端(2)GND为电源地(3)VDD为外接供电电源输入端温度寄存器(0和1字节)AT89C51时钟电路复位电路DS18B20数字温度传感器测温物体图1显示电路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 的温度操作是使用16 位,也就是说分辨率是0.0625。
BIT15~BIT11 是符号位,为了就是表示转换的值是正数还是负数。
3.3 LED显示屏(共阴)介绍A,B,C,D,E,F,G,DP管脚是段选引脚,1,2,3,4是位选引脚(低电平有效),字形码如下:3.4.AT89C51芯片VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL 门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE 的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE 才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。
注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
3.5硬件电路图本系统过温度传感器DS18B20的数据线DQ与主控芯片51单片机的P3.7相连接,DS18B20将采集到的数据送给单片机,经过单片机出来后,显示在8位数据线与单片机P1口的液晶LED上。
位选由P2控制。
3.6 程序设计AT89C51 复位电路晶振电路测温部分显示部分4.仿真与调试附录TMPL EQU 29HTMPH EQU 28HDATAIN BIT P3.7ORG 0000HMAIN: MOV P1,#0FFH;LED显示清零(空格)LCALL GET_TEMPER;调用初始化,写指令,读指令子程序LCALL CVTTMP;十六进制转换为BCD码LCALL DISP1;LED显示温度子程序AJMP MAIN;初始化DS18B20INIT_1820:SETB DATAINNOPCLR DATAIN;拉低DQ发送复位脉冲MOV R1,#3;延时TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB DATAIN;拉高DQNOPDATAIN,$;等待应答脉冲MOV R0,#117;延时TSR6:DJNZ R0,$TSR7:SETB DATAINRET;初始化完毕;调用初始化,写指令,读指令子程序GET_TEMPER:SETB DATAINLCALL INIT_1820;调用初始化子程序MOV A,#0CCHLCALL WRITE_1820;写命令,0CCH送入DS18B20,跳过ROM检测MOV A,#44HLCALL WRITE_1820;写命令,把44H送入DS18B20,在DS18B20部进行温度转换。
把测得的数据转换成十六进制LCALL INIT_1820;调用初始化子程序MOV A,#0CCHLCALL WRITE_1820;写命令,把0CCH送入DS18B20,跳过ROM检测MOV A,#0BEHLCALL WRITE_1820;读命令,把0BEH送入DS18B20,准备读DS18B20的温度数据(十六进制)LCALL READ_18200;读命令,把温度数据读入单片机(以十六进制保存)RET;调用初始化,写指令,读指令子程序完毕WRITE_1820:;调用写指令子程序开始MOV R2,#8CLR CWR1: CLR DATAINMOV R3,#6DJNZ R3,$RRC AMOV DATAIN,CMOV R3,#23DJNZ R3,$SETB DATAINNOPDJNZ R2,WR1SETB DATAINRET;调用写指令子程序完毕READ_18200:;调用读指令子程序开始MOV R4,#2MOV R1,#29HRE00: MOV R2,#8RE01: CLR CCLR DATAINNOPSETB DATAINMOV R3,#9RE10:DJNZ R3,RE10MOV C,DATAINMOV R3,#23RE20:DJNZ R3,RE20RRC ADJNZ R2,RE01MOV R1,ADEC R1DJNZ R4,RE00RET;调用读指令子程序完毕CVTTMP: MOV A,TMPH;调用温度转换子程序,十六进制转换为BCD码MOV R0,AANL A,#80HJZ TMPC11MOV A,TMPLCPL AADD A,#1MOV TMPL,AMOV A,TMPHCPL AADDC A,#0MOV TMPH,ATMPC11:MOV A,TMPL ANL A,#0FHMOV DPTR,#TMPTAB MOVC A,A+DPTR MOV 70H,AMOV A,TMPLANL A,#0F0H SWAP AMOV TMPL,AMOV A,TMPHANL A,#0FHSWAP AORL A,TMPLH2BCD: MOV B,#100 DIV ABMOV 73H,AB2BCD1:MOV A,#10 XCH A,BDIV ABMOV 72H,AMOV 71H,BMOV A,R0;调整指令,调整负号,空格ANL A,#80HJZ ZHENGMOV A,72HJNZ DIS0MOV 73H,#0AHMOV 72H,#0BHSJMP DISBCD1DIS0:MOV 73H,#0BHSJMP DISBCD1ZHENG: MOV A,73HCJNE A,#00H,DISBCD1MOV 73H,#0AHMOV A,72HCJNE A,#00H,DISBCD1MOV 72H,#0AHDISBCD1:RET;温度转换子程序完毕TMPTAB:DB 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 DISP1:MOV R1,#70H;显示子程序开始(共阴极)MOV R5,#0FEHPLAY: MOV P1,#00HMOV A,R5MOV P2,AMOV A,R1MOV DPTR ,#TABMOVC A,A+DPTRMOV P1,AMOV A,R5ACC.1,L00P1SETB P1.7;第二位小数点保留,其他位清掉L00P1: LCALL DL1MSINC R1MOV A,R5JNB ACC.3,ENDOUTRL AMOV R5,ASJMP PLAYENDOUT: MOV P1,#00HMOV P2, #0FFHRET;显示子程序完毕TAB: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FH,00H,40H DL1MS: MOV R6,#14H;延时子程序DL1: MOV R7,#100DJNZ R7,$DJNZ R6,DL1RETEND。