基于单片机的大棚温湿度采集控制系统_毕业设计(编辑修改稿)内容摘要:

面,按 k2 键为设置下限温度加,按 k3 键为设 13 置下限温度减,再按下 k4 键确认刷新,即成功设置温度下限。 继续按下 k1 键,出现湿度上限的设置页面,按 k2 键为设置上限湿度加,按 k3 键为设置上限湿度减,再按下 k4 键确认刷新,即成功设置湿度上限。 继续按下 k1 键,出现湿度下限设置页面,按 k2 键为设置下限湿度加,按 k3 键为设置下限湿度减,再按下 k4 键确认刷新,即成功设置温度下限。 3 系统设计 硬件设计 本设计的设计电路 采用模块 化、层次化设计 ,设计的电路原理图如图 31 所示。 14 图 31 电路原理图 主机与主要部件的选择: 根据总体功能和性价比及其运行速度等因素的考虑,选用 MCS51 系列的 STC89C52为主机,满足上面的要求而且设计方便,不需要再存储扩展。 数据存储片内设有 128B,外部有 8279 的 256B,而由于存入的数据是随时更新的且不计小数位,存入 8 个 16 进制数字,其总共需要的容量只有 16B,已经够用。 外部模温度、湿度采样,选用 DHT11 能够满足要求。 系统各部件的连接方式如下: DHT11 和单片机之间用单总线传输 , DHT11 的数据口与单片机的 P1^0 相连。 液晶显示器的 RS,RW和 E分别与单片机的 P2^5,P2^6,P2^7 相连,数据输入口 DB0DB7 15 分别与单片机 P00P07 口相连。 设置按键、按键加、按键减、确认刷新按键分别的单片机的 P3^2, P3^3, P3^4, P3^5相连。 单片机 P1^1, P1^3 分别为温度超过或低于上下限控制脚, P1^2, P1^4 分别为湿度超过或低于上下限控制脚。 控制脚通过控制 加湿设备、除湿设备、加温设备、降温设备 ,调节温度及湿度。 软件设计 系统软件程序基于 Keil uvsion2 开发平台,采用 C51 语言编写。 本程序采用模块化程序方法: LCD 初始化显示模块 系统初始化模块的主要功能是完成系统的初始化以及设定系统的工作状态,初始化部分包括以下方面的内容: (a) 系统启动后,显示器上显示两行,第一行为 “TEMPERATURE:00 C”,第二行显示为“HUMIDITY: 00 %” (b)等待 DTH11 采集温度及湿度值。 (c)系统进入正常工作状态。 系统整体的工作方式如下框图所示 程序流程图: 16 图 32 DHT11 数据采集流程图 本系统采用 DHT11 温湿度传感器对蔬 菜大棚内温湿度的采集 并转换成数字信号, 将信息提供给主控制器进行处理和分析,主控制器开始 LCD 初始化,进行延时等待提取DHT11 温湿度传感器模块,将采集的信息处理后传给 LCD1602 显示,同时调用控制模块,与系统默认设定值比较,系统温度上下限,湿度上下限默认值均为 0,可通过设置按钮进行设置,按下设置按钮可对温度下限、上限,湿度下限、上限的顺序依次进行设置, 温湿度均可以设置上下限,按下 k1 键,出现温度上限的设置页面,按 k2 键为设置上限温度加,按 k3 键为设置上限温度减,按下 k4 键确认刷新,即成功设置温度上限。 继续 按下 k1 键,出现温度下限设置页面,按 k2 键为设置下限温度加,按 k3 键为设置下限温度减,再按下k4 键确认刷新,即成功设置温度下限。 继续按下 k1 键,出现湿度上限的设置页面,按 k2键为设置上限湿度加,按 k3 键为设置上限湿度减,再按下 k4 键确认刷新,即成功设置湿度上限。 继续按下 k1 键,出现湿度下限设置页面,按 k2 键为设置下限湿度加,按 k3 键为设置下限湿度减,再按下 k4 键确认刷新,即成功设置温度下限。 当蔬菜大棚实际温度超过设定温度上限时,系统将调用控制模块对降温设备控制,将蔬菜大棚的温度降低;当蔬菜大棚实际温度低于设 定温度下限时,系统将调用控制模块对升温设备控制,将蔬菜大棚的温度升高;当蔬菜大棚实际湿度超过设定湿度上限时,系统将调用控制模块对除湿设备控制,将蔬菜大棚的湿度降低;当蔬菜大棚实际湿度低于设定湿度下限时,系统将调用 17 控制模块对加湿设备控制,将蔬菜大棚的湿度提高。 主程序流程图如图 33 所示。 图 33 主程序流程图 4 总结与展望 单片机是一门应用性和实践性很强的学科,很多人都想学习单片机,并且想知道如何学习单片机。 熟悉单片机的人都知道,要学好单片机可不是一件容易的事,倒不是因为单片机很难学,而是很 难找到一本专为单片机入门者而编写的教材。 翻一下身边的单片机教材,都好像是为已经懂单片机的人而写的,一般先介绍单片机的硬件结构和指令系统,再是系统扩展和外围器件,顺便讲一些应用设计(随便说一下,很多书中的电路设计已经过时,并且有些程序还是错误的)。 如果按照此种学习方法,想进行产品开发,就必须先把所有的知识全部掌握了才可以进行实际应用。 学习使用单片机只能靠循序渐进的积累。 学单片机不仅要学习理论知识,实践操作也很重要。 学过单片机的人都有这样的经历,就是把自己写的程序烧录到单片机里面的时候会发现与自己想要的结果有 很大的不同。 这就是因为实践操作少了,经验不足的缘故。 推荐大家从简单的东西学起,当我们积累了一 18 定的东西之后就可以动手做一些比较复杂的东西了。 设计本系统的过程中遇到了很多的问题,在编写 DHT11 的测量程序的过程中遇到了很多的问题,刚开始始终的不到数据,研究了很长时间都弄不出来。 同学提示我要注意一下时序,然后我又按照 DHT11 的通讯时序和接收时序将程序一条条的重写,在经过几次调试之后,终于得到了自己想要的结果;液晶显示部分也出了一点点小问题,就是送数据过去的时候忘了显示字符必须送字符的 ASCII 码。 本系统具有 较强的实用性,淘宝网上 DHT11 单片价格仅 元。 作者对 DHT11 与DS18B20 及一些水银温湿度测量器的测量数据进行了比较,验证了 DHT11 测量数据的准确性和稳定性。 低廉的价格、小巧的体积、准确稳定的测量数据、简单的单总线控制方式、简洁的电路连接,这些将使 DHT11 拥有良好的应用前景。 1602 液晶也比较便宜,操作比较简单。 另外,本系统还具有较高的扩展性,可以集时钟,计算器,温湿度测量等于一体,具有一定的市场价值。 19 参考文献 [1] 黄卜夫.欧洲设备安装总线综述 [M].电子技术应用, 20xx( ) :710 [2] 戚作钧 .无线电技术基础 [M].第一版.北京:人民教育出版社, 1959: 165183 [3] Wayne [M].王曼珠,许萍,曾萍等译 .第四版 .北京:电子工业出版社, 20xx: 137141 [4] Andrew S. Tanenbaum.计算机网络 [M].熊桂喜,王小虎译.第三版.北京:清华大学出版社, 1998: 402419 [5] 郑阿奇.计算机网络原理与应用 [M].第一版.北京:电子工业出版社, 20xx: 3445 [6] 王耀南 .计算智能 信息处理技术及其应用 [M].长沙:湖南大学出版社, 1999 20 附录一:设计实物图 成品图 21 显示控制 当前为湿度 59% 温度 21176。 C 温湿度探头 设置界面 22 附录二:程序 程序 include //_nop_()。 延时函数用 define uchar unsigned char define uint unsigned int sbit temp_out=P1^1。 sbit humi_out=P1^2。 sbit temp_led=P1^3。 sbit humi_led=P1^4。 uint count。 uchar ds1,ds2,ds3,ds4。 uchar U8FLAG,k。 uchar U8count,U8temp。 uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata。 uchar U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp。 uchar U8data。 uint U16temp1,U16temp2。 sbit IO= P1^0。 // void Delay1(uint j) { uchar i。 for(。 j0。 j) { for(i=0。 i27。 i++)。 } } 23 void Delay_10us(void) { uchar i=5。 for(。 i0。 i)。 } void COM(void) { uchar i。 for(i=0。 i8。 i++) { U8FLAG=2。 // while((!IO)amp。 amp。 U8FLAG++)。 Delay_10us()。 Delay_10us()。 // Delay_10us()。 U8temp=0。 if(IO)U8temp=1。 U8FLAG=2。 while((IO)amp。 amp。 U8FLAG++)。 // //P2_1=0。 //P2_1=1。 // if(U8FLAG==1)break。 24 U8data=1。 U8data|=U8temp。 } } // void RH(void) { IO=0。 Delay1(180)。 IO=1。 Delay_10us()。 Delay_10us()。 Delay_10us()。 Delay_10us()。 IO=1。 if(!IO) { U8FLAG=2。 while((!IO)amp。 amp。 U8FLAG++)。 U8FLAG=2。 while((IO)amp。 amp。 U8FLAG++)。 COM()。 U8RH_data_H_temp=U8data。 COM()。 25 U8RH_data_L_temp=U8data。 COM()。 U8T_data_H_temp=U8data。 COM()。 U8T。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。