温室大棚温湿度控制系统

发布时间:2020-06-17 14:33:41

毕业论文(设计)

题 目 名 称 温室大棚温湿度控制系统

院 (系) 电子信息学院

专 业 班 级 电 气 10803

学 生 姓 名 陶 想 林

指 导 教 师 唐 桃 波

辅 导 教 师 唐 桃 波

时 间 2012年3月 2012年6月







长江大学毕业设计(论文)任务书

学院(系) 电子信息学院 专业 电气工程及其自动化 班级 电气10803班

学生姓名 陶想林 指导教师/职称 唐桃波/讲师

1.毕业设计(论文)题目:

温室大棚温湿度控制系统设计

2.毕业设计(论文)起止时间: 2011 年3 月21日~2011年 6月10日

3.毕业设计(论文)所需资料及原始数据(指导教师选定部分)

[1]卢飞跃.红外遥控多路抢答器的设计[J].番禺职业技术学院学报,2003

[2]刘志文. 遥控开关系统的理论设计与应用. 大学学报(教科文艺) 2003,(3)

[3]黄陇. 实用型红外遥控功能开关的设计与实现. 2003,33(2)

[4]黄遵熹. 单片机原理接口与应用[M].西北工业大学出版社,2000.147—150.

[5]刘文涛. 单片机应用开发实例. 清华大学出版社 2005.

[6]韩太林. 单片机原理及应用. 电子工业出版社. 2005.

[7]张毅刚. 单片机原理及应用. 高等教育出版社. 2004.

[8]何立民. 单片机应用技术选编[第三版]. 北京航空航天大学出版社.2003.

[9]付家才. 单片机控制工程实践技术. 北京化学工业出版社.2004.

[10]严天峰. 单片机应用系统设计与仿真调试. 北京航空航天大学出版社,2005

[11]裴彦纯. 基于单片机系统的红外遥控器应用,现代电子技术.2007

[12]徐爱钧. 8051单片机实践教程[M].电子工业出版社. 2006



4.毕业设计(论文)应完成的主要内容

(1)查阅资料,学习相关元器件的工作原理

(2)选择控制芯片与湿度传感器,制定控制方案,然后利用Protuse画出硬件电路原理图

(3)编写程序并进行仿真

(4)在日志上记下每天的设计活动

5.毕业设计(论文)的目标及具体要求

(1)完整硬件设计电路

(2)软件框图及程序清单

6.完成毕业设计(论文)所需的条件及上机时数要求

须proteus仿真,用VC编写程序,上机时数80小时

任务书批准日期 2011 1 13 日 教研室(系)主任(签字)

任务书下达日期 2011 1 13 日 指导教师(签字)

完成任务日期 2011 6 10 学生(签名)



长江大学

毕业设计开题报告

题 目 名 称 温室大棚温湿度控制系统设计

题 目 类 别 毕业设计

学 院(系) 电子信息学院

专 业 班 级 电气10803

学 生 姓 名 陶想林

指 导 教 师 唐桃波

开题报告日期 2012 年 3 月 11 日



温室大棚温湿度控制系统设计

学生:陶想林,电子信息学院

指导教师:唐桃波,电子信息学院

1 题目来源

来源于生产/社会实际

2 研究目的和意义

目前,我国农业正处于从传统农业到以优质,高效,高产为目标的现代化农业转化的新阶段。而大棚作为现代化农业实施的重要产物,在国内多数地区得到了广泛应用。现代农业生产离不开环境控制,农业大棚控制系统是实现温室生产管理自动化、科学化的基本保证。结合作物生长规律,控制环境条件,使作物在不适宜生长的反季节中,可获得比室外生长更优的环境条件,从而使作物达到优质、高产、高效的栽培目的。由于大棚中各种环境因素是可以人为控制的,因此控制技术直接决定着大棚中农作物的产量和质量。

3 阅读的主要参考文献及资料名称

[1]黄遵熹. 单片机原理接口与应用[M].西北工业大学出版社,2000.147—150.

[2]刘文涛. 单片机应用开发实例. 清华大学出版社 2005.

[3]韩太林. 单片机原理及应用. 电子工业出版社. 2005.

[4]张毅刚. 单片机原理及应用. 高等教育出版社. 2004.

[5]何立民. 单片机应用技术选编[第三版]. 北京航空航天大学出版社.2003.

[6]付家才. 单片机控制工程实践技术. 北京化学工业出版社.2004.

[7]严天峰. 单片机应用系统设计与仿真调试. 北京航空航天大学出版社,2005

[8]徐爱钧. 8051单片机实践教程[M].电子工业出版社. 2006

4 国内外现状和发展趋势与研究的主攻方向

美国是将计算机应用于大棚和管理最早,最多的国家之一。美国开发的大棚计算

机控制与管理系统可以根据作物的特点和生长所需要的条件,对大棚内的光照,温度,湿度等诸多因素进行自动控制。这种自动控制系统需要种植者输入温室作物生长所需的环境的目标参数,计算编机根据传感器的实际测量值与事先设定的目标进行比较,以决定大棚温湿度的控制过程,按照相应的机构进行加热,降温或者是浇水,通风等。目前,我国绝大部分自主开发的大棚温湿度控制或者进口的国外设备都属于这种系统。

虽然这种自动控制系统实现了自动化,适合规模化生产,提高了劳动生产率,通过改变大棚温室度的设定目标,可以自动的对大棚内温湿度进行调节,但是这种调节对作物的生长来说还是相对滞后的,难以介入作物生长的内在规律。所以在这种自动控制系统和实践的基础上,温湿度自动控制向着适合不同作物生长的智能化控制发展。

国外大棚业正致力于高科技发展,遥测技术,网络技术,控制局域网已逐渐应用于大棚的管理和控制中,近几年各国温度控制技术提出建立大棚行业标准,朝着网络化,大众化,大规模,无人化的方向发展的思路。

5 主要研究内容,关键问题的解决思路

本系统的设计的硬件主要包括:主要是单片机AT89C51,检测系统,显示电路,A|D电路,报警电路等。利用传感器测量大棚内的温湿度经过信号处理,将传感器测得的数据送至控制系统(AT89C51),与预设的农作物最适合生长的温湿度值的上下限进行对比,并通过显示电路将测得的温湿度进行实时显示。如果不同作物的适合生长的温度不一样,可以通过键盘电路修改预设值。控制系统根据比较的结果对调节系统发出相应的指令,启动相应的调节设备如喷水机,吹风机,加热器,降温等,调节大棚内的温湿度状态。如果测得的数据超过了预设值的上下限,则报警电路会报警。这样就实现了对大棚温湿度的自动控制。

本文主要研究内容如下:

1.进行温湿度控制系统的整体研究与设计。

2.利用键盘设置温湿度的上下限值。

3.利用数字温湿度传感器测量大棚内的温湿度。

4.利用LCD对温湿度进行实时显示。

5.当大棚温湿度值超出设定范围值时,系统可自动报警,并输出 驱动信号控制继电器对大棚温湿度进行调节。

大棚温湿度控制原理图

6 完成毕业设计(论文)所需具备的工作条件

串口通信、Proteus6 Professional软件、Keil软件、CAN总线、PLC、Modem集成电路、计算机

7 工作的主要阶段,进度与时间安排

3—4周:写开题报告。

5—6周:查阅相关技术资料,熟悉单片机语言及传感器的基础知识

7—8周:英文翻译

9—10周:硬件设计与资料搜集

11—12周:设计程序

13—14周:调试与修改

15—16周写毕业论文

8 指导老师审查意见



长江大学毕业论文(设计)指导教师评审意见

学生姓名

专业班级

毕业论文

(设计)题目

指导教师

职 称

评审日期

评审参考内容:毕业论文(设计)的研究内容、研究方法及研究结果,难度及工作量,质量和水平,存在的主要问题与不足。学生的学习态度和组织纪律,学生掌握基础和专业知识的情况,解决实际问题的能力,毕业论文(设计)是否完成规定任务,达到了学士学位论文的水平,是否同意参加答辩

评审意见:

指导教师签名: 评定成绩(百分制):_______分



长江大学毕业论文(设计)评阅教师评语

学生姓名

专业班级

毕业论文

(设计)题目

评阅教师

职 称

评阅日期

评阅参考内容:毕业论文(设计)的研究内容、研究方法及研究结果,难度及工作量,质量和水平,存在的主要问题与不足。学生掌握基础和专业知识的情况,解决实际问题的能力,毕业论文(设计)是否完成规定任务,达到了学士学位论文的水平,是否同意参加答辩

评语:

评阅教师签名: 评定成绩(百分制):_______分



长江大学毕业论文(设计)答辩记录及成绩评定

学生姓名

专业班级

毕业论文

(设计)题目

答辩时间

日 ~ 时

答辩地点

一、答辩小组组成

答辩小组组长:

成 员:

二、答辩记录摘要

答辩小组提问(分条摘要列举)

学生回答情况评判

三、答辩小组对学生答辩成绩的评定(百分制):_______分

毕业论文(设计)最终成绩评定(依据指导教师评分、评阅教师评分、答辩小组评分和学校关于毕业论文(设计)评分的相关规定)

等级(五级制):_______

答辩小组组长(签名) : 秘书(签名): 年 月 日

院(系)答辩委员会主任(签名): 院(系)(盖章)



温室大棚温湿度控制系统

学生:陶想林 电子信息学院

指导老师:唐桃波 电子信息学院

【摘要】在农业生产中,温室大棚的应用越来越广泛,也能为人们创造更高的经济效益。在温室大棚中,最关键的是温湿度控制方法。传统的温湿度控制方法完全是人工的,不仅费时费力,而且效率很低。本文旨在论述一钟温室大棚温湿度控制系统的设计及工作原理。该系统主要由单片机、数字温湿度传感器DHT11、无线通信模块APC220、液晶显示LCD1602、键盘等组成。采用温湿度传感器DHT11来测量温湿度,它的精确度高,而且DHT11直接是输出数字信号,可直接与单片机相连。通过无线传感器APC220来进行信号传送,这样能够降低布线的麻烦。显示部分使用的是LCD1602来显示温湿度。本系统还有附带键盘,能够对大棚所需要的温湿度上下限值直接设定和修改。本系统的核心是单片机AT89C51,接收传感器所测的数据并处理,然后执行各种操作,如喷水,吹风等。

本系统智能度高,可靠性高,系统工作稳定,且综合性价比较高,具有较大的市场应用前景。

【关键词】 单片机 数字温湿度传感器DHT11 无线通信模块APC220

显示模块LCD1602

Greenhouse Temperature and Humidity Control System

Student :Taoxiang Lin Electronics & Information College

Tutor: Tangtaobo Electronics & Information College

Abstract In agricultural production, shed greenhouse used more widely, but also can create more economic benefits for the people. In the shed greenhouse ,the most critical factor is the method of temperature and humidity control. The traditional temperature and humidity control method is completely artificial, not only time-consuming, but also inefficient. This paper aims to discusses the design and operating principle of shed greenhouse temperature and humidity control system. The system consist of the microcontroller ,digital temperature and humidity sensor DHT11,wireless sensor APC220,LCD1602,keyboard and other components. Temperature and humidity sensor DHT11 is used for measuring temperature and humidity ,its high precision ,and DHT11 can directly output digital signal, which can be directly connected with the microcontroller .This can reduce the trouble of wiring for signal transmission through wireless sensor APC220.The display selection is LCD1602 which is used for displaying the temperature and humidity. The system also comes with a keyboard ,can set and modify the upper and lower limits on the greenhouse temperature and humidity needed. The core of this system is the microcontroller AT89C51,receiving sensor measured the data and processing, and then carry out various operation ,such as water spray ,warming, cooling and ect.

This system intelligent degree is high, high reliability, the system stable work, and comprehensive high cost performance, so it has great application prospect in the market.

【key word】 microcontroller digital temperature and humidity sensor DHT11 wireless sensor APC220 display section LCD1602

前言

在现代的大棚种植技术中,温度、湿度是大棚蔬菜能否茁壮成长的重要因素。现在我国大棚生产规模虽然空前巨大,但是大棚的设备比较陈旧,温度采集方式落后,广大农村采用煤油温度计的温度采集方式,不仅温度采集较为老套,并且费时费力,不利于大棚生产规模的扩大,也不利于信息化程度的提高,不符合党中央提出的科技兴农的战略目标。

农业是人类社会最古老的行业,是各行各业的基础,也是人类顿以生存的最重要的行业,由传统农业向现代化农业转变,由粗放经营向集约经营转变,必须要求农业科技有一个大的发展,进行一次新的农业技术革命。科技的发展促进了农业的发展,温室大棚在农业中的应用越来越广泛。传统的温室大棚的自动化程度很低,基本是是粗放型的人工操作,即便对于所给定的量,在操作中无法进行有效的控制,很大程度上限制了温室大棚的经济效益。

现代智能控制系统是进行温室大棚温湿度控制的有效手段和工具,它可以提高操作的准确性,有利于控制过程的科学管理,也降低了对操作者本身素质的要求和体力劳动强度。除此之外,它还能准确、定时、定量、高效的进行温湿度控制,可以节省人力、体力而提高质量和产量。智能温室大棚控制系统在我国农业中的使用为数不多,与发达国家相比,有较大的差距,有很多是基本停留在人工操作,即使有些使用的了自动控制系统,但是也是以经验来自行设定很多参数,使得不能物尽其用而又造成浪费。只有提高自动控制系统的智能,使得在农业生产中更加智能和方便并采用廉价的器材使其价格能被广大农业生产者所接受,才能促进智能温室大棚温湿度控制在农业中的广泛应用和提高其经济效益。

随着微型计算机和传感器技术的迅猛发展,其价格低、可靠性高,给改造农业带来了很多便利。用高新技术改造农业生产,是我国农业和国民经济持续发展的根本大事。本文旨在对温室大棚温湿度监控系统的设计,一种基于mcs-51单片机的控制系统,通过高灵敏度的温湿度传感器检测大棚内的温湿度,并通过控制系统进行温室度调节。



绪论

1.1课题来源

来源于生产/社会实践

1.2国内外发展现状、趋势以及面临的挑战

美国是将计算机应用于大棚和管理最早,最多的国家之一。美国开发的大棚计算机控制与管理系统可以根据作物的特点和生长所需要的条件,对大棚内的光照,温度,湿度等诸多因素进行自动控制。这种自动控制系统需要种植者输入温室作物生长所需的环境的目标参数,计算编机根据传感器的实际测量值与事先设定的目标进行比较,以决定大棚温湿度的控制过程,按照相应的机构进行加热,降温或者是浇水,通风等。目前,我国绝大部分自主开发的大棚温湿度控制或者进口的国外设备都属于这种系统。

虽然这种自动控制系统实现了自动化,适合规模化生产,提高了劳动生产率,通过改变大棚温室度的设定目标,可以自动的对大棚内温湿度进行调节,但是这种调节对作物的生长来说还是相对滞后的,难以介入作物生长的内在规律。所以在这种自动控制系统和实践的基础上,温湿度自动控制向着适合不同作物生长的智能化控制发展。

国外大棚业正致力于高科技发展,遥测技术,网络技术,控制局域网已逐渐应用于大棚的管理和控制中,近几年各国温度控制技术提出建立大棚行业标准,朝着网络化,大众化,大规模,无人化的方向发展的思路。



1.3研究的目的、意义及主要内容

本系统的设计的硬件主要包括:主要是单片机AT89C51,检测系统,显示电路,A|D电路,报警电路等。利用传感器测量大棚内的温湿度经过信号处理,将传感器测得的数据送至控制系统(STC89C51),与预设的农作物最适合生长的温湿度值的上下限进行对比,并通过显示电路将测得的温湿度进行实时显示。如果不同作物的适合生长的温度不一样,可以通过键盘电路修改预设值。控制系统根据比较的结果对调节系统发出相应的指令,启动相应的调节设备如喷水机,吹风机,加热器,降温等,调节大棚内的温湿度状态。如果测得的数据超过了预设值的上下限,则报警电路会报警。这样就实现了对大棚温湿度的自动控制。

本文主要研究内容如下:

1.进行温湿度控制系统的整体研究与设计。

2.利用键盘设置温湿度的上下限值。

3.利用数字温湿度传感器DHT11测量大棚内的温湿度。

4.利用LCD对温湿度进行实时显示。

5.利用315M无线传输系统进行农田与监控室之间的数据传输。

5.当大棚温湿度值超出设定范围值时,系统可自动报警,并输出驱动信号控制继电器对大棚温湿度进行调节。

2硬件设计

2.1系统总体结构设计

根据题目要求和单片机的工作原理,以AT89c51为控制器,进行主要的信息处理。系统只要由检测电路、显示电路、复位电路、报警电路、键盘电路以及调节电路组成。总体结构框图如图1:



图1 总体结构框图

2.2控制模块的设计

从节约成本和实用的角度考虑,本系统采用51单片机。采用STC89C51作为主控制单片机。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。

单片机STC89C52的简介及工作原理

2.2.1 STC89C51的主要特性

· 与MCS-51产品指令系统兼容

·4K字节可重复擦写闪存储器

·1000次写/擦循环,数据可保存10年

·全静态工作:0HZ-24MHZ

·三级加密程序存储器

· 128字节内部RAM

·32个可编程I/O口线



·2个16位定时/计数器

·6个中断源

·可编程UART串行通信口

·低功耗的空闲和掉电模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

·片内震荡和时钟电路

2.2.2 AT89C51的管脚说明

图2 AT89C51的管脚图

·VCC:供电电压。

   · GND:接地。

   ·P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

    · P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被

外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 

·P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

  · P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表(表1)所示:

表1 P3口的第二功能

端口引脚

第二功能

P3.0

RXD(串行口输入)

P3.1

TXD(串行口输出)

P3.2

(外部中断0)

P3.3

(外部中断1)

P3.4

T0(定时/计数器0外部输入)

P3.5

(定时/计数器1外部输入)

P3.6

(外部数据存储器写选通)

P3.7

(外部数据存储器读选通)

·RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。

·ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡

频率的 l/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

·PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的信号不出现。

·EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。 Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

·XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。

·XTAL2:振荡器反相放大器的输出端。

2.2.3震荡电路

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

2.2.4 复位电路

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。



2.2.5 单片机的CPU

MCS-51单片机的CPU由运算器、控制器和若干个特殊功能寄存器组成,运算器可以加、减以及各种逻辑运算,还可以进行乘除运算。控制器在单片机内部协调各功能部件之间的数据传送、数据运算等操作,并对单片机外部发出若干控制信息。

CPU中使用的特殊功能寄存器ACC、B、PSW、SP和DPTR。ACC就是累加器,在指令中一般写为A。在做乘除运算时,B寄存器用来存放一个操作数,也用来存放运算后的一部分结果;若不作乘除操作时,则B可用做通用寄存器。

程序状态字寄存器PSW相当于一般微处理器中的状态寄存器,其中各位的定义如表2所示。

表2 PSW状态寄存器

D7

D6

D5

D4

D3

D2

D1

D0

CY

AC

F0

RS1

RS0

OV

-

P

其中各位的意义如下:

CY(PSW.7):高位进位标志位。常用“C”表示。

AC(PSW.6):辅助进位标志。

F0(PSW.5):用户标志位。

RS1(PSW.4)、RS0(PSW.3):寄存器组选择控制位。8051共有4个8位工作寄存器,分别命名为R0~R7。用户通过改变RS1和 RS0的状态可以方便地决定R0~R7的实际物理地址。RS1和 RS0与寄存器区的对应关系如表3所示。

表3 RS1、RS2与工作寄存器组的关系

RS1

RS0

寄存器组

RAM中的地址

0

0

1

1

0

1

0

1

0

1

2

3

00H-07H

08H-0FH

10H-17H

18H-1FH

OV(PSW.2):溢出标志位。

-(PSW.1):保留位,无定义。



P(PSW.0):奇偶校验位,在每一个指令周期中,若累加器(A)中的“1”的位个数是奇数个则P=1,偶数个则P=0

单片机的内存空间

从物理地址空间看,89C51有4个存储器地址空间,片内程序存储器、片外程序存储器、片内数据存储器和片外数据存储器,其存储情况如下:

(1)内部程序存储器(ROM)4K字节。

(2)外部程序存储器(EPROM)64K字节。

(3)内部数据存储器(RAM)256字节。

(4)外部数据存储器(EPRAM)64K字节。

表4 C51单片机的特殊功能寄存器地址及符号表示

特殊功能寄存器符号

片内RAM地址

名称

*ACC

E0H

累加器

*B

F0H

乘法寄存器

*PSW

D0H

程序状态字寄存器

SP

81H

堆栈指针

DPL、DPH

82H、83H

数据指针(低8位和高8位)

*IE

A8H

中断允许寄存器

*IP

B8H

中断优先级寄存器

*P0

80H

P0口锁存器

*P1

90H

P1口锁存器

*P2

A0H

P2口锁存器

*P3

B0H

P3口锁存器

PCON

87H

电源控制及波特率选择寄存器

*SCON

98H

串行口控制寄存器

SBUF

99H

串行数据缓冲器

*TCON

88H

定时器控制寄存器

TMOD

89H

定时器方式选择寄存器

TL0、TH0

8AH、8BH

定时器0低8位、高8位

TL1、TH1

8CH、8DH

定时器1低8位、高8位



89C51单片机的片内RAM虽然字节数虽然不很多,但却起着很重要的作用。256个字节被分为两个区域:11~7FH是真正的RAM区,可以读写各种数据;80~FFH是专用寄存器(SFR)区。对于51系列单片机安排里21个特殊功能寄存器。每个寄存器均为8位(一个字节),所以实际上这128个字节并未全部利用。表4所示为89C51单片机特殊功能寄存器地址及符号表。表中带*号的为可位寻址的特殊功能寄存器。

2.2.6 单片机的中断系统

单片机与外部设备交换信息一般采用两种方式,即查询方式和中断方式。中断方式具有CPU效率高,适合于实时控制,将从现场采集到的数据通过中断方式及时传送给CPU,经过处理后就可立即做出响应,实现现场控制。而采用查询方式就很难做到及时采集、实时控制。从面向用户的角度来看,8051单片机的中断系统就是由如下几个殊功能寄存器组成:

·定时器控制寄存器TCON

·中断允许寄存器IE

·中断优先级寄存器IP

·串行口控制器SCON

89C51单片机是一个多中断源系统。有5个中断源,即两个外部中断,两个外部中断、两个定时器/计数器中断和一个串行口中断。

(1)定时器控制寄存器TCON

表5 TCON控制位的分布

D7

D6

D5

D4

D3

D2

D1

D0

控制位

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

·TF1(TCON.7):计时器 1溢出标志,当计时溢出时,由硬件设定为 1,在执行相对的中断服务程序后则自动清 0。

·TR1(TCON.6):计时器1启动控制位,可以由软件来设定或清除。TR1时启动计时器工作,TRl=0 时关闭。

·TF0(TCON.5):计时器 0溢出标志,当计时溢出时,由硬件设定为 1,在执行相对的中断服务程序后则自动清 0。



·TR0(TCON.4):计时器 0启动控制位,可以由软件来设定或清除。TR0=1时,启动计时器工作,TR0=时关闭。

·IE1(TCON.3):外部中断 1工作标志,当外部中断被检查出来时,硬件自动设定此位,在执行中断服务程序后,则清 0。

·IT1 (TCON.2):外部中断 1工作形式选择,IT1=1时,由下降缘产生外部中断,IT1=0时,则为低电位产生中断。

·IE0(TCON.1):外部中断 0 工作标志,当外部中断被检查出来时,硬件自动设定此位,在执行中断服务程序后,则清 0。

·IT0 (TCON.0):外部中断 0工作形式选择,IT1=1时,由下降缘产生外部中断,IT1=0时,则为低电位产生中断。

(2)串行口控制寄存器SCON

表6 SCON控制位的分布

D7

D6

D5

D4

D3

D2

D1

D0

控制位

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

· SM0、SM1为串行口的工作方式选择位

表7 串行口工作方式

SM0

SM1

工作方式

0

0

方式0:移位寄存器方式

0

1

方式1:8位UART,波特率可变

1

0

方式2:9位UART,波特率为fosc/64或fosc/32

1

1

方式3:9位UART,波特率可变

·SM2 (SCON.5):允许方式 2 或方式 3 多机通讯控制位。在方式 2 或方式 3 时,如SM2=1,REN=1,则从机处于只有接收到 RB8=1(地址帧)才激发中断请求标志RI=1,向主机请求中断处理。被确认为寻址的从机复位SM2=0,才能接收 RB8=0 的数据帧;在方式 1 时,如 SM2=l,则只有在接收到有效停止位时才置位中断请求标志位RI=1;在方式0时,SM2应为 0。

·REN(SCON.4):REN,允许/禁止串行接收控制位。由软件置位REN=1为允许串行接收状态,可启动串行接收器RXD,开始接收信息。软件复位REN=0,则禁止接收。



·TB8(SCON.3):在方式2或方式3,它为要发送的第 9位数据,按需要由软件置位。

(3)中断允许寄存器IE

表8 IE控制字

D7

D6

D5

D4

D3

D2

D1

D0

控制位

EA

-

-

ES

ET1

EX1

ET0

EX0

·EA(IE.7):EA=0时,所有中断停用(禁止中断)。EA=1时,各中断的产生由个别的允许位决定。

·-(IE.6、IE`5):保留位,无定义。

·ES(IE.4):允许串行端口的中断(ES=1允许,ES=0禁止)。

·ET1(IE.3):允许计时器 1中断(ET1=1允许,ET1=0 禁止)。

·EX1(IE.2):允许外部中断 INT1的中断(EX1=1允许,EX1=0 禁止)。

·ET0(IE.1):允许计时器 0中断(ET0=1允许,ET0=0 禁止)。

·EX0(IE.0):允许外部中断 INT0的中断(EX0=1允许,EX0=0 禁止)。

(4)中断优先级寄存器IP

表9 IP控制字

D7

D6

D5

D4

D3

D2

D1

D0

控制位

-

-

-

PS

PT1

PX1

PT0

PX0

·-(IP.7):保留位,无定义。

·-(IP.6):保留位,无定义。

·-(IP.5):保留位,无定义。

·PS(IP.4):设定串行端口的中断优先次序。

·PT1(IP.3):设定时/计时器 1的优先次序。

·PX1(IP.2):设定外部中断 INT1的优先次序。

·PT0(IP.1):设定计时器 0的优先次序。

·PX0(IP.0):设定外部中断 INT0的优先次序。

上述每位IP.*=1时,则定义为高优先级中断,IP.*=0 时,则定义为低优先级中断。如果同时有两个或两个以上优先级相同的中断请求时,则由内部按查询优

先顺序来。

(5)方式控制寄存器TMOD的控制字格式如下:

表10 TMODE控制字

D7

D6

D5

D4

D3

D2

D1

D0

控制位

GATE

C/T

M1

M0

GATE

C/T

M1

M0

低4位为T0的控制字,高4位为T1的控制字。GATE为门控位,对定时器/计数器的启动起辅助控制作用。GATE=1时,定时器/计数器的计数受外部引脚输入电平的控制,此时只有P3口的P3.2(或P3.3)引脚即INT0(或INT1)为1才启动计数;GATE=0时,定时器/计数器的运行不受外部输入引脚的控制。

C/T为方式选择位。C/T=0为定时器方式,采用单片机内部振荡脉冲的12分频信号人作为时钟计数脉冲,若采用12MHz的振荡器,则定时器的计数频率为1MHz,从定时器的计数值便可得定时时间。

M1、M0二位的状态确定定时器的工作方式,详见下表:

表11 定时器/计数器的方式选择

M1

M0

工作方式

0

0

方式0:为13位定时器/计数器

0

1

方式1:为16位定时器/计数器

1

0

方式2:为自动重装常数的8位定时器/计数器

1

1

方式3:仅适用于T0,分成两个8位定时器/计数器

2.2.7 单片机最小系统

要使用单片机工作首先要知道单片机的最小系统。单片机最小系统包括晶体振荡电路、复位开关和电源部分,单片机最小系统如图3



图3 单片机的最小系统

(1) 振荡电路

单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。如图3所示,外部时钟振荡电路由晶体振荡器和电容C1、C2构成并联谐振电路,连接在XTAL1、XTAL2脚两端。对外部C1、C2的取值虽然没有严格的要求,但电容的大小会影响到振荡器频率的高低、振荡器的稳定性、起振的快速性。C1、C2通常取值C1=C2=30—30PF;8051的晶振最高振荡频率为12M,AT89C51的外部晶振最高频率可到24M。典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的us级时歇,方便定时操作)。

(2)电源电路



这当然是必不可少的了。单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。

(3) 复位电路

由电容串联电阻构成,由图并结合“电容电压不能突变”的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。一般教科书推荐C 取10u,R取10K。当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期 的高电平。至于如何具体定量计算,可以参考电路分析相关书籍。

(4) EA

访问程序存储器控制信号,当EA为低电平时,对ROM的读操作限制在外部程序存储器;当EA为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。高电平就是选用内部ROM,低电平就是不选用内部ROM,8031内部根本没有ROM,需接外接ROM,所以要低电平。

2.3 传感器设计

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



2.3.1 DHT11的简介

·相对湿度和温度测量

·全部校准,数字输出

·卓越的长期稳定性

·无需外加器件

·超长的信号传输距离

·超低能耗

·4引脚安装

·完全互换 图4 DHT11

2.3.2 引脚说明

建议接线长度短于20米时,用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。

引脚1:VDD供电3-5.5V

引脚2:DATA串行数据,单总线

引脚3:NC空脚,悬空

引脚4:GND接地,电源负极

图5 典型应用电路



2.3.3 电源引脚

DHT11的供电电压为3-5.5V。传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。

2.3.4 串行接口(单线双向)

1.单总线传送数据位定义

DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数部分用于以后扩展,现读出为零.操作流程如下:

一次完整的数据传输为40bit,高位先出。

数据格式:8bit湿度整数数据+8bit湿度小数数据

+8bi温度整数数据+8bit温度小数数据

+8bit校验和

数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据+8bi温度整数数据+8bit温度小数数据”所得结果的末8位。

2.数据时序图

用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.采集数据后转换到低速模式。



图6 数据时序图

3.外设读取

(1)DHT11上电后,测试环境温湿度数据,并记录数据,同时DHT11的DATA数据线由上拉电阻拉高一直保持高电平;此时DHT11的DATA引脚处于输入状态,时刻检测外部信号。

(2)微处理器的I/O设置为输出同时输出低电平,且低电平保持时间不能小于18ms,然后微处理器的I/O设置位输入状态,由于上拉电阻,微处理器的I/O即DHT11的DATA数据线也随之变高,等待DHT11作出回答信号,

图7 主机发送起始信号

(3)DHT11的DATA引脚检测到外部信号有低电平时,等待外部信号低电平结束,延迟后DHT11的DATA 引脚处于输出状态,输出80us的低电平作为应答信号,紧接着输出80us的高电平通知外设准备接受数据,微处理器的I/O此时处于输入状态,检测到I/O有低电平(DHT11回应信号)后 ,等待80us 的高电平后的数据接收。

图8 发送信号

(4)由DHT11的DATA引脚输出40位数据,微处理器根据I/O电平的变化接收40位数据,位数据“0”的格式为:50us的低电平和26-28us的高电平;位数

“1”的格式为:50us的低电平加70us的高电平。

图9 位数据“0”的格式

图10 位数据“1”的格式

2.4 无线模块的设计

进入21世纪以来,无线通讯技术有了突飞猛进的发展,包括各种无线模块的设计制作,目前应用于无线数据传输的技术非常多,如红外技术,蓝牙技术,RF技术,GPRS,CDMA等。本系统采用微功率短距离无线通讯技术,采用APC220-43。

APC220-43模块是高度集成微功率半双工无线数据传输模块,其嵌入了高速单片机及高性能射频芯片,最大可以纠24bits连续突发错误。APC220模块可以提供多个频道的选择,可在线修改串口速度,射频速率,发射功率等各种工作参数。

2.4.1 APC220的性能

·1000米传感距离(2400bps)



·工作频率418-455MHZ( 1KHZ步进)

·灵活的软件编程选项设置

·内置看门狗,保证长期可靠运行

2.4.2 无线传输模块APC220的接口说明

APC220-43模块内设256B的缓冲区,在缓冲区为空的情况下,用户可以不用考虑空中波特率与串口波特率的大小关系1次传输256B的数据,当空中波特率大于设置的串口波特率时,可1次传输无限长度的数据。APC220模块有UART和USB两种接口类型可供选择,支持7种串口波特率设置。最重要的是它采用透明的数据传输模式,写发送模块什么,接收模块就可以读到什么。收发模块采用默认的工作参数就可以正常的进行数据的收发。

APC220-43模块共有9个接脚,具体定义如下表:

APC220引脚定义

引脚

定义

说明

1

GND

地0V

2

VCC

3.3V-5.5V

3

EN

电源是能端,>=1.6v或者悬空使能,<=0.5v休眠

4

RXD

URAT输入口,TTL电平

5

TXD

UART输出口,TTL电平

6

AUX

UART口的收发指示输出,低接收,高输出

7

SET

参数设置,低有效

8

NC

空脚

9

NC

空脚

表12 APC220无线模块引脚定义



图6 APC220与单片机的连接

2.4.3 APC220无线模块的工作参数的设置

通过SET脚进行在线修改。在线软件设置是通过模块的UART/TTL口完成的(4,5PIN)和SET脚完成的,时序图见图7.当EN脚置高50ms后,模块即可正常工作(T1)。设置时首先将SET脚置低,此时无论UART口是何状态,模块自动将UART口转变为9600bps,无校验模式,约1ms后模块进入设置状态(T2).用户可以通过向RXD口发送设置命令,模块校验后,在200ms内TXD脚将开始返回参数信息(T3),用户在确定设置信息无误后置高SET脚,模块在10ms内切换至用户设置的参数模式运行(T4)。需注意的是当模块进入设置状态(SET脚为低),用户只能发送一次设置命令 ,如发送设置命令出错,或已经完成设置,若需再次设置必须将SET脚置高,后重新进入设置状态。



图7 APC220在线设置工作参数时序图

APC220-43设置时采用的编码为ASCII码,采用的波特率为9600bps,无校验模式,设置命令有读写各一个,用大写字母表示,参数之间用空格间隔开,回车表示换行结束,格式如下:

1)读命令设置:RD PARA-频率-空中速率-发射功率-串口速率-串口校验

2)写命令设置:WR PARA-频率-空中速率-发射功率-串口速率-串口校验

表13 APC220设置参数表示方法

参数表示方法

参数

字节数

说明

频率

6

单位KHZ,如434MHZ表示为434000

空中速率

6

2400,4800,9600,19200bps用1,2,3,4表示

发射功率

1

0至9,设置0为-1dBm,9为13dBm(20mW)

串口速率

1

1200,2400,4800,9600,19200,38400,57600bps用0,1,2,3,4,5,6表示

串口校验

1

串口校验0为无效校验,1为偶校验,2为奇校验



2.4.4 APC220无线模块的技术指示

表14 APC220无线模块的技术指示

APC220-43技术指示

工作方式

418MHZ to 455MHZ(1MHZ步进)

调制方式

GFSK

频率间隔

200KHZ

发射功率

20mw(10级可调)

接收灵敏度

-118dBm@1200bps

空中传输速率

2400-9600bps

接口速率

1200-57600bps

接口校验方式

8E1/8N1/801

接口缓冲空间

256bytes

工作湿度

10%-90%

工作温度

-30 -85

电源

3.3- 5.5V(50mv纹波)

发射电流

<=35mV@20mW

接收电源

<=28mA

休眠电源

<=5uA

传输距离

1200米传输距离(1200bps开阔的可视距离)

尺寸

37.5mm×18.3mm×7.0mm

2.5键盘和显示模块的设计

2.5.1显示模块设计

考虑到整个应用系统的工作环境特别是对亮度的要求等因素,我们选择了

LCD1602液晶显示器进行温湿度数据的显示。液晶显示器LCD体积小,质量轻,功耗极低。

图8 显示电路原理图

2.5.2键盘模块设计

键盘是数据输入、参数设定和手动控制的输入设备,它的作用是进行十六进制字符的输入。本文采用4×4式键盘阵列通过8各I/O口线识别16各按键。该按键需要两组信号线,一组作为输出信号线(称为行线),另一组作为输入信号线(称为列线)。



图9 键盘接线电路

图10 键盘电路

按键识别有两种方法:一是行扫描法,另一种是线反转法。本系统采用行扫描法,CPU通过输出锁存器在某一行线上送出0,通过输入缓冲器检查列线是否有0,进行按键识别。若有按键压下,则转入逐行扫描,同时检测列线状态。



2.6执行模块的设计

执行模块包括调节设备如喷水机,吹风机,加热器,降温等,调节大棚内的温湿度状态,还有报警装置。

2.6.1调节模块

考虑到单片机的引脚的驱动能力有限,在本系统中采用了单片机的I/O口连接三极管的基集控制三极管的通断,用三极管的集电极电流Ic来驱动控制5V继电器的吸合,从而控制12V电磁阀的开关,实现对植物滴灌的控制,以调节湿度。电路中,因为单片机输出口的电流很小,无法驱动继电器,所以在继电器输入端应该接一个PNP三极管,用来放大电流,驱动继电器工作。而为了保护此三极管的正常工作,还应在三极管的输出端(集电极)加上一个二极管用来保护三极管不被过流击穿。在protuse仿真中找不到电磁阀,用电灯泡代替表示电磁阀。下图为单片机的I/O口通过继电器驱动电磁阀喷水:

图11 单片机通过继电器驱动电磁阀



当湿度过高时,单片机I/O口通过继电器驱动风扇的电动机使风扇运转来降低湿度。

2.6.2 报警模块

当所测温度或湿度超过设定值的上下限,就会报警。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

图12 电磁式蜂鸣器

蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机IO引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。S51增强型单片机实验板通过一个三极管来放大驱动蜂鸣器,原理图见下面图12:



图13 单片机驱动蜂鸣器

如图所示,蜂鸣器的正极接到VCC(+5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R1后由单片机的I/O口控制,当该I/O输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当I/O口输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。因此,我们可以通过程序控制I/O口的电平来使蜂鸣器发出声音和关闭。程序中改变单片机I/O口输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变单片机I/O口输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。



3.软件设计

与硬件设计相对应,软件设计也采用模块化程序设计的方式,包括主程序模块,初始化参数设置模块,无线通讯发送模块,无线通讯接收模块,数据采集程序模块,显示模块。

3.1 初始化子程序

初始化程序主要完成以下功能:当系统启动时确定电磁阀关闭、程序设置温湿度的上下限值的初始值、用于定时器T1、TO的初始化、串口中断的初始化。

/*------------------------------------------------

定时器0初始化

------------------------------------------------*/

void TIM0init(void)//定时器0初始化

{

TMOD=0x02;//定时器0工作方式2,TH0是重装值,TL0是初值

TH0=0x00; //重载值

TL0=0x00; //初始化值

ET0=1; //开中断

TR0=1;

}

/*------------------------------------------------

外部中断0初始化

------------------------------------------------*/

void EX0init(void)

{

IT0 = 1; //指定外部中断0下降沿触发,INT0 (P3.2)

EX0 = 1; //使能外部中断

EA = 1; //开总中断

}



3.2 数据采集模块

软件流程

准备开始标志:

当低电平低于18ms后,单片机将输出端口改为输入,开始读取DHT11的数据。然后将电平拉高,等待DHT11响应,DHT11将电平信号拉低以示响应单片机信号,而后将电平拉高准备发送数据信息。

读取数据过程:

DHT11先发送12—14us的低电平信号,然后紧跟高电平,如果在116—118us左右,将自动识别为1,如果在26—28us左右将识别为0。这样循环40次,共40位二进制数,每八位为一组,其中包括八位湿度整数位、八位湿度小数位、八位温度整数位,八位温度小数位、八位较检位。由于设计的需要,现只读取八位湿度整数值,将读取的湿度值传给单片机。

程序如下:

#include"DHT11.h"

unsigned char wendu,shidu;

void delay_us() // 延时子程序

{

unsigned char i;

i--;

i--;

i--;

i--;

i--;

i--;

}

void delayms(unsigned int x) // 根据给定值进行延时子程序



{

unsigned char n;

while((x--)!=0)

{

for(n=0;n<115;n++){;}

}

}

char receive()

{

unsigned int i;

unsigned char temp,respond;

unsigned char com_data=0;

for(i=0;i<=7;i++)

{

respond=2;

while((!TRH)&&respond++);

delay_us();

delay_us();

delay_us();

if(TRH)



{

temp=1;

respond=2;

while((TRH)&&respond++);

}

else

temp=0;

com_data<<=1;

com_data|=temp;

}

return(com_data);

}

//湿度读取子程序

//温度高8位== TL_data

//温度低8位== TH_data

//湿度高8位== RH_data

//湿度低8位== RH_data

//校验 8位 == CK_data

//调用的程序有 delay();, Delay_5us();,RECEIVE();

void read()

{

unsigned int respond;

unsigned int RH_temp,RL_temp,TH_temp,TL_temp,CK_temp,untemp,

RH_data,RL_data,TH_data,TL_data,CK_data;

//主机拉低18ms

TRH=0;

delayms(18);

TRH=1;



//DATA总线由上拉电阻拉高 主机延时20us

delay_us();

delay_us();

delay_us();

delay_us();

TRH=1;

//判断DHT11是否有低电平响应信号 如不响应则跳出,响应则向下运行

if(!TRH)

{

respond=2;

//判断DHT11发出 80us 的低电平响应信号是否结束

while((!TRH)&&respond++);

respond=2;

//判断从机是否发出 80us 的高电平,如发出则进入数据接收状态

while((TRH)&&respond++);

//数据接收

RH_temp=receive();

RL_temp=receive();

TH_temp=receive();

TL_temp=receive();

CK_temp=receive();

TRH=1;

untemp=(RH_temp+RL_temp+TH_temp+TL_temp);

//数据校验

if(CK_temp==untemp)

{

RH_data=RH_temp;

RL_data=RL_temp;

TH_data=TH_temp;



TL_data=TL_temp;

CK_data=CK_temp;

}

}

//x是温度值 y是湿度值

wendu=(unsigned char) (TH_data );

shidu=(unsigned char) (RH_data );

}

3.3 显示模块

初始化LCD1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示,延时等待,将采集到的温湿度数据进行转换,十六进制转换成十进制,输入相应的地址数据,延时等待,输入需要显示的数据。

/*------------------------------------------------

主函数

------------------------------------------------*/

void main(void)

{

EX0init(); //初始化外部中断

TIM0init();//初始化定时器

LCD_Init(); //初始化液晶

delayms(20); //延时有助于稳定

LCD_Clear(); //清屏

LCD_Write_String(5,0,"RECEIVE");

LCD_Write_Char(9,1,0xdf);//右上角点

LCD_Write_Char(10,1,'C');//

LCD_Write_Char(15,1,'%');//用于显示温度湿度单位

while(1)//主循环

{



if(irok) //如果接收好了进行数据处理

{

Ircordpro();

irok=0;

}

if(irpro_ok) //如果处理好后进行工作处理

{

LCD_Write_Char(1,1,display[adres1]); //写地址位

LCD_Write_Char(2,1,display[adres2]);

LCD_Write_Char(7,1,display[dat1]); //写数据1

LCD_Write_Char(8,1,display[dat2]);

LCD_Write_Char(13,1,display[dat3]); //写数据2

LCD_Write_Char(14,1,display[dat4]);

irpro_ok=0; //处理完成标志

delay500ms(); delay500ms();

}

}

}

终端液晶显示程序

#include "1602.h"

#include "delay.h"

sbit RS = P2^4; //定义端口

sbit RW = P2^5;

sbit EN = P2^6;

#define RS_CLR RS=0

#define RS_SET RS=1

#define RW_CLR RW=0

#define RW_SET RW=1

#define EN_CLR EN=0

#define EN_SET EN=1

#define DataPort P0



/*------------------------------------------------

判忙函数

------------------------------------------------*/

bit LCD_Check_Busy(void)

{

DataPort= 0xFF;

RS_CLR;

RW_SET;

EN_CLR;

_nop_();

EN_SET;

return (bit)(DataPort & 0x80);

}

/*------------------------------------------------

写入命令函数

------------------------------------------------*/

void LCD_Write_Com(unsigned char com)

{

while(LCD_Check_Busy()); //忙则等待

RS_CLR;

RW_CLR;

EN_SET;

DataPort= com;

_nop_();

EN_CLR;

}

/*------------------------------------------------

写入数据函数

------------------------------------------------*/

void LCD_Write_Data(unsigned char Data)

{

while(LCD_Check_Busy()); //忙则等待

RS_SET;

RW_CLR;

EN_SET;

DataPort= Data;

_nop_();

EN_CLR;

}

/*------------------------------------------------

清屏函数



------------------------------------------------*/

void LCD_Clear(void)

{

LCD_Write_Com(0x01);

delayms(5);

}

/*------------------------------------------------

写入字符串函数

------------------------------------------------*/

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)

{

if (y == 0)

{

LCD_Write_Com(0x80 + x); //表示第一行

}

else

{

LCD_Write_Com(0xC0 + x); //表示第二行

}

while (*s)

{

LCD_Write_Data( *s);

s ++;

}

}

/*------------------------------------------------

写入字符函数

------------------------------------------------*/

void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)

{

if (y == 0)

{

LCD_Write_Com(0x80 + x);

}

else

{

LCD_Write_Com(0xC0 + x);

}

LCD_Write_Data( Data);

}

/*------------------------------------------------

初始化函数



------------------------------------------------*/

void LCD_Init(void)

{

LCD_Write_Com(0x38); /*显示模式设置*/

delayms(5);

LCD_Write_Com(0x38);

delayms(5);

LCD_Write_Com(0x38);

delayms(5);

LCD_Write_Com(0x38);

LCD_Write_Com(0x08); /*显示关闭*/

LCD_Write_Com(0x01); /*显示清屏*/

LCD_Write_Com(0x06); /*显示光标移动设置*/

delayms(5);

LCD_Write_Com(0x0C); /*显示开及光标设置*/

}

3.4 无线模块

3.4.1 无线数据接收子程序

/*****************************************************

发送8位地址和温度湿度

地址位定为0x01

******************************************************/

//#include

#include

sbit send0=P1^0;

sbit send1=P1^1;//接LED用于显示P1.0,P1.1的电位

unsigned char temp,n;

unsigned char Adress=0x01;//定义地址

unsigned char check=0;



void Send(unsigned char x)// 发送数据函数

{

unsigned char i;

temp=0x80; //temp用于取位

for(i=0;i<8;i++)

{

if(temp&x)//如果对应位为1,则发送011

{

send0=0;send1=send0;

delayms(1);

send0=1;send1=send0;

delayms(2);

check++; // 校验位生成

}

else //否则发送01

{

send0=0;send1=send0;

delayms(1);

send0=1;send1=send0;

delayms(1);

}

temp>>=1; //将对应位右移,取下一位

}

}



void Send_check(unsigned char x)// 发送数据函数

{

unsigned char i;

temp=0x80; //temp用于取位

for(i=0;i<8;i++)

{

if(temp&x)//如果对应位为1,则发送011

{

send0=0;send1=send0;

delayms(1);

send0=1;send1=send0;

delayms(2);

}

else //否则发送01

{

send0=0;send1=send0;

delayms(1);

send0=1;send1=send0;

delayms(1);

}

temp>>=1; //将对应位右移,取下一位

}

}

void main()



{

while(1)

{

read(); //读取温度湿度函数

n=2;

while(n)

{

//头码发送

check=0; //校验码数据

send0=1;

send1=1;

delayms(20);//间隔

Send(Adress);//发送地址

Send(wendu);//发送数据1

Send(shidu);//发送数据2

/**********发送校验位************校验码值为 地址 温度 湿度 所有1的个数*/

Send_check(check); //发送校验位一共发送了1 8 8 8 8=33位

/***************************************************************/

send0=0;

send1=0;



delayms(20);

--n; //循环2次

}

delayms(1000);// delayms(4000); 2S钟发送一次

}

}

3.4.2 无线数据接收处理模块

/*-----------------------------------------------

接收1个头码 8位地址码 2个8位数据 25位

液晶分别显示 地址数,数据1,数据2

------------------------------------------------*/

//#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

#include<1602.h>

sbit IR=P3^2; //无线接口标志

/*------------------------------------------------

全局变量声明

------------------------------------------------*/

unsigned char irtime;//红外用全局变量

bit irpro_ok,irok;

unsigned char adres1,adres2,dat1,dat2,dat3,dat4;//显示变量,地

址,数据1,数据2 的个位和十位

unsigned char irdata[25];//存储变量

Unsigned char display[10]={'0','1','2','3','4','5','6','7','8','9'};//显示字符数组

unsigned char recv_data[3];



/*------------------------------------------------

函数声明

------------------------------------------------*/

//void Ir_work(void);

void Ircordpro(void);

/*------------------------------------------------

定时器0中断处理

------------------------------------------------*/

void tim0_isr (void) interrupt 1 using 1

{

irtime++; //用于计数2个下降沿之间的时间

}

/*------------------------------------------------

外部中断0中断处理

------------------------------------------------*/

void EX0_ISR (void) interrupt 0 //外部中断0服务函数

{

static unsigned char i; //接收无线信号处理

static bit startflag; //是否开始处理标志位

if(startflag)

{

if(irtime<160&&irtime>=140)//引导码 TC9012的头码,2*19ms/0.256ms

i=0;

irdata[i]=irtime;//存储每个电平的持续时间,用于以后判断是0还是1

irtime=0;

i++;

if(i==25) //接收完头码和24位数据,数据自加到25

{

irok=1;

i=0;

}

}

else



{

irtime=0;

startflag=1;

}

}

/*------------------------------------------------

无线码值处理

------------------------------------------------*/

void Ircordpro(void)//无线码值处理函数

{

unsigned char i, j, k ;

unsigned char cord,value;

if(irdata[0]>140&&irdata[0]<160)

{

k=1;

for(i=0;i<=2;i++)

{

for(j=1;j<=8;j++) //处理1个字节8位

{

cord=irdata[k];

if(cord>10) //大于某值为1,这个和晶振有绝对关系,这里使用12M计算,此值可以有一定误差 3ms-/0.256

value|=0x01;

if(j<8)

{

value<<=1;

}

k++;

}

recv_data[i]=value;

value=0;

}

adres1=recv_data[0]/10;//地址个位十位

adres2=recv_data[0]%10;

dat1=recv_data[1]/10;//数据1个位十位

dat2=recv_data[1]%10;

dat3=recv_data[2]/10;//数据2个位十位

dat4=recv_data[2]%10;



irpro_ok=1;//处理完毕标志位置1

}

}

4.结束语

到此为止,我的《温室大棚温湿度控制》已经完成了。在这几个月的时间里,先后完成了资料的收集、设计方案的拟订、画图等多方面的工作。首先,通过这次应用系统设计,在很大程度上提高了自己的独立思考能力和单片机的专业知识,其次,我也深刻了解写一篇应用系统的步骤和格式,有过这样的一次训练,相信在接下来的日子我们都会了,而且会做得更好。

我所写的系统主要根据目前温室大棚技术的发展趋势和国内实际的应用特点和要求,采用了自动化的结构形式,实现对土壤湿度的自动检测和控制。

系统以单片机AT89C51为核心部件,单片机系统完成对温湿度信号的采集、处理、显示等功能;用Protuse软件绘制电路原理图。该系统的主要特点是:

1)适用性强,用户只需对界面参数进行设置并启动系统正常运行便可实现对湿度大棚温湿度的实时监控。

2)可对作物的生产环境进行适时、适当的控制,不仅有利于作物的生长发育,而且避免了了资源的浪费,起到了提高作物产量的作用。

3)实现了无线信号传输。

由于水平有限,我的设计还存在许多不足之处,有许多地方需要完善,还望各位老师多加批评指点。



参考文献

[1].高职富.温室环境控制技术的现状及发展前景.[J].中国市场,2007年第35期:106,107

[2].吉红.自动控制在国外设施农业中的应用.[J].农业环境与发展,2007(5):52-54

[3].杨志强,周士冲,陈磊.我国设施农业的发展分析.[J].农业机械化,2006年第12期:42-43

[4].王世明,王冰.现代农业温室系统.[J].山西农业科学,2008,36(9):69-73

[5].毕玉革,麻硕士.我国现代温室环境控制硬件系统的应用现状及发展.[J]. 农业化研究,2009年第3期:226-229

[6].范薇薇.基于无线传感器网络的温室控制系统研究.[D].中国知网,2010年

[7].王中心.温室土壤温湿度无线信息采集与监控系统的设计与实现.中国知网,2010年

[8]李文仲、段朝玉.短距离无线数据通信入门与实战[M],北京航空航天大学出版社,2006

[9] 张金波, 张学武. 制约数据远距离传输的因素及解决方法 [ J] . 微型机与应用, 2000, 21( 10) : 77- 82.

[10]徐爱钧.单片机原理实用教程.电子工业出版社,2011,3

[11]朱定华.单片机原理与接口技术.电子工业出版社,2001,4

[12]刘瑞新.单片机原理及应用教程.机械工业出版社,2003,7

[13] 李朝青. PC 机及单片机数据通信技术 [M ] . 北京: 北京航空航天大学出版社, 2000

[14]刘文涛. 单片机应用开发实例. 清华大学出版社 2005.

[15]韩太林. 单片机原理及应用. 电子工业出版社. 2005.

[16]李迎霞,杜尚丰.中国温室环境智能控制算法研究进展.[N].农业工程学报,2004,20 (2):267-272

[17] LEWIS R. Modeling control system using IEC 61499[M]. Institution of Electrical Engineers,2001.

[18] CHRISTENSEN J H. Basic concept of IEC 61499 [ C ] .Fachtagung Verteilte Automat isierung, Magdeburg DE,2000: 22- 23.

[19] IEC 65/ 240/ CD, Function blocks for industrial – process measurement and control systems - Part 1: Architecture[ S] . 1999.

[20] IEC 61499 - 2 ( and Committee Draft to be published ) ,Function blocks for industrial- process measurement and control systems - Part 2: Engineering Task Support[ S].1999

[21]Deng.X.P,Shan.L,Zhang.H.P,Turner.N.C. Improving agricultural water use efficiency in arid semiarid areas of china. Agric. Water Manage, 2006. 80.80(1-3):23-40

[22]T.Boulard,B.Draoui,F.Neirac.Calibration and validation of a greenhouse climate control model.Acta Horticulturae.1996,(406):46-61

[23]Willing A.Wireless sensor net work concept challenges and approaches.Elektroteelnik & Informationsteehnik ,2006,123(6):224-231



[24] Dan Suciu, Gottfried Vosen,The World Wide Web and databases,Springer ,2001.1 [24] Samsung Electronies. S3C44BOX Risc microprocessor data sheet .2002 .

[25] Kim,J.,A Web-Based Speaking Test Development Using Visual Basic 6.0. Multimedia Assisted Language Learning, 2006. 9(2): p. 77-98.

[26]AT89C51 DATA SHEEP Philips Semiconductors 1999.dec

[27] AT89S52DATASHEET.,Atmel Corporation 2005.

[28] Philips Semiconductors. Application Notes and Development Tools for 80C51 Microcontrollers.2003

[29]Yang. Y., Yi. J., Woo, Y.Y., and Kim. B.: ‘Optimum design for linearityand efficiency of microwave Doherty amplifier using a new loadmatching technique’, Microw. J., 2001, 44, (12), pp. 20–36

[30]Somma, J., et al., Rapid Development and Validation of a Three-Compartment Non-Linear with Covariate PK Simulator Using Visual Basic 6.0 and the Simulink Component of MatLab. Anesthesiology, 2003. 99(A510): p. A510



致谢

本文是在唐桃波老师的精心指导和大力支持下完成的。由于我知识的不全面以及经验的不足,在做毕业设计的过程中遇到了很多困难。但是每次唐桃波老师都给我耐心地指导我,给我解答不懂的疑问,并提供一些比较详细的资料,从中可以学到不少知识,使我的毕业设计达到了事半功倍的效果。唐老师广博的知识,敏捷的思维和对研究动态敏锐的观察力使我受益匪浅,他对工作的敬业和对学术的一丝不苟的精神,是我一生学习的榜样。他给与我很大的帮助,使我得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。

另外我还要感谢在一起愉快度过大学生活的各位同学,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。

同时,感谢我的父母、我的亲人,感谢他们为我所作的一切,是他们的无私奉献和鼓励使我大学能够圆满毕业。在以后日子里,我会继续努力。

温室大棚温湿度控制系统

相关推荐