您的当前位置:首页正文

《数字式温度计的设计》毕业设计

来源:个人技术集锦
摘 要

随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该高精度数字式温度计采用了由DALLAS公司生产的单线数字温度传感器DS18B20,它具有独特的单线总线接口方式。本毕业论文详细的介绍了单线数字温度传感器DS18B20的测量原理、特性以及在温度测量中的硬件和软件设计,该温度计具有接口简单、精度高、抗干扰能力强、工作稳定可靠等特点。

关键词:DS18B20 温度传感器 STC89C51

第一章 引言

温度是一种最基本的环境参数,人民的生活、生产与环境的

温度息息相关。在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置也有重要的意义。

测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:①传统的分立式温度传感器,②模拟集成温度传感器,③智能集成温度传感器。目前,国际上新型温度传感器正从模拟式转向数字式,从集成化向智能化、网络化的方向飞速发展。本论文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并以此为传感器DS18B20和STC89C51单片机为控制器构成的温度测量装置的工作原理做了详细的介绍。该产品适用于人民的日常生活和工、农业生产,用于温度测量。

目 录

一. 引言 …………………………………………………………………………..4 二. 总体设计方案 ……………………………………………………………..5 2.1 数字温度计设计方案…………………………………………………… 5 2.2 总体设计框图………………………………………………………………. 5 2.2.1 主控制器 ………………………………………………………………..6 2.2.2 显示电路…………………………………………………………………..6 2.2.3 温度传感器 ………………………………………………………………6 2.3 DS18B20温度传感器与单片机的接口电路 …………………….9 2.4 系统整体硬件电路 ……………………………………………………..10 2.4.1 主板电路……………………………………………………………….. 10 2.4.2 显示电路 ………………………………………………………………..10 三. 系统软件算法分析………………………………………………………. 11 3.1 主程序 ……………………………………………………………………….11 3.2 读出温度子程序 ………………………………………………………….12 3.3 温度转换命令子程序……………………………………………………. 12 3.4 计算温度子程序 …………………………………………………………..13 3.5 显示数据刷新子程序 ……………………………………………………13 四. 总结与体会 ………………………………………………………………..14 五. 参考文献 ……………………………………………………………………15

二、总体方案设计

1、数字温度计设计方案论证 2.1.1方案一

由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。 2.1.2 方案二

进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 2.2方案二的总体设计框图

温度计电路设计总体设计方框图如图1所示,控制器采用单片机AT89S51,温度传感器采用DS18B20,用3位LED数码管以串口传送数据实现温度显示。

2、硬件设计

1.1 工作原理及硬件框图

基于DS18B20的温度测量装置电路图如图1所示,包括单片机最小系统、温度传感器、和显示电路。温度传感器DS18B20将被测环境温度转化成带符号的数字信号(以十六位补码形式,占两个字节),单片机对接收到的数字信号进行标度变换,转换成实际的温度值并送数码管显示。DS18B20传感器可置于离装置150米以内的任何地方。 STC89C51是整个电路装置的控制核心,STC89C51内带4K字节的FlashROM,用户程序存放在此。 图2 系统硬件框图

3、 系统分析:

本设计主要的任务是单片机软件的设计,而软件中的核心在于单片机与集成温度传感器DS18B20接口程序的设计,另外一点便是对数码管扫描显示的理解与运用。由于DS18B20集成了温度数据采集、模数转换于一体,因此外围电路非常简单。在进行软件设计前,须对该芯片反复研究,掌握其核心内容,其实程序在厂家提供的应用资料中也可以找到,关键是要对其工作过程的理解。对数码管扫描显示的程序设计,只要理解了其显示的工作原理,也不是可以掌握的。 3.1、制作重点: ★读取DS18B20的时序

由于对DS18B20传感器数据的读取有一定的时序要求,因此在编写软件时要特别注意,先反复读懂该器件的读、写时序,然后根据所选用的晶振计算出机器周期的时间,为了使计算简单,在设计时将晶振选用12M,因为51系列单片机一个机器周期正好是12个时钟周期,因此选用12M晶振时,一个机器周期正好是1微秒,这样计算时间比较方便。 ★对读取数据的处理

从DS18B20芯片的资料中可以看出,其数据存储器的分配为:

存储数据与温度的对应关系见下表:

从以上的分析可以看出,温度值存储于两个字节单元中,温度与存储器的对应关系为:整个温度值由16位二进制数表示,最高的5位为符号为,为零时代表正的温度值,为“1”时,代表的是负温度值,真正表示温度的是后11位数据,最低的四位表示小数位,其中0单元的高四位和1单元的低四位组合正好形成测得的温度整数值,这样我们在对读取的数据在进行处理时,只需将0单元的高四位和1单元的低四位通过重新组合,形成一个新的8位数据,这个数据便是测得的温度数值,但

这是个16进制的数据,要输出10进制数进行显示,要进行相应的转换操作,至于将16进制数转换成10进制数据的汇编程序。 ★数码扫描输出的处理

为了节省单片机端口,输出显示采用扫描的方式进行。利用人眼对光的停留效应,通过电子开关的控制,节合显示数据的配合,完成三位数码管的扫描显示。

4、 温度测量电路

目前市面上的数字温度传感器有很多,比如DS18B20、MAX6575、DS1722、MAX6635等。用DS18B20可使系统结构更简单,可靠性更高。DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达0.0625℃,被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。DS18B20的外形如图2所示,有三个引脚,引脚定义: DQ为数字信号输入/输出端, GND为电源地, VDD为外接供电电源输入端(在寄生电源接线方式时接地)。

DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。

这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输

出为FC90H。

DS18B20与单片机的接口电路很简单,如下图3所示。

DS18B20的DQ即2号端于单片机P26口相接,另外两个管脚一个接5V电源,另外一个管脚接地。上拉电阻为5.1K的上拉电阻,分别接于单片机的EA/VP端与P2.7口。上拉电阻作用主要是若温度传感器开路或没接时,能起到上拉作用,使之为高电平,使后读电路保护作用。

4.3 单片机最小系统 4.3.1 单片机选型

在本次设计中,主要用单片机STC89C51来控制。

STC89C51是与8051兼容的CHMOS微控制器。其FLASH存储器容量为2KB。与CHMOS工艺的89C51一样,支持软件选择的空闲和掉电两种节电运行方式。性能如下: 8位CPU

工作电压范围2.7~6V

全静态工作方式:0Hz~24 Hz ; 一个可编程串行口; 有片内精密模拟比较器; 2KB的FLASH存储; 128B的数据存储器; 15根输入/输出线; 2个16位定时/计数器;

5个中断源,2个优先级。 STC89C51的FLASH存储器编程:

STC89C51单片机提供了2KB的片内FLASH程序存储器,它允许在系统改写或用非易失性存储器编程器编程。 FLASH存储器加密位:

STC89C51单片机有2个加密位。可以编程(P)或不编程(U)以获得不同的加密功能。

4.3.2 最小系统 图4 单片机最小系统

时钟复位电路如图4所示,采用12MHz的晶振。复位电路采用了微分型复位电路。复位电路的基本功能是:系统上电时提供复位信号直至系统电源稳定后撤销复位信号为可靠起见电源稳定后还要经一定的延时才撤销复位信号以防电源开关或电源插头分-合过程中引起的抖动而影响复位,有效的防止系统有时会出现一些不可预料的现象,如无规律可循的“死机”、“程序走飞”等。

4.4 显示电路

主要采用四位一体共阳极LED数码管组成,采用动态法显示,直接显示当前环境温度。P0口接数码管的段码,P1.0-P1.3接数码管的位线。按钮开关可选择小数点后显示一位或两位。

4.5 电源电路

市电220V经过变压器T1降压,得到一个交流的16v电压,再经过四个整流二极管整流、C5滤波得到直流电压,最后经过三端集成稳压管稳压,得到一个稳定的5V直流电压。 2 软件设计

在此系统中,主要包括温度测量、显示、键盘。最主要的程序是温度测量部分。 2.1 系统主流程图

系统上电后,首先对DS18B20进行初始化设置,接着对DS18B20发出SKIP ROM指令(即跳过ROM存储器)延时5ms后,对DS18B20发出启动温度转换命令,然后,从DS18B20的暂存储器中读出温度数据,接着对该数据进行转换,转换成当前环境温度。最后将实际温度与设置温度比较,超过限制则发出报警。 2.2 温度测量设计

通过STC89C51芯片的一个通用I/O口就可以实现对智能温度测量模块DS18B20的控制。读取DS18B20测量的温度主要是通过初始化命令、ROM功能命令、存储器功能命令、温度转换命令、读存储器命令等组成。冷端温度补偿

三、系统软件算法分析

程序命令时序 总线命令序列如下: 第一步: 初始化

第二步: ROM命令(跟随需要交换的数据) 第三步: 功能命令 (跟随需要交换的数据)

每次访问单总线器件,必须严格遵守这个命令序列,如果出现序列混乱,则一线器件不会响应单片机。

基于一线上的所有传输过程都时以初始化开始的,初始化过程由单片机发出的复位脉冲和DS18B20的响应的应答脉冲组成。应答脉冲使单片机知道,总线上有1-WIRE设备,且准备就绪。系统中CPU采用12MHz晶振,DQ端接P2.6。 RESET子程序

RESET:CLR P2.6 ;拉低总线至少480us,否则在温度较高时会无法完成复位。

MOV R2,#130 ;在调试过程中发现延时520uS,测温值可到110℃,达到

D1: DJNZ R2,D1 ;DS18B20的技术参数。 SETB P2.6 ;释放总线 MOV R2,#20 D4: DJNZ R2,D4

JB P2.6,D0 ;总线若为低,则复位成功;否则复位失败,返回。 MOV R2,#110

D2: DJNZ R2,D2 ;延时等待复位过程结束 RET

在单片机检测到应答(presence)脉冲后,就可以发ROM命令,命令长度为8位。该命令字要通过1-WIRE通信协议规定的严格的写时隙(Write time slots),逐位写到一线上,DS18B20会自动接收到这些命令,并准备响应相应的操作。本系统是单点使用,故只须用到SKIM ROM COMMAND(0CCH),这样单片机可以同时访问总线上的所有设备,而无须发出任何ROM代码信息。例如,单片机在发出SKIP ROM命令后跟随CONVENT T (功能 COMMAND) 即启动温度转换命令(44H),值得注意的是:若SKIP ROM 命令后跟的是READ SCRATCHPAD(0BEH)命令(包含其他读操作命令),则该系统只能用于单点系统,否则将由于多个节点都响应该命令而引起数据冲突。

在单片机发出ROM 命令后,接着就可以发送功能命令,然后DS18B20就开始执行命令,本单点应用系统中主要用到CONVENT T和READ SCRATCHPAD在执行READ SCRATCHPAD命令时,单片机可以通过发送RESET脉冲在任何时候中断数据传输。 读、写时序

在对DS18B20进行ROM或功能命令字的写入及对其进行读出操作时,都要求按照严格的1-WIRE通信协议(时序),以保证数据的完整性。其中有写0、写1、读0和读1时序。在这些时序中,都由单

片机发出同步信号,并且所有的命令字和数据在传输的过程中都是字节的LSb在前,这一点于基于其他总线协议的串行通信格式(比如SPI、 等)不同,它们通常是字节的MSb在前。 读时序

DS18B20仅在单片机发送读时隙(READ SLOT)时才发送数据,所以单片机在发送READ SCRATCHPAD命令后必须立即产生读时隙。所有的读时隙都要至少保持60us,并且在两个读时隙间至少要有1us的恢复时间。

单片机通过把总线拉低至少1us来做为一个读时隙的开始,DS18B20的输出数据在读时序下降沿过后15us内有效,所以在此期间单片机应释放总线,进入读数据状态以便读取数据,15us后一线总线被上拉电阻拉为高电平,程序延时等待读时隙结束。 读一字节子程序 出口条件:读出字节数据在A中

RE1W:MOV R6,#8 ;从1-Wire总线读出1字节数据的子程序 RE1:CLR P2.6 ;拉低总线,发出读时序 NOP

SETB P2.6 ;释放总线,等待输入 MOV R4,#02H RE2:DJNZ R4,RE2

MOV C,P2.6 ;通过RRC A指令,从低位开始依次读入数据 RRC A MOV R5,#20

RE3:DJNZ R5,RE3 ;延时,等待读时隙结束 SETB P2.6 ;恢复时间 DJNZ R6,RE1 SETB P2.6 RET 写时隙

写时隙也有两种,写0和写1。主要用于单片机通过1-WIRE总线向DS18B20

写入命令字。所有的写时隙也至少要保持60us,且在两个写周期之间至少要有1us的恢复时间。

单片机通过拉低一线总线至少1us来产生写时隙。当写1时,单片机拉低总线,然后必须在15us内释放总线,总线被上拉电阻拉高。当写0时,单片机拉低总线后,然后必须继续保持总线为低(至少60us)。DS18B20在单片机发出写时隙后的15—60us之间开始采样,在这期间内,若总线为高,则1被写入进DS18B20;若总线为低,则0被写入DS18B20。

写一字节子程序入口条件:写入的字节在A

WR1W:MOV R3,#08H;向1-Wire总线写入1字节数据的位数 W1: SETB P2.6;恢复时间 MOV R4,#02

RRC A;通过RRC A指令依次向总线写入1字节的数据 CLR P2.6;拉低总线,发出写时隙 W2:DJNZ R4,W2

MOV P2.6,C MOV R4,#20 W3:DJNZ R4,W3 DJNZ R3,W1 SETB P2.6 RET

结 论

通过这次高精高精度数字式温度的设计和制作,让我感觉到在大学三年

里,掌握了一定的专业知识和动手能力,在制作计的过程中学到了很多东西。比如了解了温度传感器DS18B20的功能,如何编写单片机STC89C51的程序来实现数码管直接显示环境温度。还有巩固了以前学过的知识,比如用制图Protel 99 SE等等。最主要的还是使我能利用硬件和软件的结合,来完成一个产品的设计和制作!

总之,在这个毕业论文的完成过程中,让我感觉一种对知识的一种重温,让我知道如何有步骤和计划的完成一项任务,不过在这个其中也让我感觉到自己所学的知识还是有限的和解决问题的不够完善,希望自己今后做好每一件事情。

谢 辞

本论文是在任健老师悉心指导下完成的。导师专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。不仅使我树立了远大的学术目标、还使我明白了许多待人接物与为人处世的道理。本论文从选题到完成,每一步都是在导师的指导下完成的,倾注了导师大量的心血。在此,谨向导师表示崇高的敬意和衷心的感谢。!

参考文献

[1] [2] [3] [4]

李朝青.单片机原理及接口技术 杭州:北京航空航天大学出版社,1998 李广弟.单片机基础[M]. 北京:北京航空航天大学出版社,1994 阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989 廖常初.现场总线概述[J] .电工技术,1999.

因篇幅问题不能全部显示,请点此查看更多更全内容