DS18B20数字温度计的设计
- 格式:doc
- 大小:3.03 MB
- 文档页数:13
DS18B20数字温度计的设计摘要温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工业生产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温度的测量方法和控制具有重要的意义。
本论文介绍了一种以单片机为主要控制器件,以DS18B20为温度传感器的新型数字温度计。
主要包括硬件电路的设计和系统程序的设计。
硬件电路主要包括主控制器,测温控制电路和显示电路等,主控制器采用单片机AT8 9C52,温度传感器采用美国DALLAS半导体公司生产的DS18B20,显示电路采用8位共阴极LED数码管,ULN2803A为驱动的动态扫描直读显示。
测温控制电路由温度传感器和预置温度值比较报警电路组成,当实际测量温度值大于预置温度值时,发出报警信号,即发光二极管亮。
系统程序主要包括主程序,测温子程序和显示子程序等。
DS18B20新型单总线数字温度传感器是DALLAS 公司生产的单线数字温度传感器, 集温度测量和 A /D转换于一体,直接输出数字量,具有接口简单、精度高、抗干扰能力强、工作稳定可靠等特点。
由于采用了改进型智能温度传感器DS18B20作为检测元件,与传统的温度计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用的特点。
DS18B20温度计还可以在高温报警、远距离多点测温控制等方面进行应用开发,具有很好的发展前景。
此外,还介绍了系统的调试和性能分析。
关键词:显示电路,单片机,AT89C52,温度传感器,DS18B20 ,单总线IThe Design of DS18B20 Digit ThermometerABSTRACTTemperature is a basic parameters of the environment, people's lives a nd the environment are closely related to temperature. in the course of ind ustrial production immediate need for temperature measurement in industrial production has to do with temperature measurement, The study o f the temperature measurement and control is of great significance.The paper introduced one kind new digital thermo meter that take the Micro Controller Unit as the primary control component and take DS18B20 as the temperature sensor. Mainly included the design of the hardware electric circuit and the design of the system program .The hardware electric circuit mainly included the master controller, the temperature measured electric circuit and the display circuit and so on, the master contro ller used Micro Controller Unit AT89C52, the temperature sensor used DS18B20 which the American DALLAS semiconductor company produces, the disp lay circuit used 8 altogether anodes LED numerical code tube by the dynamic scanning method straight to read the demo nstration.ULN2803A-driven dynamic scan showed straight time. Temperature control circuit fro m temperature sensors and preset temperature value compared alarm circuit components, When measured temperature greater than preset temperature value, issued warning signal that the bright light emitting diodes. The system program mainly included the master routine, the temperature subroutine, the data renovates subroutine and so on. DS18B20 is a digital temperature sensor of single bus .It is producted by DALLAS cooperation . DS18B20 assemb les temperature measure and A /D converter, exports digital signal directly, operation easily, better precise, protecting disturb, running steably and so on.IIBecause used the advanced version intelligence temperature sensor DS18B20 as the examine part, compared with the traditio nal thermo meter, this d igital thermo meter reduced the exterior hardware electric circuit, has characteristic that the low cost and was easy to use. The DS18B20 therm ometer also may used to the high temperature warning, the long-distance ran ge multi- spots temperature measured aspect and so on temperature contro l carries on the applicatio n development, has the very good prospects for development. In addition, introduced the system debugging and the perform ance analysis.KEY WORDS:Disp lay Circuit, Microcontroller Unit , AT89C52,Temperature Sensor, DS18B20,1-WireIII目录前言 (1)第1章设计任务及方案分析 (2)§1.1 设计任务及要求 (2)§1.2 设计总体方案及方案论证 (2)§1.3 温度测量的方案与分析 (2)§1.3.1 芯片选择 (2)§1.3.2 实现方法简介 (3)§1.3.3 测温流程图 (3)第2章芯片功能简介 (4)§2.1 A T89C52的功能简介 (4)§2.1.1 A T89C52芯片简介 (4)§2.1.2 引脚功能说明 (4)§2.2 DS18B20的功能简介 (7)§2.2.1 芯片简介 (7)§2.2.2 DS18B20外形和内部结构 (8)§2.2.3 DS18B20的工作时序 (11)§2.2.4 DS18B20与单片机的典型接口设计 (12)§2.2.5 DS18B20的各个ROM命令 (13)第3章系统硬件电路的设计 (15)§3.1 主控制电路和测温控制电路原理图 (15)§3.2 驱动电路模块原理图 (16)§3.3 显示模块原理图 (17)第4章软件编程调试及性能分析 (18)§4.1 主程序流程图 (18)§4.2 主程序 (19)§4.3 温度子程序 (21)§4.3.1 DS18B20复位子程序 (22)IV§4.3.2 读DS18B20子程序 (23)§4.3.3 写DS18B20子程序 (25)§4.3.4 比较报警子程序 (26)§4.3.5 按键子程序 (27)§4.4 显示子程序 (27)§4.5 调试性能分析和注意事项 (29)§4.5.1 调试性能分析 (29)§4.5.2 DS18B20使用中的注意事项 (30)结论 (31)参考文献 (32)致谢 (33)附录 (34)V前言日常生活及工农业生产中经常要用到温度的检测及控制,在冶金、食品加工、化工等工业生产过程中,广泛使用的各种加热炉、热处理炉、反应炉等,都要求对温度进行严格控制。
基于DS18B20的温度测量系统设计概述:DS18B20是一种数字温度传感器,具有精确度高、稳定性好、尺寸小等特点。
本文将基于DS18B20设计一个温度测量系统,主要包括硬件设计和软件设计两部分内容。
硬件设计:1.传感器模块:DS18B20传感器模块包括一个温度传感器和一个数字转换芯片。
传感器模块通过串行总线与主控设备进行通信,并提供温度数据。
2.单片机:选择一种适合的单片机作为主控设备,负责与传感器模块通信,并实现相关功能。
3.显示模块:通过液晶显示屏或数码管等模块,将测量到的温度实时显示出来。
4.电源模块:为系统提供稳定的直流电源,使系统能够正常工作。
软件设计:1.通信协议:将单片机与传感器模块之间的通信协议设置为1-Wire协议,该协议简单易实现,并且可以同时连接多个传感器。
2.初始化:在系统启动时,初始化单片机与传感器模块之间的通信,并对传感器模块进行必要的设置,如分辨率、精确度等。
3.数据读取:通过1-Wire协议,单片机向传感器模块发送读取温度的指令,传感器模块将温度数据以数字形式返回给单片机。
4.数据处理:单片机接收到温度数据后,进行相应的数据处理,可以进行单位转换、滤波处理等。
5.数据显示:将处理后的温度数据通过显示模块实时显示出来。
系统应用:1.工业自动化:用于监测生产设备的温度,实现设备状态监控和预警功能。
2.室内温控:通过与空调系统或暖气系统的连接,实现室内温度的精确控制。
3.热管理:用于监测电子设备或电路板的温度,保证设备运行时的稳定性和散热效果。
总结:基于DS18B20的温度测量系统设计,通过选用合适的硬件模块和软件设计方案,可以实现精确、稳定的温度测量,并通过通信和显示模块实时反馈温度数据。
该系统具有应用广泛、性能可靠等优点,在工业自动化、室内温控、热管理等领域有着重要意义。
开题报告1 前言单片机技术的成熟与发展,为仓储管理自动化提供了强有力的技术支持。
但目前的仓储管理系统一般技术比较落后、性能较差且很不完备,人工干涉多,操作使用不方便,有的还故障率高而不实用。
随着社会信息交流的日益加强和信息量的集聚增加,仓储管理部门越来越需要一套低成本、高性能、方便使用的仓库监控管理系统。
要求它具有立即捕捉警情并提供警情发生地的有关信息,系统马上对警情做出反应,迅速通知相关部门,可能的话还可立即对警情发生地实施控制。
本温度自动报警系统可以广泛应用于温度需要实时监控的场合。
由单片机巡回监视温度信号,当温度超过一定门限值时出现报警信号(LED 数码管显示当前温度值和报警点,蜂鸣器发出报警信号)。
2方案设计2.1 功能描述本温度自动报警系统主要有以下功能:① 实时采集温度信号并显示② 单片机对温度信号能够实时监控③ 能够设置报警温度上下限④ 能够自动实现鸣叫报警2.2 系统组成本温度自动报警系统主要由四部分组成:主控模块,采集模块,显示模块和报警模块。
其中:主控模块实现巡回监视温度信号的功能,采集模块实现温度信号的采集,显示模块实现温度值和报警点的显示,报警模块实现报警的功能。
系统框图如下所示:2.4 芯片选择2.4.1 主控模块主控模块采用ATMEL 公司生产的AT89C51。
AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4K 的可反复擦写的FLASH 只读存储器和128 BYTES 的随机存取数据存储器,40个引脚,32个外部双向输入/输出(I/O )端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口。
AT89C51可以按照常规方法进行编程,也可以在线编程。
器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
DS18B20数字温度计的设计与实现一、实验目的1.了解DS18B20数字式温度传感器的工作原理。
2.利用DS18B20数字式温度传感器和微机实验平台实现数字温度计。
二、实验内容与要求采用数字式温度传感器为检测器件,进行单点温度检测。
用数码管直接显示温度值,微机系统作为数字温度计的控制系统。
1.基本要求:(1)检测的温度范围:0℃~100℃,检测分辨率 0.5℃。
(2)用4位数码管来显示温度值。
(3)超过警戒值(自己定义)要报警提示。
2.提高要求(1)扩展温度范围。
(2)增加检测点的个数,实现多点温度检测。
三、设计报告要求1.设计目的和内容2.总体设计3.硬件设计:原理图(接线图)及简要说明4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法)四、数字温度传感器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的地址序列号。
64位ROM 结构图如图2所示。
不同的器件地址序列号不同。
DS18B20的管脚排列如图1所示。
基于DS18B20室内数字温度计日常生活中人们需要测量各种各样的温度。
环境温度对工业、农业、商业都有很大的影响。
传统的测温仪测量费时,准确度也较低,数字温度计与传统的温度计相比,具有读数速度快,测温范围广,其输出温度采用数字显示,便于用户使用。
随着单片机技术的不断发展,单片机在日用电子产品中的应用越来越广泛,本设计所介绍的数字温度计使用单片机stc89C51,测温传感器使用DS18B20,用数码管实现温度显示,利用DS18B20和一片stc89C51单片机即可构成一个简洁但功能强大的低电压温度测量控制系统。
一、设计前言1.1 设计目的1.理论联系实际,单片机应用,尝试设计案例程序2.对主要元件功能有所了解3.学会用C语言编写程序4.培养设计项目程序流程图的思想5.掌握项目中所使用到的元器件的硬件原理,并用Proteus软件仿真,并用protell99se画PCB1.2设计内容1.所设计实验装置以MCS-51系列单片机为核心器件,组成一个数字式温度计。
2.所设计实验装置能够利用数码管直接显示出外界温度及温度变化。
3.所设计实验装置测试外界温度误差范围在±0.5℃之间。
4.手机充电器作稳压电源。
1.3设计要求1.独立设计原理图及相应的硬件电路。
2.独立焊接电路板并对电路板调试。
3.针对选择的设计题目,设计系统软件。
软件要做到:操作方便,实用性强,稳定可靠。
4.设计说明书格式规范,层次合理,重点突出。
并附上设计原理图、电路板图及相应的源程序。
二、设计方案2.1方案论证鉴于此设计题目,以下想到两种可能方案:方案一热敏电阻由于此设计是测温电路,所以想到使用热敏电阻,利用它的感温效应,在实验过程中记录在其温度变化时的电压或电流,进行A/D转换后,就可以用单片机进行数据处理,在显示电路上,就可以将被测温度显示出来。
方案二温度传感器此设计利用温度传感器,采用一只温度传感器DS18B20,控制器单片机AT89S51,用液晶显示器显示温度。
ds18b20程序设计傻瓜式讲解
DS18B20 是一款数字温度传感器,可以直接读出被测温度,并采用 9 位数字量串行输出。
下面是一个简单的 DS18B20 程序设计讲解:
1. 初始化
在 DS18B20 通信过程中,首先需要初始化数据线,即将其置为高电平。
在初始化时,需要持续至少 480 微秒的高电平。
2. 跳过 ROM
在 DS18B20 中,每个传感器都有一个唯一的 ROM 序列号,可以通过跳过ROM 操作来避免对 ROM 进行操作。
具体操作是先发出一个低电平,然后持续至少 60 微秒的高电平。
3. 发送命令
在跳过 ROM 后,需要向传感器发送命令。
常用的命令有温度转换命令和读取温度命令。
温度转换命令是 0x44,读取温度命令是 0xBE。
4. 读取数据
在发送命令后,需要等待传感器响应。
传感器响应的标志是数据线上的低电平。
在低电平持续约 60-240 微秒后,数据线将变为高电平,此时可以开始读取数据。
每次读取一位数据后,需要将数据线置为低电平,等待传感器响应。
5. 数据解析
DS18B20 的数据由 9 位数字量组成,其中最高位是符号位。
如果最高位为0,则表示温度为正数;如果最高位为 1,则表示温度为负数。
其余 8 位为温度值,可以通过一定的计算公式将其转换为实际温度值。
以上就是 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 数码管及必要的外围电路,构成了一个多功能单片机数字温度计。
基于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温度传感器时,我们通常需要编写相应的代码来读取传感器的数据并进行温度计算。
以下是基于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数字温度计课程设计一、实验目的1、了解ds18b20数字温度计的原理;2、掌握使用单总线、多总线的ds18b20数字温度计的读取方法;3、学会程序设计,编写读取ds18b20数字温度计的程序;二、实验内容1、ds18b20原理介绍和使用指南;2、单总线ds18b20的读取;3、多总线ds18b20的读取;4、ds18b20数字温度计的程序设计。
三、实验准备1、ds18b20数字温度计一个;2、STC89C52单片机一个;3、74HC00芯片一个;4、基础模块一个;5、阻值电阻一块;6、按键一个;7、LED一个;四、实验步骤1、了解ds18b20的原理(1)ds18b20原理介绍:ds18b20是一款以串行通信方式完成温度采集的高精度热敏电阻,具有自带的识别码,可以同时读取多个ds18b20,具有低功耗,精度高,测量范围广等优点。
(2)ds18b20使用指南:ds18b20使用一根数据线进行通信,将这根数据线接到单片机的数据口即可,用来接收和发送数据。
2、单总线ds18b20的读取(1)实验环境搭建:将ds18b20数字温度计接到单片机的数据口上,并将电阻接入,使电路有效;(2)实验程序编写:编写读取单总线ds18b20的程序,实现单总线ds18b20数字温度计的读取;3、多总线ds18b20的读取(1)实验环境搭建:将多个ds18b20数字温度计使用同一个总线接到单片机的数据口上,并将电阻接入,使电路有效;(2)实验程序编写:编写读取多总线ds18b20的程序,实现多总线ds18b20数字温度计的读取;4、ds18b20数字温度计的程序设计(1)实验环境搭建:将ds18b20数字温度计接到单片机的数据口上,并将电阻、按键、LED等电子元件接入,使电路有效;(2)实验程序编写:编写ds18b20数字温度计的程序,实现读取ds18b20数字温度计的功能,并将按键控制LED亮灭,根据温度读取值判断LED是否亮起。
湖南工程学院
课程设计
课程名称
课题名称
专业
班级
学号
姓名
指导教师
年月日
湖南工程学院
课程设计任务书
课程名称微机原理与接口技术
课题DS18B20数字温度计的设计
专业班级
学生姓名
学号
指导老师
审批
任务书下达日期年月日任务完成日期年月日
电气与信息工程系课程设计评分表
指导教师签名:________________
日期:________________
注:①表中标*号项目是硬件制作或软件编程类课题必填内容;
②此表装订在课程设计说明书的最后一页。
课程设计说明书装订顺序:封面、任务书、目录、正文、评分表、附件(非16K大小的图纸及程序清单)。
DS18B20数字温度计的设计--课程设计单片机原理及应用课程设计报告书题目:DS18B20数字温度计的设计姓名:学号:专业:电气工程及其自动化指导老师:设计时间:2010年 6 月电子与信息工程学院目录1.引言 (6)1.1.设计意义61.2.系统功能要求61.3.本组成员所做的工作62.方案设计 (7)3.硬件设计 (7)3.1.主控制器83.2.显示电路83.3.数字温度传感器DS18B2084.软件设计 (13)4.1.主程序134.2.读出温度子程序144.3.温度转换命令子程序154.4.计算温度子程序154.5.显示数据刷新子程序165.系统调试 (17)6.设计总结 (17)7.附录A;源程序 (18)8.附录B;作品实物图片 (28)9.参考文献 (28)DS18B20数字温度计的设计1.引言1.1.设计意义单片机原理及应用是自动化专业的专业实践课程。
本课程的任务是使学生通过“简易数字电压表的设计”的设计过程,综合所学课程,掌握目前自动化仪表的一般设计要求,工程设计方法,开发及设计工具的使用方法,通过这一设计实践过程,锻炼自己的动手能力和分析解决问题的能力;积累经验,培养一丝不苟的学习精神和对所学知识的综合应用能力。
1.2.系统功能要求采用数字式温度传感器为检测器件,进行单点温度检测。
用数码管直接显示温度值,微机系统作为数字温度计的控制系统。
1.基本要求:(1)检测的温度范围:0℃~100℃,检测分辨率 0.5℃。
(2)用4位数码管来显示温度值。
(3)超过警戒值(自己定义)要报警提示。
2.提高要求(1)扩展温度范围。
(2)增加检测点的个数,实现多点温度检测。
1.3.本组成员所做的工作XX :焊接实验总体电路板以及修改错误;XX :实验线路布局以及撰写实验报告;XX :调试与排除故障。
2.方案设计在日常生活及工农业生产中,经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。
DS18B20实验叶顺顺~电本092~200905014232一、实验目的1.了解DS18B20数字式温度传感器的工作原理。
2.利用DS18B20数字式温度传感器和微机实验平台实现数字温度计。
二、实验内容采用数字式温度传感器为检测器件,进行单点温度检测。
用数码管直接显示温度值,微机系统作为数字温度计的控制系统。
1.基本要求:(1)检测的温度范围:0℃~100℃,检测分辨率 0.5℃。
(2)用4位数码管来显示温度值。
(3)超过警戒值(自己定义)要报警提示。
2.提高要求(1)扩展温度范围。
(2)增加检测点的个数,实现多点温度检测。
三、实验过程原理图说明:P0 P2口接数码管,P1口接DS18B20跟3个发光二极管。
主程序框图: 初始化调用显示子程序1S 到?初次上电?读出温度值、温度计算处理、显示数据刷新发温度转换开始命令YNY N读出温度框图:发跳过ROM 命令9字节完?CRC 校验正确?移入温度暂存器YNYN发DS18B20复位命令读取操作,CRC 校验发读取温度命令结束温度转化框图:发跳过ROM 命令发DS18B20复位命令发温度转换开始命令结束计算温度框图:温度零下?温度值取补码置“—”标志YN 开始置“+”标志结束计算整数位温度BCD 码计算小数位温度BCD 码显示数据框图:十位数为0?百位数为0?十位显示符号百位不显示YYN温度数据移入显示寄存器百位显示数据(不显示符号)结束程序:#include<reg51.H>#include<absacc.H>#include <intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intuchar code TAB[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};uchar code TAB1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};sbit DQ=P1^0;void delay(uint i){while(i--);}void DelayMS(uint ms){uchar i;while(ms--) for(i=0;i<120;i++);}void display(int k)//数码管显示{P2=0x08;P0=TAB[k%10];DelayMS(5);P2=0x04;P0=TAB[k/10%10];DelayMS(5);P2=0x02;P0=TAB1[k/100%10];DelayMS(5);P2=0x01;P0=TAB[k/1000];DelayMS(5);}init_DS(void){uchar x=0;DQ=1;delay(8);DQ=0;delay(85);DQ=1;delay(14);x=DQ;delay(20);}Read(void){uchar i=0;uchar dat=0;for(i=8;i>0;i--){//DQ=1;//delay(1);DQ=0;dat>>=1;DQ=1;if(DQ)dat|=0x80;//读出数据放入高位,最后右移到低位delay(4);}return(dat);}write(uchar dat){uchar i=0;for(i=8;i>0;i--){DQ=0;DQ=dat&0x01;//从地位开始写入delay(5);DQ=1;dat>>=1;}delay(4) ;}Readtem(void){ uchar a=0;uchar b=0;uchar t=0,t1;init_DS();write(0xcc);//跳过读序列号操作write(0x44);//启动温度转换delay(125);init_DS();write(0xcc);write(0xbe);// 读温度寄存器a=Read();//读取温度低位LSBb=Read();//读取温度低位HSBt1=(a&0x0f)*0.0625;//取小数部分t=((b<<4)|(a>>4));//取整数部分if(t>128){t=~t+1;}t=t+t1;return(t);}void main(){float tp;while(1){tp=Readtem();tp=tp*100;//把二位数乘以100变成四位数display(tp);}}四、体会主要的难点是把DS18B20的数据读出来转化好。
ds18b20程序设计如何使用ds18b20编写程序设计。
DS18B20是一种数字温度传感器,它可以通过编程来读取环境温度信息。
本文将详细介绍如何使用DS18B20进行程序设计,以帮助读者了解如何在自己的项目中应用这款传感器。
第一步:准备工作在开始实际的程序设计之前,我们需要准备一些硬件和软件工具。
首先,我们需要一块支持DS18B20的硬件平台,例如Arduino、树莓派或其他微控制器。
其次,我们需要一块DS18B20传感器和一些杜邦线用于连接。
最后,我们需要一个编程环境,例如Arduino IDE或树莓派的Python开发环境。
第二步:连接硬件将DS18B20传感器与硬件平台连接起来是第二个关键步骤。
DS18B20传感器有三个引脚,其中一个是地线(GND),一个是电源(VCC),还有一个是数据线(DATA)。
将GND引脚连接到硬件平台的地线引脚,将VCC 引脚连接到硬件平台的电源引脚,将DATA引脚连接到硬件平台的数字引脚。
确保连接正确后,我们可以进入下一步。
第三步:配置硬件平台在编程之前,我们需要配置硬件平台,以便能够与DS18B20传感器进行通信。
具体配置的方式取决于使用的硬件平台。
在Arduino中,我们可以使用OneWire库来与DS18B20传感器进行通信。
在树莓派中,我们需要通过GPIO引脚来与传感器进行通信。
了解所使用硬件平台的配置方式是非常重要的。
第四步:编写程序一旦硬件平台配置完成,我们可以开始编写程序。
程序的目标是读取DS18B20传感器的温度数据并将其显示出来。
以下是使用Arduino IDE 编写的简单示例代码:#include <OneWire.h>#include <DallasTemperature.h>数据线引脚连接到Arduino的数字引脚2#define ONE_WIRE_BUS 2OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);void setup() {Serial.begin(9600);sensors.begin();}void loop() {sensors.requestTemperatures();float temperature = sensors.getTempCByIndex(0);Serial.print("Temperature: ");Serial.println(temperature);delay(1000);}上述代码首先引入了两个库:OneWire和DallasTemperature。
DS18B20数字温度计设计实验报告文档推荐本实验旨在设计并实现一款数字温度计,利用DS18B20数字温度传感器测量环境温度并通过LCD1602液晶屏幕实时显示温度值。
实验设计1.材料准备:Arduino UNO控制板LCD1602液晶显示屏面包板、面包线10K电阻2.配置DS18B20数字温度传感器将DS18B20数字温度传感器与Arduino UNO控制板连接。
按下面连接方式进行连接: DS18B20传感器的红色线连接到Arduino UNO的+5V输出端口接完线后在Arduino IDE软件中,依次点击工具-示例-DS18B20-Temperature-Resolution,打开示例程序。
将程序复制到新建文本文件中进行修改,此处我将分辨率改为了12位。
然后将程序上传到Arduino UNO控制板中。
LCD1602液晶显示屏的VO引脚连接到一个10K电位器的中间引脚LCD1602液晶显示屏的D4-D7引脚依次连接到Arduino UNO的数字4-7个针脚4.最终的连接方式将连接完DS18B20数字温度传感器和LCD1602液晶显示屏后的Arduino UNO控制板,和面包板和面包线通过另一个10K电阻连接,其中用到的端口引脚如下:Arduino UNO的5V端口连接了一个10K电阻,这个电阻的另一端通过面包线连接到面包板的一个面包网络面包板的另一个面包网络再通过面包线连接到LCD1602液晶显示屏的K端口最后将设备连接完整后,将实验代码上传到Arduino UNO控制板中,然后就可以通过LCD1602液晶显示屏上实时显示环境温度值。
实验总结通过本次实验,我们成功地实现了数字温度计,并能够通过LCD1602液晶显示屏上实时显示温度值。
实验中温度传感器和LCD显示屏的连接更加直观和清晰,容易理解,实验成功率较高。
通过此次实验,我们学习到了数字温度传感器的连接方式、温度检测方法和温度的精度和分辨率等基本知识,同时也熟悉了Arduino UNO控制板和LCD1602液晶显示屏的使用方法,提高了对物联网应用的理解和掌握,为后续学习打下坚实的基础。
单片机原理及应用课程设计报告书题目:DS18B20数字温度计的设计姓名学号:张琪********吕群武05200166蔡凌志05200178专业班级:电信1班指导老师:***设计时间:2010年12月成绩评定一、课题介绍本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器18B20,单片机AT89S52,,四位共阴极数码管一个,电容电阻若干。
18B20支持“一线总线”接口,测量温度范围-55°C~+125°C 。
在-10~+85°C 范围内,精度为±0.5°C 。
18B20的精度较差为± 2°C 。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
本次数字温度计的设计共分为五部分,主控制器,LED 显示部分,传感器部分,复位部分,时钟电路。
主控制器即单片机部分,用于存储程序和控制电路;LED 显示部分是指四位共阳极数码管,用来显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路。
测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。
本设计能完成的温度测量范围是-55°C~+128°C ,由于能力有限,不能实现报警功能。
二、方案论证方案一: 由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D 转换电路,感温电路比较麻烦。
方案设计框图如下:方案二:考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。
从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。
三、系统软硬件设计 1、硬件设计按照系统设计功能的要求,确定系统由3个模块组成:主控制器、测温电路和显示电路。
数字温度计总体电路结构框图所示:单片机的选择单片机AT89S52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
复位电路设计单片机系统的复位电路在这里采用的是上电+按钮复位电路形式,其中电阻R 采用Ω的阻值,电容采用电容值为10μ的电解电容。
电路图如下:温度显示电路四位共阳极数码管,能够显示小数和负温度。
零下时,第一个数码管显示负号。
当温度超过时,四个数码管全部亮。
列扫描用~口来实现,列驱动用9012三极管。
电路图如下:DS18B20AT89C52 主 控 制器显示电路 扫描驱动温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。
电路图如下:系统总电路图如下:2、软件设计主要包括主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等。
主程序主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量温度值。
温度测量每1S进行一次。
主流程图如下:调用显示程序初始化1s到N YYN 初次上电读出温度值温度计算处理显示数据刷新发温度转换开始命令读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。
在读出时须进行CRC校验,校验有错时不进行温度数据的改写。
流程图如下:温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。
当采用12位分辨率时,转换时间约为750ms。
在本程序设计中,采用1s显示程序延时法等待转换的完成。
流程图如下:计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。
显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位。
系统所运用的功能介绍:DS18B20与单片机之间采用串行通信的方式进行数据读写系统的调试及性能分析:硬件调试比较简单,首先检查电感的焊接是否正确,然后可用万用表测试或通电检测。
软件调试可以先编写显示程序并进行硬件的正确性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和现实数据刷新子程序等的编程及调试由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。
本程序采用单片机汇编或C语言编写用Keil C51编译器编程调试。
软件调试到能显示温度值,并且在有温度变化时显示温度能改变,就基本完成。
性能测试可用制作的温度机和已有的成品温度计同时进行测量比较。
由于DS18B20的精度很高,所以误差指标可以限制在0.5℃以内。
另外,-55~+125℃的测温范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持温度计。
四、课程设计体会本次的课程设计使我们进一步巩固了书本上的知识,做到了学以致用。
这是我们第二次自己动手设计的电路,通过系统仿真软件protues和编译软件keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,虽然经过自己的修改,但还是有很多功能不能实现,如温度上下限设置。
由于protues并不是很熟练,在使用的过程中有很多原件的名称不知道,从而花费了大量的时间在网上查找,今后应该在这方面多多努力。
最后一步的焊接硬件也遇到了不少麻烦,P0端口没有加上拉电阻,P1端口没有加电阻导致数码管不亮或者亮度不够。
总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。
其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。
附件:DS18B20温度计C程序//使用AT89C2051单片机,12MHZ晶振,用共阳LED数码管//P1口输出段码,P3口扫描//#pragma src(d:\#include ""#include "" //_nop_();延时函数用#define Disdata P1 //段码输出口#define discan P3 //扫描口#define uchar unsigned char#define uint unsigned intsbit DQ=P3^7; //温度输入口sbit DIN=P1^7; //LED小数点控制uint h;//*******温度小数部分用查表法**********//uchar codeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};uchar code dis_7[12]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf};/* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" "-" */ uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; // 列扫描控制字uchar data temp_data[2]={0x00,0x00}; // 读出温度暂放uchar data display[5]={0x00,0x00,0x00,0x00,0x00};//显示单元数据,共4个数据,一个运算暂存用/***********11微秒延时函数**********/void delay(uint t){for(;t>0;t--);}/***********显示扫描函数**********/scan(){char k;for(k=0;k<4;k++) //四位LED扫描控制{Disdata=dis_7[display[k]];if(k==1){DIN=0;}discan=scan_con[k];delay(90);discan=0xff;}}/***********18B20复位函数**********/ow_reset(void){char presence=1;while(presence){while(presence){DQ=1;_nop_();_nop_();DQ=0; //delay(50); // 550usDQ=1; //delay(6); // 66uspresence=DQ; // presence=0继续下一步}delay(45); //延时500uspresence = ~DQ;}DQ=1;}/**********18B20写命令函数*********///向 1-WIRE 总线上写一个字节void write_byte(uchar val){uchar i;for (i=8; i>0; i--) //{DQ=1;_nop_();_nop_();DQ = 0;_nop_();_nop_();_nop_();_nop_();_nop_();//5us DQ = val&0x01; //最低位移出delay(6); //66usval=val/2; //右移一位}DQ = 1;delay(1);}/*********18B20读1个字节函数********///从总线上读取一个字节uchar read_byte(void){uchar i;uchar value = 0;for (i=8;i>0;i--){DQ=1;_nop_();_nop_();value>>=1;DQ = 0; //_nop_();_nop_();_nop_();_nop_(); //4usDQ = 1;_nop_();_nop_();_nop_();_nop_(); //4usif(DQ)value|=0x80;delay(6); //66us}DQ=1;return(value);}/***********读出温度函数**********/read_temp(){ow_reset(); //总线复位write_byte(0xCC); // 发Skip ROM命令write_byte(0xBE); // 发读命令temp_data[0]=read_byte(); //温度低8位temp_data[1]=read_byte(); //温度高8位ow_reset();write_byte(0xCC); // Skip ROMwrite_byte(0x44); // 发转换命令}/***********温度数据处理函数**********/work_temp(){uchar n=0; //if(temp_data[1]>127){if(temp_data[0]!=0x00){temp_data[1]=(255-temp_data[1]);temp_data[0]=(256-temp_data[0]);n=1;}//负温度求补码else{temp_data[1]=(256-temp_data[1]);n=1;}//负温度求补码}display[4]=temp_data[0]&0x0f;display[0]=ditab[display[4]];display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);//display[3]=display[4]/100;display[1]=display[4]%100;display[2]=display[1]/10;display[1]=display[1]%10;if(!display[3]){display[3]=0x0A;if(!display[2]){display[2]=0x0A;}}//最高位为0时都不显示if(n){display[3]=0x0B;}//负温度时最高位显示"-"}/**************主函数****************/main(){Disdata=0xff; //初始化端口discan=0xff;for(h=0;h<4;h++){display[h]=8;}//开机显示8888ow_reset(); // 开机先转换一次write_byte(0xCC); // Skip ROMwrite_byte(0x44); // 发转换命令for(h=0;h<500;h++){scan();} //开机显示"8888"2秒while(1){read_temp(); //读出18B20温度数据work_temp(); //处理温度数据for(h=0;h<500;h++){scan();} //显示温度值2秒}}////*********************结束**************************//附:作品图。