数字温度计课程设计
- 格式:doc
- 大小:1.54 MB
- 文档页数:39
数字温度计DS18B20课程设计报告1. 课程设计背景数字温度计是一款可以测量温度并输出数字信号的电子设备。
它具有高精度、可编程、低功耗等优点,因此在很多领域都有广泛应用,比如环境温度监测、工业控制、食品加工等。
DS18B20是一款数字温度传感器,它以数字方式输出采集到的温度值,精度高达±0.5℃,提供了多种通信协议,应用灵活。
在本次课程设计中,我们将学习如何使用DS18B20来制作一款数字温度计。
2. 课程设计目标在本次课程设计中,我们的目标是:1.学习数字温度计的工作原理和基本构成;2.掌握DS18B20的使用方法和通信原理;3.制作一款数字温度计,并进行温度测量和数据传输。
3. 课程设计内容3.1 数字温度计的工作原理数字温度计的工作原理是利用温度传感器采集温度信息,然后通过模数转换器(ADC)将模拟信号转换成数字信号,并且通过数字信号处理单元进行处理,并显示在屏幕上。
温度传感器一般分为两种类型,即模拟温度传感器和数字温度传感器。
3.2 DS18B20的使用方法和通信原理DS18B20可以通过多种通信协议与主控板进行通信,如1-wire协议、I2C协议等。
1-wire协议是一种仅使用单个总线的串行协议,利用单总线实现数据传输。
3.3 制作数字温度计我们可以通过编程语言来控制DS18B20进行温度采集,并用LCD屏幕显示温度值。
首先要准备所需的材料和工具,包括Arduino开发板、DS18B20传感器、LCD显示屏、杜邦线、面包板等。
具体步骤如下:•连接DS18B20传感器•连接LCD显示屏•编写程序4. 课程设计成果经过学习和实际操作,我们可以掌握数字温度计的工作原理和基本构成,以及DS18B20的使用方法和通信原理。
同时,我们可以独立制作一款数字温度计,在温度测量和数据传输方面有了实际经验。
这些知识和技能对于我们学习和研究电子技术都非常有帮助。
5.通过本次课程设计,我们学习了数字温度计的工作原理和基本构成,以及DS18B20的使用方法和通信原理。
课程设计报告书---数字温度计一、选题背景本实验课题是基于AT89C51单片机设计一个温度范围为-20-80℃,分辨率<±0.5℃的数字温度计。
设计实验中,考虑到A/D转换以及放大电路等各种因素,我组采用DS18B20温度传感器,在数码管显示方面,我们采用了LCD1602数码管。
DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。
DS18B20测温原理如图1所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
LCD1602的8根数据线和3根控制线E,RS和R/W与单片机相连后即可正常工作。
一般应用中只须往LCD1602中写入命令和数据,因此,可将LCD1602的R/W读/写选择控制端直接接地,这样可节省1根数据线。
VO引脚是液晶对比度调试端,通常连接一个10kΩ的电位器即可实现对比度的调整;也可采用将一个适当大小的电阻从该引脚接地的方法进行调整,不过电阻的大小应通过调试决定.LCD1602的引脚图见下图2.图1.DS18B20原理图图2.LCD1602引脚图二、方案论证(设计理念)DS18B20温度传感器具有体积小,硬件开销低,抗干扰能力强,精度高的特点,同时,它也具有耐磨耐碰,体积小,使用方便,封装形式多样的特点。
实验要求用到A/D转换,DS18B20正好对应的就是数字信号输出。
因为我们需要显示的内容并不是很多,所以我们决定使用LCD1602显示屏,它是2行每16字符/行的显示屏,规划第一行显示温度,第二行显示温度是否超过阈值。
LCD1602的使用也非常简单方便。
整体来说该实验并不是很复杂,所以我们用到的程序以及设备也不会很麻烦,构思起来也比较清晰。
三、过程论述我们首先着力的是Keil程序编写,主要程序见图3。
摘要本设计是单片机控制的数字温度计,随着时代的进步和发展,单片机技术已经普及到我们生活,学校,工作,科研等各个领域,已经成为一种比较成熟,要求越来越高,需求越来越迫切的技术,由于世界经济的快速发展,经济竞争已经成为各国经济实力和综合国力的竞争,所以单片机已成为衡量一个国家科学技术发展水平的重要标志之一。
又因为温度计在实际生产和人们的生活中都有广泛应用,为此我选择了设计一个数字温度计。
本文将介绍一种基于单片机控制的数字温度计,本温度计属于多功能温度计,基本范围-50℃~110℃,精度误差小于0. 5℃,LED数码直读显示可以设置上下报警温度,当温度不在设置范围内时,可以报警。
本设计以STC89C52单片机为核心,DS18B20数字式温度传感器为温度传感器,74HC573锁存器及数码管构成显示电路。
单片机控制DS18B20进行温度采集,在接收到DS18B20传回数据后进行处理,通过74HC573锁存器及数码管显示实时温度的动态显示。
由于采用的是可编程器件作为控制核心,与传统的温度计相比该温度计具有示数直观,精度可调,功能易扩展等优点。
关键词:数字温度计,单片机,DS18B20目录1 前言 (3)1.1 设计概述 (3)2 总体方案设计 (4)2.1 方案选择 (4)3 单元模块设计 (5)3.1 各单元模块功能介绍及电路设计 (5)3.2 电路参数的计算及元器件的选择 (7)3.3 各单元模块的联接 (9)4 软件设计 (10)4.1 主要软件设计流程 (10)4.2 原理图的绘制与仿真 (10)4.3 单片机程序的调试与编译 (11)5 系统调试 (14)5.1 系统单片机程序的调试 (14)5.2 系统电路的调试 (14)6 系统功能、指标参数 (15)6.1 系统能实现的功能 (15)6.2 系统功能及指标参数分析 (15)7 总结与体会 (16)8 参考文献 (16)附录1:数字温度计的电路原理图附录2:DS18B20测温子程序1前言随着“信息时代”的到来,作为获取信息的手段——传感器技术得到了显著的进步,其应用领域越来越广泛,对其要求越来越高,需求越来越迫切。
基于单片机数字温度计课程设计
基于单片机的数字温度计课程设计是一个非常有趣和实用的项目。
首先,我们需要选择合适的单片机,比如常用的Arduino或者STM32等。
然后,我们需要选择合适的温度传感器,比如LM35或者DS18B20等。
接下来,我们可以按照以下步骤进行课程设计:
1. 硬件设计,首先,我们需要将单片机和温度传感器连接起来,这涉及到电路设计和焊接。
我们需要确保电路连接正确,传感器能
够准确地读取温度,并且单片机能够正确地接收并处理传感器的数据。
2. 软件设计,接下来,我们需要编写单片机的程序,以便能够
读取传感器的数据,并将其转换为数字温度值。
我们可以使用C语
言或者Arduino的编程语言来实现这一步骤。
在程序设计中,需要
考虑到温度的单位转换、数据的精度等问题。
3. 显示设计,我们可以选择合适的显示设备来展示温度数值,
比如数码管、液晶显示屏或者OLED屏幕等。
在设计中,我们需要考
虑到显示的清晰度、易读性以及节能等因素。
4. 功能扩展,除了基本的温度显示功能,我们还可以考虑对数
字温度计进行功能扩展,比如添加报警功能、数据存储功能或者远
程监控功能等,这些功能的添加可以提升数字温度计的实用性和趣
味性。
5. 测试与优化,最后,我们需要对设计的数字温度计进行测试,并不断优化,确保其稳定可靠、准确无误地显示温度。
总的来说,基于单片机的数字温度计课程设计涉及到硬件设计、软件设计、显示设计、功能扩展、测试与优化等多个方面,学生可
以通过这样的课程设计项目,全面提升自己的电子设计和编程能力,同时也能够实现一个实用的数字温度计产品。
1 综述温度计的测量和控制之间的关系:检测是控制的基础和前提,而检测的精度必须高于控制的精确度,否则无从实现控制的精度要求。
不仅如此,检测还涉及国计民生各个部门,可以说在所以科学技术领域无时不在进行检测。
科学技术的发展和检测技术的发展是密切相关的。
现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。
同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的前提手段。
目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。
目前的温度计中传感器是它的重要组成部分,它的精度灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。
传感器应用极其广泛,目前已经研制出多种新型传感器。
但是,作为应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。
2 设计方案2.1 设计方案一:温度计电路总体设计方框图如下图所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用三位LED数码管一串口传送数据实现温度显示。
主控制器单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要俩个口能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。
显示电路显示电路采用三位共阳LED数码管,从P3口RXD,TXD串口输出段码。
温度传感器DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9—12位的数字值读数方式。
图2-1 总设计方框图2.2 设计方案二由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A\D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。
数字温度计设计课程设计范本
设计题目:数字温度计设计
设计目的:通过设计数字温度计,学习数字电路设计基础知识,掌握数字温度计的设计方法和实现过程。
设计要求:
1.温度测量范围:-40℃ ~ 120℃;
2.温度分辨率:0.1℃;
3.显示方式:7段LED数码管显示,至少显示4位数字,其中小
数点占据一位;
4.温度传感器:使用DS18B20数字温度传感器;
5.显示方式:采用共阴极数码管,使用74HC595锁存器进行驱动,
使用AT89C51单片机进行控制;
6.设计过程:包括硬件设计和软件设计两个部分,其中硬件设计
包括电路原理图设计和PCB板设计,软件设计包括单片机程序
设计和烧录。
设计步骤:
1.硬件设计
1)根据DS18B20数字温度传感器的特性,设计传感器电路,包括电源电路和传感器接口电路。
2)根据温度范围和分辨率要求,设计ADC电路,将传感器输出的模拟信号转换为数字信号。
3)设计数码管驱动电路,使用74HC595锁存器进行驱动。
4)设计单片机接口电路,将数字信号传输到单片机,实现温度数据的处理和显示。
5)根据硬件设计结果,绘制电路原理图和PCB板图。
2.软件设计
1)根据硬件设计结果,编写单片机程序,实现温度数据的读取、处理和显示。
2)使用Keil C51软件进行编程和调试。
3)将程序烧录到单片机中。
4)进行系统测试和调试,确保数字温度计的正常工作。
设计结果:
1.电路原理图和PCB板图。
2.单片机程序。
3.数字温度计实物。
数字温度计课程设计1 设计课题任务、功能要求说明及总体方案介绍1.1 设计任务设计一个具有特定功能的数字温度计。
1.2 功能要求说明该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。
1.3 总体方案介绍及工作原理说明1.3.1 总体方案介绍利用单片机AT89S52单片机作为本系统的中控模块。
单片机可把DS18B20读来的数据利用软件来进行处理,从而把数据传输到数码管显示模块,实现温度显示。
数码管显示模块为主要的显示模块,把单片机传来的数据显示出来,。
在显示电路中,主要靠按键来实现各种显示要求的选择与切换。
1.3.2 工作原理说明利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。
同时处理后的数据送到LED中显示。
本课题以是AT89S52单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。
系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。
系统框图如图1所示。
AT89S52按键输入电路时钟电路、复位电路报警电路驱动电路显示电路测温电路拓展口图1 系统基本方框图2 硬件系统的设计2.1 硬件系统各模块功能简要介绍该数字温度计主要由单片机最小系统、独立式键盘模块、LED显示电路模块、蜂鸣电路模块和DS18B20测温模块组成。
各模块的功能如下:(1)单片机最小系统由AT89S52单片机、时钟电路和复位电路构成。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。
数字温度计一、设计任务用中小规模集成芯片设计并制作一数字式温度计,即用数字显示被测温度。
具体要求如下:1、测量范围0~200度。
2、测量精度0.1度。
3、4位LED数码管显示。
4、温度超过40度报警。
二、总体设计1、原理图2、具体电路设计利用温度传感器采集周围的温度变化,产生电压,通过对采样得到的电压处理,传输到A/D转换器将模拟量转化成数字量,最后由LED显示器显示温度。
(1)温度传感器设计LM34具有很高的工作精度和较宽的线性工作范围,该器件输出电压与摄氏温度成线性比例关系,并且无需外部校准,可以提供±1/4℃的常用的室温精度。
很适合本次设计要求,以下是LM34芯片介绍1)工作电压:直流4~30V;2)工作电流:小于133μA3)输出电压:+6V~-1.0V4)输出阻抗:1mA 负载时0.1Ω;5)精度:0.5℃精度;6)比例因数:线性+10.0mV/℃; 7)非线性值:±1/4℃;8) 测温范围:-50~300℃ (2) 电压采样设计采用电阻分压原理,使得采集到的电压符合A/D 芯片的工作要求,并且要考虑到温度与电压成线性关系,用两个电阻进行分压使得输入A/D 电压为温度传感器的电压的1/10,输入A/D 芯片电压为图中A 、B 两点电压。
(3) A/D 转换设计TC7107是一种高性能、低功耗的三位半A\D 转换器,同时包含有七段译码器、显示驱动器、参考源和时钟系统。
直接驱动共阳极数码管显示。
以下是TC7107引脚图1)工作电压:±5V ; 2)供电电流:小于1.8mA 3)噪声:典型值15uV 4)输入端漏电流:小于10pA 5)模拟公共端电压:2.7~3.35V功能介绍1端:V+ =5V ,电源正端。
26端:V- =﹣5V ,电源负端。
19端:AB4,千位数笔段驱动输出端,由于213位的计数满量程显示为“1999”,所以AB4输出端应接千位数显示器显示“1”字的b 和c 笔段。
数字温度计课程设计一、引言本文档旨在设计一门名为“数字温度计”的课程,旨在教授学生如何设计并制作一个简单的数字温度计。
通过这门课程,学生将了解温度的概念、温度测量的原理,并通过实践操作来设计、制作和调试一个数字温度计原型。
二、课程大纲1. 课程简介在本节课中,我们将介绍本门课程的内容、目标和教学方法。
2. 温度的概念和单位这一节课中,我们将学习温度的基本概念,温度的不同单位以及它们之间的转换关系。
3. 温度测量的原理在本节课中,我们将讲解温度测量的一些基本原理,包括使用热敏电阻、红外线传感器和半导体温度传感器等。
4. 温度传感器的选择和使用这节课我们将学习如何选择合适的温度传感器,并了解它们的使用方法和注意事项。
5. 数字温度计的设计与制作在本节课中,我们将介绍数字温度计的基本原理和电路设计。
学生们将分组进行设计并制作一个数字温度计原型。
6. 数字温度计的调试和应用这节课中,学生需要将制作好的数字温度计原型进行调试,并学习如何将其应用到实际生活中。
7. 课程总结和展望在最后一节课中,我们将对整个课程进行总结,并展望学生们在将来可以进一步深入研究的方向。
三、教学方法本门课程采用以下教学方法:1.授课:教师将通过讲解的方式,将温度概念、温度测量原理等知识传达给学生。
2.实验:学生将参与到温度计设计与制作的实验中,通过实际操作来理解概念和原理。
3.小组讨论:学生将分组进行温度计设计的讨论和合作,提高团队合作和问题解决能力。
4.实际应用:学生将通过调试和应用数字温度计原型,加深对温度测量的理解和实践能力。
四、课程评估本门课程的评估主要分为以下几个方面:1.实验成果:学生根据实验设计制作的数字温度计原型的质量和完成情况。
2.调试和应用:学生能否成功调试数字温度计原型,并将其应用到实际生活中。
3.报告和展示:学生需要撰写相关实验报告,并进行课程展示,展示他们的学习成果和理解。
五、参考资料以下是一些参考资料,供学生们深入了解和学习:1.电子技术基础教程2.温度传感器原理与应用3.温度计原理与设计以上是对《数字温度计课程设计》的简要说明,希望这门课程能够为学生们提供实践操作和实际应用的机会,帮助他们更深入地理解温度测量的原理与方法,培养他们的实践能力和问题解决能力。
1 设计课题任务、功能要求说明及总体方案介绍1.1 设计任务设计一个具有特定功能的数字温度计。
1.2 功能要求说明该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。
1.3 总体方案介绍及工作原理说明1.3.1 总体方案介绍利用单片机AT89S52单片机作为本系统的中控模块。
单片机可把DS18B20读来的数据利用软件来进行处理,从而把数据传输到数码管显示模块,实现温度显示。
数码管显示模块为主要的显示模块,把单片机传来的数据显示出来,。
在显示电路中,主要靠按键来实现各种显示要求的选择与切换。
1.3.2 工作原理说明利用温度传感器DS18B20可以直接读取被测温度值,进行转换的特性,模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。
同时处理后的数据送到LED中显示。
本课题以是AT89S52单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。
系统框图主要由主控制器、单片机复位、报警按键设置、时钟振荡、LED显示、温度传感器组成。
系统框图如图1所示。
AT89S52按键输入电路时钟电路、复位电路报警电路驱动电路显示电路测温电路拓展口图1 系统基本方框图2 硬件系统的设计2.1 硬件系统各模块功能简要介绍该数字温度计主要由单片机最小系统、独立式键盘模块、LED显示电路模块、蜂鸣电路模块和DS18B20测温模块组成。
各模块的功能如下:(1)单片机最小系统由AT89S52单片机、时钟电路和复位电路构成。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
时钟电路由一个12MHz的石英晶体振荡器和两个33pF的的电容组成振荡电路和分频电路。
复位电路采用上电复位和按键复位结合的方式对电路进行复位,主要是通过RST引脚送入单片机。
单片机最小系统为整个电路的核心。
(2)独立式键盘模块采用独立式键盘接法,共有8个按键来对电路进行控制。
分别通过上拉电阻接在单片机的P1口线上。
其中S1~S5在本电路中完成各项功能。
(3) LED显示电路模块采用两个四位一体共阳型数码管显示器进行显示。
由于位控线的驱动电流较大,因此在P2口线上接了8个PNP型三极管提高驱动能力;在单片机的P1口线和P2口线上接了16个470Ω的电阻,这些电阻起限流的作用。
将段控口a--dp 接在P0.0--P0.7上,位控口接在P2口线上,实现对显示的控制。
LED显示电路模块主要用来显示温度及报警信息。
(4)蜂鸣电路模块单片机P3.1口线上接上一个1KΩ电阻然后再通过一个PNP型三极管与蜂鸣器相连接组成蜂鸣器电路,接入PNP型三极管是为了增强蜂鸣器的驱动电流。
蜂鸣电路主要完成超温报警功能。
(5) DS18B20测温模块单片机P3.0口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个4.7KΩ电阻来完成对总线的上拉。
2.2 温度传感器介绍DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EPROM 中,掉电后依然保存。
温度传感器DS18B20引脚如图2所示。
图2 DS18B20外部封装图引脚功能说明:NC :空引脚,悬空不使用;VDD :可选电源脚,电源电压范围3~5.5V。
当工作于寄生电源时,此引脚必须接地。
DQ :数据输入/输出脚。
漏极开路,常态下高电平。
GND :为电源地2.3 电路原理图、PCB图和元器件布局图Proteus原理图、PCB图以及元器件布局图分别见附录A、附录B与附录C。
2.4 元器件清单元器件清单见附录D。
3 软件系统的设计3.1 使用的单片机资源的情况本设计采用独立式键盘,键盘直接接在P1口上且按键的结果存贮在单片机的内部数据存储器里面。
用到的LED 显示器接到了单片机的P0口线上和P2口线上。
DS18B20和蜂鸣器接在P3口线上。
3.2 程序流程3.2.1 主程序流程图及功能说明主程序的主要功能是负责准备状态提示符“P.”显示,等待按键按下进入各键功能子程序完成各项功能,其程序流程见图3所示。
开始系统初始化RAM区20H单元后96个单元清零显示缓冲单元送“P.”字符代码调KEY键盘扫描子程序调显示子程序S1键是否按下?S3键是否按下?S2键是否按下?NNNYYY132图3 主程序流程图3.2.2 各键功能程序流程图及功能说明(1) S1键功能程序S1键功能程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,其程序流程见图4所示。
调读温度程序调数据处理程序1图4 S1键功能程序流程图(2) S2键功能程序S2键功能程序的主要功能是负责上限温度的设定的进入与退出,其程序流程见图5所示。
默认上限温度送报警温度存储单元显示默认上限温度调键盘扫描子程序是否为上电后第一次按下?S2键是否按下?S4键是否按下?S5键是否按下?当前设置数值送上限温度存储单元上限温度设置成功标志位置1NYNNNYYY23542图5 S2键功能程序流程图(3) S3键功能程序S3键功能程序的主要功能是负责下限温度的设定的进入与退出,其程序流程见图6所示。
默认下限温度送报警温度存储单元显示默认下限温度调键盘扫描子程序是否为上电后第一次按下?S3键是否按下?S4键是否按下?S5键是否按下?当前设置数值送下限温度存储单元下限温度设置成功标志位置1NYNNNYYY32543图6 S3键功能程序流程图(4) S4键功能程序S4键功能程序的主要功能是当前设定温度加1,其程序流程见图7所示。
4报警温度加1对报警温度进行数据处理更新显示缓冲区内容调显示子程序调KEY键盘扫描子程序调判键是否按下子程序图7 S4键功能程序流程图(5) S5键功能程序S5键功能程序的主要功能是当前设定温度减1,其程序流程见图8所示。
5报警温度减1对报警温度进行数据处理更新显示缓冲区内容调显示子程序调KEY键盘扫描子程序调判键是否按下子程序图8 S5键功能程序流程图3.2.3 部分子程序流程图及功能说明 (1) 显示数据子程序显示数据子程序主要功能是智能显示当前温度,其程序流程图如图9所示。
开始显示报警信息,温度的个位、小数部分十位数显示符号百位数不显示百位数显示数据(不显示符号)判断百位是否为0?判断十位是否为0?结束十位数显示数据,百位不显示数据NYNY图9 显示数据子程序流程图(2) 温度处理子程序温度处理子程序的主要功能是将RAM 中读取值进行BCD 码的转换运算,并进行温度值正负的判定以及判断是否超出限定温度,其程序流程图如图10所示。
开始提取温度小数部分存入TEMP_H提取温度整数部分存入TEMP_L提取温度符号部分调低温报警处理子程序判断是否为负对负温度数据进行数据处理符号显示存储单元送“-”字型代码对温度数据进行数据处理判断当前测得温度是否>上限温度?判断当前测得温度是否<下限温度?取字符代码送各数据显示存储单元结束高温报警处理子程序低温报警处理子程序NYYNNY图10 温度处理子程序流程图3.3 部分子程序程序清单及说明(1) DS18B20的复位子程序部分根据DS18B20的通信协议,每一次读写数据之前都要对DS18B20进行复位,复位要求主机先发出复位低脉冲(大于48us );然后释放,DS18B20收到信号后等待16~60us ,然后发出60~240us 的存在低脉冲,主机收到此信号表示复位成功。
其程序清单如下:RESET_PULSE: RESET: SETBDATA_BUSNOP CLR DATA_BUS ;主机发出延时537微秒的复位低脉冲MOVR7,#255SETB DATA_BUS ;然后拉高数据线MOV R7, #30DJNZ R7, $JNB DATA_BUS, SETB_FLAGCLR FLAGAJMP NEXTSETB_FLAG:SETB FLAGNEXT: MOV R7, #120DJNZ R7, $SETB DATA_BUSJNB FLAG, RESETRET(2) DS18B20的写入子程序部分当主机把数据从逻辑高电平拉到逻辑低电平的时候,写时间隙开始。
有两种写时间隙,写1 时间隙和写0 时间隙。
所有写时间隙必须最少持续60μs,包括两个写周期至少1μs 的恢复时间。
I/O线电平变低后,DS18B20 在一个15μs 到60μs 的窗口内对I/O 线采样。
如果线上事高电平,就是写1,如果是低电平,就是写0。
主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs 内允许数据线拉到高电平。
主机要生成一个写0 时间隙,必须把数据线拉到低电平并保存60μs。
每个读时隙都由主机发起,至少拉低总线1us,在主机发起读时序之后,单总线器件才开始在总线上发送0 或1。
所有读时序至少需要60us。
程序清单如下:WRITE: SETB DATA_BUSMOV R6, #8 ;一位共8位数据CLR C ;C=0WRITING:CLR DATA_BUS ;总线低位,开始写入MOV R7, #7DJNZ R7, $ ;保持16us以上RRC A ;把字节DATA分成8个位,循环给CMOV DATA_BUS, C ;写入一个位DJNZ R7, $ ;等待SETB DATA_BUS ;重新释放总线;NOPDJNZ R6, WRITINGSETB DATA_BUS ;重新释放总线;RET(3) DS18B20的读取子程序部分当从DS18B20 读数据时,主机生成读时间隙。
当主机把数据从高电平拉到低电平时,读时间隙开始,数据线必须保持至少1μs;从DS18B20输出的数据在读时间隙的下降沿出现后15μs 内有效。
因此,主机在读时间隙开始后必须把I/O 脚驱动拉为的电平保持15μs,以读取I/O 脚状态。
在读时间隙的结尾,I/O 引脚将被外部上拉电阻拉到高电平。
所有读时间隙必须最少60μs,包括两个读周期至少1μs的恢复时间。
READ: SETB DATA_BUSMOV R0, #TEMP_L ;低位存入TEMP_L,高位存入TEMP_HMOV R6, #8 ;数据一共有8位MOV R5, #2 ;读取两个字节的数字CLR CREADING:CLR DATA_BUS ;读前总线保持为低NOPNOPNOPSETB DATA_BUS ;开始读总线释放MOV R3, #9RE10:DJNZ R3, RE10 ;延时18usMOV C, DATA_BUS ;从总线读到一个位RRC A ;把读得的位值循环移给AMOV R7, #23DJNZ R7, $ ;等待50usDJNZ R6, READING ;读取下一位MOV @R0, AINC R0MOV R6, #8DJNZ R5, READINGRET3.4 程序清单见附录E。