基于数字温度计的多点温度检测系统资料.docx

上传人:b****7 文档编号:15705556 上传时间:2023-07-06 格式:DOCX 页数:26 大小:26.47KB
下载 相关 举报
基于数字温度计的多点温度检测系统资料.docx_第1页
第1页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第2页
第2页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第3页
第3页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第4页
第4页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第5页
第5页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第6页
第6页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第7页
第7页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第8页
第8页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第9页
第9页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第10页
第10页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第11页
第11页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第12页
第12页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第13页
第13页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第14页
第14页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第15页
第15页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第16页
第16页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第17页
第17页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第18页
第18页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第19页
第19页 / 共26页
基于数字温度计的多点温度检测系统资料.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于数字温度计的多点温度检测系统资料.docx

《基于数字温度计的多点温度检测系统资料.docx》由会员分享,可在线阅读,更多相关《基于数字温度计的多点温度检测系统资料.docx(26页珍藏版)》请在冰点文库上搜索。

基于数字温度计的多点温度检测系统资料.docx

基于数字温度计的多点温度检测系统资料

基于数字温度计的多点温度检测系统

摘要4

整体框架6

1系统方案设计和论证6

2系统硬件设计6

2.1单片机选择7

2.2电源模块8

2.3显示模块9

2.4温度传感器10

3单元电路的设计11

3.1主控制模板11

3.2电源模块12

3.3显示模块12

3.4单片机的最小运行系统12

3.5温度传感器的电路13

3.6蜂鸣器,发光二极管的电路14

4软件设计………………………16

4.1程序结构分析16

4.2系统程序流程图16

4.3DS18B20的初始化程序18

4.4读温度子程序流程图18

4.5显示模块软件设计19

4.6报警控制电路软件设计20

4.7多路数据巡回显示21

5整机制作和调试………………………21

5.1元器件焊接………………………22

5.2整机调试………………………22

6.总结………………………22

参考资料………………………23

结束语………………………24

附录1部分子程序………………………25

摘要:

智能是新时代的发明,是人类信息时代发展的美好前景,人们可以给它设定一个模式,然后在某个环境中按照给定的模式自己既能够运作,根本不需要人们花时间去管理它,监控它,能够应用在家具,科学探险等方面。

多路的温度检测只是其中一个很小方面的体现,本次设计的项目是基于数字温度计的多点温度检测系统,选择使用AT89C51的单片机作为微控制器,而设计出来的一种2路高低温智能检测温度的报警系统装置,系统检测温度的精确度能达到0.1度。

DS18B20温度传感器对环境进行检测得到一个确定的温度数值,如果检测到的温度高于或低于最开始程序中就设定好的温度值时,蜂鸣器就会报警,提醒人们注意安全防范,做好应对措施,并且会将得到的数据保存在单片机的内部存储中,就算是没电的情况下也能将数据保存下来,不会造成数据的丢失,给人们的统计造成困扰。

在通电时,系统就会开始工作,1602的液晶显示屏时刻显示其工作状态。

我们选择的是5节与3号干电池来供电。

Abstract:

intelligentistheinventionofthenewera,istheinformationagedevelopmentprospects,itwillbeinaccordwiththebegantosetagoodmodelinanenvironmentindependentoperations,itdonotneedpeoplemanagement,andcanbeusedinscientificexplorations,andsoon.2temperaturedetectionsystemisamanifestation,temperaturedetectionsysteminthedesignoftheisusedAT89C51single-chipcomputerasthemicrocontroller,anddesigna2roaddetection.Andithasthefunctionofnoelectricpowersaving,andthedataisstoredintheinternalmemoryofthesinglechipmicrocomputer.Wheninworkingcondition,itisdisplayedontheLCDscreenof1602.Powerweuse3and5drybatteriestopower.

关键词:

AT89C51单片机DS18B20温度传感器1602显示液晶

整体的框架设计

1设计方案与论证

根据市面价格的比较,我优先采用AT89C51系列的单片机作为控制的单元,因为此类型单片机在市场上价格这方面比较的便宜,还有是其具有比较强大的功能,与其他的单片机相比性价比还是很高的,而且在市场上或个体商户店中都很容易买到,非常的方便,我们能够省下了不少时间去做一些其他的事情。

由DS18B20温度传感器对某环境进行温度信息的采集,然后将采集到的数据送入到主控的单片机中,由单片机完成余下的数据处理,从而能够自己智能的管理自己。

显示器我选择使用1602LCD,本系统操作灵活,并且能实时显示温度传感器的工作状态。

同时都记录下来,选择用软件的方法来解决复杂的硬件电路部分,可以使系统硬件简洁,易操作,有利于各方面的功能完美实现,用于本项目足够了。

2 系统硬件的设计

2.1单片机选择

方案一:

使用CPLD作为系统部件的核心,来处理和控制系统。

因为CPLD的程序容易编写、运转的速度快、丰富的可用资源、开发的周期短等优点,也可以使用VHDL语言来进行简单的编程。

与其它单片机相比,控制起来不方面。

还有就是CPLD的对信息处理的速度非常快,而本项目对处理信息的要求并不是很高,够用就行了。

如果非要使用CPLD的话,在系统控制方面上必定会遇到许多没必要遇到的一些困难。

所以,我们并不采用这种方案,进而提出了第二种方案。

方案二:

整个系统部件的核心是51系列的单片机,来达到本项目的检测目的。

经过系统的分析之后,使用AT89C51单片机设计出一种智能的温度检测系统,通过DS18B20的温度传感器得到一个温度数值,当此温度小于或者大于程序中开始设定好的温度值时蜂鸣器就会想起来报警,在这个方面上,单片机就能够将其快捷、方便、简单,丰富的资源、控制功能好以及位寻址的操作功能、还有市场单价便宜等优点充分体现出来。

相对于此次项目的设计绰绰有余,更难的是51单片机在价格方面非常便宜,我们能够话更少的钱实现相同的功能。

2.2电源模块

根据实际的业务需要我们想出了以下几种系统供电的方案。

方案I:

采用10V的蓄电池给系统供电。

蓄电池的电流驱动能力很强大,电压输出方面也非常的稳定。

不过蓄电池的体积太大,需要占用的地方也就多,同时市面上的价格也贵,不适合大学生用,蓄电池用在这种小设计中是不划算的,也非常不方便。

所以提出了第二种方案。

方案2:

采用3节1.5V的五号干电池串联在一起来给系统供电,可以持续不间断的给传感器供电,并且保证总电压在4.5V左右稳定,而4.5V的电压正好是单片机传感器的工作电压范围中,方便使用和记录。

通过不断的实验说明,这个系统用此方案能够稳定的运行。

更换电池方面也为大家带来了方便。

通过两种方案对比之后我们选择了方案2。

2.3显示模块

方案1:

使用数码管。

因为数码管能够快速运转,容易操作,显示的结果简单易懂从而被人们大量采用。

由于显示器要时刻显示检测的环境温度。

所以需要一个设置菜单,而数码管的条件有限,有许多内容无法显示。

方案2:

用1602LCD液晶显示器来显示温度。

由于LCD液晶具有内容丰富,显示快速、清晰、信息量大等多种优点,使人们的使用非常方便。

1602LCD液晶用在此系统中显示已经够用了,通过比较我们决定采用此方案。

2.4温度传感器

方案一:

使用铂电阻非线性测温的方法校正,因为热敏电阻的感温效应会时刻随着系统被测温度的变化而不断发生变化,然后再用桥式电路采集电压或电流,再通过放大器将桥式电路采集到的信号进行一次放大,再通过A\D转换器的作用,这样就能够将被检测到的温度通过显示电路清晰地显示在LCD液晶上。

图1铂电阻的桥式测温电路图

方案二:

使用DS18B20数字温度传感器来检测温度,在与固定好的单片机的电路连接在一起,这样就能获取温度传感器检测的环境温度了,然后进行转换,从而达到此次项目设计的目的。

图2DS18B20的测温系统图

两种方案的比较:

第一种是靠模拟温度传感器来采集温度值,用过这种方式得到的数据,在信息处理上比较麻烦,并且很容易造成信号的失真.然而DS18B20就不会存在这种麻烦,它能够直接将被测温度转换成简单的数字信号,然后在液晶显示器上显示出来,第二种方案的的优点是低功率的消耗、高性能、非常强的抗干扰的能力。

通过比较以上两种考虑方案,不难看出容易实现的软件设计,电路简单的第二种方案更为适合,所以我们用第二种方案。

设计框图如下所示。

AT89C51CPUDS18B20温度芯片1602显示报警电路电源

温度计总体设计图

DS18B20是Dallas旗下公司生产的一款一线式数字温度传感器,具有低功耗、微型化、抗干扰能力强等优点,多用于温度测控系统方面,DS18B20可以直接将温度转化为串行数字信号(9位二进制数)交给单片机自己去处理,并且一个总线上还能够接几个温度传感器芯片,还具有三引脚TO-92小体积的封装模式,检测的最低温度为-55℃,检测的最高温度为+125℃,具有9~12位的A/D转换精度,精确度可达0.1℃,被检测到的温度是用符号扩展的数字量的方式来串行输出,将多个DS18B20同时并联在一起,而CPU用一个端口线就可以和多个DS18B20连接通信,这种连接方式占用的端口不仅少,还可以节省不少的引线,多少省了一点钱,还有一些逻辑电路也不用连接了,简单化了硬件电路。

所以DS18B20温度传感器在远程温度检测中被经常使用。

图4DS18B20的温度芯片

3 设计电路单元

3.1主控制模块

主控制模块的最小系统电路图如下所示。

3.2电源模块

我们使用了3节1.5V的五号干电池串联给系统供电。

3.3显示模块

显示模块是用1602的液晶,电路接口如下图7所示

图7

3.4单片机的最小运行系统

(1)晶振

单片机由晶振提供时钟信号。

单片机的XIAL1接一个30PF的电容,XIAL2也接一个30PF的电容,XIAL1和XIAL2间并联一个12MHZ晶振,单片机的晶振电路就这样形成了。

如下图所示:

图8 晶振的电路图

(2)复位电路

单片机的启动大都需要用到一个操作--复位操作,这样CPU和系统的每个部位都处于一个确定的初始状态下,并且都是从初始态开始工作的。

51系列的单片机都是从RST的引脚开始将复位信号不断地输入到芯片内部的施密特触发器中。

正常工作状态下的系统,在振荡器稳定后,在RST的引脚上接一个高电平如果能够同时维持2个机器周期(就是24个振荡周期)或者以上的运转,那么该CPU就会响应同时会复位系统。

单片机复位有两种方式:

手动按钮复位和上电复位方式。

ALE的引脚悬空,复位的引脚接到复位电路上、VCC接上电源、VSS接地、EA接电源

3.5DS18B20温度传感器的电路

(1)DS18B20的介绍

DS18B20是由美国DALLAS公司推出的一款第一片“一线总线”接口式的温度传感器,具有低功耗、微型化、高性能、抗干扰的能力强、微处理器很容易配置等优点,把检测的温度值直接转换为串行数字信号交给处理器进行处理。

DS18B20温度传感器在温度转换方面非常精准,不同的是,在开始转换温度时,I/O线上就必须保证处理器上时刻有充足的能量运转,单个DS18B20工作的电流能够达到1mA在温度转换时,当在一根I/O线上串联几个温度传感器进行温度检测的时候,如果单单靠4.7K的上拉电阻来维持能量,则不能满足处理器所需要的能量,这样的话就会造成被测温度的值无法转换为易懂的数字信号或者转换之后的温度变大和变小。

所以只用单一的温度传感器去检测温度,使用电池供电的时候系统的操作不是很好使。

工作状态下电压必须维持在5V左右系统才能正常运转,寄生的电源所能汲取到的能量会随着电源的电压的变化而变化,电源电压当下降时能量也在持续的减少,这样检测的温度值不准确,会有比较大的误差产生。

图10温度传感器电路引脚图

(2)DS18B20的控制方法

DS18B20有六条控制命令:

温度转换44H启动DS18B20进行温度转换

读暂存器BEH读暂存器9个字节二进制数

写暂存器4EH将数据写入暂存器的TH、TL字节

复制暂存器48H将暂存器的TH、TL字节全部写入E2RAM中

重新调节E2RAM和B8H把E2RAM中的TH、TL字节写入暂存器TH、TL字节

读电源供电方式B4H启动DS18B20发送的电源供电方式信号发送到主CPU

(3)DS18B20供电的方式

DS18B20的供电方式有以下两种,一种是采用电源供电,DS18B20的1引脚接地,2引脚为信号线,3引脚接电源。

另一种是使用寄生电源,必须保证在有效的时钟周期内DS18B20传感器上具有充足的电流,系统总线通常使用一个三极管来进行上拉复位。

本设计采用第一种方案,为了保证DS18B20在有效的时钟周期内具有充足的电流,DS18B20的P2.3接口和AT89C51的P2.3接口单线总线用一个上拉电阻来上拉,需要两者来共同完成。

写存储器和温度A/D转换在总线上拉的时候需要同时进行,所以这时总线上必须有一个强力的上拉,这个时间不能超过最大上拉时间10μs。

而寄生电源的VDD和GND都是采用接地的方式来为系统供电。

所有的单线接口的发送和接收都必须满足三状态,因为单线制下一根线只能连接一个接口,主机控制的DS18B20温度传感器想要完成温度转换就必须要遵守3个步骤:

*初始化。

* ROM的命令紧跟着需要交换的数据。

*功能指令随着需要交换的数据。

只有遵守了以上3个规则才可以访问DS18B20,都是其中任何一项或顺序错误,DS18B20就不会有主机响应(这两个命令SearchROM和AlarmSearch之后,主机都会返回第一步)。

1.初始化:

系统数据的交换都是从一个初始化序列开始的。

是由DS18B20发的应答脉冲与主机所发出的复位脉冲两者所构成的。

当DS18B20发出了响应主机发出的应答脉冲时,表明主机已经在总线上做好准备了并且随时可以工作。

2.ROM命令:

通过每个器件的64-bitROM码,使主机完成指定的某一特定的器件来实现通信。

3.功能命令:

对DS18B20进行读和写Scratchpad存储器是由主机通过其功能命令来实现,或者开启温度的转换。

3.6蜂鸣器与发光二极管的报警电路

图11蜂鸣器、发光二极管驱动引脚图

4.系统软件设计

4.1分析程序结构

主程序只能调用3个子程序,分别是:

处理温度信号的程序、数码管的显示程序、以及报警的温度程序。

处理温度信号的程序:

先通过对单片机传感器传来的数据信息进行相关的处理,观察相关的数据显示情况,然后做一些科学的判断。

数码管的显示程序:

是向数码管液晶显示屏送去数字信号,能够在液晶上充分显示数据。

设定的按键程序:

可以设定低温报警和高温报警两种方式。

4.2系统程序流图

主程序能够每时每秒不停地显示被检测到的温度,能够快速的读出和处理DS18B20所监测到的数据,每1s都会进行一次数据的更新。

这样每一秒就能得到一个检测的新温度,然后与设定的报警高低温相比较,如图11所示。

要把已存入到内存储中的整数和小数部分开需要调用读温度的子程序,然后将这两部分存放在两个单元中,然后将温度在液晶显示器上显示可供人们读取数据,这就需要调用显示子程序

调用显示子程序初始化1s到?

初次上电发出温度转换开始命令读出温度值再计算处理数据显示刷新

调用显示子程序初始化1s到?

初次上电发温度转换开始命令读出温度值温度计算处理显示数据刷新

4.3DS18B20初始化的程序流程图

在系统工作之前需要进行一次复位操作,流程图如下图所示:

发出复位命令发出跳过ROM命令初始化成功完成

图11初始化程序流程图

4.4读温度子程序的流程图

将DS18B20中的温度值读取出来需要调用读温度子程序,并将温度保存到温度暂存器中。

程序如下图:

复位命令跳过ROM命令读取温度命令存在温度暂存器完成

图12温度子程序的流程图

4.5显示模块的软件设计

本项目采用1602LCD液晶显示器显示温度,显示的流程图如13

显示子程序

写缓冲单元以及循的环次数

送显示程序

循环结束N

Y

返回

图13显示子程序的流程图

4.6报警控制电路软件设计

当数字信号大于程序中开始设定好的高低温时,如果P2.4输出为“0”的低电平信号1,这时候晶体管将导通,同时蜂鸣器会报警发声,因为电压达到了+5V;如果P2.4输出为“1”的高电平信号时,那么三极管将会截止,蜂鸣器就会停止报警发声。

报警流程如下

结束N显示值超出设定的报警值?

Y发声报警设定温度报警值

图14报警子程序的流程图

4.7多路数据巡回显示

开始是否为扫描模式?

显示通道及对应通道转换值NY显示通道0及其转换值扫描时间间隔是否到?

NY通道号+1通道号是否>7?

YN显示对应通道及其转换值判断是否为扫描模式?

YN

图15多路巡回显示功能流程图

如果为显示模式时下工作时,那么通道的采集值要与1602LCD液晶显示器所选择通道的通道号对应。

若为显示模式下工作,那么其通道的采集值将于循环显示的2路通道的通道号相对应。

独立的键盘操作会完成通道号的选择与模式的切换。

5.整机的调试

1、测试环境与工具

测试温度:

0~100摄氏度。

测试方法:

目测。

2、测试方法

使系统运行,观察系统硬件检测是否正常(包括单片机最小系统,键盘电路,显示电路,温度测试电路等)。

系统自带测试表格数据,观察显示数据是否相符合即可。

3、测试结果分析

自检正常,温度显示正常,传输数据正确。

6.结论

实现的项目功能:

可以设置高温报警时的温度和低温报警是的温度,设定的温度能够精确到0.1℃,温度的按键调节按3次还具有连加、连减得功能。

同时具有在没有通电的情况下也能保存数据的功能,保存的数据会在单片机内部的EEPOM中一直存储这,使用LCD1602液晶显示的能够很直观的看到实际所测的温度和设定的高、低报警温度。

当温度超过或低于设定好的温度时,蜂鸣器就会发生报警,起到预防的作用。

参考资料

[5]张晓琴主编《数字电子技术及项目训练》西南交通大学出版社2010

[6]黄士生主编.模拟电子技术.北京:

中国劳动社会保障出版社,2006

[7]肖前军主编《电子整机设计与制作》西南交通大学出版社2010

6结束语

经过几个月的不断学习和努力,在孙老师的细心指导下,基于DS18B20的温度计的多点温度测量系统的毕业设计结束,基本完成了老师所布置的工作任务。

通过完成本次毕业设计让我掌握了很多东西,看到了理论知识和实际动手能力的区别,认识了实际操作的重要性,使我在知识的掌握上又有了很大的进步。

同时也看清了自己的很多不足和欠缺的地方。

这篇论文虽然还有很多不如意的地方,但毕竟是自己辛苦劳动所得。

最后看着自己的作品完美完成,系统能够无误的运行,测温也是相当准确,真的是很高心。

让我真正的体会到成功的来之不易。

附录部分程序

/**************************************************************

DS18B20读取模块

**************************************************************/

voiddelay(ucharx)/*实现精确延时*/

{

while(x--);

}

voiddsreset()/*DS18B20的初始化程序*/

{

DQ=1;//拉高总线

delay(8);//稍作延时

DQ=0;/*拉低数据线480uS*/

delay(80);

DQ=1;/*拉高数据线保持30uS*/

delay(14);

delay(20);/*跳过DS18B20应答*/

}

voidwrite_command(ucharcom)

{

uchari=0;

for(i=8;i>0;i--)

{

DQ=0;/*拉低数据线*/

DQ=com&0x01;/*发出数据低位*/

delay(5);

DQ=1;/*拉高数据线*/

com>>=1;/*右移一位*/

}

delay(4);

}

ucharread_data()

{

ucharj=0;

uchardat=0;/*暂存读取的数据变量*/

for(j=8;j>0;j--)

{

DQ=1;

delay

(1);

DQ=0;

dat>>=1;/*变量→一位*/

DQ=1;

if(DQ)/*读取DQ上数据,如果为1,则高位或1*/

dat|=0x80;

delay(4);

}

return(dat);

}

uintdata_take(uintx,uinty)

{

uinttmp;

tmp=x;/*把两个8位数据转换成一个16位整形数据*/

tmp<<=8;

tmp=tmp|y;

if(tmp>0xfff)/*检测符号位*/

{

symbol=1;/*符号位为1,需要进行数据补码还原,显示时也需要处理*/

tmp=~tmp+1;

}

else

{

symbol=0;/*符号位为0,正数*/

}

tmp=(uint)tmp*(6.25);

return(tmp);

}

uintmain_DS18B20()

{

uinttemp;

uchardata_l=0;

uchardata_h=0;

dsreset();

write_command(0xcc);

write_command(0x44);

dsreset();

write_command(0xcc);

write_command(0xbe);

data_l=read_data();

data_h=read_data();

temp=data_take(data_h,data_l);

return(temp);

}

/**************************************************************

LCM1602显示模块

**************************************************************/

voiddelay_D(uchar x)/*延时*/

{

uchara,b,c;

for(a=0;a

for(b=0;b<4;b++)

for(c=0;c<250;c++);

}

bitlcmbf()/*检测BF位*/

{

bitbf;

rs=0;

rw=1;

e=1;

_nop_();

_nop_();

_nop_();

_nop_();

bf=(bit)(data_8&0x80);

e=0;

/**************************************************************

数组的调整模块

**************************************************************/

void array_take(uintx)

{

ucharcodedisasc[]={'0','1','2','3','4','5','6','7','8','9','-',''};

ucharpoint2;

ucharpoint1;

ucharge;

ucharshi;

shi=x%10000/1000;

ge=x%10000%1000/100;

po

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

当前位置:首页 > 农林牧渔 > 林学

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

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