数字温度计的设计基于单片机实现.docx

上传人:b****1 文档编号:10745397 上传时间:2023-05-27 格式:DOCX 页数:32 大小:353.33KB
下载 相关 举报
数字温度计的设计基于单片机实现.docx_第1页
第1页 / 共32页
数字温度计的设计基于单片机实现.docx_第2页
第2页 / 共32页
数字温度计的设计基于单片机实现.docx_第3页
第3页 / 共32页
数字温度计的设计基于单片机实现.docx_第4页
第4页 / 共32页
数字温度计的设计基于单片机实现.docx_第5页
第5页 / 共32页
数字温度计的设计基于单片机实现.docx_第6页
第6页 / 共32页
数字温度计的设计基于单片机实现.docx_第7页
第7页 / 共32页
数字温度计的设计基于单片机实现.docx_第8页
第8页 / 共32页
数字温度计的设计基于单片机实现.docx_第9页
第9页 / 共32页
数字温度计的设计基于单片机实现.docx_第10页
第10页 / 共32页
数字温度计的设计基于单片机实现.docx_第11页
第11页 / 共32页
数字温度计的设计基于单片机实现.docx_第12页
第12页 / 共32页
数字温度计的设计基于单片机实现.docx_第13页
第13页 / 共32页
数字温度计的设计基于单片机实现.docx_第14页
第14页 / 共32页
数字温度计的设计基于单片机实现.docx_第15页
第15页 / 共32页
数字温度计的设计基于单片机实现.docx_第16页
第16页 / 共32页
数字温度计的设计基于单片机实现.docx_第17页
第17页 / 共32页
数字温度计的设计基于单片机实现.docx_第18页
第18页 / 共32页
数字温度计的设计基于单片机实现.docx_第19页
第19页 / 共32页
数字温度计的设计基于单片机实现.docx_第20页
第20页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数字温度计的设计基于单片机实现.docx

《数字温度计的设计基于单片机实现.docx》由会员分享,可在线阅读,更多相关《数字温度计的设计基于单片机实现.docx(32页珍藏版)》请在冰点文库上搜索。

数字温度计的设计基于单片机实现.docx

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

学号

 

本科毕业设计

 

学院

专业

年级

姓名

设计题目数字温度计的设计

指导教师职称

 

2014年05月14日

目录

 

摘要1

Abstract1

1引言1

2数字温度计的方案设计2

2.1数字温度计设计课题任务2

2.2系统总体方案2

2.3设计方案论证与比较2

3硬件电路设计2

3.1硬件总体设计框图2

3.2硬件总体设计原理图3

3.3核心器件介绍3

3.4各单元模块设计5

4软件设计7

4.1主程序流程图设计7

4.2温度采集模块8

4.3报警模块10

4.4温度设定模块11

5系统仿真结果11

5.1系统功能11

5.2系统指标参数仿真测试12

6系统调试与运行12

6.1电路板的制作12

6.2电路板的焊接13

6.3调试及性能分析13

7总结14

参考文献14

附录16

数字温度计的设计

学生姓名:

学号:

单  位:

 专业:

指导老师:

职称:

摘要:

在日常生活及工农业生产中,对温度的检测及控制时常显得极其重要。

因此,对数显温度计的设计有着实际意义和广泛的应用。

本设计利用单片机最小系统为核心实现对温度智能测试。

本设计主要包括单片机最小系统电路、数字温度传感器的数据采集电路、LCD显示电路、蜂鸣器报警电路、按键电路。

该数字温度计测温范围为-55℃~+125℃,精度误差在0.5℃以内,LCD液晶显示。

数字式温度计可以代替传统的水银温度计,应用在家庭以及工业生产中,具有一定的实用价值。

关键词:

单片机;DS18B20;LCD显示

DesignofDigitalThermometer

Abstract:

Indailylifeandindustrialandagriculturalproduction,thetemperaturedetectionandcontroloftenbecomesextremelyimportant.Therefore,thedigitalthermometerdesignhaspracticalsignificanceandwideapplication.Thisdesigncanrealizetheintelligentmeasurementoftemperature,Theminimumsystemmicrocontrollerasthecore.Inthisdesign,MCScircuits,digitaltemperaturesensoracquisitioncircuit,LCDdisplaycircuit,buzzeralarmcircuit,andthekeycircuits.Thetemperature’srangesfrom-55℃to+125℃.It’serrorislessthan0.5℃.Digitalthermometercanreplacetraditionalmercurythermometers,itcanbeusedinhouseholdandindustrialproductionandhassomepracticalvalue.

Keywords:

Microcontroller;DS18B20;LCDdisplay

1引言

温度是日常生活、工业、医学、环境保护、化工、石油等领域最常遇到的一个物理量。

测量温度的基本方法是使用温度计直接读取温度。

最常见到的测量温度的工具是各种各样的温度计,例如,水银玻璃温度计,酒精温度计,热电偶或热电阻温度计等。

它们常常以刻度的形式表示温度的高低,人们必须通过读取刻度值的多少来测量温度。

利用单片机和温度传感器构成的电子式智能温度计就可以直接测量温度,得到温度的数字值,既简单方便,又直观准确,因此数字温度计会是以后发展的主流。

2数字温度计的方案设计

2.1数字温度计设计课题任务

单片机作为微控制器在电子技术应用系统中广泛被使用。

本设计要求以单片机最小系统为控制中心,设计一个数字温度计,选择合适的温度传感器,并用显示器实现温度显示。

其温度测量范围为-55°C~125°C,精确达到0.5度。

该温度计可扩展功能设置上下报警温度,当温度不在设置范围内时,可以报警。

2.2系统总体方案

本设计可以分为硬件设计和软件设计。

硬件设计包括:

复位电路、时钟电路、按键电路、温度采集电路,报警电路、显示电路。

软件设计包括:

温度采集模块、报警模块、温度设定模块。

2.3设计方案论证与比较

2.3.1显示电路方案

方案一:

采用数码管动态显示。

使用七段LED数码管,采用动态显示的方法来显示各项指标,此方法虽然价格成本低,但是显示单一,显示不稳定,且功耗较大。

方案二:

采用LCD液晶显示。

采用1602LCD液晶显示,此方案显示内容相对丰富,且价格不高。

综合上述原因,采用方案二,使用LCD液晶作显示电路。

2.3.2测温电路方案

方案一:

采用模拟温度传感器测温。

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

方案二:

采用数字温度传感器。

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

综合考虑,本设计采用方案二,电路比较简单,测量精确,软件设计也比较简单。

3硬件电路设计

3.1硬件总体设计框图

本设计硬件总体设计框图如图1所示。

USB接口电源

复位电路

 

A

T

8

9

S

5

2

LCD显示电路

时钟电路

按键电路

温度采集电路

报警电路

图1硬件系统总体设计图

3.2硬件总体设计原理图

硬件总体设计原理图如图2所示。

图2硬件总体电路设计图

3.3核心器件介绍

3.3.1单片机AT89S52介绍

单片机AT89S52[1]是8位高性能MCU,超低功耗:

掉电模式下典型功耗<0.1LLA,空闲模式下典型功耗2mA.正常工作模式下典型功耗47mA具有8kF1ash存储器、512kBRAM、2kE2pROM、降低EMI功能、ISP(在系统可编程)功能。

单片机AT89S52和各个模块的接口主要是对AT89S52的I/O口进行约束,规定其为输出还是输入,输入主要是按键电路部分和时钟,输出则为报警和显示部分,其I/O分配如下图3所示。

图3单片机AT89S52I/O接口电路

3.3.2DS18B20介绍

DS18B20[2]是DALLAS公司生产的一线式传感器,具有3引脚TO-92小体积封装形式;可编程为9到12位A/D[8]转换精度,测温分辨率可达0.0625摄氏度,被侧温度用符号扩展的16位数字量方式串行输出;其工作电源既可在远端引入,也可采用寄生电源方式产生。

CPU只需一根端口线就能与诸多DS18B20通信,占用问处理器的端口较少,可节省大量的引线和逻辑电路。

DS18B20采用一线通信接口。

主要首先提供以下功能命令之一:

⑴读ROM指令0X33,⑵ROM匹配指令0X55,⑶搜索ROM指令0XF0,⑷跳过ROM指令0XCC,⑸报警检查指令0XEC。

这些指令操作作用在没有一个器件的64位光刻ROM序列号。

DS18B20有两种封装模式如图4所示。

图4DS18B20的两种封装形式

3.4各单元模块设计

3.4.1时钟和复位电路

图5晶振电路

图6复位电路

单片机AT89S52使用的时钟电路比较简单,我们采用的是晶体振荡器产生时钟源。

XTAL1(X1)为反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2(X2)是来自反向振荡器的输出,分别接到单片机的19脚和18脚。

其电路原理图如图5所示。

单片机复位电路的设计如图6所示。

该复位电路采用手动复位与上电复位相结合的方式。

当按下按键S1时,VCC通过R1电阻给复位输入端口一个高电平,实现复位功能,即手动复位这样就不用在重起单片机电源。

上电复位[10]就是VCC通过电阻R11和电容C构成回路,该回路是一个对电容C充电和放电的电路,所以复位端口得到一个周期性变化的电压值,并且有一定时间的电压值高于CPU复位电压,实现上电复位功能。

3.4.2按键电路

图7按键电路

按键电路具体电路如图7所示。

在本次设计中,我们只用到三个按键,分别为S2:

设置/确认,S3:

加1键,S4:

减1键。

系统复位后显示P.按下S2按键进入温度转换。

同时S2键也为调整键,按下此键进入报警温度设置状态。

S3为递增按键,当按下此键时,上限值增加1,S4为递减键,按下此键,上限值减少1。

再按下S2键则将设定的报警温度确定,并恢复到正常测温模式。

3.4.3温度采集电路

图8温度采集电路

DS18B20有寄生电源供电[11]方式和外部电源供电[13]方式两种,选择外部USB供电,这样就不存在电源供电不足的问题,可以保证转换精度,但应注意DS18B20的GND[14]引脚要接地,否则不能转换温度,读取的温度总是20℃。

DS18B20的数据线接单片机的P2.7口线。

电路原理图如8所示。

3.4.4报警电路

图9蜂鸣电路

蜂鸣电路[3是用一个三极管驱动一只蜂鸣器组成,驱动信号由芯片的管脚P3.4控制。

当显示的温度不在设定的温度范围内,则驱动蜂鸣器发声报警,其电路如图9所示。

3.4.5LCD显示电路

图10LCD显示电路

LCD显示电路主要作用是用来显示实际的环境温度值。

通过单片机控制实现LCD动态显示,即温度值实时刷新。

实际的电路中我们采用动态驱动。

动态驱动需要增加译码驱动,增加了硬件的复杂性。

P2口驱动连接LCD[4]的位码;P0口驱动连接LCD的段码,即输出要显示的温度值。

选通数码管是通过P2口接上拉电阻再接三极管9012。

由于9012是PNP型三极管,所以单片机选通某个片选时就给对应的三极管一个低电平,此时三极管处于饱和区,饱和导通就相当于开关开路;反之高电平处于截止区,截止可以当作开关断开。

电路原理图如图10所示。

4软件设计

4.1主程序流程图设计

软件设计关键在于DS18B20的使用。

DS18B20属于单线式器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议,来对读写数据提出严格的时序要求,而STC89C52单片机并不支持单线传输,因此必须采用软件的方法来模拟单线的协议时序。

DS18B20有严格的通信协议来保证各为数据传输的正确性和完整性。

主机操作单线器件DS18B20必须遵循一定的顺序。

系统的主程序[15]主要通过初始化,键盘扫描,获取温度,显示温度,报警等子程序实现。

通过一个循环设置,使系统不断地进行对温度的检测。

图11为本系统主程序的设计流程。

结束

图11主程序设计流程图

4.2温度采集模块

DSl8B20的主要数据元件有:

64位激光LaseredROM,温度灵敏元件和非易失性温度告警触发器[5]TH和TL。

DSl8B20可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生(电容)电源为止。

此外,还可外接5V电源,给DSl8B20供电。

DSl8B20的供电方式灵活,利用外接电源还可增加系统的稳定性和可靠性。

DS18B20读写时序如图12~图14。

图12DS18B20的复位时序图

图13DS18B20的写数据时序图

图14DS18B20的读数据时序图

由时序图可知,DS18B20在复位时需要480us的低电平,等待15us后MCU将总线拉高,等待DS18B20的响应信号;DS18B20在写数据时分为写“0”和写“1”操作,写“0”操作时,DS18B20需要至少60us的总线被拉低,然后在60us内将“0”写入DS18B20中,持续时间至少1us,写“1”操作是只需将写入的“0”改为“1”即可;DS18B20读操作也分为读“0”和读“1”操作,读“0”操作时,总线需要15us被拉低,再拉高45us,然后再15us内将数据读走,读“1”操作同读“0”操作。

程序流程图如图15所示。

LOW-低八位HIGH-高八位

图15DS18B20读取温度的流程图

4.3报警模块

返回

图16报警流程图

报警模块主要由由单片机输出电平来驱动蜂鸣器构成。

当所测温度超过设定的上限(TH值)时置beepflag=1,表示温度值越界。

在调用报警子程序时先判断beepflag的值,若为1则在蜂鸣器端口输出低电平信号beep=0,蜂鸣器报警,延时1000us,蜂鸣器报警持续,再产生一个高电平信号beep=1,蜂鸣器停止报警,循环此过程,则蜂鸣器间隙性报警。

DS18B20处于正常测温状态,并用LCD显示出来。

报警流程图如图16所示。

4.4温度设定模块

温度设定模块流程图如图17所示。

进入测温模式

图17温度设定流程图

检测到按键按下时,延时20ms,再次检测按键是否按下,若检测到按下,才确定此按键,本设计中每个按键设计都运用了防抖动功能,避免抖动产生的误差。

当检测到按键S2按下一次时,显示为设定的上限值,此时S3和S4分别递增键和递减键,在上限或下限没超过15℃时,当S2被再次按下时,此时恢复到正常的测温模式,并将设定的上限值和下限值写入到传感器中。

显示程序显示设定值的变化显示上限值,并随S3,S4按键按下的时上限值的变化而变化。

5系统仿真结果

5.1系统功能

本设计实现的主要功能是通过DS18B20温度传感器采集温度并通过LCD显示所测温度,温度测量范围为-55℃~125℃,后一位显示小数位。

可以精确到小数点后1位,测量精度为0.5℃,并可以产生报警。

通过四个按键的配合使用可以设定温度报警的上限值,当所测的温度超过所设定的上限温度时产生报警信号,在报警的同时,系统处于正常的测温模式,当温度回到所设定的范围时,报警停止。

5.2系统指标参数仿真测试

图18所示是采用Proteus软件对本系统温度测量范围的仿真,仿真模拟温度输入为57℃,显示温度为57.0,Max:

40为设置的报警的上限温度,Min:

-10为设置的报警的下限温度。

图18对系统测量温度仿真

通过仿真可以看到仿真系统可以正常的工作,正确的显示测试的温度,并且可以设置温度的不同范围的报警温度,超过设定的温度范围可以报警,即所做的仿真是成功的。

6系统调试与运行

6.1电路板的制作

在ProtelDXP[12]的环境下,根据原理图创建网络表,再导入网络表的设计规则,自动生成PCB板布线图。

然后将布线图打印到转印纸上,通过转印机将转印纸上的图转印到覆铜板上,经过三氯化铁的腐蚀,即可生成电路板。

数字温度计的设计PCB如图19所示。

 

图19数字温度计的设计PCB

6.2电路板的焊接

在焊接之前,以硬件电路原理图为参照物,先对电路板进行仔细的检查,防止断线、错线的产生;同时对所用的元器件进行测量,防止有损坏的元器件被使用。

在焊接时,应分块焊接,及时测量,保证每个模块均能正常工作,提高电路板制作的成功率。

6.3调试及性能分析

系统的调试以程序为主。

软件调试可以先编写显示程序并进行硬件的性检验,然后分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序、显示数据刷新等子程序的编程及调试,由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读写编程时必须严格地保证读写时序,否则将无法读取测量结果。

本程序采用单片机C语言编写,用EWAVR-KS4编译器编程调试。

软件调试到能显示温度值,而且在有温度变化时显示温度能改变就基本完成。

性能测试可用制作的温度计和已有的成品温度计来同时测量比较,由于DS18B20的精度很高,所以误指标可限制在0.5℃以内,另外-55~+125℃的测量范围使得该温度计完全适合一般的应用场合,其低电压供电特性可做成用电池供电的手持电子温度计。

DS18B20温度计还可以在高低温报警、远距离多点测量控制等方面进行应用开发,但在实际设计中应注意以下问题:

(1)DS18B20工作时电流高达1.5mA,总线上挂接点数较多且同时进行转换时,要考虑增加总线驱动,可用单片机端口在温度转换时导通一个MOSFET供电。

(2)连接DS18B20的总线电缆是有长度限制的,因此在用DS18B20进行长距离测温系统设计时,要充分考虑总线分布电容和阻抗匹配等问题。

(3)在DS18B20测温度程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时要给予一定的重视。

7总结

本设计方案达到了设计的要求,实现了数字温度计的设计,实现了较为精确的测温功能:

(1)对被测对象的测温结果精度可以达到0.5℃,突出了本设计的特点;

(2)所测温度值的范围在-55℃~+125℃,符合指定工作温度范围;

(3)由蜂鸣器报警电路控制的报警功能也调试实现,并在LCD上正确显示了温度值;

(4)可以设置报警的上下限温度范围;

本设计在编程及仿真过程中遇到了LCD无法显示大于65℃的温度,经过查阅资料,经过修改程序和仿真图达到了可以显示大于65℃的温度,并且显示更加精确。

本设计还有许多问题,例如报警的时候可以用发光二级管发光报警使之更加容易观察,在测量精度方面可以更加精确,这些问题有待解决。

参考文献:

[1]于永.51单片机C语言常用模块与综合系统设计实例精讲[M].北京:

电子工业出版社,2008:

21-26.

[2]张越.基于DS18B20温度传感器的数字温度计[J].微电子学,2007:

56-78.

[3]李广弟.单片机基础[M].北京:

北京航空航天大学出版社,2007:

124-145.

[4]张毅刚.单片机原理及运用[M].北京:

高等教育出版社,2003:

156-168.

[5]AtmelCorporation.AT89S51[J].AtmelCorporation,1999,6

(2):

199-223.

[6]ZhangYigang,PengXiyuan,TanXiaojun,etal.ApplicationanddesignofMCS-51singlechipcomputer[M].Haerbin:

HaerbinIndustryUniversityPublishingCompany:

2001:

234-248.

[7]ThomasL.Floy.ElectronicDevices[J],NewJersey:

Prentice-Hall,1999,7(3):

32-43.

[8]张毅刚.新编MCS-51单片机应用设计[M].哈尔滨:

哈尔滨工业大学出版社,2003:

195-212.

[9]谭浩强.C程序设计[M].北京:

清华大学出版社,1991:

256-265.

[10]黄智伟.全国大学生电子设计竞赛训练教程[M].电子工业出版社,2010:

178-212.

[11]童诗白,华成英.模拟电子技术基础[M].高等教育出版社,2006:

246-278.

[12]何立民.单片机高级教程[M].北京:

北京航空航天大学出版社,2000:

56-78.

[13]周润景.PROTEUS入门使用教程[M].北京:

机械工业出版社,2007:

12-98.

[14]郭天祥.51单片机C语言教程[M].北京:

电子工业出版社,2003:

112-123.

[15]沙占友.单片机外围电路设计[M].北京:

电子工业出版社,2006:

156-178.

[16]王宏宝.电子电路分析与设计[M].北京:

清华大学出版社,2010:

463-497.

[17]邱关源.电路[M].北京:

高等教育出版社,2010:

52-69.

 

附录:

数字温度计的设计C语言程序

#include

#include

#include

#include

#include

typedefunsignedcharuchar;

typedefunsignedintuint;

voidDelayXus(ucharn);

voidDS18B20_Reset();

voidDS18B20_WriteByte(uchardat);

ucharDS18B20_ReadByte();

uinttemp0;

ucharTPH;//存放温度值的高字节

ucharTPL;//存放温度值的低字节

inttempH=400,tempL=-100,tempHset,tempLset;//设定温度值和临时显示温度值定义

bitflag,flagH,flagL;//温度正负标志位

ucharflagset=0;//S1按键标志位

sbitDQ=P3^3;//18B20引脚

sbitlcdrs=P2^1;

sbitlcdrw=P2^2;

sbitlcden=P2^3;

sbits1=P3^5;

sbits2=P3^6;

sbits3=P3^7;

sbitbeep=P3^4;//蜂鸣器

voiddelay(uintz)//延时函数

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voiddi()//蜂鸣器

{

beep=0;

delay(100);

beep=1;

delay(100);

}

voidLCD_Write_Com(unsignedcharcom)//液晶写命令

{

lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidLCD_Write_Data(unsignedcharData)//液晶写数据

{

lcdrs=1;

P0=Data;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidLCD_Write(unsignedcharx,unsignedchary,unsignedcharData)//写字节

{

if(y==0)

{

LCD_Write_Com(0x80+x);//表示第一行

}

else

{

LCD_Write_Com(0xC0+x);//表示第二行

}

LCD_Write_Data(Data);

}

voidInit()//初始化系统

{

lc

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2