第3课 听话的数字温度计

时间:2024.4.1

第3课 听话的数字温度计

【教学目标】

1.知识与技能

了解温度的概念,温度计的原理,认识温度传感器,了解其应用。

设计制作温度测量表格。

动手搭建创作出外形新颖、方便实用的温度计。

2.过程与方法

(1) 通过教师提出的问题,理解温度计的原理,了解温度传感器及其应用。

(2)连接电子模块,完成温度计的制作,设计制作温度测量表格。

(3)应用比特造型模块,创意设计出造型各异的温度计外形。

(4)围绕作品的创意,用途等方面进行说明和展示。

3. 情感态度与价值观

(1)温度计外形的设计,培养发散思维,提高创新能力,审美能力。

(2)通过模块的组建、拼装,培养动手能力。

(3)以小组为单位的学习过程,提高团队意识,培养人际交往和沟通能力。

(4)作品的描述展示,设计理念和功能说明,培养演讲演示能力,提高自

信心。

【教学重难点】

重点:发挥想象力和创造力,团队合作,设计温度计外形,组建模块,完成

温度计的制作。

难点:设计制作漂亮且实用的作品。

【教学资源】

PPT课件,图片,比特造型模块,比特电子模块。

【教学过程】

1. 话题导入,响指一声,顺利揭题

师:老师想知道教室现在的温度,你们有没有办法?

生答:可以使用温度计。

师:老师这里正好有一个温度计,请同学来帮我读一读。你能说完整吗?(学

生读出温度。师纠正其读出温度的完整性:一定要讲出多少摄氏度)

师:谢谢你,帮助顾老师解决了一个问题,那么你刚才读出的温度能代表我

们江阴的气温?可以代表今天一天的气温?

生答。

师:是啊,一般情况下,我们都是使用这样的温度计来测量温度的。而温度

计从古到今也经历了不同的发展历程。(屏显各个不同时期的温度计)。如今有越来越高级的温度计出现在我们的生活中。看!现在我请一位同学来给我们做个实验。(拍手或打个响指)看,有没有奇迹发生了?那么这个数据代表了什么?

生答。

师:我们只要一拍手、一打响指就可以显示教室内的温度,你们说它听话吗?

师:(揭题)今天就来学习制作听话的数字温度计(板书)

设计意图:开门见山的引入气温的话题,让同学们看温度计上读数来温故有

关温度的科学知识,响指一声知晓今天所要学习的知识:听话的数字温度计。其中我强调了温度表述的完整性,这种科学性的表述是一贯而之的。在揭题之前,渲染了“见证奇迹”的氛围,激起了学生的学习兴趣。

2. 认识各个电子模块,一个都不能少

师:为了更好地完成我们的数字温度计,让我们先来认识它,了解它吧。

师提问:数字温度计为什么能测量温度? 生答。

师:同学们都不知道,那么大家想知道吗?

师:(屏显数字温度计工作原理)请大家默读。在工作原理中出现了哪些重

要的物质?(课件中出现不同的颜色文字的电子元件,并且做好超链接,以便学生随机了解)

师:有温度传感器(板书):能够探测物体温度及其变化并转换成电信号的

电子器件。

师:温度传感器广泛应用于生活、生产领域中。如空调、冰箱、电热水器、

豆芽机等。

师:有热敏电阻(板书):一般属于半导体材料,是导电能力介于导体与绝缘体之间的物质。热敏电阻器的典型特点是对温度敏感,不同的温度下表现出不同的电阻值。

图1 热敏电阻

师:有一个麦克风模块(板书)。有了麦克风模块就可以?

生:听到声音了。

师:大家看,把这些模块组合在控制模块(板书)上就是一个听话的数字温度计!

第3课听话的数字温度计

图2 电路连接图

设计意图:本节课中所有的重要电子元件都在此环节中一一揭晓,这是学生相关认知从无到有的一个阶段,所以在此环节中通过学生思考,我来揭示工作原理,请学生找到其中重要的电子元件,并且随机抽取了解其各个电子元件,多样地呈现各个电子元件的工作原理,旨在让学生对数字温度计工作原理有所了解。

3. 小组成员齐动手,使用数字温度计

第3课听话的数字温度计

师:接下来请大家完成任务一:利用温度传感器、热敏电阻、麦克风模块、

控制模块制作数字温度计。

要求(屏显):(1)合理分工(超链接到“请大家小组合作完成做好分工:总设计师 电子模块组装工程师 功能调试工程”这个页面)

(2)互相合作

(3)测出室温

师:顾老师提出的第3点要求有没有什么要注意的?(测出的是教室内现在的温度,不能用手去摸,这样的话测出来的温度就是人体的体温,而非室温了。) 各小组汇报室温。(强调温度表述的完整性)

师小结:各个小组都能组合成功,也能够正常的使用。给自己一点掌声!虽然我们测出来的室温有所差异,但是这些误差是在合理范围内的。

设计意图:本环节强调学生团结合作,完成一个小小的任务,这里环节的设计看似简单,实则大有内容在,也是为下个环节作一个内容上的铺垫。明确测量的注意事项,明确实验内容,让学生很好的完成任务。

4. 拼装搭建,完善数字温度计的造型

师:为了使温度计更加美观,可以设计它的造型,(屏显各个不同造型)好看吗?

师:我们可以使用比特实验包来完成这次设计,我们学具中很多3D模块,可以帮助大家搭建出一个好的造型。(屏显各个材料)

师:看完了这些材料,大家想不想动手了呢?让我们发挥自己的想象力吧,并完成实验记录单。最后我们要投选出最佳设计奖!

再次屏显各个造型的数字温度计。(配上音乐)

设计意图:此环节是绝对放手给学生的,在了解比特实验包各个模块及使用方法之后,就是学生创造力、想象力发生碰撞的时候,由于有些学生可能是第一次操作,故我在屏幕上显示了一些作品的不同造型,但是没有花很多时间详说,就是不想框死了学生的思维,旨在让学生了解即可。

5. 作品展示

师:请大家根据实验记录单来展示我们的作品!

实验记录单 第__组

第3课听话的数字温度计

师:点评,师生互评出最佳设计奖

设计意图:围绕5W+1H的形式设计表格,从时间、地点、人物、缘由等方面出发,以此作为学生展示作品的文字说明。最后给每一小组同学展示的机会,说明自己的作品,让同学们通过自己动手创造出来的作品来获得别人的认可,是多么愉快的成功体验啊,也更进一步提升了同学们的团队精神。在此过程中,作品的描述展示,设计理念和功能说明,既培养了同学们的演讲、演示能力,又提高了同学们的自信心。

6. 课堂小结

师:通过这节课,我们收获了什么?

生答。

师:是啊,我们收获了许多,相信大家通过这节课的学习,我们对数字温度计有了进一步的了解,希望大家以后能够在生活中活用这些知识。

板书:听话的数字温度计

温度传感器

热敏电阻

麦克风模块

【教学反思】

信息技术课程的核心目标是根据小学生的认知水平和心理特点,着重培养学生对信息技术的兴趣,提高学生的信息素养。它使学生掌握基本的信息技术知识

和技能,形成个性化发展;使学生学会运用信息技术工具学习、交流、创造,形成解决实际问题的能力和终身学习的能力,遵守信息道德和法规,形成与信息社会相适应的价值观和责任感,为适应信息社会的学习、工作和生活打下必要的基础。根据这样的目标,在我理想中信息技术课堂:每一节课都是一个大舞台,我们都是一个导演,怎么使每个演员都能有个性的出场,使观众都能融入其中,并且能够收获一些,使每一节信息技术课都那么生动,令人意犹未尽。反思课堂,我总结如下:

1. 教材的剖析与重组

信息技术学习绝不是一个单独学习的科目,有很多知识都是融会贯通的。那么数字温度计的学习也是如此。我把科学中的温度知识迁移到数字温度计中,这样深入的剖析教材,才能使教材重组为我所用。这样的教材使学生学习起来才能更加“流畅”。

2. 创意的思维与团队合作相结合

就本节课来讲,虽然学生对数字温度计的知识是从无到有的,但是我充分调动学生的积极性,发挥学生的创造力、想象力,完成一个创意表现形式的变化,最后围绕5W+1H的形式设计表格,从时间、地点、人物、缘由等方面出发,以此作为学生展示作品的文字说明。给每一小组同学展示的机会,说明自己的作品,让同学们通过自己动手创造出来的作品来获得别人的认可,是多么愉快的成功体验啊,也更进一步提升了同学们的团队精神。在此过程中,作品的描述展示,设计理念和功能说明,既培养了同学们的演讲、演示能力,又提高了同学们的自信心。

3.细节的深入与研习

我通过有价值的发问,促进学生关注到操作中的一些细节,使学生自然突破了教学中的难点。各个操作步骤,学生演示,学生说,最后的个性化创作,也是关注了操作中的细节,这样动静搭配、说做并举,使课堂更有节奏感。我重视课堂中知识的科学性,一些温度的表述,听话数字温度计的工作原理等,都严格符合科学性。

总之,教师的作用体现在学生学习知识的过程中向他们提供援助的可能和搭建“脚手架”,而不是单纯把知识教给学生。

江阴市长泾实验小学 顾若君


第二篇:单片机课设,数字温度计


摘 要

随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术, 本文主要介绍了一个基于89C51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。

关键词:单片机;温度检测;温度传感器

目录

1  绪论... 1

1.1技术概述... 1

1.2本课题的背景和意义... 2

2  系统设计简介... 3

2.1 数字温度计简介... 3

2.2 设计要求... 3

2.3 设计方案论证... 3

2.4 硬件设计电路... 5

3  设计语言及软件介绍... 6

3.1 汇编语言介绍... 6

3.2 wave6000软件介绍... 6

4  软件设计... 9

4.1 概述... 9

4.2 系统程序设计模块... 9

4.2.1主程序... 9

4.2.2读出温度子程序... 10

4.2.3温度转换命令子程序... 10

4.2.4计算温度子程序... 11

4.2.5显示数据刷新子程序... 12

4.3 控制源程序... 13

4.3.1汇编程序... 13

4.3.2程序清单... 24

4.4 调试及仿真... 25

结 论... 26

参考文献... 27


1  绪论

1.1技术概述

随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技术)中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域已经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。

测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:

①传统的分立式温度传感器

②模拟集成温度传感器

③智能集成温度传感器。

在当今信息化时代展过程中,各种信息的感知、采集、转换、传输和处理的功能器件已经成为各个应用领域中不可缺少的重要技术工具。传感器是信息采集系统的首要部件,是实现现代化测量和自动控制的主要环节,是现代信息产业的源头,又是信息社会赖以存在和发展的物质与技术基础。可见理解和撑握传感器的知识与技术有着其极重要的意义。

传感器知识面广,如果在实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节的局面。任随书本上把单片机技术介绍得多么重要、多么实用多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会感到对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。

本次设计的目的就是让我们在理论学习的基础上,通过完成一个传感品器件的设计,使我们学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

1.2本课题的背景和意义

数字温度计采用进口芯片组装精度高、高稳定性,误差≤0.5%,内电源、微功耗、不锈钢外壳,防护坚固,美观精致。 数字温度计采用进口高精度、低温漂、超低功耗集成电路和宽温型液晶显示器,内置高能量电池连续工作≥5年无需敷设供电电缆,是一种精度高、稳定性好、适用性极强的新型现场温度显示仪。是传统现场指针双金属温度计的理想替代产品,广泛应用于各类工矿企业,大专院校,科研院所。 温度数我们日常生产和生活中实时在接触到的物理量,但是它是看不到的,仅凭感觉只能感觉到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。 数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED、LCD或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。 数字温度计根据使用的传感器的不同,AD转换电路,及处理单元的不同,它的精度,稳定性,测温范围等都有区别,这就要根据实际情况选择符合规格的数字温度计。 数字温度计有手持式,盘装式,及医用的小体积的等等。

2  系统设计简介

2.1 数字温度计简介

数字温度计可以准确的判断和测量温度,以数字显示,而非指针或水银显示。故称数字温度计或数字温度表。数字温度计采用温度敏感元件也就是温度传感器(如铂电阻,热电偶,半导体,热敏电阻等),将温度的变化转换成电信号的变化,如电压和电流的变化,温度变化和电信号的变化有一定的关系,如线性关系,一定的曲线关系等,这个电信号可以使用模数转换的电路即AD转换电路将模拟信号转换为数字信号,数字信号再送给处理单元,如单片机或者PC机等,处理单元经过内部的软件计算将这个数字信号和温度联系起来,成为可以显示出来的温度数值,如25.0摄氏度,然后通过显示单元,如LED,LCD或者电脑屏幕等显示出来给人观察。这样就完成了数字温度计的基本测温功能。

2.2 设计要求

1、利用温度传感器(DS18B20)测量某一点环境温度

2、测量范围为-55℃~+125℃,精度为±0.5℃。

3、测量温度由LED数码管直读显示。

2.3 设计方案论证

根据系统的设计要求,选择DS18B20作为本系统的温度传感器,选择单片机AT89C51为测控系统的核心来完成数据采集、处理、显示等功能。选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

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

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

本课题以是89C51单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主板电路等组成。

系统框图主要由主控制器、单片机复位、时钟振荡、LED显示、温度传感器组成。数字温度计总体电路结构框图如图2.3所示。

 

                       图2.3  数字温度计总体电路结构框图

图2.4  数字温度计设计电路图

2.4 硬件设计电路

数字温度计设计电路图如图2.4所示,控制器使用单片机AT89C51,温度计传感器使用DS18B20,用LED实现温度显示。

3  设计语言及软件介绍

3.1 汇编语言介绍

本次设计软件采用汇编语言进行编程。汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。

汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:

(1)能够直接访问与硬件相关的存储器或I/O端口;

(2)能够不受编译器的限制,对生成的二进制代码进行完全的控制;

(3)能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁;

(4)能够根据特定的应用对代码做最佳的优化,提高运行速度;

(5)能够最大限度地发挥硬件的功能。

同时还应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点:

(1)编写的代码非常难懂,不好维护;

(2)很容易产生bug,难于调试;

(3)只能针对特定的体系结构和处理器进行优化。

3.2 wave6000软件介绍

本次设计采用wave6000进行软件设计。伟福仿真品种多、功能强,和国内外同类高档仿真器功能相比,先进的特点如下:

1.主机+POD组合,通过更换POD,可以对各种CPU进行仿真。

对待不同的应用场合,用户往往会选择不同的CPU,从而需要更换仿真器,伟福仿真软。件WINDOWS版本支持本公司多种仿真器。支持多类CPU仿真。仿真器则采用主机+POD组合,通过更换不同的POD,可对各种不同类型的单片机进行仿真。为用户提供了一种灵活的多CPU仿真系统。

2.双平台

DOS版本,WINDOWS版本。其中WINDOWS版本功能强大。中文界面,英文界面可任选,用户源程序的大小不再有任何限制,支持ASM,C,PLM语言混合编程,具有项目管理功能,为用户的资源共享,课题重组提供强有力的手段。支持点屏显示,用鼠标左键点一下源程序中的某一变量,即可显示该变量的数值。有丰富的窗口显示方式,多方位,动态地显示仿真的各种过程,使用极为便利。本操作系统一经推出,立即被广大用户所喜爱。

3.双工作模式

     a 软件模拟仿真(不要仿真器也能模拟仿真)。

     b 硬件仿真。

4.双CPU结构,100% 不占用户资源。

全空间硬件断点,不受任何条件限制,支持地址、数据、外部信号、事件断点、支持实时断点计数、软件运行时间统计。

5.双集成环境

编辑、编译、下载、调试全部集中在一个环境下。多种仿真器,多类CPU仿真全部集成在一个环境下。可仿真51系列,196系列,PIC系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。为了跟上形势,现在很多工程师需要面对和掌握不同和项目管理器、编辑器、编译器。他们由不同的厂家开发,相互不兼容,使用不同的界面。学习使用都很吃力。

伟福 WINDOWS调试软件为您提供了一个全集成环境,统一的界面,包含一个项目管理器,一个功能强大的编辑器,汇编Make、Build和调试工具并提供一个与第三方编译器的接口。由于风格统一,从而大大节省了您的精力和时间。

6.强大的逻辑分析仪综合调试功能。

逻辑分析仪由交互式软件菜单窗口对系统硬件的逻辑或进序进行同步实时采样,并实时在线调试分析,采集深度32K(E2000/L),最高时基采样频率达20M,40路波形的可精确实时反映用户程序运行时的历史时间。系统在使用逻辑分析仪时,除普通的单步运行、键盘断点运行、全速硬件断点运行外,还可实现各种条件组合断点如:数据、地址、外部控制信号、CPU内部控制信号、程序区间断点等。由于逻辑仪可以直接对程序的执行结果进行分析,因此极大地便利于程序的调试。

随着科学技术的发展,单片机通讯方面的运用越来越多。在通讯功能的调试时,如果通讯不正常,查找原因是非常耗时和低效的,您很难搞清楚问题到底在什么地方,是波特率不对,是硬件信道有问题,是通讯协仪有问题,是发方出错还是收方出错。有了逻辑仪,情况则完全不一样,用它可以分别或者同时对发送方、接收方的输入或者输出波形进行记录、存储、对比、测量等各种直观的分析,可以将实际输出通讯报文的波形与源程序相比较,可立即发现问题所在。从而极大地方便了调试。

7.强大的追踪器功能

追踪功能以总线周期为单位,实时记录仿真过程中CPU发生的总线事件,其触发条件方式同逻辑分析仪。追踪窗口在仿真停止时可收集显示追踪的CPU指令记忆信息,可追踪记忆指令32K并通过仿真器的断点、单步、全速运行或各种条件组合断点来完成追踪功能。总线跟踪可以跟踪程序的运行轨迹。可以统计软件运行时间。

4  系统软件设计

4.1 概述

整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。每一个执行软件是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义。各执行模块规划好后,就可以规划监控程序了。首先要根据系统的总体功能选择一种最合适的监控程序结构,然后根据实时性的要求,合理地安排监控软件和各执行模块之间地调度关系。用汇编语言完成对设计的软件编程,程序开始首先对温度传感器DS18B20进行复位,检测是否正常工作;接着读取温度数据,主机发出CCH指令与在线的DS18B20联系,接着向DS18B20发出温度A/D转换44H指令,再发出温度寄存器的温度值BEH指令,并反复调用复位,写入及读取数据子程序,之后再经过数据转换,由数码管显示出来,不断循环。

4.2 系统程序设计模块

系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序和显示数据刷新子程序等。

4.2.1主程序

主程序的主要功能是负责温度的实时显示,读出并处理DS18B20的测量温度值。温度测量每1s进行一次(程序见4.3.1节)。主程序流程图如图4.2.1所示。

图4.2.1  主程序流程图

4.2.2读出温度子程序

读出温度子程的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不能进行温度数据的改写(程序见4.3.1节)。读出温度子程序流程图如图4.2.2所示。

4.2.3温度转换命令子程序

温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750 ms。在本程序设计中,采用1s显示程序延时法等待转换的完成(程序见4.3.1节)。温度转换命令子程序图4.2.3所示。

                        图4.2.2  读出温度子程序流程图

4.2.4计算温度子程序

计算温度子程序将RAM中读取的值进行BCD码的抓换运算,并进行温度值正负的判断(程序见图4.3.1节)。其流程图如图4.2.4所示。

 


                    

                           图4.2.3  温度转换命令子程序图

温度零下   

    图4.2.4  计算温度子程序流程图

4.2.5显示数据刷新子程序

显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最高数据显示位为0时,将符号显示位移入下一位(程序见4.3.1节)。显示数据刷新子程序流程图如图4.2.5所示。

 


4.3 控制源程序

4.3.1汇编程序

;DS18B20温度计

;采用4位LED共阳显示器显示测温值,显示精度0.1℃,测温范围-55~+125℃

;用AT89C51单片机,12MHz晶振。

;============================常数定义=============================

TIMEL                EQU  0E0H         ;20ms,定时器0时间常数

TIMEH               EQU  0B1H

TEMPHEAD    EQU  36H

;

;==========================工作内存定义===========================

BITST             DATA  20H

TIME1SOK     BIT   BITST.1

TEMPONEOK   BIT   BITST.2

TEMPL            DATA  26H

TEMPH            DATA  27H

TEMPHC         DATA  28H

TEMPLC         DATA  29H

;============================= 引脚定义===========================

TEMPDIN       BIT   P3.7

;============================= 中断向量区=========================

ORG               0000H

LJMP               START

ORG                00BH

LJMP               T0IT

;=============================系统初始化==========================

                     ORG     100H

START:      MOV     SP,#60H

CLSMEM: MOV    R0,#20H

                     MOV    R1,#60H

CLSMEM1: MOV    @R0,#00H

                     INC      R0

                     DJNZ   R1,CLSMEM1

                     MOV    TMOD,#00100001B   ;定时器0工作方式1(16BIT)

                     MOV     TH0,#TIMEL

                     MOV    TL0,#TIMEH        ;20ms

                     SJMP     INIT

ERROR:      NOP

                     LJMP   START

                     NOP

INIT:            NOP

                     SETB   ET0

                     SETB   TR0

                     SETB    EA

                     MOV    PSW,#00H

                     CLR     TEMPONEOK

                     LJMP   MAIN

;====================== 定时器0中断服务程=======================

T0IT:            PUSH   PSW

                     MOV    PSW,#10H

                     MOV    TH0,#TIMEH

                     MOV    TL0,#TIMEL

                     INC      R7

                     CJNE   R7,#32H,T0IT1

                     MOV    R7,#00H

                     SETB   TIME1SOK     ;1s定时到标志

T0IT1:          POP      PSW

                     RETI

;============================= 主程序=============================

MAIN:         LCALL       DISP1                      ;调用显示子程序

                     JNB      TIME1SOK,MAIN

                     CLR     TIME1SOK              ;测温每1s一次

                     JNB      TEMPONEOK,MAIN2 ;上电时先温度转换一次

                     LCALL       READTEMP1           ;读出温度值子程序

                     LCALL       CONVTEMP     ;温度BCD码计算处理子程序

                     LCALL       DISPBCD                ;显示区BCD码温度值刷新子程序

              LCALL       DISP1                ;消闪烁,显示一次

MAIN2:      LCALL READTEMP    ;温度转换开始

                     SETB   TEMPONEOK

                     LJMP   MAIN

;=============================子程序区===========================

;对DS18B20进行复位

;================================================================

INITDS1820:SETB TEMPDIN

                     NOP

                     NOP

                     CLR     TEMPDIN

                     MOV    R6,#0A0H                ;延时480us

                     DJNZ   R6,$

                     MOV    R6,#0A0H

                     DJNZ   R6,$

                     SETB   TEMPDIN

                     MOV    R6,#32H                ;延时70us

                     DJNZ   R6,$

                     MOV     R6,#3CH

LOOP1820: MOV    C,TEMPDIN

                     JC INITDS1820OUT

                     DJNZ   R6,LOOP1820

                     MOV    R6,#064H

                     DJNZ   R6,$

                     SJMP    INITDS1820

                     RET

INITDS1820OUT:    SETB   TEMPDIN

                                   RET

;======读DS18B20的程序,从DS18B20中读出一个字节的数据=========

READDS1820:   MOV    R7,#08H

                            SETB   TEMPDIN

                            NOP

                            NOP

READDS1820LOOP:      CLR     TEMPDIN

                                   NOP

                                   NOP

                                   NOP

                                   SETB   TEMPDIN

                                   MOV    R6,#07H   ;延时15us

                                   DJNZ   R6,$

                                   MOV    C,TEMPDIN

                                   MOV    R6,#3CH    ;延时120us

                                   DJNZ   R6,$

                                   RRC     A

                                   SETB   TEMPDIN

                                   DJNZ   R7,READDS1820LOOP

                                   MOV    R6,#3CH    ;延时120 us

                                   DJNZ   R6,$

                                   RET

;=======写DS18B20的程序,从DS18B20中写一个字节的数据===========

WRITEDS1820: MOV    R7,#08H

                            SETB   TEMPDIN

                            NOP

                            NOP

WRITEDS1820LOP: CLR     TEMPDIN

                                   MOV    R6,#07H   ;延时15us

                                   DJNZ   R6,$

                                   RRC     A

                                   MOV    TEMPDIN,C

                                   MOV    R6,#34H   ;延时104us

                                   DJNZ   R6,$

                                   SETB   TEMPDIN

                                   DJNZ   R7,WRITEDS1820LOP

                                   RET

;========================= 读温度 ===========================

READTEMP:     LCALL       INITDS1820

                            MOV    A,#0CCH

                            LCALL       WRITEDS1820       ;跳过程序存储器

                            MOV    R6,#34H             ;延时104us

                            DJNZ   R6,$

                            MOV    A,#44H

                            LCALL       WRITEDS1820       ;开始AD转换

                            MOV    R6,#34H            ;延时104us

                            DJNZ   R6,$

                            RET

READTEMP1:   LCALL INITDS1820

                            MOV    A,#0CCH

                            LCALL       WRITEDS1820  ;跳过程序存储器

                            MOV    R6,#34H                  ;延时104us

                            DJNZ   R6,$

                            MOV    A,#0BEH

                            LCALL       WRITEDS1820        ;超高速中间结果存储器

                            MOV    R6,#34H             ;延时104us

                            DJNZ   R6,$

                            MOV    R5,#09H

                            MOV    R0,#TEMPHEAD

                            MOV    B,#00H

READTEMP2:   LCALL       READDS1820

                            MOV    @R0,A

                            INC      R0

READTEMP21: LCALL       CRC8CAL

                            DJNZ   R5,READTEMP2

                            MOV    A,B

                            JNZ      READTEMPOUT

                            MOV    A,TEMPHEAD+0

                            MOV    TEMPL,A

                            MOV    A,TEMPHEAD+1

                            MOV    TEMPH,A

READTEMPOUT:    RET

;==================处理温度BCD码子程序==========================

CONVTEMP:     MOV    A,TEMPH

                            ANL     A,#80H

                            JZ        TEMPC1

                            CLR     C

                            MOV    A,TEMPL

                            CPL      A

                            ADD    A,#01H

                            MOV    TEMPL,A

                            MOV    A,TEMPH                ;-

                            CPL      A

                            ADDC A,#00H

                            MOV    TEMPH,A               ; TEMPHC HI=符号位

                            MOV    TEMPHC,#0BH

                            SJMP    TEMPC11

TEMPC1:            MOV    TEMPHC,#0AH       ;+

TEMPC11:          MOV    A,TEMPHC

                            SWAP A

                            MOV    TEMPHC,A

                            MOV    A,TEMPL

                            ANL     A,#0FH                  ;乘0.0625

                            MOV    DPTR,#TEMPDOTTAB

                            MOVC        A,@A+DPTR

                            MOV    TEMPLC,A             ;TEMPLC LOW=小数部分BCD

                            MOV    A,TEMPL       ;整数部分

                            ANL     A,#0F0H

                            SWAP A

                            MOV    TEMPL,A

                            MOV    A,TEMPH

                            ANL     A,#0FH

                            SWAP A

                            ORL     A,TEMPL

                            LCALL       HEX2BCD1

                            MOV    TEMPL,A

                            ANL     A,#0F0H

                            SWAP A

                            ORL     A,TEMPHC       ;TEMPHC LOW=十位数BCD

                            MOV    TEMPHC,A

                            MOV    A,TEMPL

                            ANL     A,#0FH

                            SWAP A                  ;TEMPLC HI=个位数BCD

                            ORL     A,TEMPLC

                            MOV    TEMPLC,A

                            MOV    A,R7

                            JZ         TEMPC12

                            ANL     A,#0FH

                            SWAP A

                            MOV    R7,A

                            MOV    A,TEMPHC       ;TEMPLC HI=百位数BCD

                            ANL     A,#0FH

                            ORL     A,R7

                            MOV    TEMPHC,A

TEMPC12:          RET

;=====================小数部分码表========================

TEMPDOTTAB: DB       00H,01H,01H,02H,03H,03H,04H,04H,05H,06H

                                DB      06H,07H,08H,08H,09H,09H

;================显示区BCD码温度值刷新子程序===============

DISPBCD:   MOV    A,TEMPLC

                     ANL     A,#0FH

                     MOV    70H,A

                     MOV    A,TEMPLC

                     SWAP A

                     ANL     A,#0FH

                     MOV    71H,A

                     MOV    A,TEMPHC

                     ANL     A,#0FH

                     MOV    72H,A

                     MOV    A,TEMPHC

                     SWAP   A

                     ANL     A,#0FH

                     MOV    73H,A

                     MOV    A,TEMPHC

                     ANL     A,#0F0H

                     CJNE   A,#010H,DISPBCD0

                     SJMP    DISPBCD2

DISPBCD0: MOV    A,TEMPHC

                     ANL     A,#0FH

                     JNZ      DISPBCD2        

                     MOV    A,TEMPHC

                     SWAP A

                     ANL     A,#0FH

                     MOV    73H,#0AH          ;符号位不显示

                     MOV    72H,A                 ;十位数显示符号

DISPBCD2: RET

;=====================显示子程============================

;显示数据在70H~73H单元内,用4位LED共阳数码管显示,P0口输出段码数据,

;P3口做扫描控制,每个LED数码管亮1ms时间再逐位循环。

DISP1:         MOV    R1,#70H                    ;指向显示数据首址

                     MOV    R5,#0FEH                  ;扫描控制字初值

PLAY:         MOV    P0,#0FFH

                     MOV    A,R5                          ;扫描字放入A

                     MOV    P3,A                           ;从P3口输出

                     MOV    A,@R1                       ;取显示数据到A

                     MOV    DPTR,#TAB                  ;取段码表地址

                     MOVC        A,@A+DPTR            ;查显示数据对应段码

                     MOV    P0,A                            ;段码放入P0口

                     MOV    A,R5

                     JB         ACC.1,LOOP5           ;小数点处理

                     CLR     P0.7

LOOP5: LCALL       DL1MS                    ;显示1ms

                     INC      R1                                ;指向下一地址

                     MOV    A,R5                            ;扫描控制字放入A

                     JNB      ACC.3,ENDOUT            ;ACC.3=0时一次显示结束

                     RL               A                               ;A中数据循环左移

                     MOV     R5,A                             ;放回R5内

                     AJMP   PLAY                           ;跳回PLAY循环

ENDOUT:   MOV    P0,#0FFH                     ;一次显示结束,P0口复位

                     MOV    P3,#0FFH                     ;P3口复位

                     RET                                                ;子程序返回

TAB:            DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH,0BFH

;共阳段码表 “0”“1”“2”“3”“4”“5”“6”“7”“8”“9”“不亮”“-”

DL1MS:       MOV    R6,#14H                          ;1ms延时程序,LED显示程序

DL1:             MOV    R7,#19H

DL2:             DJNZ   R7,DL2

                     DJNZ   R6,DL1

                     RET

;==================单字节十六进制BCD======================

HEX2BCD1:      MOV    B,#064H             ;十六进制->BCD

                            DIV      AB               ;B=A%100

                            MOV    R7,A            ;R7=百位数

                            MOV    A,#0AH

                            XCH    A,B

                            DIV      AB               ;B=A%B

                            SWAP A

                            ORL     A,B

                            RET

;=========================================================

;Calculate CRC-8Values.  Uses The CCITT-8Polynomial,Expressed As

;X^8+X^5+X^4+1

;=========================================================

CRC8CAL:         PUSH   ACC

                            MOV    R7,#08H             ;位字节数

CRC8LOOP1:    XRL     A,B              ;计算CRC

                            RRC     A                  ;Move to Carry

                            MOV    A,B              ;获取CRC最后值

                            JNC      CRC8LOOP2     ;如果DATA等于0,则跳过

                            XRL     A,#18H        ;同步到新的CRC值

CRC8LOOP2:    RRC     A                  ;新的CRC到A中

                            MOV    B,A              ;存储新的CRC

                            POP      ACC             ;获得剩余位

                            RR        A                         ;传递下一位

                            PUSH   ACC                    ;保存剩余位

                            DJNZ   R7,CRC8LOOP1      ;重复第8位

                            POP      ACC

                            RET

              END

4.4 调试及仿真

经软件调试-仿真器proteus调试通过,并烧录芯片,得到所要求的设计结果。如图4.4试验成功。

                          图4.4  数字温度计仿真图

结 论

本设计利用89C51芯片控制温度传感器DS18B20,再辅之以部分外围电路实现对环境温度的测控,性能稳定,精度较高,而且扩展性能很强大。由于DS18B20 支持单总线协议,我们可以将多个DS18B20 可以并联到3 根或2 根线上,CPU 只需一根端口线就能与诸多DS18B20 通信,占用较少的微处理器的端口就可以实现多点测温监控系统。可以加入1302 时钟芯片实现对时间进行显示,加之AT24C16 存储芯片来实现对时间和温度数据的记录,利用MAX232芯片和计算机实现串口通讯,这样就可以方便的统计出特定时间内的需要的时间和温度数据。由于DS18B20的测量精度只有±0.5 度,往往很多场合需要更加精确的温度,在所测温度精度不变的基础上必须对数据进行校正。由于DS18B20 是基于带隙结构的数字式温度传感器,PN 结增量电压正比于IC 绝对温度(PTAT),它的测温精度较高,但存在着一定的误差.不过,其误差在时间和外部环境变化的条件下,保持相当高的稳定性。针对这一特性,基于线性插补的数学思想,利用DSP技术,对其进行误差校正补偿.这种误差校正的补偿方法,不需增加硬件电路,计算方法简单,软件费用也很小,既提高了测量精度,又不需增加成本。它充分利用监控计算机的处理能力,在监控计算机上用线性插补的数学方法对其进行误差校正补偿,能轻易地将其提高其精度。

经过将近两周的单片机课程设计,终于完成了我的数字温度计的设计,虽然没有完全达到设计要求,但从心底里说,还是高兴的,毕竟这次设计把实物都做了出来,高兴之余不得不深思呀!

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,让我体会到了写好一个程序并不是一件简单的事。

从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

参考文献

[1] 李群芳.张士军.单片微型计算机与接口技术.第三版.北京:电子工业出版社,2008.

[2] 李光飞.单片机课程设计实例指导.北京:北京航空航天大学出版社,2004.

[3] 沈德金.单片机接口电路与应用程序实例.北京:北京航天航空大学出版社,1990.

[4] 徐爱钧.彭秀华.单片高级语言C51应用程序设计.北京:电子工业出版社,1998.

更多相关推荐:
数字温度计的课程设计报告

单片机课程设计报告数字温度计1设计要求基本范围50110精度误差小于05LED数码直读显示2扩展功能实现语音报数可以任意设定温度的上下限报警功能数字温度计应教022李世朋摘要随着时代的进步和发展单片机技术已经普...

数字温度计课程设计报告

数字温度计课程设计报告1课题说明随着现代信息技术的飞速发展和传统工业改造的逐步实现能够独立工作的温度检测和显示系统应用于诸多领域传统的温度检测以热敏电阻为温度敏感元件热敏电阻的成本低但需后续信号处理电路而且可靠...

数字温度计设计与总结报告

数字温度计A2题设计与总结报告专科组陈春梁福鑫钟才莉摘要随着时代的进步和发展单片机技术已经普及到我们生活工作科研等各个领域已经成为一种比较成熟的技术本设计在参阅了大量前人设计的数字温度计的基础上利用单片机技术结...

数字温度计课程设计报告

目录1设计概述111设计目标和要求112设计思路12系统方案及硬件设计221设计方案222方案的硬件总体方框图323温度传感器DS18B20测温原理424硬件设计7241主控制器8242复位电路8243时钟振荡...

数字温度计设计报告

数字温度计设计报告姓名班级学号指导教师年62720xx月日数字温度计报警实训报告随着时代的进步和发展单片机技术已经普及到我们生活工作科研各个领域已经成为一种比较成熟的技术本文主要介绍了一个基于89c51单片机的...

数字温度计设计报告

单片机原理与应用技术课程设计报告论文基于单片机控制的数字温度计专业班级应教121姓名董镇玉时间20xx19指导教师宋长源李晓娟20xx年01月09日单片机课程设计项目系列基于单片机控制的数字温度计一设计要求一基...

数字温度计设计报告

数字温度计设计报告课程名称院别专业班级姓名指导教师时间20xx电子课程设计武警工程学院指挥自动化二队一区队王凯03田腾浩邹涛年1月12日23主要内容设计一个数字温度计测量范围0100C温度的实时LED数字显示测...

数字温度计课程设计

辽宁工程技术大学电子技术课程设计摘要在日常生活及工业生产过程中经常要用到温度的检测及控制温度是生产过程和科学实验中普遍而且重要的物理参数之一在生产过程中为了高效地进行生产必须对它的主要参数如温度压力流量等进行有...

单片机课程设计—四位数字温度计的设计

第1章概述随着人们生活水平的不断提高单片机控制无疑是人们追求的目标之一它所给人带来的方便也是不可否定的其中数字温度计就是一个典型的例子但人们对它的要求越来越高要为现代人工作科研生活提供更好的更方便的设施就需要从...

数字温度计设计报告

考试序号11数字温度计设计报告学号完成时间湖南理工学院物理与电子学院目录一引言2二设计任务与要求2三设计方案3四硬件电路设计441主控电路442显示电路643测温电路6五设计原理7六系统软件设计861子程序86...

数字温度计电路设计与调试 杭电微机原理课程设计

微机接口技术课程设计说明书课程名称:数字温度计电路设计与调试学院:机械工程学院专业:机械设计制造及其自动化组员:指导老师:日期:20##年5月20日目录1.课程设计任务书32.说明书正文52.1前言52.2现状…

单片机课程设计—数字温度计

1课题任务功能要求说明及总体方案介绍11课题目的随着社会的发展温度的测量及控制变得越来越重要本文采用单片机STC89S52设计了温度实时测量及控制系统单片机STC89S52能够根据温度传感器DS18B20所采集...

数字温度计课程设计报告(31篇)