C51单片机数字温度计汇编程序及说明书.docx
《C51单片机数字温度计汇编程序及说明书.docx》由会员分享,可在线阅读,更多相关《C51单片机数字温度计汇编程序及说明书.docx(37页珍藏版)》请在冰豆网上搜索。
C51单片机数字温度计汇编程序及说明书
1绪论
1.1选题背景
随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学试验(如:
物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要的意义。
现在所使用的温度计通常都是精度为1℃和0.1℃的水银、煤油或酒精温度计。
这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用非常不方便。
本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确等优点,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。
因此本课题就尝试通过编程与芯片的结合来解决传统数字温度计的弊端,设计出新型数字温度计。
1.2课题现状分析及研究意义
温度传感器的发展现状:
温度传感器使用范围广,数量多,居各种传感器之首,其发展大致经历了以下3个阶段:
①传统的分立式温度传感器(含敏感元件)——热电偶传感器,主要是能够进行非电量和电量之间转换。
②模拟集成温度传感器/控制器。
集成传感器是采用硅半导体集成工艺制成的,因此亦称硅传感器或单片集成温度传感器。
③智能温度传感器。
它是微电子技术、计算机技术和自动测试技术(ATE_)的结晶。
智能温度传感器内部包含温度传感器、A/D传感器、信号处理器、存储器(或寄存器)和接口电路。
本课题的研究可以应用领域生产、生活等很多领域。
对于家用电器从洗衣机、微波炉到音响等等到处都可以用到温度控制器来方便大家的日常生活。
开发此产品后也可方便应用安装在小至家庭大到工厂车间,小至一个芯片大到一个机械设备。
例如在家庭客厅卧室等必要地方显示室温,可防止家里食物是否变质及早采取措施。
工业生产控制中用数字温度计可清晰显示温度来防止元气件失效或损坏等不必要的非人为损失,对做好车间机器维修与保养起很重要的作用。
1.3论文的组织结构
第一部分:
绪论。
介绍了论文的选题背景、现状分析和研究意义。
第二部分:
基于单片机的数字温度计设计系统的研究概述。
对系统的调查研究、项目的概述、项目实施计划等。
第三部分:
基于单片机的数字温度计设计系统分析与设计。
本系统功能需求分析,系统要求,系统整体设计,目标系统要求,开发环境。
第四部分:
基于单片机的数字温度计设计系统的功能实现。
各功能模块的具体设计与实现方法、主要部分包含部的代码。
第五部分:
基于单片机的数字温度计设计系统测试与维护。
主要检验有何不足之处。
第六部分:
基于单片机的数字温度计设计系统评价。
只要是该系统的优缺点及改进方向。
第七部分:
总结和体会。
对整个设计总结、分析不足及改进思想。
2基于单片机的数字温度计设计系统的研究概述
随着科学科学技术不断发展的今天,温度这个至关重要的技术参数对于我们人类更好的了解与研究自然,更好的为我们人类服务扮演不可替代的作用。
科学的严谨性要求我们的研究人员必须用很便捷的方法去获得很精确的数据,再者,科学领域已经深入到地球以外的其它各个地方,所以在设计一个高要求的温度计必要要考虑到环境(电磁干扰、机械振动)对温度仪器的影响。
2.1基于单片机开发系统的发展历史
单片机作为微型计算机的一个重要分支,应用面很广,发展很快。
自单片机诞生至今,已发展为上百种系列的近千个机种。
单片机发展简史:
如果将8位单片机的推出作为起点,那么单片机的发展历史大致可分为以下几个阶段
(1)第一阶段(1976-1978):
单片机的控索阶段。
以Intel公司的MCS–48为代表。
MCS–48的推出是在工控领域的控索,参与这一控索的公司还有Motorola、Zilog等,都取得了满意的效果。
这就是SCM的诞生年代,“单机片”一词即由此而来。
(2)第二阶段(1978-1982)单片机的完善阶段。
Intel公司在MCS–48基础上推出了完善的、典型的单片机系列MCS–51。
它在以下几个方面奠定了典型的通用总线型单片机体系结构。
①完善的外部总线。
MCS-51设置了经典的8位单片机的总线结构,包括8位数据总线、16位地址总线、控制总线及具有很多机通信功能的串行通信接口。
②CPU外围功能单元的集中管理模式。
③体现工控特性的位地址空间及位操作方式。
④指令系统趋于丰富和完善,并且增加了许多突出控制功能的指令。
(3)第三阶段(1982-1990):
8位单片机的巩固发展及16位单片机的推出阶段,也是单片机向微控制器发展的阶段。
Intel公司推出的MCS–96系列单片机,将一些用于测控系统的模数转换器、程序运行监视器、脉宽调制器等纳入片中,体现了单片机的微控制器特征。
随着MCS–51系列的广应用,许多电气厂商竞相使用80C51为内核,将许多测控系统中使用的电路技术、接口技术、多通道A/D转换部件、可靠性技术等应用到单片机中,增强了外围电路路功能,强化了智能控制的特征。
(4)第四阶段(1990—今):
微控制器的全面发展阶段。
随着单片机在各个领域全面深入地发展和应用,出现了高速、大寻址范围、强运算能力的8位/16位/32位通用型单片机,以及小型廉价的专用型单片机。
单片机,亦称单片微电脑或单片微型计算机。
它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/0)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。
计算机的产生加快了人类改造世界的步伐,但是它毕竟体积大。
微计算机(单片机)在这种情况下诞生了,纵观现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。
以前只能使用复杂的模拟电路,做出来的产品体积大、成本高,并且由于长期使用,元器件不断老化,控制的精度自然也会达不到标准。
在单片机产生后,就将控制这些东西变为智能化了,只需要在单片机外围接一点简单的接口电路,核心部分只是由人为的写入程序来完成。
2.2基于单片机的数字温度计系统的作用
在温度测控仪表中引入单片机,使仪器仪表智能化,提高测试的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比,用单片机进行实时系统温度处理和控制,保证系统工作在最佳状态,有利于提高系统的工作效率和产品的质量。
目前国内外各种家具已经使用数字温度计控制电路,例如,洗衣机、电冰箱、空调机、微波炉、电饭煲、收音机、音像、电风扇及许多高级电子玩具都配上了。
数字温度计还应用于办公自动化领域、商业营销领域、安全防卫、汽车及通信系统、计算机外部设备、模糊控制等领域。
随着单片机的普及,数字温度测量系统有以前的人工读数逐渐转变成为自动实时显示系统,这样不但节省了人力资源,而且提高了测量的精确性。
3.基于单片机的数字温度计设计系统分析与设计
3.1系统功能需求分析
数字温度计DS18B20可以程序设定9~12位的分辨率,精度为±0.5°C。
可选更小的封装方式,更宽的电压适用范围。
分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20的性能是新一代产品中最好的!
性能价格比也非常出色!
DS18B20省略了存储用户定义报警温度、分辨率参的EEPROM,精度降低为±2°C,适用于对性能要求不高,成本控制严格的应用,是经济型产品。
继“一线总线”的早期产品后,DS1820开辟了温度传感器技术的新概念。
DS18B20使电压、特性及封装有更多的选择,让我们可以构建适合自己的经济的测温系统。
3.2系统总体设计
本系统在设计时应考虑到有温度采集、数据转换、数字显示等。
图3-1系统程序的设计流程图
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:
每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
图3-2硬件原理图
3.3系统要求
本系统采用数字式温度计传感器为检测器件,进行单点温度检测(或温度采集),要求温度显示采用4位LED数码管显示,处理好延时,温度转换等。
具有超过上、下限温度时,进行声音(蜂鸣器)报警。
3.3.1目标系统要求
(1)时间经济性。
优化逻辑设计与物理设计,使系统运行效率高,反映速度快。
(2)可靠性。
任意时刻的系统故障都会带来不可估量的损失,要求系统具有高度的可靠性。
(3)可理解性。
用户容易理解和使用该系统。
(4)可维护性和适应性。
系统应易于修改、易于扩充、易于维护。
(5)可用性。
目标系统功能齐全,能够完全满足需求。
3.3.2开发工具
开发工具与语言:
KEILC语言Protel99SE
(一)、KEILC语言
单片机开发中除必要的硬件外,同样离不开软件,汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
,如属性(Properties)窗口、彩色编码语法和对多文档界面(MDI)的真正支持。
C语言是目前世界上流行、使用最广泛的高级程序设计语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言的特点:
(1)简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。
它把高级语言的基本结构和语句与低级语言的实用性结合起来。
C语言可以象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
(2)运算符丰富
C的运算符包含的范围很广泛,共有种34个运算符。
C语言把括号、赋值、强制类型转换等都作为运算符处理。
从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
(3)数据结构丰富
C的数据类型有:
整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。
能用来实现各种复杂的数据类型的运算。
并引入了指针概念,使程序效率更高。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。
且计算功能、逻辑判断功能强大。
(4)C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。
这种结构化方式可使程序层次清晰,便于使用、维护以及调试。
C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
(5)C语法限制不太严格、程序设计自由度大
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。
而C语言允许程序编写者有较大的自由度。
(6)C语言允许直接访问物理地址,可以直接对硬件进行操作
因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
(7)C语言程序生成代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
(8)C语言适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。
(二)、Protel99SE
Protel99SE是一款用于设计电路的软件,它主要能实现的功能有以下几条:
功能一:
出相对比较工整漂亮的原理图。
功能二:
成可以用于工厂生产的PCB制板文件。
功能三:
成元件清单,生成数控钻床用的钻孔定位文件,生成阻焊层文件,生成印刷字符层文件,等等等等。
你想要的它几乎全有。
另外,它内部还整合了硬件仿真的功能!
虽然版本众多,但是精髓都是一个,那就是从原理图到仿真到自动布线产生PCB印制板文件一条龙搞定极大地提高工作效率。
低版本的适合硬件配置不是很高的机器比如PROTEL1.0可以在486上运行,PROTEL3.0在586上可以顺畅运行,依此类推。
需要注意的是:
越是高的版本功能越强大,PCB布线的软件引擎越是高效,同时提供的功能也越是完备,提供的零件库和零件封装越是丰富。
高版本的仿真部分居然提供了高频测试功能,不过当然是软件仿真的,但是也足以看出它的完善程度!
3.3.3硬件介绍
(一)DS18B20温度传感器芯片简要说明:
图3-3DS18B20引脚图
VCC:
电源,输入电压为3~5.5V。
DQ:
数据输入输出线。
GND:
电源地。
DS18B20是单总线接口的数字温度传感器,MSC-51通过串口将数据和指令写入或读出。
该芯片的温度测量范围是﹣55℃~﹢125℃,转换完的数据通过两字节输出,对应关系如表3.1所示:
表3.1温度与两字节数据对应关系
温度
数字输出
(二进制)
数字输入
(十六进制)
+125℃
0000011111010000
07D0H
+25.0625℃
0000000110010001
0191H
+10.125℃
0000000010100010
00A2H
+0.5℃
0000000000001000
0008H
0℃
0000000000000000
0000H
-0.5℃
1111111111111000
FFF8H
-10.125℃
1111111101011110
FF5EH
-25.0625℃
1111111001101111
FF6FH
-55℃
1111110010010000
FC90H
1、DS18B20的主要特性
1.1、适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电
1.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
1.3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
1.4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内
1.5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
1.6、可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温
1.7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快
1.8、测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力
1.9、负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
2、DS18B20的外形和内部结构
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的外形及管脚排列如下:
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
3、DS18B20工作原理
DS18B20的读写时序得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由为750ms。
DS18B20测温原理中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
附图为DS18B20芯片的读写时续图
图3-4芯片时序图
DS18B20有4个主要的数据部件:
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:
开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
表2:
DS18B20温度值格式表
这是12位转化后得到的12位数据,存储在芯片的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
(3)DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
(4)配置寄存器
该字节各位的意义如下:
配置寄存器结构TMR1R011111
低五位一直都是"1",TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)
表3:
温度分辨率设置表
R1R0分辨率温度最大转换时间
009位
93.75ms
0110位
187.5ms
1011位
375ms
1112位
750ms
(5)高速暂存存储器
高速暂存存储器由9个字节组成,其分配如表5所示。
当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。
单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。
对应的温度计算:
当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。
表2是对应的一部分温度值。
第九个字节是冗余检验字节。
表4DS18B20暂存寄存器分布
寄存器内容字节地址
温度值低位(LSByte)0
温度值高位(MSByte)1
高温限值(TH)2
低温限值(TL)3
配置寄存器4
保留5
保留6
保留7
CRC校验值8
(6)DS18B20的操作顺序
1)复位:
在输入输出线上,先保持一段时间的低电平,再恢复高电平就可以完成复位操作。
复位结束后,在输入输出线上保持一段时间的低电平,表明复位结束。
2)写入ROM功能指令:
在复位操作之后,DS18B20首先接受的数据是ROM功能指令。
所以,任何不属于ROM功能指令的数据均不能写入温度传感器,即而不能进行任何操作。
ROM功能指令用于多个温度传感器使用同一个数据总线和MCS—51通讯的情况。
在只使用一个温度传感器的情况下,可以写入0CCH(略过ROM功能指令)以略过该步骤。
3)写入存储指令:
存储指令包括写暂存存储器(4EH),读暂存存储器(BEH),温度转换开始(44H)等指令。
这些指令只是对单个温度传感器有效,否则将引起通信错误。
指令约定代码功能:
读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备;搜索ROM0FOH用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。
为操作各器件作好准备。
跳过ROM0CCH;忽略64位ROM地址,直接向DS1820发温度变换命令。
适用于单片工作;警搜索命令0ECH,执行后只有温度超过设定值上限或下限的片子才做出响应。
温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。
结果存入内部9字节RAM中。
读暂存器
0BEH读内部RAM中9字节的内容
写暂存器
4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制暂存器
48H将RAM中第3、4字节的内容复制到EEPROM中。
重调EEPROM
0B8H将EEPROM中内容恢复到RAM中的第3、4字节。
读供电方式0B4H
读DS1820的供电模式。
寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。
(二)AT89S52芯片介绍
与MCS-51单片机产品兼容
8K字节在系统可编程Flash存储器
1000次擦写周期
全静态操作:
0Hz~33Hz
三级加密程序存储器R
32个可编程I/O口线
三个16位定时器/计数器
八个中断源
全双工UART串行通道
位微控制器
低功耗空闲和掉电模式
掉电后中断可唤醒
8K字节在系统可编程
看门狗定时器
双数据指针
Flash
掉电标识符
功能特性描述
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存