粮食仓库温湿度智能检测-系统软件设计毕业(设计)论文.doc
-
资源ID:87911880
资源大小:706.50KB
全文页数:54页
- 资源格式: DOC
下载积分:12金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
粮食仓库温湿度智能检测-系统软件设计毕业(设计)论文.doc
西安工业大学北方信息工程学院本科毕业设计(论文)题目:粮食仓库温湿度智能检测系统软件设计II毕业论文(设计)诚信声明本人声明:所呈交的毕业论文(设计)是在导师指导下进行的研究工作及取得的研究成果,论文中引用他人的文献、数据、图表、资料均已作明确标注,论文中的结论和成果为本人独立完成,真实可靠,不包含他人成果及已获得 或其他教育机构的学位或证书使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。论文(设计)作者签名: 日期: 年 月 日 毕业论文(设计)版权使用授权书本毕业论文(设计)作者同意学校保留并向国家有关部门或机构送交论文(设计)的复印件和电子版,允许论文(设计)被查阅和借阅。本人授权青岛农业大学可以将本毕业论文(设计)全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本毕业论文(设计)。本人离校后发表或使用该毕业论文(设计)或与该论文(设计)直接相关的学术论文或成果时,单位署名为 。论文(设计)作者签名: 日期: 年 月 日指 导 教 师 签 名: 日期: 年 月 日毕业设计(论文)任务书系别 光电信息系 专业 测控技术与仪器 班级 B070102 姓名 霍龙 学号 B07010207 1.毕业设计(论文)题目: 粮食仓库温湿度智能检测系统软件设计 2.题目背景和意义:粮食温度和湿度含量是直接影响粮食加工、储藏、贸易与食用的重要质量指标。 因此,对仓库中粮食的湿度含量和温度进行实时检测具有重要的意义。单片机自诞生以来给全世界人类的生活和工作起到了剧烈的作用,利用单片机进行温湿度检测、处理和显示具有实时性好、成本低、稳定性高等优点。通过该系统的设计,可使学生对单片机的原理和功能有个较系统和全面的掌握,也可以使学生初步学习到有关工程设计的方法和思路。这样他们的就业面会更加宽广,也可以满足当今社会对单片机开发人才的大量需求。3.设计(论文)的主要内容(理工科含技术指标):本系统所需的元器件有MCS-51单片机、温度传感器、湿度传感器等器件、数码管、键盘等,要求学生利用汇编语言或C51语言在Keil软件编辑环境中编写程序,设计出一个粮食湿度、温度智能检测系统,并且能够将湿度含量和实时温度显示在数码管上。具体来说该学生的主要任务是在系统硬件电路的基础上,利用MCS-51单片机的汇编语言或C51语言编写程序,实现:(1)粮食仓库的温度、湿度实时测量功能;(2)将测量到的温湿度含量显示在4位数码管;(3)利用若干个开关按键设置温度、湿度的标准值;(4)实现系统温度、湿度超限报警功能;(5)编写程序实现系统的看门狗复位功能。设计指标:(1)温度范围:-40度-+85度;(2)湿度范围:0100%RH;(3)显示:4位数码管。4.设计的基本要求及进度安排(含起始时间、设计地点):(1)选题、收集资料、确定开发工具、理解题目、开题报告3周,2010年11月25日前(2)需求分析(需求说明书)、开发计划(项目计划书)3周,2011年1月15日前(3)总体流程图 2周,2010年1月31日前(4)编写程序4周,2011年2月28日(5)系统集成2周,2011年3月15日前(6)系统测试1周,2011年3月22日前(7)导师验收1周,2011年3月30日前(8)完成论文10周,2010年4月1日前。 5.毕业设计(论文)的工作量要求 撰写15000字论文 实验(时数)*或实习(天数): 300机时 图纸(幅面和张数)*: 其他要求: 查阅资料不少于10份 指导教师签名: 年 月 日 学生签名: 年 月 日 系主任审批: 年 月 日说明:1本表一式二份,一份由学生装订入册,一份教师自留。2 带*项可根据学科特点选填。I粮食仓库温湿度智能检测系统软件设计摘 要粮食中的温度和湿度是影响粮食质量的重要因素,它也是国内外粮食部门严格控制的一项重要质量指标。 本设计以MCS-51单片机的STC89C52芯片为核心,利用数字式的湿度传感器HS1101和数字式的温度传感器DS18B20在线检测仓库中粮食的实时温湿度,再辅以必要的外围电路,设计了一个简易的湿度测量系统。本文详细介绍了系统的软件设计过程,给出了系统各模块的软件工作流程图和源程序代码,并用Protues软件和Keil软件对系统进行了调试。 本系统的软件采用MCS-51单片机的汇编语言进行编程。整个系统能够完成实时温湿度显示、温湿度超限报警、报警值设置等功能。经调试,系统工作稳定、可靠性强。 关键词:STC89C52单片机;温度传感器;湿度传感器;软件设计Software Design of Temperature and Humidity Intelligent Detection System in the Food DepotsAbstractGrain temperature and humidity are important factors affecting food quality,it is also strictly control domestic food sector is an important indicator of quality.he design of the MCS-51 microcontroller STC89C52 chip as the core,the use of digital HS1101 humidity sensor and digital temperature sensor DS18B20 online real-time detection of food in the warehouse temperature and humidity,supplemented by the necessary peripheral circuits,a simple humidity measurement system. This paper describes the software design process,given the work of each module of the software flow chart and source code,and Keil with Protues software and debug software on the system. The system's software uses MCS-51 microcontroller assembly language programming.Completion of the entire system can display real-time temperature and humidity,temperature and humidity limit alarm,the alarm value is set and so on. After commissioning,the system is stable,reliable.Key Words: STC89C52 SCM;temperature sensor;humidity sensor;software designIV目 录1 绪论51.1课题意义和研究背景51.2国内外发展状况51.3系统的设计要求61.4本课题的主要研究内容62 系统方案及论证72.1 总体方案设计72.2 模块化编程思想方案论证72.3显示模块的选择与论证82.3.1 静态显示方案82.3.2 动态显示方案82.4编程语言选择方案82.4.1汇编语言82.4.2 C 语言93 系统软件设计103.1系统硬件工作原理103.2系统软件设计概述103.3主程序模块设计103.4温度采集模块程序设计123.5湿度采集模块163.6数据显示模块程序设计213.7超限值报警模块程序设计244 系统调试264.1系统调试用到的工具264.1.1硬件调试软件Proteus软件264.1.2软件调试软件Keil软件274.2 系统测试304.2.1 软件设计分析304.2.2主要指标测试304.2.3测试结果305 结论31参考文献32致 谢33毕业设计(论文)知识产权声明34毕业设计(论文)独创性声明35附录1 粮食仓库温湿度智能检测系统源程序代码36附录2 系统PROTUES电路原理图481 绪论1 绪论1.1课题意义和研究背景粮食储藏是国家为防备战争、灾荒及其它突发性事件而采取的有效措施,因此,粮食的安全储藏具有重要意义。目前,中国地方及垦区的各种大型粮库都还存在着程度不同的粮食储存变质问题。根据国家粮食保护法规定,必须定期抽样检查粮库各点的粮食温度和湿度,以便及时采取相应的措施。但大部分粮库目前还是采取人工测量温度和湿度的方法,这不仅使粮库工作人员工作量增大,且工作效率低,尤其是大型粮库的温度和湿度检测任务如不能及时彻底完成,则有可能会造成粮食大面积变质。据有关资料统计,中国每年因粮食变质而损失的粮食达数亿斤,直接造成的经济损失是惊人的。 影响粮食安全储藏的主要参数是粮食的温度和湿度,这两者之间又是互相关联的。粮食在正常储藏过程中,含水量一般在12%以下(为安全状态),不会产生温度突变,一旦粮库进水、结露等使粮食的含水量达到20%以上时,由于粮粒受潮,胚芽萌发,新陈代谢加快而产生呼吸热,使局部粮食温度突然升高,必然引起粮食“发烧”和霉变,并可能形成连锁反应,从而造成不可挽回的损失。因此设计出一种经济实用的粮库粮情温湿度智能检测系统是非常有必要的1。1.2国内外发展状况粮情检测属监控系统范畴,近年来,由于传感器技术、计算机技术、超大规模集成电路技术和网络通信技术的发展,使监控系统广泛应用于工农业生产等领域,因此,粮情检测技术的研究在软、硬件等方面都有了一定的进展。早期粮情监测主要采用温度计测量法,它是将温度计放入特制的插杆中,根据经验插在粮堆的多个测温点,管理人员定期拔出读数,确定粮温的高、低,决定是否倒粮。这种方法对储粮有一定的作用,但由于温度计精度、人工读数的人为因素等原因,温度检测不仅速度慢,而且精度低,抽样不彻底,局部粮温过高不易被及时发现,导致因局部粮食发霉变质引起大面积坏粮的情况时有发生。随着科技的发展,从1978年开始,采用电阻式温度传感器、采样器、模数转换器、报普器等组成的储粮监测系统出现,它可对各粮库的各个测温点进行巡回检测,检测速度、精度大大提高,降低了劳动强度,但由于电阻传感器的灵敏度低,致使检测精度、系统可靠性还不够理想。至1990年,粮情检测系统50西安工业大学北方信息工程学院毕业设计(论文)有了很大的改善和提高,系统在布线上采用矩阵式布线技术,简化了数据采集部分的线路,在传感器方面应用了半导体、热电偶等器件;在线路传输上采用了串行传输方式,从而减少了传输线根数;采用单片机进行数据处理,并采用各种手段提高数据传输及检测速度,通过软硬件技术的结合,检测精度和可靠性较以前有很大提高。但温度传感器的线性度差,系统的检测精度仍不理想,无法大面积推广。近年来,随着单片机功能的日益强大和计算机的广泛应用,粮情检测的准确性、稳定性要求越来越高。寻找最佳配置和最好的性价比成为粮情监测研究的热点2。国外在粮情监控技术上己达到了很成熟的地步,高科技数字式传感器广泛应用于粮情检测系统。这种传感器采用了半导体集成电路与微控制器最新技术,在一个管芯上集成了半导体温度检测芯片、数据信号转换芯片、计算机接口芯片,存储芯片等,除完成温度检测功能外,还可完成预置范围温度、报警、多路AD转换、温度补偿等功能。由于数字温度传感器直接传出数字量,从而解决了温度信号长距离传输问题及传输过程中因干扰和衰减而导致的精度降低等问题。目前,国内出现了丰富的数字传感器配套产品,如远程控制模块、中继器、接插器、分线器等,技术也比较成熟。1.3系统的设计要求具体来说该学生的主要任务是在系统硬件电路的基础上,利用MCS-51单片机的汇编语言或C51语言编写程序,实现:(1)粮食仓库的温度、湿度实时测量功能;(2)将测量到的温湿度含量显示在4位数码管;(3)利用若干个开关按键设置温度、湿度的标准值;(4)实现系统温度、湿度超限报警功能。1.4本课题的主要研究内容1.设计相应的信号采集电路、执行电路等硬件电路;2.实现各环境要素的自动监测;3.通过单片机汇编语言编制数据采集、分析处理、显示、修改、参数设置、控制等程序功能模块;4.研究装置的软硬件抗干扰措施,提高系统工作的可靠性和稳定性。2 系统方案论证2 系统方案及论证2.1 总体方案设计 经分析,将系统分为两个部分,一个是由温湿度传感器组成的检测部分,另一个是由单片机和LED数码管组成的主控与显示部分。如图所示DS18B20和HS1101湿度检测电路将检测到的数送到单片机,单片机对接收到的数据进行处理并送到LED数码管,5V稳压电源给各个部分供电。系统组成框图如图2.1所示。显示模块HS1101湿度检测电路DS18B20温度检测 单片机电源图2.1系统组成框图2.2 模块化编程思想方案论证如果一本书没有章、节和段落,学习起来该有多么困难。将复杂任务和主题分解为更便于管理的部分,是使它们更容易处理的一种方法。同样,计算机程序也可以分解为小的子程序,或模块,而这些子程序或模块可以分别进行开发和测试。这种方法就称为模块化程序设计(modular programming)。模块最重要的属性是它们应该尽可能的独立和自包含。另外,一般将它们设计成执行一个特定的、定义好的函数,它有一个入口点和一个退出点。同时,模块常常很短(通常只有50到100条指令)和高度内聚的3。模块化程序设计有很多优点。不管对于开发者还是用户来说,小的、自包含的单元都更易于设计和理解底层的逻辑。模块化程序设计使开发更方便,这是因为每个模块都可以独自得以完善。事实上,对于大型软件项目,不同的程序员可以只负责各自的组件。模块化设计也使调试和测试程序更加容易,因为错误更容易隔离开来。最后,程序的维护和修改更加方便。这主要是因为可以开发新模块来执行额外的任务,然后将其集成到现有的、组织良好的架构中。西安工业大学北方信息工程学院毕业设计(论文)尽管所有这些属性都是使用模块的理由,而与数值工程问题求解相关的、最重要的理由是,可以对有用的模块库进行维护,以便以后在其的程序中使用。2.3显示模块的选择与论证LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出需要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。2.3.1 静态显示方案对于单片机的I/O接口进行驱动,或者使用如BCD码二-十进位解码器解码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O接口多,如驱动5个数码管静态显示则需要5×840根I/O接口来驱动,要知道一个89S51单片机可用的I/O接口才32个呢。故实际应用时必须增加解码驱动器进行驱动,增加了硬体电路的复杂性。2.3.2 动态显示方案 数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a,b,c,d,e,f,g,dp” 的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以只要将需要显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O接口,而且功耗更低4。2.4编程语言选择方案2.4.1汇编语言汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM,TASM等等为写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写Windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。2.4.2 C 语言C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。C语言是功的系统描述语言,用C语言开发的UNIX操作系统就是一个成功的范例;同时C语言又是一种通用的程序设计语言,在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不同版本的C语言,很多优秀的应用程序也都使用C语言开发的,它是一种很有发展前途的高级程序设计语言。 1. C是中级语言。它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。 2.C是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。 3.C语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。 4. C语言适用范围大。适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。 C语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有较好的可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言5。汇编语言是低级语言,在编写程序的时候会把根据不同的情况指定使用不同的寻址方式,能够对内存和CPU里的通用寄存器直接操纵。不同的计算机系列会有不同的汇编语言此次课题选择了C语言进行编写。3 系统软件设计3 系统软件设计3.1系统硬件工作原理该系统的硬件电路由以下几部分电路模块组成:单片机、温度传感器检测电路、湿度传感器检测电路、数码管显示电路、键盘开关电路、蜂鸣器报警电路等部分。系统硬件框图如图3.1所示。S18B20温度传感器HS1101湿度传感器STC89C52单片机串行LED显示报警电路键盘图3.1 系统硬件框图3.2系统软件设计概述本章在硬件电路设计的基础上,全面阐述各部分软件的设计思想和具体实现方法。整个软件采用模块化设计结构,并利用汇编语言编制。整个程序由主程序、显示、报警、测量等子程序模块组成6。3.3主程序模块设计主程序框图如图3.2所示。程序初始化包括寄存器设置、堆栈设置和相关单元清零设置等。主程序存放于89c52中,启动后循环执行,不停地进行采样计算,得出实际温、湿度值,并与设定值进行比较,实现声光报警信号。在主程序是单片机程序的主体,整个单片机端系统软件的功能的实现都是在其中完成的。软件设计的主要思路是将采集、接收、显示灯功能编成独立的模块。西安工业大学北方信息工程学院毕业设计(论文)开始Key1键按下?显示湿度 是 否 Key2键按下?显示温度 是结束 否图3.2主程序流程图/* 主函数 */*/void main() EA=1; /开总中断 init_t0(); /初始化定时器 init_t1(); TR0=1; /定时器开始工作 TR1=1; ET0=1; lcd_init() ; /初始化LCD ok_menu();BEEP=0;while(1) if(key1=0) lcd_init; wendu_Menu (); do Read_Temperature() ; Disp_Temperature() ; baojing(); while(key2) ; if(key2=0)lcd_init;shidu_Menu();do if(int_flag=1) disp(); while(key1); 3.4温度采集模块程序设计根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功7。开始初始化 初始化是否成功? 否 是从18B20读字节向18B20写字节读取温度结束图3.3温度检测程序流程DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位8。图3.4 DS18B20温度值这是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)9。/* /*温度测量* /* /*初始化ds1820 */*/Init_DS18B20(void) DQ = 1 ; /DQ复位 Delay(8) ; /稍做延时 DQ = 0 ; /单片机将DQ拉低 Delay(90) ; /精确延时 大于 480us DQ = 1 ; /拉高总线 Delay(8) ; presence = DQ ; /如果=0则初始化成功 =1则初始化失败 Delay(100) ; DQ = 1 ; return(presence) ; /返回信号,0=presence,1= no presence/* 读一个字节 */*/ ReadOneChar(void)unsigned char i = 0 ;unsigned char dat = 0 ;for (i = 8 ; i > 0 ; i-) DQ = 0 ; / 给脉冲信号 dat >>= 1 ; DQ = 1 ; / 给脉冲信号 if(DQ) dat |= 0x80 ; Delay(4) ; return (dat) ;/* 写一个字节 */*/ WriteOneChar(unsigned char dat) unsigned char i = 0 ; for (i = 8 ; i > 0 ; i-) DQ = 0 ; DQ = dat&0x01 ; Delay(5) ; DQ = 1 ; dat>>=1 ; /* 读取温度 */*/ Read_Temperature(void) Init_DS18B20() ; WriteOneChar(0xCC) ; / 跳过读序号列号的操作 WriteOneChar(0x44) ; / 启动温度转换 Init_DS18B20() ; WriteOneChar(0xCC) ; /跳过读序号列号的操作 WriteOneChar(0xBE) ; /读取温度寄存器 temp_data0 = ReadOneChar() ; /温度低8位 temp_data1 = ReadOneChar() ; /温度高8位 /* 数据转换与温度显示 */*/ Disp_Temperature()display4=temp_data0&0x0f ;display0=ditabdisplay4+0x30 ; /查表得小数位的值display4=(temp_data0&0xf0)>>4)|(temp_data1&0x0f)<<4) ;display3=display4/100+0x30 ;display1=display4%100 ;display2=display1/10+0x30 ;display1=display1%10+0x30 ;if(display3=0x30) /高位为0,不显示 display3=0x20 ; if(display2=0x30) /次高位为0,不显示display2=0x20 ;lcd_pos(0x48) ; lcd_wdat(display3) ; /百位数显示 lcd_pos(0x49) ; lcd_wdat(display2) ; /十位数显示 lcd_pos(0x4a) ; lcd_wdat(display1) ; /个位数显示 lcd_pos(0x4c) ; lcd_wdat(display0) ; /小数位数显示 /报警void baojing()if(display2>=0x32&&display1>=0x31) BEEP=1;elseBEEP=0;3.5湿度采集模块显示电路采用四位七段LCD数码管显示即LED四位七段数码管字符型液晶模块,是目前使用最广泛的液晶屏之一。LED四位七段数码管字符型液晶模块是点阵型液晶驱动方便,经编码后显示内容多样化10。标定即显示当下工作状态,显示温湿度。西安工业大学北方信息工程学院毕业设计(论文)开始开定时T0,T1是否计满1S? 是 否关闭T0并根据频率算出湿度值显示温度结束 图.3.4湿度检测流程图由图3.5可知相对湿度与电容的关系可看成直线段,所以有相对湿度RH= .(3.1) 图3.5电容值与相对湿度值的关系所以有(3.2)/*湿度测量*/ /软件延时/void delays(unsigned int cnt) while(-cnt);/定时器0初始化void i