DSB温度检测仪表数码管显示
基于msp430单片机和DS18B20使用数码管显示的温度测量_毕业设计(论文) 精品

毕业设计论文基于msp430单片机和DS18B20使数码管显示的温度测量摘要:为了在现实生活和工业生产及过程控制中准确测量温度,设计了一种基于低功耗MSP430单片机的数字温度计,整个系统通过单片机MSP430F149控制DS18B20读取温度,采用数码管显示,温度传感器DS18B20与单片机之间通过串口进行数据传输,MSP430系列单片机具有超低功耗,且外围的整合性高,DS18B20只需一个端口即可实现数据通信,连接方便,通过多次实验证明,该系统的测试结果与实际环境温度一致,除了具有接口电路简单,测量精度高,误差小,可靠性高等特点外,其成本低,功耗低的特点使其拥有更广阔的应用前景。
关键字:温度测量MSP430单片机温度传感器DS18B20 超低功耗Abstract: in order to accurately measure the temperature in real life and industrial production and process control, a digital thermometer was designed with low power consumption based on MSP430 single chip microcomputer, the control system of DS18B20 read the temperature through the single-chip MSP430F149, the use of digital tube display, temperature sensor DS18B20 and single chip microcomputer for data transmission through the serial port, MSP430 Series MCU with low power consumption the periphery,and high integration, DS18B20 only needs one port to realize the data communication, the connection is convenient, through many experiments, the test results of the system and the actual environment temperature is the same, except with the interface circuit is simple, high precision, small error, high reliability, low cost, low power consumption it has a wider application prospect.图表1 Keywords: temperature measurement MSP430 temperature sensor DS18B20 ultra low2 power consumption目录一.温度测量器的总体设计 (3)二.温度测量器的硬件选择 (4)1 主控器件:MSP430F149 (4)2 温度信息采集单元:DS18B20 (5)2.1 DS18B20 (5)2.2 DS18B20管脚排列 (6)3.显示单元:数码管及其驱动 (7)3.1 数码管 (7)3.2 驱动芯片:74HC573 (7)三. 系统软件程序 (8)1、系统的程序流图 (8)2.处理DS18B20的子程序 (9)2、1 初始化时序 (10)2、2 写时序 (12)2、3 读时序 (14)3、温度计算子程序 (16)4、处理数码管显示的子程序 (19)四、系统调试 (20)1、硬件检测和调试 (20)2、软件程序调试 (22)3、整体调试 (22)五、结论分析 (23)参考文献: (24)附录一: (24)附录二: (24)附录三: (31)一.温度测量器的总体设计生活中最常见的应该是利用物体的热胀冷缩测温度,比如家里用的温度计、体温计等等,这种很好做但是精密程度不够,反正生活中用的也不需要那么精密。
使用DSB温传感器设计温控制系统设计

使用DS18B20温度传感器设计温度控制系统设计设计说明:1.1使用DS18B20温度传感器设计温度控制系统1. 在数码管上可显示采集到的温度(0~999C)2. 当温度低于27C 时,蜂鸣器开始以慢地“滴”声报警,P1.0 口发光二极管闪 烁,当温度继续降低并低于25 C 时,蜂鸣器开始以快地“滴”声报警, P1.0和 P1.1 口发光二极管闪烁。
3. 当温度高于30C 时,蜂鸣器开始以慢地“滴”声报警,P1.2 口发光二极管闪 烁,当温度继续升高并高于32 C 时,蜂鸣器开始以快地“滴”声报警,P1.2和 P1.3 口发光二极管闪烁。
1.2元件说明:(1)使用的元器件(2)DS18B20器件说明DS18B20:电压范围3.0~5.5V ;温度可测范围-55~+125C ;可编程分辨率 为9~12位,对应的可分辨温度为:0.5C 、0.25C 、0.125C 和0.0625C ;测量 结果直接输出数字温度信号,以“一线总线”串行传送给 CPU ,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力。
其引脚定义图如下图:(3)硬件连接图也3沟pniLAlii•IWNPD.UBI I■-ru配A帕rdJnfeTrmizurz.iA«irzj.s.inrziPAiiFS^AIZPZfAl] i煜 3 bl?7/AiCPJ1lTB:fcFJJfipTHJfrianp*!PJSifTlFl^wKF37INRi±J±l隹円X-.KHZI L-INC 1 :1吐B'lMTiriff*1Pd? IQ.-EE1R1硬件连接图如上图:1.3工作原理首先看控制原理:经过温度转数字信号,再AT89C52 控制9声器的工作,DS18B20的指令,只列举此设计用到的,如下表:CCH 跳过ROM44H 温度转换BEH 读暂存器DS18B20测量外部温度,换,将温度物理量转换成传送数据到AT89C52,数码管显示及二极管、扬从而实现了温度在数码管上显示,还有温度范围的亮灯与报警1.4 C语言编程见附录1.5实验结果可将环境温度经过DS18B20温度传感器,在数码管上显示,显示准确附录#include<reg51.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit ds=P2A2。
单片机与DSB的数字温度计设计方案6

信息与通信工程学院课程设计项目:基于单片机的DS18B20数字温度计设计指导老师:湛腾西设计人:尹世强彭娇礼班级:电实11-1BF2018年 06月 18 日1 设计要求1.1 基本要求1、测量精度0.5℃2、范围:-50℃-110℃3、可测多点温度,演示两点以上4、LED直读显示5、可任意设计温度报警的上限与下限6、可上传通信<RS232口),也可以相互对通(485口>1.2 扩展功能温度报警,能任意设定温度范围实现声光报警;每隔10分钟记录一次温度数据,至少能查询过去10个时刻的温度情况。
2元器件清单3 总体方案设计2.1 方案论证2.1.1 方案一由于本设计是测温电路,可以使用热敏电阻之类的器件,将随被测温度变化的电压或电流采样,进行A/D转换后就可以用单片机进行数据处理,实现温度显示。
这种设计需要用到A/D转换电路,增大了电路的复杂性,而且要做到高精度也比较困难。
2.1.2 方案二考虑到在单片机属于数字系统,容易想到数字温度传感器,可选用DS18B20数字温度传感器,此传感器为单总线数字温度传感器,起体积小、构成的系统结构简单,它可直接将温度转化成串行数字信号给单片机处理,即可实现温度显示。
另外DS18B20具有3引脚的小体积封装,测温范围为-55~+125摄氏度,测温分辨率可达0.0625摄氏度,其测量范围与精度都能符合设计要求。
以上两种方案相比较,第二种方案的电路、软件设计更简单,此方案设计的系统在功耗、测量精度、范围等方面都能很好地达到要求,故本设计采用方案二。
图1 系统总体方框图2.2 总体设计框图本方案设计的系统由单片机系统、数字温度传感器、LED显示模块、按键控制模块、温度报警模块组成,其总体架构如图1。
3 硬件设计3.1 单片机系统1.本设计采用STC89C52单片机作为控制器,完成所有功能的控制,包括:●DS18B20数字温度传感器的初始化和读取温度值●LED数码管显示驱动与控制●按键识别和响应控制●温度设置和报警●温度值的存储和读取2.单片机系统电路原理图:图2 单片机系统原理图4.1 数字温度传感器模块4.1.1 DS18B20性能●独特的单线接口仅需一个端口引脚进行通信●简单的多点分布应用●无需外部器件●可通过数据线供电●零待机功耗●测温范围-55~+125℃,以0.5℃递增●可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃●温度数字量转换时间200ms,12位分辨率时最多在750ms内把温度转换为数字●应用包括温度控制、工业系统、消费品、温度计和任何热感测系统●负压特性:电源极性接反时,传感器不会因发热而烧毁,但不能正常工作4.1.2 DS18B20外形及引脚说明图3DS18B20外形及引脚●GND:地●DQ:单线运用的数据输入/输出引脚●VD:可选的电源引脚4.1.3 DS18B20接线原理图单总线通常要求接一个约 4.7K左右的上拉电阻,这样,当总线空闲时,其状态为高电平。
温度测温检测系统(数码管显示)

温度测温检测系统(数码管显⽰)福建学院课程设计课程名称:《智能仪器》题⽬:温度测温检测系统(数码管显⽰)专业班次:姓名:学号:指导教师:学期:2011-2012学年第2学期⽇期:2012.3⽬录⽬录1. 引⾔ (1)1.1本设计意义 (1)1.2本设计任务和主要内容 (1)2. 硬件设计 (1)2.1系统组成框图 (2)2.2最⼩系统 (3)2.3温度传感器及路 (4)2.4 A/D选型及电路 (6)2.5 数码管显⽰ (8)3. 软件设计 (9)3.1 ADC0832软件计 (9)3.2数码管动态运动的原理 (10)3.3 主程序设计 (12)3.4 调试结果 (13)4. 设计⼩结 (13)参考⽂献 (13)附录:课程设计程序清单 (14)1. 引⾔1.1 本设计意义温度是⼀种最基本的环境参数,⽇常⽣活和⼯业⽣产中都需要温度测控技术。
特别是在冶⾦、化⼯、建材、机械、⾷品、⽯油等各类⼯业中,⼈们都需要对各类加热炉、热处理炉和锅炉中的温度进⾏检测和控制。
由于⼯艺不同,所需要的温度⾼低不同,⽽所采⽤的测温元件和测温⽅法也不同,加热⽅式和燃料的异同也影响控制温度的精度和控制⽅案也不同。
⽽采⽤单⽚机进⾏温度控制,具有精度⾼、电路设计简单、控制效果好等优点,这不仅仅提⾼⽣产⼒,还给企业带来更多福利,⼤⼤促进科技时代发展。
如今,给予社会不断进步,⼈们⽣活质量也随之提⾼,单⽚机技术⼗分成熟了,它的集成度较⾼,功能性较强,储存量⼤,速度较快,抗⼲扰性能强和指令丰富等优点,应⽤在各个领域。
本⽂设计的就是应⽤单⽚机来实现温度控制系统。
这次我们运⽤的是STC89C52的单⽚机,本系统是⼀种⾼精度、测控速度快、测控温度范围⼴的应⽤性⽐较强的基于单⽚机的温度测控系统。
综上所述,本设计以基于STC89C52的温度测量设计(数码管显⽰),该设计适⽤于⼈们的⽇常⽣活及⼯农业⽣产中⽤于温度的检测及控制1.2 本设计任务和主要内容本设计根据设计任务要求,通过STC89C52单⽚机与ADC0832温度传感器和数码管显⽰的通讯,⽤STC89C52的并⾏⼝P0接数码管,P3.4,、P3.5、P3.6分别接CS、CLK、D0,然后⽤C语⾔进⾏编程,⽤ADC0832测量温度,数码管来显⽰温度,从⽽实现⼈机互通。
单片机和DSB的数字温度计设计方案

题目:基于89C51和DS18B20的数字温度计设计一、设计要求数字式温度计要求测温范围为—55〜125°C,精度误差在0.1 °以内,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位的数字值读数方式。
DS18B20温度检测仪表(数码管显示)doc资料

目录第1章绪论 (1)1.1 选题目的 (1)1.2 设计要求 (1)第2章电路结构及工作原理 (2)2.1 电路方框图 (2)2.1.1 电路图 (2)2.1.2 系统流程 (3)2.2芯片介绍 (5)2.2.1 DS18B20 (5)2.2.1.1 DS18B20的工作原理 (5)2.2.1.2 DS18B20的使用方法 (6)2.2.2 AT89C51 (8)2.2.2.1 AT89C51简介 (8)第3章整机工作原理 (10)第4章系统调试与分析 (12)4.1 系统的调试 (12)4.2系统的分析 (12)结论 (13)收获和体会 (14)致谢 (15)参考文献 (16)附录一元件清单 (17)课程设计任务书年月日第1章绪论1.1 选题目的随着人们生活水平的不断提高,单片机技术已经普及到我们生活,工作,科研等各个领域。
单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本文利用单片机结合传感器技术开发设计,把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,设置上下报警温度,当温度不在设置范围内是,可以报警。
同时51单片机在现代电子产品中广泛应用以及其技术已经非常成熟,DS18B20可以直接读出被测温度值,而且采用一线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
1.2 设计要求(1)设计题目和设计指标测量温度范围为0-100℃。
并通过数码管显示(2)设计功能利用DS18B20实现温度采集,并用数码管显示第2章 电路结构及工作原理2.1 电路方框图图2-1 电路方框图2.1.1 电路图2.1.2 系统流程图2-3 读DS18B20的子程序图2-4 读转换温度子程序2.2芯片介绍2.2.1 DS18B202.2.1.1 DS18B20的工作原理当DS18B20接收到温度转换命令后,开始启动转换。
单片机及DSB温度传感器的数字温度计设计方案

基于51单片机及DS18B20温度传感器的数字温度计设计摘要本设计采用的主控芯片是ATMEL公司的AT89S52单片机,数字温度传感器是DALLAS公司的DS18B20。
本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。
所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。
单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。
51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。
本次设计采用的AT89S52是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。
本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。
本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。
本设计属于一种多功能温度计,温度测量范围是-55℃到125℃。
温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。
本设计的显示模块是用四位一体的数码管动态扫描显示实现的。
在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。
关键词:单片机、数字温度计、DS18B20、AT89S52目录1 概述- 1 -1.1系统概述- 1 -2 系统总体方案及硬件设计- 2 -2.1 系统总体方案- 2 -2.1.1系统总体设计框图- 2 -2.1.2各模块简介- 2 -2.2 系统硬件设计- 5 -2.2.1 单片机电路设计- 5 -2.2.2 DS18B20温度传感器电路设计- 6 -2.2.3 显示电路设计- 6 -2.2.4 按键电路设计- 7 -2.2.5 报警电路设计- 8 -3 软件设计- 9 -3.1 DS18B20程序设计- 9 -3.1.1 DS18B20传感器操作流程- 9 -3.1.2 DS18B20传感器的指令表- 9 -3.1.3 DS18B20传感器的初始化时序- 10 -3.1.4 DS18B20传感器的读写时序- 10 -3.1.5 DS18B20获取温度程序流程图- 11 -3.2 显示程序设计- 12 -3.3 按键程序设计- 13 -4实物制作及调试- 14 -5电子综合设计体会- 15 -参考文献- 15 -附1 源程序代码- 17 -附2 系统原理图- 32 -1 概述1.1系统概述本系统所设计的数字温度计采用的是DS18B20数字温度传感器测温,DS18B20直接输出的就是数字信号,与传统的温度计相比,具有读数方便,测温范围广,测温准确,上下限报警功能。
DSB的原理与应用

DALLAS18B20DQar-J ■:匚 B i.Nl ■ i fl二l NC ZZl MC 二 NCS-Piii ^L SGP CDSI&B20U)3 DS18B20的原理与应用单片机系统除了可以对电信号进行测量外,还可以通过外接传感器对温度信号进行测 量。
传统的温度检测大多以热敏电阻为传感器,但热敏电阻可靠性差、 测量的温度不够准确,且必须经专门的接口电路转成数字信号后才能被单片机处理。
DS18B20是一种集成数字温度传感器,采用单总线与单片机连接即可实现温度的测量。
本节内容在先介绍 DS18B20的工作原理、时序和指令后,然后设计完成一个数字温度计。
温度计功能要求采用数码管显示温度,小数点后2位有效数字,实际温度高于某个值时用蜂鸣器报警。
3.1 DS18B20工作原理DS18B20是美国DALLAS 半导体公司推出的第一片支持 一线总线”接口的温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易配微处理器等优点,可直接将温度 转化成串行数字信号供单片机处理,可实现温度的精度测量与控制。
DS18B20性能特点见表3-1-1所示。
表3-1-1 DS18B20性能指标 性能 参数备注电源 电压范围在3.0~ 5.5V ,在寄生电源方式下可由数据线供电测温范围 -55 °C - +125 在-10 °C 〜+85 C 时精度为 ±).5 °C分辨率 9〜12 位,分别有 0.5C, 0.25C, 0.125C 和 0.0625C 编程控制转换速度 在9位时,小于 93.75ms ; 12位分辨率时,小于750ms总线连接点理论248,实际视延时、距离和干扰限制,最多几十个、封装外形根据应用领域不同, DS18B20有常见有TO-92、SOP8等封装外形,见图 3-1-1所示, 表3-1-2给出了 TO-92封装的引脚功能,其中DQ 引脚是该传感器的数据输入 /输出端(I/O ), 该引脚为漏极开路输出,常态下呈高电平。
DS18B20测量温度液晶1602显示

DS18B20测量温度液晶1602显示DS18B20温度传感器简介DS18B20是一种数字温度传感器。
它输出的是数字信号,同时具有体积小,硬件资源耗费少,抗干扰能力强,精度高等特点。
DS18B20温度传感器特点1、单线接口:DS18B20仅需一条线可实现与微处理器双向通信。
2、测温范围: DS18B20温度传感器的测温范围可达-55℃~+125℃,在-10℃到+85℃范围内误差为±0.4°。
3、支持多点组网功能:多个DS18B20温度传感器可以并联在一条数据线上,最多可以并联8个,实现多点测温。
4、工作电源: 3.0~5.5V/DC ,DS18B20温度传感器可以采用外部独立电源供电,也可以用数据线寄生电源供电。
5、DS18B20温度传感器在应用过程中不需要任何外围元件。
6、DS18B20测量温度的结果以9~12位数字量方式串行传送。
7、掉电保护功能, DS18B20温度传感器内部含有 EEPROM ,通过配置寄存器可以设定数字转换精度和报警温度。
在DS18B20温度传感器掉电以后仍可保存分辨率及报警温度的设定值。
8、DS18B20温度传感器返回16位二进制数代表此刻探测的温度值,其高五位代表正负。
如果高五位全部为1,则代表返回的温度值为负值。
如果高五位全部为0,则代表返回的温度值为正值。
后面的11位数据代表温度的绝对值,将其转换为十进制数值之后,再乘以0.0625即可获得此时的温度值。
DS18B20温度传感器引脚说明DS18B20温度传感器接口电路液晶1602接口电路DS18B20测量温度程序源代码/*****************DS18B20测量温度,用1602显示温度值******************* 单片机:51单片机* 开发环境:keil* 功能: DS18B20测量温度,并在LCD1602中显示出来**********************************************************************/#include <reg51.h>#define LCD_Data P0#define Busy 0x80#define uchar unsigned char#define uint unsigned intuchar code table0[] = {" SL-51A "};uchar code table1[] = {" TEMP: XX.X "};uchar temperature[5]; //温度值uint temp;sbit LCD_RS = P1^0;sbit LCD_RW = P1^1;sbit LCD_E = P2^5;sbit DS = P2^2;void Delay5Ms(void);void delay(uint count);void WriteDataLCD(unsigned char WDLCD);void WriteCommandLCD(unsigned char WCLCD,BuysC);unsigned char ReadDataLCD(void);unsigned char ReadStatusLCD(void);void LCDInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData); void Info_display(void);void dsreset(void);bit tmpreadbit(void);uchar tmpread(void);void tmpwritebyte(uchar dat);void tmpchange(void);uint tmp();void delay(uint count){uint i;while(count){i=200;while(i>0)i--;count--;}}void dsreset(void) //发复位命令{uint i;DS=0;i=103;while(i>0)i--;DS=1;i=4;while(i>0)i--;}bit tmpreadbit(void) //读取一位{uint i;bit dat;DS=0;i++;DS=1;i++;i++;dat=DS;i=8;while(i>0)i--;return (dat);}uchar tmpread(void) //读取一个字节{uchar i,j,dat;dat=0;for(i=1;i<=8;i++){j=tmpreadbit();dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面 }return(dat);}void tmpwritebyte(uchar dat) //向ds18b20写入一个字节{uint i;uchar j;bit testb;for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){DS=0;i++;i++;DS=1;i=8;while(i>0)i--;}else{DS=0;i=8;while(i>0)i--;DS=1;i++;i++;}}}void tmpchange(void) //DS18B20开始转换{dsreset();delay(1);tmpwritebyte(0xcc); //命令的含义可以查18b20的手册 tmpwritebyte(0x44);}uint tmp() //获取温度值{float tt;uchar a,b;dsreset();delay(1);tmpwritebyte(0xcc);tmpwritebyte(0xbe);a=tmpread();b=tmpread();temp=b;temp<<=8;temp=temp|a;tt=temp*0.0625;temp=tt*10+0.5;return temp;}/*************************5ms延时函数***************************/void Delay5Ms(void){unsigned int TempCyc = 3552;while(TempCyc--);}/**************************写数据函数***************************/void WriteDataLCD(unsigned char WDLCD){ReadStatusLCD(); //检测忙LCD_Data = WDLCD;LCD_E = 0; //若晶振速度太高可以在这后加小的延时 LCD_E = 0; //延时LCD_RS = 1;LCD_RW = 0;LCD_E = 1;LCD_E = 0;}/*************************写指令函数****************************/void WriteCommandLCD(unsigned char WCLCD,BuysC) //BuysC为0时忽略忙检测{if (BuysC) ReadStatusLCD(); //根据需要检测忙LCD_Data = WCLCD;LCD_E = 0;LCD_E = 0;LCD_RS = 0;LCD_RW = 0;LCD_E = 1;LCD_E = 0;}/**************************读状态函数***************************/unsigned char ReadStatusLCD(void){LCD_Data = 0xFF;LCD_RS = 0;LCD_RW = 1;LCD_E = 0;LCD_E = 0;LCD_E = 1;while (LCD_Data & Busy); //检测忙信号return(LCD_Data);}/***************************LCD初始化***************************/void LCDInit(void) //LCD初始化{LCD_Data = 0;WriteCommandLCD(0x38,0); //三次显示模式设置,不检测忙信号Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,0);Delay5Ms();WriteCommandLCD(0x38,1); //显示模式设置, 开始要求每次检测忙信号WriteCommandLCD(0x08,1); //关闭显示WriteCommandLCD(0x01,1); //显示清屏WriteCommandLCD(0x06,1); //显示光标移动设置WriteCommandLCD(0x0C,1); //显示开及光标设置}/**********************按指定位置显示一个字符*********************/void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData){Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;X |= 0x80; //算出指令码WriteCommandLCD(X, 0); //这里不检测忙信号,发送地址码WriteDataLCD(DData);}/***********************按指定位置显示一串字符********************/void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData) {unsigned char ListLength;ListLength = 0;Y &= 0x1;X &= 0xF; //限制X不能大于15,Y不能大于1while (DData[ListLength]>=0x20) //若到达字串尾则退出{if (X <= 0xF) //X坐标应小于0xF{DisplayOneChar(X, Y, DData[ListLength]);//显示单个字符ListLength++;X++;}}}/*****************************************************************/ void temp_display(unsigned int temp) //显示程序{unsigned char A1,A2,A2t,A3;A1=temp/100; //百位A2t=temp%100;A2=A2t/10; //十位A3=A2t%10; //个位temperature[1]=A1 + 0x30;temperature[2]=A2 + 0x30;temperature[3]=A3 + 0x30;DisplayOneChar(9,1,temperature[1]);DisplayOneChar(10,1,temperature[2]);DisplayOneChar(12,1,temperature[3]);}/******************************************************************/ void init(){LCDInit();DisplayListChar(0,0,table0);DisplayListChar(0,1,table1);}void main(){int i;init();while(1){tmpchange();for(i=0;i<=10;i++){if(i==10){temp_display(tmp());}}}}。
DS18B20温度传感器测温通过数码管显示(上传)

DS18B20温度传感器测温通过数码管显示(详尽版)/*-----------------------------------------------名称:DS18B20温度传感器数码管显示编写:JR日期:2017.12修改:无内容:利用DS18B20温度传感器测量温度-40~+100℃,通过数码管显示单片机开发板使用“金容电子(https:///item.htm?id=544540401703)”开发的JR51单片机开发板。
------------------------------------------------*/#include<reg52.h>#include<stdio.h>#include<intrins.h>#include"delayus.h"#define uchar unsigned char#define uint unsigned intsbit DQ=P2^2; //温度传感器信号线sbit dula=P2^6; //数码管段选线sbit wela=P2^7; //数码管位选线sbit beep=P2^3; //数码管位选线uint temper;uchar a1,a2,a3,a4,a5,n;uint aaa,num;uint warn_l=3000; //低温-40℃报警,测试温度乘以100uint warn_h=10000; //高温100℃报警,测试温度乘以100float ttt;void disp(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5);const uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//不带小数点0-9编码const uchar table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef}; //带小数点0-9编码uchar data temp_data[2]={0x00,0x00}; //读出温度暂放void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/*******************************************************************18B20复位初始化函数1、将数据线拉高到12、延时2us(该时间要求不是很严格,但是要尽可能短一点)3、将数据线拉低到04、延时750us(该时间范围可以在480~960us)5、将数据线拉高到16、延时等待(70us),如果初始化成功则在15~60us内产生一个由18B20返回的低电平0,据该状态可以确定它的存在。
DS18B20温度测试程序(51单片机数码管显示)+电路图

DS18B20温度测试程序(51单片机数码管显示)+电路图•下面是电路图采用4位数码管显示程序一共有2个文件:/****************************************************************************** *****************************************ds18b20.h 头文件******************************************************************************* ****************************************/#ifndef _DS18B20_H_#define _DS18B20_H_#include <reg51.h>#define led P1#define ledw P2extern unsigned char f;extern void ds18b20_reset();extern void dela(unsigned char i);extern void ds18b20_write(unsigned char dat);extern unsigned char ds18b20_read();extern unsigned char ds18b20_temp();extern unsigned char ledtab[];#endif/****************************************************************************** **************************************ds18b20.c 文件******************************************************************************* *************************************/#include"ds18b20.h"#define uchar unsigned char#define uint unsigned int#define led P1#define ledw P2uchar ledtab[]={0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};sbit dq=P3^7 ;uchar delay,f;//uchar f;void dela(uchar i) //5us t=5+i*2{while(--i);}void ds18b20_reset(){while(1){dq=1;dq=0;delay=250; //540us延时,当delay=1时延时为2us ,T=2*xwhile(--delay);dq=1;delay=25;while(--delay);while(dq==0){delay=220;while(--delay);if(dq==1)break;}delay=150;while(--delay);break;}}void ds18b20_write(uchar dat) {uchar i=0;for(i=0;i<8;i++){dq=1;dq=0;delay=3;while(--delay);dq=dat&0x01;delay=35;while(--delay);dq=1;dat=dat>>1;}}uchar ds18b20_read(){uchar i=0,m=0;for(i=0;i<8;i++){//m>>=1dq=1;dq=0;delay=4;while(--delay);dq=1;delay=4;while(--delay);if(dq==1)m|=0x01<<i;//m=m|0x80;delay=25;while(--delay);dq=1;delay=1;while(--delay);}return m;}uchar ds18b20_temp(){uchar temp=0,temph=0,templ=0,k=0; ds18b20_reset();ds18b20_write(0xcc);ds18b20_write(0x44);ds18b20_reset();ds18b20_write(0xcc);ds18b20_write(0xbe);templ=ds18b20_read();temph=ds18b20_read();if((temph&0xf80)!=0){f=1;templ=~templ;temph=~temph;k=templ+1;templ=k;if(templ>0xff){temph++;}}elsef=0;templ=templ>>4;temph=temph<<4;temp=templ|temph;return temp;}/****************************************************************************** ************************************main.c 主文件******************************************************************************* ************************************/#include<reg51.h>#include"ds18b20.h"#define uchar unsigned charvoid main(){uchar a=0,b=0,c=0,temp=0;while(1){temp=ds18b20_temp();a=temp/100;b=temp0/10;c=temp;if(f==1){led=0xbf;ledw=1;dela(5000);ledw=0;dela(600);}led=ledtab[c]; ledw=8;dela(5000); ledw=0;dela(600) ;led=ledtab[b]; ledw=4;dela(5000); ledw=0;dela(600) ;led=ledtab[a]; ledw=2;dela(5000);ledw=0;dela(600) ; }}。
用LED数码管和DSB设计的温度显示器

单片机课程设计说明书用LED数码管和DS18B20设计的温度显示器目录1.概述 (2)1.1课题研究背景和意义 (2)1.2课题设计内容 (2)2.课程方案设计 (3)2.1系统总体设计要求 (3)2.2系统模块结构论证 (3)2.2.1方案一 (3)2.2.2方案二 (3)3.系统硬件设计 (6)3.1总体设计 (6)3.2单片机最小运行系统 (6)3.3温度传感器(DS18B20)电路 (7)3.3.1 DS18B20基本介绍 (7)3.3.2 DS18B20控制方法 (7)3.3.3 DS18B20供电方式 (8)3.4七段数码管显示电路 (8)3.5驱动电路 (9)4.系统软件设计 (9)4.1程序结构分析 (9)4.2系统程序流图 (10)5.软硬件联调 (13)5.1软硬件调试中出现的问题及解决措施 (13)5.2实物图 (13)5.3调试结果 (13)结束语 (14)参考文献 (15)附录 (16)附录1:基于单片机的温度显示系统设计原理图 (17)附录2:基于单片机的温度显示系统设计PCB图 (18)附录3:proteus仿真图 (19)附录4:基于单片机的温度显示系统设计C语言程序清单 (20)附录5: 基于单片机的温度显示系统设计元器件目录表 (24)1.概述1.1课题研究背景和意义温度控制是工业自动控制的重要组成部分,在工业、电子、化工精度实验等诸多领域都有重要的应用,而温度测量又是温度控制当中重要的一环。
将现场温度控制在一定范围内,是在各种实际应用的重要保证和前提。
因此温度控制系统在工业控制领域中十分重要。
由于现代工艺越来越多的需要对实时温度进行监测和控制,而且需要的精度越来越高。
所以温度控制系统国内外许多有关人员的重视,得到了十分广泛的应用。
温度控制系统发展迅速,而且成果显著。
由于单片微处理器的性能日益提高、价格又不断降低,使其性能价格比的优势非常明显。
“用LED数码管和DS18B20设计的温度显示器”课程设计,主要设计以一个单片机为控制核心的温度自动测量系统,本课题的研究意义如下:(1)它是一个单片机系统,对它的设计和制作可以灵活运用在单片机课程中所学的知识,并使之得到巩固和提高。
DSB温度数据采集系统

目录摘要 (2)一、绪论 (3)二、系统方案实现 (3)2.1.设计要求 (3)2.2.设计方案论证 (3)2.3.总体设计框图 (4)三、主要硬件介绍 (4)3. 1. DS18B20 (4)3.1.1 DS18B20的主要特性 (4)3.1.2 DS18B20的外形和内部构造 (5)3.1.3 DS18B20工作原理 (6)3.1.4 高速暂存存储器 (7)3.2 AT89C51 (8)四、软件介绍 (9)4.1 功能概述 (9)4.2 系统软件流程图 (9)程序 (9)读出温度子程序 (10)温度转换命令子程序 (11)具体程序 (11)五、总结 (17)六、设计体会及今后的改良意见 (17)参考文献 (18)摘要本文基于DS18B20设计了一种温度数据采集系统,系统主要由AT89C51单片机,一个DS18B20 数字温度传感器以及一个液晶数码管构成。
软件方面,我们采用keil。
软件对程序进展编写以及调试,硬件方面,我们通过Proteus软件对硬件电路进展仿真以及测试,该系统构造简单,功耗较低,测温范围为- 50℃~ + 255℃。
现场温度直接以"一线总线"的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量。
该系统硬件分为3局部:DS18B20 温度测量模块、单片机模块、显示模块。
关键词:DS18B20、7SEG-MPX4液晶数码管、AT89C51一、绪论在工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。
其中,温度控制也越来越重要。
在工业生产的很多领域中,人们都需要对各类加热炉、热处理炉、反响炉和锅炉中的温度进展检测和控制。
采用单片机对温度进展控制不仅具有控制方便、简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而大大提高产品的质量和数量。
因此,单片机对温度的控制问题是工业生产中经常会遇到的控制问题。
目前应用的温度检测系统大多采用由模拟温度传感器、多路模拟开关、A/D转换器及单片机等组成的传输系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第1章绪论 (1)1.1 选题目的 (1)1.2 设计要求 (1)第2章电路结构及工作原理 (2)2.1 电路方框图 (2)2.1.1 电路图 (2)2.1.2 系统流程 (3)2.2芯片介绍 (5)2.2.1 DS18B20 (5)2.2.1.1 DS18B20的工作原理 (5)2.2.1.2 DS18B20的使用方法 (6)2.2.2 AT89C51 (8)2.2.2.1 AT89C51简介 (8)第3章整机工作原理 (10)第4章系统调试与分析 (12)4.1 系统的调试 (12)4.2系统的分析 (12)结论 (13)收获和体会 (14)致谢 (15)参考文献 (16)附录一元件清单 (17)课程设计任务书年月日第1章绪论1.1 选题目的随着人们生活水平的不断提高,单片机技术已经普及到我们生活,工作,科研等各个领域。
单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本文利用单片机结合传感器技术开发设计,把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,设置上下报警温度,当温度不在设置范围内是,可以报警。
同时51单片机在现代电子产品中广泛应用以及其技术已经非常成熟,DS18B20可以直接读出被测温度值,而且采用一线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。
1.2 设计要求(1)设计题目和设计指标测量温度范围为0-100℃。
并通过数码管显示(2)设计功能利用DS18B20实现温度采集,并用数码管显示第2章 电路结构及工作原理2.1 电路方框图图2-1 电路方框图2.1.1 电路图2.1.2 系统流程图2-3 读DS18B20的子程序图2-4 读转换温度子程序2.2芯片介绍2.2.1 DS18B202.2.1.1 DS18B20的工作原理当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 ℃/LSB形式表示。
温度值格式如表2-1所示。
表2-1 温度值格式MSB LSBMSBLSB这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
图中,S表示位。
对应的温度计算:当符号位S=0时,表示测得的温度植为正值,直接将二进制位转换为十进制;当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,—25.0625℃的数字输出为FF6FH,—55℃的数字输出为FC90H。
DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625℃/LSB形式表示。
表2-2是部分温度值对应的二进制温度表示数据。
表2-2 部分温度值温度二进制表示十六进制表示+125 07D0H+25.0625 0191H+0.5 0008H0 0000H-0.5 FFF8H -25.0625 FE6FH -55 FC90H2.2.1.2 DS18B20的使用方法由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20的初始化(1)先将数据线置高电平“1”(2)延时(该时间要求的不是很严格,但是尽可能的短一点)(3)数据线拉到低电平“0”。
(4)延时750微秒(该时间的时间范围可以从480到960微秒)。
(5)数据线拉到高电平“1”。
(6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。
据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。
(7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。
(8)将数据线再次拉高到高电平“1”后结束。
DS18B20的写操作(1)数据线先置低电平“0”。
(2)延时确定的时间为15微秒。
(3)按从低位到高位的顺序发送字节(一次只发送一位)。
(4)延时时间为45微秒。
(5)将数据线拉到高电平。
(6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。
(7)最后将数据线拉高。
DS18B20的读操作(1)将数据线拉高“1”。
(2)延时2微秒。
(3)将数据线拉低“0”。
(4)延时3微秒。
(5)将数据线拉高“1”。
(6)延时5微秒。
(7)读数据线的状态得到1个状态位,并进行数据处理。
(8)延时60微秒。
2.2.2 AT89C512.2.2.1 AT89C51简介AT89S51美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K BytesISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。
单片机AT89S51强大的功能可为许多嵌入式控制应用系统提供高性价比的解决方案。
2.2.2.2 AT89C5功能AT89S51提供以下标准功能:40个引脚、4K Bytes Flash片内程序存储器、128 Bytes的随机存取数据存储器(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编程定时/计数器、2个全双工串行通信口、看门狗(WDT)电路、片内振荡器及时钟电路。
此外,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲模式,CPU暂停工作,而RAM、定时/计数器、串行通信口、外中断系统可继续工作。
掉电模式冻结振荡器而保存RAM 的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
第3章整机工作原理当DS18B20接收到温度转换命令后,开始启动转换。
转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0.062 5 ℃/LSB形式表示。
温度值格式如下:对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。
表2是对应的一部分温度值。
DS18B20完成温度转换后,就把测得的温度值与TH,TL作比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。
因此,可用多只DS18B20同时测量温度并进行告警搜索。
(4) CRC的产生在64 b ROM的最高有效字节中存储有循环冗余校验码(CRC)。
主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。
DS18B20的测温原理所示,图中低温度系数晶振的振荡频率受温度的影响很小[1],用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量。
计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 ℃所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 ℃所对应的一个基数值。
减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
第4章系统调试与分析4.1 系统的调试根据DS18调试显示程序的开始,接线后显85.0,更改DS18B20的温度现实,数码管就会现实相应的温度,温度上下限为-15—128。
4.2系统的分析(1)B20 的通讯协议,主机控制DS18B20 完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20 进行复位,复位成功后发送一条ROM 指令,最后发送RAM 指令,这样才能对DS18B20 进行预定的操作。
复位要求主CPU 将数据线下拉500 微秒,然后释放,DS18B20 收到信号后等待16~60 微秒左右,后发出60~240 微秒的存在低脉冲,主CPU 收到此信号表示复位成功。
(2)动态显示方式,在某一瞬时显示一位,依次循环扫描,轮流显示,由于人的视觉滞留效应,人们看到的是多位同时稳定显示结论随着通信技术的不断发展,无线技术越来越多地走进人们的生活和工作中。
采用传统的数据传输信道即通过有线连接传输采集的数据,已经不能满足数据采集与传输的需要,无线数据传输显示出巨大的优势,应用前景十分光明。
收获和体会为期3周的课程设计已经接近尾声,在完成设计的同时,我还在不断的学习新知识和巩固已有的知识。
事实上,我们所学的课本上的知识在实际应用中与理论还有所差别,不可能解决遇到的所有问题,我们只能借助一切可利用的资源,询问老师,与同学探讨,上网查找资料等方式,尽量解决问题。