基于STC89C52单片机的粮仓温湿度的系统设计

常州大学本科生毕业设计(论文)

1 绪论

1.1 课题开发的意义

“国以民为本,民以食为天”,“兵马未动,粮草先行”,这些都充分说明粮食对国家的重要性。储粮是为了防备战争、保证非农业人口的粮食消费需求、调节国内粮食供求平衡、稳定粮食市场价格、应对重大自然灾害及其它突发性事件而采取的有效措施,因此,粮食的科学储藏具有重要的战略意义和经济意义。

一般来说,粮食存放在粮仓中,大型的粮仓可存放数以万计的粮食,而且这些粮食存放的时间有长有短。目前,我国地方及垦区的各种大型粮仓都还存在着不同程度的粮食储存变质问题。根据国家粮食保护法规定,必须定期抽样检查粮仓各点的粮食温度和湿度,以便及时采取相应的措施,防止粮食的变质。但大部分粮仓目前还是采取人工测量温度和湿度的方法,这不仅使粮仓工作人员工作量增大,且工作效率低,尤其是大型粮仓的温度和湿度检测任务如不能及时彻底完成,则有可能会造成粮食大面积变质。据有关资料统计,我国每年因粮食变质而损失的粮食达数亿千克,直接造成的经济损失是惊人的。

影响储粮安全的最主要因素是粮堆内的大气条件,即温度和相对湿度的日变和季节变化,而温度和湿度两者之间又是相互关联的。为了保证存放在粮仓中的粮食不致腐烂变质,就必须使粮仓内的温度和湿度保持在一定的范围以内。 1.2 课题开发的背景

随着传感器技术、计算机应用技术、超大规模集成电路技术和网络通信技术的发展,监控系统广泛应用于工农业生产等领域,在此同时,粮仓温湿度监控技术的研究在软、硬件等方面都有了一定的进展。

初期,以热敏电阻,湿敏电阻作为传感器件,通过检测电阻的变化来反映粮食温湿度的变化,为粮食保管提供参考依据。采用人工测量与人工抄录、管理相结合的传统方法,并且用人工的办法对粮食进行晾晒,通风,喷洒药剂防止因存储不当引起的温湿度异常及虫害,消耗了大量的人力和财力,效率较低,然而往往由于判断失误和管理不力,效果不佳,发霉变质等现象大量存在。广大科技工作者近30年的共同努力下,粮情检测技术不断完善、提高、并日趋成熟,逐步形成了样式繁多的粮情检测系统,为安全、科学储粮起到了积极作用。 目前,国内生产的粮仓温湿度监控系统品种繁多,系统结构各异,在粮仓内外温湿度检测、粮食内部温湿度检测及分析、通风机械的控制等方面,比之前有了不少进步但仍有进步空间。现场检测电路和上位机的通讯大多采用RS-485,使整个系统抗干扰能力差,实时性和纠错能力不强,增加了节点困难。当某一通信节点出现故障时,还会影响整个系统。

国外的温湿度监控系统相对比较先进,主要体现在以下三个方面:

(1)无论是传感器的测量精度、反应速度、稳定性、功能多样性还是使用

第1页 共43页

常州大学本科生毕业设计(论文)

环境方面,国外的传感器都比较先进。

(2)构成系统整体的测控技术和管理,无论是硬件还是软件,都已普遍采用相应的标准模块集成,并且早已实现组态。

(3)系统结构已经普遍采用网络连接的现场总线技术(FCS),有些需要的场合,则连接到Internet上,实现远程控制、远程诊断。

温湿度监控系统主要应用于控制环境空间的温度和相对湿度,从系统控制的角度来看,属于纯滞后控制,而这一技术已经相当成熟。目前研制高精度,高性能,多功能的温湿度监控系统是主流,提高可靠性、灵活性和降低成本也是其考虑的重点,并且系统在报警、记录、控制、通信等方面的自动化和智能化也将逐步完善。

1.3 课题开发的目标

利用STC89C52单片机及温湿度传感器DHT11采集粮仓的温湿度,实现温湿度的实时显示、报警等功能。

2 系统总体分析

2.1 总体方案设计

粮仓温湿度监测系统需要满足以下条件:温湿度监测系统能完成数据采集、处理、显示、串行通信、输出信号控制等多种功能。

本设计是基于单片机对数字信号的高敏感性和可控性以及数字温湿度传感器可以产生数字信号的性能,设计了以STC89C52为核心的一套控制系统,其中包括单片机、温湿度检测、键盘及显示、报警电路、系统软件等部分的设计。

DHT11温湿度传感器温度、湿度数据温湿度上限LCD显示温湿度值STC89C52单片机外部EEPROM按键输入过阈报警 图2.1系统总体框图

第2页 共43页

常州大学本科生毕业设计(论文)

2.2 硬件选择

(1) 微控制器选择

STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。

(2) 传感器选择

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高 的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测 温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。

(3)显示器选择

在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。

在单片机系统中应用液晶显示器作为输出器件有以下几个优点: ①显示质量高:由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点,因此,液晶显示器画质高且不会闪烁。

②数字式接口:液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便。

③体积小、重量轻

④功耗低:相对而言,液晶显示器的功耗主

要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多。 本设计中选用LCD1602液晶显示器。 (4)存储芯片选择

AT24C02是一个2K位串行CMOS E2PROM, 内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。AT24C02有一个

第3页 共43页

常州大学本科生毕业设计(论文)

16字节页写缓冲器。该器件通过IIC总线接口进行操作,有一个专门的写保护功能。

AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。主器件和从器件都可以作为发送器或接收器,但由主器件控制传送数据(发送或接收)的模式,通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。 2.3 系统仿真

(1)Proteus软件简介

Proteus软件是来自英国Labcenter electronics公司的EDA工具软件,Proteus软件有近20年的历史,在全球广泛使用,除了其具有和其它EDA工具一样的原理布图、PCB自动或人工布线及电路仿真的功能外,其革命性的功能是,他的电路仿真是互动的,针对微处理器的应用,还可以直接在基于原理图的虚拟原型上编程,并实现软件源码级的实时调试,如有显示及输出,还能看到运行后输入输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等,Proteus能够很容易的为用户建立了完备的电子设计开发环境。

Proteus组合了高级原理布图、混合模式SPICE仿真,PCB设计以及自动布线来实现一个完整的电子设计系统。此系统受益于15年来的持续开发,被《电子世界》在其对PCB设计系统的比较文章中评为最好产品—“The Route to PCB CAD”。Proteus 产品系列也包含了我们革命性的VSM技术,用户可以对基于微控制器的设计连同所有的周围电子器件一起仿真。用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。

其功能模块:—个易用而又功能强大的ISIS原理布图工具;PROSPICE混合模型SPICE仿真; ARES PCB设计.

PROSPICE 仿真器的一个扩展PROTEUS VSM:便于包括所有相关的器件的基于微处理器设计的协同仿真。此外,还可以结合微控制器软件使用动态的键盘,开关,按钮,LEDs甚至LCD显示CPU模型支持许多通用的微控制器,如PIC,***R,HC11以及8051。

Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。

(2)系统仿真结果

第4页 共43页

联系客服:779662525#qq.com(#替换为@)