卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
(2)光标归位,即将光标撤回液晶显示屏的左上方; (3)将地址计数器(AC)的值设为0; 光标归位指令如表2.6:
表2.6
执行
功能 清屏
RS 0
R/W 0
DB7 0
DB6 0
指令码 DB5 DB4 0 0
DB3
0
DB2 0
DB1 1
DB0 X
执行时间,ms 1.64
功能:
(1)把光标撤回到显示器的左上方; (2)把地址计数器(AC)的值设置为0; (3)保持DDRAM的内容不变;
本设计用LCD1602液晶显示屏显示即时温度和键盘电路所设定温度的显示,Tem表示农田内的即时温度,Set表示设定的农田内的温度范围,前者表示最高温度,后者表示最低温度。其硬件电路图如图2.10所示:
图2.10 液晶显示电路
2.3.2多功能农田温度自动环境监测系统报警电路设计
当温度高于所设定的最高温度或者低于所设定的最低温度时,警报声响起进行报警,提醒工作人员及时处理。当处理完成后,警报声关闭。报警电路如图2.11所示:
17
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
图2.11 报警电路
3多功能农田温度环境监测系统软件设计
3.1单片机软件的开发语言
目前单片机软件的开发主要采用汇编语言和C语言。汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用内存空间小、执行速度快、系统运行效率高,但是对开发者的要求较高,需要特别熟悉单片机的内部资源和外围电路。过去,由于单片机C语言本身存在的缺陷,加之单片机工程项目本身都不大,C语言在单片机中的应用没有被重视。而现在单片机的开发中,C语言以其方便、灵活、逻辑性强、易于维护和可移植性好等强大优势,占据了单片机开发的主要地位。在C语言环境下,只需关心程序的逻辑关系,实现细节则由编译器完成,这为快速开发提供了条件,也大大减小了开发工作量。但同时,实现细节就不被控制了。这个问题对于经常重视实现细节的单片机来说,必须得到解决。好在一般的C语言编译器都提供嵌入汇编、与汇编互调用和汇编级的代码察看等功能[14]。
3.2软件开发环境介绍
在多功能农田温度环境监测系统设计采用C语言作为编程语言,开发环境采用Keil Software-Cx51编译环境,使用Keil uVision3编译器。
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易
18
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
用。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。Keil可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试或直接写入程序存储器中[15-16]。
3.3模块化设计方法
模块化程序设计就是将程序模块化,按人们能够理解的大小规模进行分解,即一个程序由若干模块组成,较大的模块可用一个程序文件实现。模块组装在一起达到整个程序的预期目的。一个模块只做一件事情,模块的功能充分独立。模块内部的联系要紧密,模块之间的联系要少。模块之间通过接口(形参或外部变量)通讯,模块内部的实现细节在模块外部尽量不可见。最上层的模块称为主控模块,下层模块称为子模块,通过主控模块将各子模块组织在一起。
将程序模块化,把功能分解,降低模块之间的耦合性。以便在更改某个模块来达到质量或效率的提升时,不用改变整个结构,只需要替换相应的模块,使得工作量明显减少。把程序设计中的抽象结果转化成模块,不仅可以保证设计的逻辑正确,而且适合项目的集体开发。各个模块分别由不同的程序员编制,只要明确模块之间的接口关系,模块内部细节的具体实现可以由不同程序员自己随意设计,而模块之间不受影响。所以,进行模块化设计时,应重点考虑划分模块的原则和如何组织好模块之间的联系。模块划分的原则如下
[17]
:
(1)按功能划分模块:在按功能划分模块时,要求各模块的功能尽量单一,各模块的联系尽可能少。满足这些要求的模块有以下几个优点:可读性和可理解性都比较好,模块的接口关系都比较简单。当修改某一功能时,只涉及一个模块。其他的模块可以充分利用已有的一些模块。
(2)按层次组织划分模块:在按层次组织划分模块时,一般上层模块只需指出“做什么”,只有在最底层模块中才会精确的描述“怎么做”。主模块需要指出总任务,而下一级的子模块要分别指出各自的任务。所以,下一级的子模块才精确描述“怎么做”。
如果是个人作品或者很小的软件,模块化可能体现不出优越性,反而使得编程更加复
19
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
杂。但是如果是许多人协同作业,或者软件工程非常大,它就会有非常明显的优越性,因为其他人不需要知道这个工作组究竟是怎样写的,只需要知道这部分所实现的功能,知道它所拥有的接口就可以了。这样程序设计就会更加简便,而且还可以把某个部分外包,或集中人力、物力先完成其中一部分的模块。由于本设计并不是大规模的设计,模块化设计的优势不是很明显。
在具体的模块化设计的过程中应当遵循如下原则:(1)提高模块独立性,即模块要高内聚低耦合;(2)规模适中;(3)深度、宽度、扇出和扇入要适中;(4)应尽量减少模块的接口和界面的复杂性;(5)设计成单入口、单出口的模块;(6)设计成功能可预测的模块。
基于单片机的多功能农田温度环境监测系统的设计根据实际情况,采用了结构化设计和功能模块化设计相结合的方法。
3.4软件设计方案及流程图
本系统设计软件流程图如图3.1所示:
开始 初始化 对DS18B20测温 LCD1601显示 温度高报警且提醒人工排水 正 常 湿度度低报警且提醒人工灌溉
图3.1 软件设计流程图
20
卜纪清:基于单片机的智能温室大棚温度控制系统设计与仿真
本设计中,用51单片机作为主控芯片,首先进行初始化,然后对温度传感器进行温度采集,采样完成之后在LCD1602上显示,并对温度进行比较,比较后如果温度高于或者低于设定温度进行报警并进行相应的控制,否则正常。
21