精品蔬菜大棚温度控制系统Word格式文档下载.docx
《精品蔬菜大棚温度控制系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《精品蔬菜大棚温度控制系统Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
3。
1键盘电路设计3
2显示电路设计3
3报警电路设计4
4传感器电路设计4
5电机控制电路设计4
4程序设计6
4.1c语言6
4.2控制程序设计6
4。
3主控制程序设计...。
。
..。
....。
.。
...。
.....。
.6
5总结8
6参考文献9
附件一:
总原理图10
附件二:
系统程序11
1绪论
本设计的内容是温度测试控制系统,控制对象是温度.温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制.而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外.针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。
随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。
特别是近年来,温度控制系统已应用到人们生活的各个方面,但温度控制一直是一个未开发的领域,却又是与人们息息相关的一个实际问题。
针对这种实际情况,设计一个温度控制系统,具有广泛的应用前景与实际意义。
温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度.在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、粮食存储、酒类生产等领域内,温度常常是表征对象和过程状态的最重要的参数之一。
比如,发电厂锅炉的温度必须控制在一定的范围之内;
许多化学反应的工艺过程必须在适当的温度下才能正常进行;
炼油过程中,原油必须在不同的温度和压力条件下进行分馏才能得到汽油、柴油、煤油等产品。
没有合适的温度环境,许多电子设备就不能正常工作,粮仓的储粮就会变质霉烂,酒类的品质就没有保障。
因此,各行各业对温度控制的要求都越来越高。
可见,温度的测量和控制是非常重要的。
单片机在电子产品中的应用已经越来越广泛,在很多的电子产品中也用到了温度检测和温度控制。
随着温度控制器应用范围的日益广泛和多样,各种适用于不同场合的智能温度控制器应运而生。
2系统方案设计
2.1蔬菜温度控制系统设计方框图
图2.1系统设计方框图
系统硬件电路框图如图2。
1所示,蔬菜温度控制装置由单片机最小系统、LCD液晶显示电路、键盘电路、报警电路、温度传感器、继电器控制等七部分组成.
系统工作原理:
将温度传感器采集的数据输入单片机,单片机将得到的数据分别与键盘预先设定的上限温度和下限温度比较,如果数据大于上限温度单片机控制报警并接通电机电源(相当于接升温器),如果数据小于下限温度单片机控制报警并接通电机电源(相当于接降温器),整个过程LCD实时显示:
上限温度值、下限温度值、实际温度值。
2方案论证
在设计中要对空压机内压力、上、下限压力显示,显示模块的设计方案如下.
方案一:
测温电路的设计,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电感温电路比较麻烦。
路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路
方案二:
考虑使用温度传感器,结合单片机电路设计,采用一只DS18B20温度传感器,直接读取被测温度值,之后进行转换,依次完成设计要求。
比较以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计容易实现,故实际设计中拟采用方案二。
3电路设计
3.1键盘电路
因为本设计使用键盘数比较少,只要5个按键就足够了,故可以直接接在端口即可。
图3.1键盘电路
2显示电路设计
将P1与显示的数据端相连,采用模拟时序形式电路。
电路接线如图3-2
图3。
2显示电路
3报警电路设计
报警电路对实时温度的检测,温度过高或过低报警灯亮,并且蜂鸣器根据不同的报警情况,发出不同频率的声音.
3报警电路
3.4传感器电路设计
本设计使用的是DS18B20,采用单总线方式连接。
4传感器电路
3.5电机控制电路设计
电机电路利用继电器来控制电机开断。
电路如图图3。
5
图3.5电机控制电路设计
第4章程序设计
4.1C语言
软件对整个系统来说是至关重要的,是整个系统的灵魂,整个系统的执行操作都是在软件的协调指挥下进行的.用于计算机程序设计的语言分为机器语言、汇编语言和高级语言。
本测控系统的软件的编写主要采用C语言编写.
2控制程序设计
本系统软件设计采用模块化的设计思路,即整个系统的程序软件由许多独立的子程序模块组成,它们之间通过软件接口进行连接.连接的原则是:
模块内数据关系紧凑,模块间数据关系松散,按功能划分模块.整个软件系统的程序可分为四个大模块,即主程序模块、参数设置程序模块、现场数据采集显示模块和执行处理程序模块。
每个模块都具有一定的功能,每个模块又可分为许多子模块,既相互独立又相互联系,低级模块可以被高级模块调用。
4.3主控制程序设计
主程序是整个测控系统中最重要的程序,各个子程序都在主程序的协调指挥下运行,是一个顺序执行的无限循环程序,可以被任何优先级的中断请求所打断。
各个环境参数的测试和控制指令的判断都在各个测控子程序中进行,主程序的主要功能是实现系统的初始化、实现系统自检、响应中断请求进而调用数据处理子程序。
主程序的初始化工作主要完成对8255A、AD590、LED、ADC0809。
主流程图见图4.1。
5总结
早在选题之前,我就利用平时的时间看DS18B20芯片资料,当初认为DS18B20延时要很精确,所以我必须写出精确的延时程序。
但是C语言延时是不好精确地,为了写出那种很精确的延时程序,在网上找了很多资料,也学会了利用反汇编来计算延时,还有可以利用keil这个软件进行一些调试,也可测出延时时间.延时解决后,以为一切都会很顺利,但往往看起来容易的事情总有想不到的问题。
在写DS18B20驱动程序时,读出来显示的温度值总是不对,左看右看,我知道问题肯定是出在数据处理上。
于是我上网看别人是怎么进行数据处理,结合很多网上程序后,最后选择了其中一种的方法,但一切并不顺利,一篇又一篇的调试,不知调试了多少次终于成功了。
DS18B20驱动写出来了后,1602显示程序以前写过,所以可以移植过来,所以减少了不少的时间。
大的结构确定后,就是修改一些细节上。
比如我的温度比较范围是从-20-——99,这在软件控制上,看上去很简单。
可最后代码写下来也不少。
而且我也是调试了蛮多次的。
主要是以前从没有独立做过这种课程设计。
所以没有经验,很多细节上处理的不是很好.所以自己只有不断地去学习别人怎么处理,然后结合自身来处理细节上的问题。
利用了几天的时间,终于是在PROTEUS上仿真成功了。
但我的设计还是存在一些问题,比如反映时间不是很快,这些问题是值得去注意的。
再者,在Proteus上仿真通过,而没有做出实物,那也永远只是理论水平。
所以,尽管课程设计完成了,我要做的还远远不够。
在写课程设计的论文时,也得到了同学的帮助,同学也帮忙完成了一些。
通过这次课程设计,让我对于单片机的项目有了一个认知。
我更近一步看清了前方的路.很多东西是接下来必须去做的。
总之,要学的还很多,只有不断地学习,才能轻松的处理事情。
有句话说的很对“只有很努力,才能看起来毫不费力”。
课程设计搞完了,我的单片机学习还是不会断,因为我学的还真不够。
最后感谢给与我指点的老师和同学。
虽然我没有很强烈的表达在表面,但我一直都记住的。
没有你们,我可能会走很多弯路才能做到,一生中遇到你们这些贵人是我的荣幸。
感谢你们.
6参考文献
1。
赵晶.Protel99高级应用[M].人民邮电出版社,2006年。
谷树忠.ProtelDXP实用教程[M].电子工业出版社,2003年.
刘湘涛,江世民.单片机原理与应用[M].电子工业出版社,2006年.
孙育才.ATMEL新型AT89c51系列单片机及其应用[M].清华大学出版社,2005年。
5.李华.MCU-51系列单片机实用接口技术[M].北京:
北京航空航天大学出版社,1993年.
6。
张迎新,雷道振.单片机初级教程[M]。
北京航天航空大学出版社,2006年.
7.李朝青。
单片机原理及接口技术.北京:
北京航空航天大学出版社,2009年。
8.潘新民,王燕芳.微型计算机控制技术。
北京:
电子工业出版社,20011年.
附录一:
总原理图
附件一:
系统程序
#include〈reg51。
h>
#include<
absacc。
h〉
#include〈intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
#defineulintunsignedlongint
ucharcodetable0[]={//欢迎界面
0xa0,0x57,0x65,0x6c,0x63,0x6f,0x6d,0x65,
0xa0,0x74,0x6f,0xa0,0x75,0x65,0x73,0xa0,
0xa0,0xa0,0x74,0x68,0x65,0x72,0x6d,0x6f,
0x6d,0x65,0x74,0x65,0x72,0x21,0xa0,0xa0};
uchartable1[]={0x6d,0x61,0x78,0x3a,0x00,0x00,0x00,0xa0,//存储报警值
0x6d,0x69,0x6e,0x3a,0x00,0x00,0x00,};
uchartable2[]={//存储温度
0x54,0x4d,0x50,0x54,0x3a,
0x00,0x00,0x00,0x00,0xa5,0x00,0x00,0x43};
ucharcodetable3[]={//提醒设定报警值
0xa0,0x50,0x6c,0x65,0x61,0x73,0x65,0xa0,
0xa0,0x63,0x68,0x61,0x72,0x67,0x65,0xa0,
0xa0,0xa0,0xa0,0x79,0x6f,0x75,0x72,0xa0,
0x63,0x61,0x72,0x64,0x21,0xa0,0xa0,0xa0};
uchartable4[]={//输入界面
0x50,0x6c,0x65,0x61,0x73,0x65,0xa0,0x69,
0x6e,0x70,0x75,0x74,0x3a};
sbitE=P3^7;
sbitRW=P3^6;