基于单片机的多点温度采集与记录系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多点温度采集与记录系统
目录
一、引言 (4)
二、硬件设计 (5)
三、软件设计 (9)
四、总结 (11)
五、参考文献 (12)
六、程序附录 (13)
一、引言
温度(K)是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量。在工、农业生产和日常生活中,占据着极其重要地位。工业发展与是否能掌握温度有着密切的联系。在冶金、钢铁、石化、水泥、玻璃、医药等行业都与之有关,可以说几乎80%的工业部门都不得不考虑温度对自身系统的影响。本设计是基于单片机的多点温度采集系统设计,多点温度测量显示是近几年的研究课题,随着传感技术与通讯技术的发展,单片机的出现,温度测量仪器应运而生,最近几年的研究更是迅速。采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。因此,本课题的研究在实际应用中意义十分重大。
二、硬件设计
2.1总体方案
硬件设计主要是温度测量模块的容,本设计由AT89C51单片机,LCD1602液晶显示屏,DS18B20温度传感器,以及DB9通信接口。一共包括三大模块:控制模块,温度采集模块,温度显示模块。总体方案如下图所示:
1.1 系统总方案图
2.1.1 控制模块功能
控制模块在系统的功能是控制温度采集模块完成温度采集并将采集到的温度读入控制模块的数据寄存器,再将从温度采集模块读取的温度数据写入显示模块并控制显示模块完成温度的显示。其中主控单位是AT89C52。
2.1.2 温度采集模块功能
温度采集模块的主要功能是通过温度传感器感应温室温度并转化成模拟信号,通过转化模块将模拟信号转化成数字信号,并存取温度数据。本设计采用2个DS18B20温度传感器,温度传感器DS18B20采用的电压是部电压,大小为5V,一个引脚接地,一个引脚接+5V电源,中间的引脚是数据的输入输出口。由于每个单片机开发板上有两个温度传感器,所以一个传感器的输出是P1.4,另一个传感器的输出是P1.5。使用时将一个传感器接到单片机的18b20接口,接口的1脚接18b20的地端,接口的3脚接18b20的电源,另一个温度传感器的电源接到P0.0口,数据读写端接到P1.5口,地端接到单片机的接地端,下面是温度传感器DS18B20的时序图。
图1.2 温度传感器DS18B20时序图
2.1.3 温度显示模块功能
温度显示模块的主要功能是在控制模块的控制下将控制模块写入的数据显示在液晶屏上,便于读取温度数值。显示模块采用LCD1602液晶屏。1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W (读写选择端),E(使能信号);以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。
以下具体阐述这三个管脚:
RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。
R/W为读写选择,高电平进行读操作,低电平进行写操作。
E端为使能端,后面和时序联系在一起。
除此外,D0~D7分别为8位双向数据线。其操作时序如下图所示:
图1.3 LCD1602时序图
2.1.4温读报警模块
温度报警模块主要由2个led灯组成,当温度的采集值高于设定的温度上限或者低于设定的温度下限时,led灯将由暗变亮进行报警,此时此时设计者就可以改变室外的温度满足温度的需求,此报警简单易懂,可操作性强。
2、硬件电路仿真
根据设计的总方案在pretues中仿真,其结果如图所示;
图1.4硬件电路仿真
当温度超过高于设定的温度上限(此处设定38℃)或者低于下限(此处设定12℃)时,led灯发生报警。其仿真图如下所示:
图1.3 温度报警显示
三、软件设计
软件设计包括下位机编程和PC机编程,下位机编程完成ds18b20的温度采集、数据处理、数码管显示,串口中断处理及硬件初始化,通信协议的制定及数据的收发。通过串口通信将温度数据在上位机上面显示,并且编译VB程序,实现报警显示。
上位机程序工程:
图3.1上位机工程显示
当温度1是35℃,温度计2是13℃时:
当温度1是39℃,温度计2是11℃时:
四、总结
通过这次课程学习制作,令我学到了很多东西受益匪浅,仿佛又经历了一次系统学习,在作做课程前,我的导师也要求我做一些温度采集的设计,我一直在查找相关资料,这次的设计让我对多点温度采集的知识了解了许多,同时也上位机编程有了初步的概念。一直来认为做这些设计没什么困难,但在实际运作过程中才清楚地认识到自己的不足和短练,端正了学习态度。这次设计使我加深巩固了基础知识,更加深刻的把握到基础知识的重要,提高了动手和实际解决问题的能力,提高了对问题整体规划的意识。能把握重点设计的核心,并提高查阅资料的能力,培养了团队合作精神和人际交往能力。由于本人水平有限,难免有考虑不足之处,所以恳请老师同学们批评指正。
五、参考文献
[1]谭浩强《C程序设计》,清华大学
[2]童诗白《模拟电子技术基础(第四版)》,高等教育
[3]恢先、黄辉先《单片机原理及应用》,人民邮电
[4]何立民《单片机高级教程--应用于设计(第二版)》,航空航天大学
[5]蔡《单片机控制实习与专题制作》,航空航天大学
[6]伏加、林峰《Visual Basic程序设计教程(第4版)》,邮电大学
六、程序附录
单片机c语言代码:
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int;
#define ulong unsigned long;
/******************************************************************/ /* 定义端口 */ /******************************************************************/ #define Data P0//数据端口
sbit RS = P2^4; //Pin4
sbit RW = P2^5; //Pin5
sbit E = P2^6; //Pin6
sbit DQ=P1^3;//ds18b20 端口
sbit DQ1=P1^4;//ds18b20 端口改动
sbit D0=P1^6;
sbit D1=P1^5;
/******************************************************************/ /* 全局变量 */ /******************************************************************/ uint temp=0,temp1=0;
float t0,t1;
float high=38,low=12,change=0;
unsigned char point_flag=0,key_flag=0;
unsigned char receive[5];
unsigned char receive_no=0;
unsigned char receive_flag=0;
char Text[]=" ";
uchar code TPoint[16]={0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9 }; /* 函数声明 */ /******************************************************************/ /******************************************************************/ /* 微秒延时函数 */ /******************************************************************/ void DelayUs(unsigned char us)//delay us
{
unsigned char uscnt;
uscnt=us>>1; /*12MHz频率*/
while(--uscnt);