基于单片机的数字温度计的设计本科毕业论文

发布时间:2019-05-07 12:38:35   来源:文档文库   
字号:

州 学 院

本科毕业论文(设计)

基于单片机的数字温度计的设计

物理与电子工程学院

动化

20101

指导教师单位 物理与电子工程学院

指导教师姓名

指导教师职称 讲师

20144

基于单片机的数字温度计的设计

动化专业2010

指导教师

随着时代的进步和发展,单片机技术已经普及到生活、工作、科研等各个领域,已经成为一种比较成熟的技术。本文将介绍一种基于单片机控制的多功能数字温度计,该设计主要包括温度模块和时钟模块,温度模块实现了温度的上下限设置报警功能,当温度不在设定范围内时,可以报警;时钟模块可以同步显示时间日历,日期和时间都可通过按键校整。本系统显示部分采用LCD液晶显示屏显示,工作方便,外形美观。矚慫润厲钐瘗睞枥庑赖。

关键词单片机STC89C52LCD1602DS18B20DS1302



Design of digital thermometer based on single chip

Automation professional 2010

Instructor

Abstract

With the era of progress and development, single-chip technology has spread to live, work, research and other fields, has become a relatively mature technology. This paper will introduce a single-chip microcomputer-based control of multifunctional digital thermometer. This design includes a temperature module and a clock module. Temperature modules can achieve alarm function by setting the upper and lower limits of temperature. When the temperature is not within the set range, it could alarm. And clock modules can simultaneous display the calendar, which date and time can be corrected through the keys. Parts of the system display use LCD liquid crystal display screen, work convenient with beautiful appearance.聞創沟燴鐺險爱氇谴净。

Key words: Single Chip STC89C52, LCD1602, DS18B20, DS1302 残骛楼諍锩瀨濟溆塹籟。



前言

时代在变化,科学技术不断地融入人们的生活中,因此单片机的应用越来越广泛。单片机常作为一个核心部件使用,特别是在自动控制系统和实时检测系统中[1]。数字温度计和数字钟便是其中的代表之一,把单片机结合到温度计和时钟的设计中,使他们实现数字化,大大方便了人们对温度的测量和时间的记录。科学技术能够让旧的东西焕发新的活力,从而改变人们的生活方式。鶼渍螻偉阅劍鲰腎邏蘞。

温度是常用到的一个物理量,特别是在石油、化工、环境保护 、医学、工业等领域更是作为必测参数[2]。对温度的测量就必须用到温度计,传统的温度计有酒精温度计、水银玻璃温度计、热电偶和热电阻温度计等。传统的温度计反应速度慢、读数麻烦等缺点,因此应用起来比较麻烦,在一些领域,传统的温度计往往达不到测量要求[3-4]。时代在进步,科学技术也快速发展,新技术推动了温度测量方式的变化,无需人员参与就能够自动检测的测温系统被广泛应用。本设计的数字温度计可以实现数字显示,使得读数变得更加方便快捷,同时也能够达到比较高的测量精度。本设计中采用8位单片机作为主控制器件,添加了8管脚封装的时钟芯片,以实现计时功能。测温元件选用的是一种封装类似于三极管的温度传感器,此温度传感器具备把模拟量转变为数字量的功能,大大简化了本设计的电路,提高了系统的稳定性,同时也降低了设计成本。为了具备比较好的显示界面,显示器件采用的是LCD液晶屏,纣忧蔣氳頑莶驅藥悯骛。

1 方案论证与系统总体框图

1.1 方案论证

1.1.1 方案一

感温器件选用的是日常生活中比较常见的热敏电阻,温度与时间的数字则用LED数码管显示。本系统的测温电路利用热敏电阻的感温效应,采集随被测温度变化的电流值或者电压值,然后经过A/D芯片把模拟量转换成单片机可以处理的数字量,然后用LED数码管将被测温度显示出来。这样的设计方案需用到比较繁杂的A/D转换电路,要比较完整的显示所有内容需用到多位数码管,电路比较繁杂。颖刍莖蛺饽亿顿裊赔泷。

1.1.2 方案二

选择DS18B20作为测温器件,把测得的温度和同步的时间日历显示在LCD液晶里。本系统仅使用一只DS18B20传感器DS18B20不仅可以直接读取被测温度值进行显示,而且温度传感器DS18B20具有独特的单总线接口方式,与单片机连接时仅需要一条线既可实现通讯,无需太多外部元件,简化了外围电路[5]1602液晶的显示空间大,完全满足温度和日历的显示要求,电路简单,显示信息完整,可以很好的满足设计要求。濫驂膽閉驟羥闈詔寢賻。

综上所述,方案一中的电路比较复杂,器件多,不便于调试;方案二的电路相对简单,器件消耗少,并且程序编写也比较简单,所以本设计选用方案二。銚銻縵哜鳗鸿锓謎諏涼。

1.2 系统设计框图

主控器模块、显示模块、测温模块和时钟模块是本系统的主要部分,另外还加有一些简单电路,例如复位电路、报警电路和按键等。测温模块的核心器件是DS18B20温度传感器,其应用电路简单,方便使用。计时芯片使用的是DS1302,它能够精准计时,而且能够在失去主电源的情况下由后备电源对它供电,以保证芯片的正常工作。显示模块采用液晶显示屏LCD1602,简洁美观。主控芯片使用STC公司生产的RC系列STC89C52RC单片机。具体系统设计框图如图1.1所示。挤貼綬电麥结鈺贖哓类。

2 主要器件功能介绍

2.1 STC89C52RC单片机

STC89C52RC单片机是国内公司生产的一种8位单片机,属于RC系列单片机中的一种。这种系列单片机在出厂时就已经被完全加密,不可能被解密,用户程序可以用ISP/IAP机制写入。它分有DIP-40PLCC-44PQFP-44三种封装类型,第一种封装类型是最普遍的,也是最常用的,所以此系统选择了第一种封装类型。赔荊紳谘侖驟辽輩袜錈。

此单片机的功耗比较很低,运行速度也比较快,内部带有多达8K容量的可编程存储器,完全满足了本设计的控制要求。芯片中包含着非常灵巧的8处理器和大容量的可编程存储器,这特性加快了此单片机在很多不同控制领域的使用。此单片机具有这样的一些标准功能,如32 I/O口线,512字节随机存储器8k字节可编程存储器,三个16 定时器/计数器,内部复位电路,内置4KB带电可擦写可编程只读存储器,掉电时数据不会丢失,可以同时接收与发送数据的串行口。另外可降至0Hz 静态逻辑操作,有两种软件节电模式可选择。空闲模式下,CPU不工作,但串口、RAM、中断、定时器/计数器仍然工作[6]。掉电保护方式下,RAM内容不丢失,振荡器不工作,因此单片机停止所有工作,当新中断或硬件复位时,单片机又开始工作。在此采用的STC公司生产的STC89C52RC单片机,它不仅价格便宜,而且焊接简单方便,并有着比较大的存储空间[7]。其管脚图如下图2.1所示。塤礙籟馐决穩賽釙冊庫。

2.1 STC89C52单片机管脚图

STC89C52RC各个管脚的功能如下[8-9]

1主电源引脚(2根)

VCC(Pin40):电源输入,接正五伏电源;

GND(Pin20):接地。

2外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端;

XTAL2(Pin18):片内振荡电路的输出端。

3控制引脚(4根)

RST/VPP(Pin9):复位用的引脚,高电平有效,当高电平持续的时间为24个时钟振荡周期时就可以实现单片机的复位操作,如果高电平的持续时间过短将不能复位成功。裊樣祕廬廂颤谚鍘羋蔺。

ALE/PROG(Pin30):地址锁存允许信号;

PSEN(Pin29):外部存储器读选通信号。

EA/VPP(Pin31):程序存储器的选择脚,当这个管脚接到高电平时指令被从内部程序存储器读取,当这个管脚接到低电平时指令被从外部程序存储器读取。仓嫗盤紲嘱珑詁鍬齊驁。

4可编程输入/输出引脚(32根)

这种类型的单片机中共32可编程的I/O引脚,每8位作为一个口,共分为4组,分别为P0P1P2P3口。绽萬璉轆娛閬蛏鬮绾瀧。

P0口(Pin39Pin32):8位双向I/O引脚,名称为P0.0P0.7

P1口(Pin1Pin8):8位准双向I/O引脚,名称为P1.0P1.7

P2口(Pin21Pin28):8位准双向I/O引脚,名称为P2.0P2.7

P3口(Pin10Pin17):8位准双向I/O引脚,名称为P3.0P3.7

2.2 LCD1602显示屏

LCD1602液晶屏,可以显示两行的内容,共有32小格,每个字符占用一个小格子的空间。可以拿来显示符号、数字、字母等的点阵型液晶模块,也可以显示汉字,但是实现的过程相当复杂,1602液晶也常常被叫为1602字符型液晶,它由若干个5×7或者5×11等点阵字符位组成,字符可以显示在任何一个点阵字符位上。这种液晶有不少的优点,例如超薄而轻巧、体积较小、显示的内容比较丰富和微功耗等,所以比较受欢迎,它被越来越广泛的应用到袖珍式仪表以及低功耗应用系统中[10]比传统的数码管显示它的显示界面有了很大的改善,虽然它的价格高点,但是它显示的效果好也很耐用。与数码管相比,它接线相对简单,容易焊接,而且它的显示程序相对数码管的显示程序来说也比较短,容易编写和调试。LCD1602可以能让系统的显示模块能够可以显示比较多的信息,该器件采用并行接口,传送数据的效率也比较好。LCD1602的管脚图和接口信号说明分别如图2.2和表2.1所示。骁顾燁鶚巯瀆蕪領鲡赙。

2.2 LCD1602的管脚图

2.1 LCD1602的接口信号说明

引脚号

标识

说明

PIN1

GND

0V

PIN2

VCC

4.8V-5V

PIN3

V0

对地接电阻470-2K

PIN4

RS

RS=0,指令寄存器;RS=1,数据寄存器

PIN5

R/W

R/W=0,写;R/W=1,读

PIN6

E

允许信号

PIN7

D0

数据0

PIN8

D1

数据1

PIN9

D2

数据2

PIN10

D3

数据3

PIN11

D4

数据4

PIN12

D5

数据5

PIN13

D6

数据6

PIN14

D7

数据7

PIN15

LED+

背光正极,接4.8V - 5V

PIN16

LED-

背光负极,接0V

使用指令可以实现对1602屏的操作,例如读、写、显示地址等。使用这类型的液晶前要了解相关指令的作用以及指令的设置方法,只有在完成相关指令的设置的情况下,才能在屏幕上显示所需的效果,这种液晶总共有11条指令,如表2.2所示。瑣钋濺暧惲锟缟馭篩凉。

2.2 LCD1602指令表

指令

RS

RW

D7

D6

D5

D4

D3

D2

D1

D0

1

清屏

0

0

0

0

0

0

0

0

0

1

2

光标返回

0

0

0

0

0

0

0

0

1

3

输入模式

0

0

0

0

0

0

0

1

I/D

S

4

显示控制

0

0

0

0

0

0

1

D

C

B

5

光标/字符移位

0

0

0

0

0

1

S/C

R/L

6

功能

0

0

0

0

1

DL

N

F

7

置字符发生器地址

0

0

0

1

字符发生存贮器地址

8

置数据存贮器地址

0

0

1

显示数据存贮器地址

9

读忙标志和地址

0

1

BF

计数器地址

10

写数据到指令7.8所设地址

1

0

要写的数据

11

从指令7.8所设的地址读数据

1

1

读出的数据

2.3 DS1302时钟芯片

DS1302芯片是由国外公司研制生产的,一般为8管脚封装,它作为一种自带随机存储器、运行功耗低、运行速度快的适时时钟芯片,它的实时时钟电路提供了年、月、日、星期、时、分还有秒的信息。这种时钟芯片可以自动调整闰年的天数和每月的天数,改变了以往只能靠人工进行调整的情况,时钟操作能以指令设定为1224小时格式[11-12]与主控制器之间的通信方式为同步串行方式,节省了主控制器的I/O资源,也简化了系统的电路设计结构DS1302管脚图及内部结图如下图2.3所示。鎦诗涇艳损楼紲鯗餳類。

11VCC1为后备电源引脚;

223X1X2是晶振引脚;

34GND为接地引脚;

45RST为复位引脚;

56I/O为数据输入、输出引脚;

67SCLK为串行时钟引脚;

78VCC2为主电源引脚;

2.3 DS1302管脚及内部结构图

2.3.1 DS1302的寄存器

DS1302内部含有时钟相关的寄存器,通过向相关寄存器写入一些命令字实现对时钟DS1302的操作,例如在需改变某时刻分的初始值,首先要把命令字82H写入寄存器,然后就可以把初始值写入分寄存器;当某时刻分的值需要读出时,需要先写入命令字82H,然后才可以从分寄存器读取数据。表2.3列出了DS1302内部和时钟相关的寄存器分布。栉缏歐锄棗鈕种鵑瑶锬。

2.3 DS1302内部和时钟相关的寄存器分布

寄存器名称

命令字

取值范围

各位名称

7

6

5

4

3

2

1

0

秒寄存器

80H

81H

00~59

CH

10SEC

SEC

分寄存器

82H

82H

00~59

0

10MIN

MIN

时寄存器

84H

85H

01~1200~23

12/24

0

AP

HR

HR

日寄存器

86H

87H

01~2829,30,31

0

0

10DATE

DATE

月寄存器

88H

89H

01~12

0

0

0

10M

MONTH

周寄存器

8AH

8BH

01~07

0

0

0

0

0

DAY

年寄存器

8CH

8DH

09~99

10YEAR

10YEAR

上表中各寄存器存放的数据位均为BCD码,所用符号的意义如下:

1CH为时钟停止位,CH=0,振荡器开始工作;CH=1,振荡器停止工作。

210SEC为秒的十位数字,SEC为秒的个位数字;

310MIN为分的十位数字,MIN为分的个位数字;

4AP为小时的格式设置位,AP=0,上午模式(AP);AP=1,下午模式(PM);

510DATE为日期的十位数字,DATE为日期的个位数字;

610M为月的十位数字,MONTH为月的个位数字;

7DAY为周的个位数字;

810YEAR为年的十位数字,YEAR为年的个位数字;

DS1302内部的RAM共有两种,一种是单个RAM单元,总共31个,一个8位的字节作为每一个单元[13]C0HFDH作为命令控制字,偶数表示写操作,奇数表示读操作;另一种是突发方式下的RAM, 所有的RAM31个字节可一次性被读写,FFHFEH分别作为读写命令控制字。在一般情况下,不需要对RAM进行操作。辔烨棟剛殓攬瑤丽阄应。

2.3.2 DS1302的读写方式

如图2.4所示为DS1302的命令字结构。8为最高控制位,当它为1时,表示允许写入;如果不为1,则表示禁止写入。7表示操作对象是RAM还是寄存器,该位为1,对RAM操作;不为1,对时钟寄存器操作。最后一位为0,表示写;为1,表示读。剩下的5个位是RAM或时钟寄存器的内部地址。峴扬斕滾澗辐滠兴渙藺。

1

RAM/CK

A4

A3

A2

A1

A0

R/W

2.4 DS1302的命令字结构

2.5 DS1302工作时序图

单片机和DS1302之间的通信协议规定:无数据传递时,SCLK这个引脚会保持低电平的状态,此时如果CE从低电平变成高电平时即启动数据传输,CE为低电平时禁止数据传输。在时钟脉冲的上升沿数据被写入到时钟芯片内,而在时钟脉冲的另一种状态,数据被从时钟芯片中读出。传递数据时,低位(bit0)在前,高位(bit7)在后。工作时序如图2.5所示。根据这些规则,即可对DS1302进行读写操作。詩叁撻訥烬忧毀厉鋨骜。

2.4 温度传感器DS18B20

DS18B20是新研发生产的传感器,具备单总线方式和数字化的特点这种传感器适配微处理器属于一种改进型器件,具备了智能化的特点,可直接读出被测温度[14]则鯤愜韋瘓賈晖园栋泷。

这种温度传感器的内部都刻录有64位序列号,做到每个器件序号的唯一性,这种特点有助于在通信过程中的器件识别。又采用单总线这样的独特的接口方式,也就是多个数字式传感器可以同时挂在一根信号线上,所以比较容易实现用单块微控制器去控制分布在很多区域的DS18B20。这样的一种特性在过程监测和控制、机器温度探测、仪器温度探测、建筑物温度探测等方面都极其有用[15-16]胀鏝彈奥秘孫戶孪钇賻。

2.6DS18B20的引脚排列,表2.4DS18B20的引脚说明,图2.7DS18B20的方框图。有两个字节的温度寄存器包含于高速暂存器中,传感器采集得的温度数据被存储到这两个寄存器中,以便后续的输出。每个器件的片序列号被存放到64 位只读存储器中。除了这些,一个字节的配置寄存器和一个用于温度报警值存储的寄存器也包含在这个高速暂存器里。有这种配置寄存器,用户可以设定温度的精度为121110还有9 位这四种中的其中一种。配置寄存器,TL TH是一种不容易丢失数据的可擦除程序寄存器,因此在器件得不到供电的情况下寄存器中存储的数据依然保留着。鳃躋峽祷紉诵帮废掃減。

2.6 DS18B20引脚图 2.7 DS18B20方框图

2.4 DS18B20的引脚说明表

DS18B20引脚详细说明

8引脚SOIC封装

T0-92封装

符号

说明

5

1

GND

接地

4

2

DQ

数据输入/输出引脚。对于单线操作:漏极开路。当工作在寄生电源模式时用来提供电源。

3

3

VDD

可选的VDD 引脚。工作于寄生电源模式时VDD必须接地。

所有表中未提及的脚均都无连接

2.4.1 DS18B20接口电路

DS18B20使用一个单线端口就能够实现通讯,其中使用的是一种非常独特的单总线协议。当在所有器件都经由漏极开路端口或者一个3态端口与总线连接到一块的情况下,控制线需要连接一个弱上拉电阻。在所设计的总线系统上,微控制器会根据每个器件独有的64位片序列号来辨认总线上的器件和记录总线上的器件地址。因为每个器件内都有一个独特的片序列码,所有从理论上讲在单根总线上能够连接的器件个数是无限的,但是在实际应用中总线上挂有的器件越多,温度检测的时间也越长,精度也有所下降。DS18B20有两种供电模式,一种是外部电源供电模式,即把外部电源接到VDD引脚即可完成供电,另一种是寄生电源供电模式,该模式允许DS18B20工作于无外部电源需求状态。在本设计中DS18B20采用外部供电模式,把5V电源接到VDD引脚,这是一种典型的接法,见图2.8。采用这种接法的好处就是单总线上省去了强上拉。此外在温度转换期间总线不用总维持在高电平。稟虛嬪赈维哜妝扩踴粜。

2.8 DS18B20典型接口电路

2.4.2 DS18B20工作原理

DS18B20的显著特点是它能够直接读数字的温度传感器。DS18B20成功启动之后处于低功耗等待状态,如果要进行温度测量以及AD转换时,主控制器向传感器发送[44H]命令。完成这个操作后,进行温度测量,转换后得的温度数据以两个字节的形式被存放到高速暂存器的温度寄存器中,接着DS18B20继续处在等待状态[17]采用外部电源供电模式下的DS18B20,主控制器在向它发送温度转换指令之后接着发起“读时序”,如果温度传感器把检测来的温度转换完毕则返回1处在温度转换过程则返回0陽簍埡鲑罷規呜旧岿錟。

由一个或多个从机和一块总线控制器组成的系统通常称为单总线系统。当只有一只从机挂在总线上时,系统被称为“单点”系统;如果由多只从机挂在总线上,系统被称为“多点”系统。在本设计中DS18B20只能充当从机的角色。单总线系统中的指令和数据的传递一般从最低有效位开始,器件间的通信要严格遵循通信协议。通过单线总线端口访问DS18B20的协议如下:沩氣嘮戇苌鑿鑿槠谔應。

步骤1:初始化。在单总线中,初始化序列是任何执行操作处理的开始。组成初始化序列的内容有两个部分,一个部分是由总线控制器向从机发出的复位脉冲,另一部分是从机向总线控制器发出的存在脉冲。有存在脉冲的产生说明总线上有DS18B20器件,同时也提示主控制器,表明自身已经做好执行其它操作的准备。钡嵐縣緱虜荣产涛團蔺。

步骤2ROM操作指令。如果有一个存在脉冲被总线控制器探测到,控制器就会发送一条ROM指令。当有若干只DS18B20连接到总线上,总线控制器要识别总线上的器件型号和器件数目也是得根据这些指令来完成的。这些指令都是基于每个器件独有的64 ROM片序列码,这样可以让总线控制器知道对众多器件中的具体一个进行操作。ROM指令总共为五条,每一条指令的长度都为位。总线控制器只有在发出一条ROM指令之后才能发送一条DS18B20功能指令。控制DS18B205ROM指令如下:懨俠劑鈍触乐鹇烬觶騮。

(1)搜索ROM指令 [F0H]。给系统上电完成系统初始化,总线控制器得到从机的型号和数目是根据识别总线上所有ROM片序列码来实现的。器件的ROM编码被总线控制器通过搜索ROM指令不停的搜索,直到所有从机器件被确认为止。当只有一个从机在总线上时,那么可以用较为简单的读取ROM指令代替搜索ROM指令。在每次搜索ROM指令之后,总线控制器必须返回步骤1謾饱兗争詣繚鮐癞别瀘。

(2)读取ROM指令 [33H]。当总线上单挂着一个DS18B20温度传感器的情况下,这条命令才能够直接使用。在这样的指令下总线控制器可以直接读取从机中的64 位片序列码,不在需要用到搜索ROM指令。如果总线上不止有一个从机时,直接使用这条指令就会发生数据冲突,因为所有从机在接收到这条指令之后会同时向控制器传送信号。呙铉們欤谦鸪饺竞荡赚。

(3)匹配ROM指令 [55H]。匹配ROM指令,控制器发送这个指令后,接着发送器件的64ROM编码序列,目的是在总线上寻找与所发送的编码序列匹配的器件。当总线上的某个器件的片序列号与从控制器传送来的片序列号相匹配时,此器件就会做出响应,然后执行随后的其它操作指令;所有和64ROM片序列码不匹配的器件都将等待复位脉冲。莹谐龌蕲賞组靄绉嚴减。

(4)忽略ROM指令 [CCH]。此条指令的功能是让总线控制器在没有得到某个器件片序列码的情况下也可以发送功能指令。比如,为了实现温度转换的操作,总线控制器首先把一条忽略ROM指令发送到温度传感器,接着又把温度转换指令[44H]发送到温度传感器。值得注意的是当总线上仅有一个器件时,不管怎样,当要把一条读取暂存器指令[BEH]发出之前必须先发送忽略ROM指令。当总线上只有一个器件时,采用这条命令可以提高系统的反应速度,因为器件不用发回64 ROM 编码,省掉了一部分的时间。总线上有若干个从机的情况下,不可以使用这条指令,以避免因多只从机同时发送数据而引发的数据冲突。麸肃鹏镟轿騍镣缚縟糶。

(5)报警搜索指令 [ECH]。在多个器件挂接在总线上的情况下,此条命令用于搜索符合报警条件的器件,只有满足报警条件的从机才对该命令作出响应。DS18B20会做出响应的条件是在最近一次测温后遇到符合报警的温度。在每次报警搜索指令周期之后,总线控制器必须返回步骤1納畴鳗吶鄖禎銣腻鰲锬。

步骤3DS18B20功能指令。要完成对DS18B20的操作不得不使用两种指令,一种是ROM指令,另一种是功能指令。在系统中总线控制器发送一条DS18B20功能指令之前一定要先发送一条ROM命令,两者的发送顺序不可颠倒,否则出现错误。用了这些功能指令,总线控制器可以对DS18B20的暂存器进行读写,可以判断器件采用了那种电源模式还有可以启动器件进行温度转换。DS18B20的功能指令详见下文,同时被概括于表2.5風撵鲔貓铁频钙蓟纠庙。

温度传感器DS18B20的功能指令具体说明如下[18]

(1)温度转换指令 [44H]。此条命令的作用是完成一次温度转换的启动。执行温度转换指令后,产生的温度转换结果数据以个字节的形式被存放于高速暂存器中,当温度传感器接收到读的命令,就把暂存器里的数据传输给主控制器。灭嗳骇諗鋅猎輛觏馊藹。

(2)写暂存器指令 [4EH]。向DS18B20的暂存器写入数据就需要用到这条命令,从开始到最后,写入的地方也会有所变化的,可以分为三个阶段,每个阶段写人一个字节。开始时写入TH 寄存器,这是第一个阶段,第二阶段是写入到TL 寄存器,写入配置寄存器即为第三个阶段。传送数据时是从最低位开始的,在总线控制器发出复位命令前必须完成上边讲到的那三个字节的写入,一旦执行复位命令就不可以写入。铹鸝饷飾镡閌赀诨癱骝。

(3)读暂存器指令 [BEH]。暂存器内容的读取就需要这条指令。字节0作为读取数据的开始位,一位一位的读取,当读完第9字节也就是字节8算是读取完成,当不必把所有的字节读完,可以在任意时刻通过控制器发出复位命令的方式中止读取。攙閿频嵘陣澇諗谴隴泸。

(4)拷贝暂存器指令 [48H]。如果想把配置寄存器、TH还有TL的内容依次拷贝到EEPROM内,就需要用到这一条命令。趕輾雏纨颗锊讨跃满賺。

(5)召回EEPROM指令 [B8H]。此条指令的作用是将EEPROM中的配置数据、TH中的报警值和TL中的报警值从拷回暂存器中。该命令被发出之后,总线控制器进入读时序状态,拷回标识从DS18B20输出:1标识表示拷回结束,0标识表示正在拷回。DS18B20接电时此类拷回操作可以自动完成,因此,一旦给器件供电成功,有效的数据立马存在于暂存器里中。夹覡闾辁駁档驀迁锬減。

(6)读电源模式指令 [B4H]。这条指令发到DS18B20后,总线控制器读时序,如果采用的是外部电源供电模式,总线会被 DS18B20拉高。视絀镘鸸鲚鐘脑钧欖粝。

DS18B20的所以操作都要严格遵循以上3个步骤,如果把顺序弄颠倒了或者是缺少其中的某个步骤,那么对器件的操作将不会成功。具体的顺序是这样的:总线控制器先对器件进行初始化,然后发送ROM指令中的某一条指令,最后发送相应的功能指令,都完成后又返回步骤1偽澀锟攢鴛擋緬铹鈞錠。

2.4.3 DS18B20工作时序

为了确保数据的完整性DS18B20必须依靠严格的单总线协议。协议包括几种单总线信号类型,它们是存在脉冲、复位脉冲、读1、读0、写1和写0。在这几种信号中,存在脉冲由DS18B20发出,剩下的是由总线控制器发出的[19]緦徑铫膾龋轿级镗挢廟。

2.5 DS18B20功能指令表

DS18B20功能指令表

指令

说明

协议

单总线发出协议后

备注

转换指令

 

 

 

 

温度转换指令

开始温度转换

44h

读温度忙状态

1

存储器指令

 

 

 

 

写暂存器指令

读取CRC字节和暂存器

4Eh

一直读到最高位(第9字节)

2

读暂存器指令

把字节写入配置寄存器、THTL

BEh

写入3个字节到DS18B20

3

拷贝暂存器指令

拷贝配置寄存器、THTL的数据EEPROM

48h

1

召回EEPROM指令

EEPROM中的数据召回到配置寄存器、THTL

B8H

把拷贝标识传送到总线控制器

 

读电源模式指令

器件供电模式的标识

B4h

把供电状态返回

 

备注:

(1)DS18B20采用寄生电源模式的情况下,处在拷贝数据到EEPROM温度转换的期间内,单总线必须得到一个强上拉。在这个时间段内不可以有其它操作出现在总线上。

(2)数据传输的中止信号是由总线控制器发出的复位信号,它在任意时刻都能够发出这种信号。

(3)在控制器发送复位命令之前,3个字节一定要全部写入。

2.9 DS18B20初始化时序图

初始化序列是所有器件之间的通信的开始,控制器与DS18B20间的通讯也遵循这个原则,初始化序列见图2.9。一个存在脉冲出现在一个复位脉冲之后,表示DS18B20已经完成做好准备,可以接收和发送数据。在初始化序列期间,总线控制器拉低总线并保持480us以发出一个复位脉冲,接着释放总线,最后进入接收状态。单总线由4.7K上拉电阻拉到高电平。当I/O引脚上的上升沿被DS18B20探测到后,等待15-60us,然后发出一个由60-240us低电平信号构成的存在脉冲。騅憑钶銘侥张礫阵轸蔼。

DS18B20有写时序和读时序。写时序又分为两种:写1时序和写0时序。总线控制器通过写1时序写逻辑1DS18B20,写0时序写逻辑0DS18B20。持续60us是所有写时序的最少时间限,还包括两个写周期之间至少1us的恢复时间。当总线控制器把数据线从逻辑高电平拉到低电平的时候,写时序开始,见图2.10疠骐錾农剎貯狱颢幗騮。

要产生一个写时序,数据线先被总线控制器拉到低电平接着再释放,当写时序进行到15us后总线被释放。当总线被释放的时候,总线被4.7K的上拉电阻拉高。一个写0时序的完整产生,数据线必须由总线控制器拉到低电平而且要持续保持至少60us镞锊过润启婭澗骆讕瀘。

总线控制器初始化写时序后,15us60us的这个时间段内DS18B20I/O线的电平进行采样。如果采得的是高电平,表示控制器进行写1操作。如果采得的是低电平,表示控制器进行写0操作。榿贰轲誊壟该槛鲻垲赛。

读时序被总线控制器发出之后,DS18B20只能被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令[BEH]或者读电源模式指令[B4H]后,一定马上开始进行读时序,这样DS18B20才能够响应请求信息。除此之外,召回EEPROM指令[B8H] 或者温度转换指令[44H]被总线控制器发送之后,总线控制器也马上进行读时序。邁茑赚陉宾呗擷鹪讼凑。

所有读时序的时间最少为60us,包括两个读周期间至少1us的恢复时间。如果总线从高电平变为低电平时,表示读时序开始,总线必须至少保持1us,然后总线被释放,如图2.10所示。当DS18B20识别到来自控制器的读时序, 便会通过拉高或拉低总线来传送数据,拉高总线表示传送1,拉低总线表示传送0当结束了逻辑0的传送时,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us 内有效。所以,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us,以读取I/O脚状态。嵝硖贪塒廩袞悯倉華糲。

2.10 /写时序图

3 硬件电路

本设计的硬件电路有单片机主控制模块、温度和时钟显示模块、时钟电路模块、温度测量模块、报警模块以及按键模块。这几个模块组合在一起构成了系统的总体硬件电路。该栎谖碼戆沖巋鳧薩锭。

3.1 单片机主控制模块设计

为了让单片机运行起来,其外围要设计一些简单电路,构成单片机的最小系统。主要有供电部分、晶振电路部分以及复位电路部分,具体如图3.1所示。在本设计中的供电部分,采用现成的电源适配器,从而可以确保电源供电电压的稳定性;复位电路采用手动复位;单片机使用外接晶振的方法,晶振频率为12MHz劇妆诨貰攖苹埘呂仑庙。

3.1 单片机最小系统

3.2 显示模块接口

3.2 显示模块设计

本设计的LCD1602采用并行口接法。根据LCD1602的引脚接口说明与单片机连接,显示模块接口电路设计如图3.2所示,电路图的详细说明如下:臠龍讹驄桠业變墊罗蘄。

液晶显示屏LCD1602的第1脚和第16脚接地;

液晶显示屏LCD1602的第2脚和第15脚接电源;

液晶显示屏LCD1602的第3脚串联一个10kΩ的可调电阻器接地;

液晶显示屏LCD1602的第456脚分别接单片机的P3.5P3.6P3.7

液晶显示屏LCD1602的第714脚分别接单片机的P0.0P0.7口;

3.3 时钟电路模块设计

本设计采用时钟芯片DS1302,其连接图如图3.3所示,采用了本芯片的典型,简单易懂。

如图单片机P1.7脚与DS1302的复位脚相连接;P1.5接到时钟芯片的串行时钟脚;P1.6接到时钟芯片的数据输入输出口。采用双电源给DS1302供电,主电源采用5V供电,当失去主电源时自动切换到3V备用电池,以保证时钟芯片的正常计时。晶振引脚接入频率为32.768KHz的晶振。鰻順褛悦漚縫冁屜鸭骞。

3.4 温度测量电路模块设计

温度传感器DS18B20的信号输入输出口DQ接到单片机的P1.1,在此采用的是单总线技术,此信号线即可传输数据,同时又可以传输时钟,而且具有双向传输数据的功能,因此这样的接线方式具有成本低廉、硬件开销少、线路简单、容易对总线进行维护和拓展的优点。单总线通常要求外接一个上拉电阻,在此采用的电阻阻值为4.7K穑釓虚绺滟鳗絲懷紓泺。

本设计中的DS18B20采用传统供电模式,把一个外部电源接到温度传感器的电源引脚,这种电路接法的优点是单总线上不在需要强上拉,同时总线在温度转换期间不需要总保持高电平。具体电路图3.4所示。隶誆荧鉴獫纲鴣攣駘賽。

3.3 时钟电路图

3.4 温度测量电路

3.5 报警和按键模块设计

蜂鸣器是一种很好的提示元件,在工业及民用设备中经常用到,蜂鸣器分为直流和交流两种,直流蜂鸣器只要通电就会发出声音,使用简单,因此本设计采用直流蜂鸣器的声响效果作为报警信号[20]。当温度超出设定值范围时,单片机通过置位P1.0口驱动三极管导通使得蜂鸣器发出声音实现报警。浹繢腻叢着駕骠構砀湊。

本设计按键分为两部分而且都是独立按键,一部分是时间调整按键,另一部分是温度上、下限调整按键。按键0至按键3用于时间调整,按键0是调整模式选择健,可以对秒、分、时、星期、日、月和年进行调整。按键1和按键2分别为增加健和减少健,用时间或日期的上调或下调。按键3则为退出健,用调整模式的退出。按键5至按键7用于温度上、下限的调整,按键5为调整模式选择键,用于对上限、下限和退出这是三种模式的选择,按键6和按键7分别为增加和减少健,用来实现上限和下限的上调或下调。具体电路图如图3.5所示。鈀燭罚櫝箋礱颼畢韫粝。

3.6 系统总体硬件电路

由上述个各部分的硬件电路组合在一起构成了本设计的总体硬件电路。如图3.6所示。

3.5 报警和调整按键电路

3.6 总体硬件电路

4 软件设计

4.1 系统软件程序设计

惬執缉蘿绅颀阳灣熗鍵。

4.1 系统主程序执行流程图

主程序执行流程如图4.1所示,主程序先对液晶、温度传感器和时钟芯片进行初始化,然后不停判断是否进行时间、日期或者温度上、下限的调整。接着判断温度值是否超出设定值,一旦温度高于设定值就自动报警,否则不报警。最后将数据处理后送LCD1602显示, 贞廈给鏌綞牵鎮獵鎦龐。

4.2 液晶显示程序

在让液晶显示一些内容之前,要对液晶进行相应的设置,例如:是否有光标、光标是否闪烁、光标的移动方向等,这样之后便可以实现所需的显示效果。使用控制指令可以实现液晶显示模式的设置,全部指令都是由主控制器发出的。显示一个字符的操作过程为“读状态→写指令或数据”。嚌鲭级厨胀鑲铟礦毁蕲。

(1) 液晶初始化程序

void LCD_Initial()

{

LcdEn=0;

LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,

LCD_Write(LCD_COMMAND,0x38);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示,无光标

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏

LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动

}

(2) 读状态程序

unsigned char LCD_Wait(void)

{

LcdRs=0;

LcdRw=1;

_nop_();

LcdEn=1;

_nop_();

LcdEn=0;

return DBPort;

}

(3) 向液晶写入命令或数据程序

void LCD_Write(bit style, unsigned char input)

{

LcdEn=0;

LcdRs=style;

LcdRw=0; _nop_();

DBPort=input; _nop_();

LcdEn=1; _nop_();

LcdEn=0; _nop_();

LCD_Wait();

}

4.3 时钟芯片程序

对时钟芯片DS1302的操作是通过向芯片中的寄存器写入相应的指令实现的。具体如下:

(1) 写命令、数据程序

void Write1302(unsigned char ucAddr, unsigned char ucDa) 薊镔竖牍熒浹醬籬铃騫。

{

DS1302_RST = 0;

DS1302_CLK = 0;

DS1302_RST = 1;

DS1302InputByte(ucAddr);

DS1302InputByte(ucDa);

DS1302_CLK = 1;

DS1302_RST = 0;

}

(2) 读取数据程序

unsigned char Read1302(unsigned char ucAddr)

{

unsigned char ucData;

DS1302_RST = 0;

DS1302_CLK = 0;

DS1302_RST = 1;

DS1302InputByte(ucAddr|0x01);

ucData = DS1302OutputByte();

DS1302_CLK = 1;

DS1302_RST = 0;

return(ucData);

}

4.4 温度传感器程序

根据前面DS18B20的接口电路便可以编写温度传感器程序,从而实现温度传感器的运行,然后对温度进行测量和输出。齡践砚语蜗铸转絹攤濼。

(1) 温度传感器初始化程序

void ds1820rst()

{

uchar x=0;

DQ = 1;

delay_18B20(4);

DQ = 0;

delay_18B20(100);

DQ = 1;

delay_18B20(40);

}

(2) 写命令程序

void ds1820wr(uchar dat)

{

uchar i=0;

for (i=0; i<8; i++)

{

DQ = 0;

DQ = dat&0x01;

delay_18B20(10);

DQ = 1;

dat>>=1;

}

}

(3) 读取数据程序

uchar ds1820rd()

{

uchar i=0;

uchar dat = 0;

for (i=0;i<8;i++)

{

DQ = 0;

dat>>=1;

DQ = 1;

if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat);

}

(4) 启动温度转换并读取温度程序

void read_temp()

{

uchar a,b;

float tt;

ds1820rst();

delayms(5);

ds1820wr(0xcc);

ds1820wr(0x44);

ds1820rst();

ds1820wr(0xcc);

ds1820wr(0xbe);

a=ds1820rd();

b=ds1820rd();

tvalue=b;

tvalue<<=8;

tvalue=tvalue|a;

if(tvalue<0x0fff)

tflag=0;

else

{

tvalue=~tvalue+1;

tflag=1;

}

tt=tvalue*0.0625;

tvalue=tt*10+0.5;

}

总结

从毕业设计题目的选择到现在设计完毕,经历了很长的一段时间,在设计的过程中我感受到成功的喜悦也忍受着失败的痛苦,静下心来想,我明白了成功和失败都是一种收获的道理。绅薮疮颧訝标販繯轅赛。

做毕业设计的过程也可以当作锻炼一个人的过程,在这个过程中我学的东西还真不少。这个设计让有了我一次比较全面,比较规范的设计经历。把之前学过的知识从脑子里挖掘出来,然后应用到这次设计上,我感觉很开心,做到了理论联系实际,学以致用。在设计过程中我越来越感受到细心与耐心的重要性,缺少它们,一个人的工作与学习将会面临很大的阻力。就不如在绘制原理图时一旦不注意,就有可能连错线,从而影响后面的工作,在调试电路时,缺少耐心你就不可能看到想要的效果。饪箩狞屬诺釙诬苧径凛。

由于我缺少编程的经验,所以软件设计过程中,我遇到了不少程序代码上问题,每当这个时候,我就提醒自己要仔细检查,不要浮躁,当我自己解决不了某个编程问题时,我主动去找其他同学帮忙,相互讨论,共同进步,在这样的交流过程中我解决了设计上的一些问题,最终完成整个系统的设计。烴毙潜籬賢擔視蠶贲粵。

致谢

在此论文完成之际,谨向我的导师老师表示衷心的感谢!从选题,开题报告以及后来的设计都得到了老师的帮助。尽管张老师很忙,但是在毕业设计期间,多次指导我,询问毕业设计的进度,督促我的工作;同时也感谢这四年来教过我的所有老师们,他们教会我的不仅仅是理论知识,还有如何解决各种问题的方法,面对生活的态度,我能顺利完成这个设计,与各位老师师的帮助密不可分。鋝岂涛軌跃轮莳講嫗键。

在这段时间里,还有不少的同学帮助了我,没有他们,我的学习和生活也没有这么多的快乐,在此,我对所有关心过我、帮助过我的人表示最衷心的感谢! 撷伪氢鱧轍幂聹諛詼庞。

参考文献

[1] 薛颖操.单片机课程设计实践研究[D].合肥:安徽大学,2011.

[2] 吴瑕.智能温度报警器的研究与设计[D].天津:天津大学,2009.

[3] 覃鲜艳.基于DS18B20的无线测温系统的研究与设计[D].武汉:武汉理工大学,2012.

[4] 杨恩然.温度场实时测控系统[D].西安:西安建筑科技大学,2007.

[5] 汪亮亮.温室温度检测及报警器的设计与功能实现[J].电脑知识与技术,2012,12:2906-2907.踪飯梦掺钓貞绫賁发蘄。

[6] 周建春.基于单片机和PC串口通信的温度采集系统设计[D].苏州:苏州大学,2010.

[7] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009:266-271.

[8]贺娜.基于8051单片机的电烤箱温度控制系统设计[D].天津:天津工业大学,2005.

[9] 韩刘宇.论简易数字时钟设计[J].武夷学院学报,2013,32(2):94-99.

[10] 王东锋,王会良,董冠强等.单片机C语言应用100[M].北京:电子工业出版社,2009:245-246.婭鑠机职銦夾簣軒蚀骞。

[11] 朱海涛.基于单片机的数字温度计的设计及显示[J].电子世界,2013,03:26-27.

[12] 陶忠耀.基于AT89C51单片机的数字时钟设计[J].科技传播 ,2013,(14):220-221.譽諶掺铒锭试监鄺儕泻。

[13] 庄建清,徐玮.51单片机综合学习系统—DS1302时钟一样篇[J].电子制作,2008,(10):25-26.俦聹执償閏号燴鈿膽賾。

[14] 周秀明,曹隽,张春龙.基于DS18B20的单片机温度检测与调节系统设计[J].实验室科学,2011,01:79-81.缜電怅淺靓蠐浅錒鵬凜。

[15] 杨久河.基于DS18B20的多点式无线温度测量仪的设计与实现[D].青岛:中国海洋大学,2010.骥擯帜褸饜兗椏長绛粤。

[16] 魏英智.基于DS18B20的定时温控系统的研究与实现[D].哈尔滨:哈尔滨工业大学,2005.癱噴导閽骋艳捣靨骢鍵。

[17]王建平,焦国太,季伟等.基于单片机的无线温度数据传输设计[J].机电技术,2011,34(4):14-17.鑣鸽夺圆鯢齙慫餞離龐。

[18] 张坤.基于单片机的仓库防火预警系统研究[D].保定:河北农业大学,2011.

[19] 张光忠.基于单片机的温湿度检测系统的设计[D].济南:山东大学,2007.

[20] 闫红来.温度检测及显示系统[J].网络财富,2010,12:263-264.

附录A

A 系统仿真图

附录B

B 系统PCB

附录C

C 系统实物图

本文来源:https://www.2haoxitong.net/k/doc/0fc0c3b0974bcf84b9d528ea81c758f5f71f2964.html

《基于单片机的数字温度计的设计本科毕业论文.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式