无线传感器网络课程设计
目 录
摘 要 ........................................................................................................................................... I
第一章 绪论 ............................................................................................................................ 1
1.1选题背景 ............................................................................................................................. 1
1.2选题的现实意义 ................................................................................................................. 1
第二章 系统硬件电路的设计 ................................................................................................ 2
2.1系统硬件构成及其测控原理 ............................................................................................. 2
2.1.1系统硬件电路构成系统整体框图 ................................................................................. 2
2.1.2系统整体电路图 ............................................................................................................. 2
2.1.3系统工作原理 ................................................................................................................. 3
2.2 显示模块的选择 ................................................................................................................ 3
2.2.1DS18B20简介 ................................................................................................................... 3
2.2.2 DS18B20的性能特点 ..................................................................................................... 3
2.2.3 DS18B20的管脚排列 ..................................................................................................... 3
2.2.4 DS18B20的内部结构 ..................................................................................................... 4
2.3 温度调节模块设计 ............................................................................................................. 8
2.4 湿度报警模块设计 ........................................................................................................... 10
第三章 温室大棚控制系统软件设计 .................................................................................... 12
3.1 Keil C 软件概述 ................................................................................................................ 12
3.2 温室大棚控制系统程序设计 ........................................................................................... 14
3.2.1整体系统框图 ............................................................................................................... 14
3.2.2 LCD1602显示模块程序设计 ....................................................................................... 15
3.2.3 PWM程序设计 ............................................................................................................... 16
第四章 总结与展望 ................................................................................................................ 17 参考文献 ..................................................................................................................................... I 附 录 ....................................................................................................................................... II
谢 辞 ............................................... VI
无线传感器网络课程设计
专 业:班 级:姓 名:学 号:指导教师:
信息工程学院 2011年11月10日
摘 要
本课题运用STC89C52单片机、DS-18B20 数字温度传感器、继电器和M4QA045
电动机、ULN-2003A集成芯片、湿敏电阻,以及四位八段数码管等元器件,设计了温湿度报警电路、M4QA045电机驱动电路、电热器驱动电路,实现了温室大棚中温度和湿度的控制和报警系统,解决了温室大棚人工控制测试的温度及湿度误差大,且费时费力、效率低等问题。该系统运行可靠,成本低。系统通过对温室内的温度与湿度参量的采集,并根据获得参数实现对温度和湿度的自动调节,达到了温室大棚自动控制的目的。促进了农作物的生长,从而提高温室大棚的产量,带来很好的经济效益和社会效益。
关键词: STC89C52单片机、DS-18B20 数字温度传感器、ULN-2003A集成芯片、
温室、自动控制、自动检测
第一章 绪论
1.1选题背景
随着大棚技术的普及,温室大棚数量不断增多,温室大棚的温湿度控制便成为一个十分重要的课题。传统的温湿度控制是在温室大棚内部悬挂温度计和湿度计,通过读取温度值和湿度值了解实际温湿度,然后根据现有温湿度与额定温湿度进行比较,看温湿度是否过高或过低,然后进行相应的通风或者洒水。今天,我们的生活环境和工作环境有越来越多称之为单片机的小电脑在为我们服务。单片机在工业控制、尖端武器、通信设备、信息处理、家用电器等各测控领域的应用中独占鳌头。时下,家用电器和办公设备的智能化、遥控化、模糊控制化已成为世界潮流,而这些高性能无一不是靠单片机来实现的。采用单片机来对温湿度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温湿度的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。因此,单片机对温湿度的控制问题是一个工农业生产中经常会遇到的问题。因此,本课题围绕基于单片机的温室大棚控制系统展开了应用研究工作。
1.2选题的现实意义
随着单片机和传感技术的迅速发展,自动检测领域发生了巨大变化,温室环境自动监测控制方面的研究有了明显的进展,并且必将以其优异的性能价格比,逐步取代传统的温湿度控制措施.但是,目前应用于温室大棚的温湿度检测系统大多采用模拟温度传感器、多路模拟开关、A/D转换器及单片机等组成的传输系统。这种温湿度度采集系统需要在温室大棚内布置大量的测温电缆,才能把现场传感器的信号送到采集卡上,安装和拆卸繁杂,成本也高。同时线路上传送的是模拟信号,易受干扰和损耗,测量误差也比较大。为了克服这些缺点,本文参考了一种基于单片机并采用数字化单总线技术的温度测控系统应用于温室大棚的的设计方案闭,根据实用者提出的问题进行了改进,提出了一种新的设计方案,在单总线上传输数字信号。
第二章 系统硬件电路的设计
2.1系统硬件构成及其测控原理
2.1.1系统硬件电路构成系统整体框图
图2-1 系统整体框图
2.1.2系统整体电路图
图2-2 系统整体电路图
2.1.3系统工作原理
本系统由如图2-1、图2-2所示,DHT11温湿度传感器采集数据,STC89C52单片机进行数据处理,LCD1602显示模块显示温湿度。由PWM控制温度调节模块进行温度调节,当温度小于18℃时,M4QA045电机停止运转,当温室大于28℃时,M4QA045电机全速运转,当温度处于18℃和28℃之间时,通过PWM控制M4QA045电机转速。由STC89C52单片机输出高低电平控制湿度报警模块,当湿度大于65%RH或者小于45%RH时,STC89C52单片机输出高电平,湿度报警模块报警,当湿度处于45%RH和65%RH之间时,STC89C52单片机输出低电平,湿度报警模块关闭。
2.2 显示模块的选择
2.2.1DS18B20简介
DS18B20数字温度传感器采用DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,使用方便,封装形式多样等优点,适用于各种狭小空间设备数字测温和控制领域。
2.2.2 DS18B20的性能特点
.1、适应电压范围更宽,电压范围:3.0~5.5V,在寄生电源方式下可由数 据线供电
.2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯
3、 DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温
4、DS18B20在使用中不需要任何外围元件,全部 传感元件及转换电路集成在形如一只三极管的集成电路内
.5、温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃
.6、可编程 的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125。
2.2.3 DS18B20的管脚排列
.1、DS18B20的外形及管脚排列如下图:
DS18B20引脚定义:
(1)DQ为数字信号输入/输出端;
(2)GND为电源地;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
2.2.4 DS18B20的内部结构
DS18B20内部结构图:
2.2.2 STC89C52单片机的引脚说明
图2-3 STC89C52单片机引脚图
芯片引脚如图2-3所示:
VCC : 电源。
GND: 地。
P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1口: 是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4 个TTL 逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表1所示。在flash编程和校验时,P1口接收低
8位地址字节。
P2口:P2口是一个具有内部上拉电阻的8 位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:P3口是一个具有内部上拉电阻的8 位双向I/O 口,p2 输出缓冲器能驱动4 个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89S52特殊功能(第二功能)使用,如上表2-1所示。在flash编程和校验时,P3口也接收一些控制信号。
RST: 复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96 个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。
ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(PROG)也用作编程输入脉冲。
表2-2 中断控制寄存器
2.2.3 STC89C52单片机最小系统
图2-4 晶振电路
图2-5 复位电路
如图2-4、图2-5所示,复位电路和时钟电路是维持单片机最小系统运行的基本模块。单片机最小系统是在以51单片机为基础上扩展,使其能更方便地运用于测试系统中,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被测试的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,称为在实时检测和自动控制领域中广泛应用的器件,在工业生产中称为必不可少的器件,尤其是在日常生活中发挥的作用也越来越大[2]。
2.5 温度调节模块设计
1、方案一
图2-12 方案一电路图
如图2-12所示,由PWM控制温度调节模块,当PWM端输入高电平时,电流经Q1放大,光耦导通,光耦输出电流经Q2放大后,使双向可控硅导通,M4QA045电机运转,当PWM端输入低电平时,双向可控硅控制端输入电流为0,交流电过零以后,双向可控硅截止,M4QA045电机停止运转[4]。 2、方案二
图2-13 方案二电路图
如图2-13所示,由PWM控制温度调节模块,当PWM端输入高电平时,电流经Q4放大,常开端5闭合,M4QA045电机运转,当PWM端输入低电平时,常开端5断开,M4QA045电机停止运转。 3、方案比较
方案一采用光耦隔离强电,方案二采用继电器隔离强电,但方案一没有实现强电与直流源的隔离,且方案一环节复杂,计算难度大,过多的环节延长响应时间,从而影响温度调整模块的性能,所以选择方案二[5]。
图2-14 电热器驱动电路
基于以上两个方案的分析,加热器驱动电路也同样选用继电器隔离,当温度低于18℃时,相应引脚输出高电平,电流经过三极管放大,继电器常开端闭合,电热器工作,当温度高于23℃时,相应引脚输出低电平,继电器常开端关闭,电热器不工作[6]。
2.6 湿度报警模块设计
图2-14 湿度报警模块电路图
第三章 温室大棚控制系统软件设计
3.1 Keil C 软件概述
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
Keil C51开发系统基本知识Keil C51开发系统基本知识: 1. 系统概述
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 2. Keil C51单片机软件开发系统的整体结构
C51工具包的整体结构,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 使用独立的Keil仿真器时,注意事项:
*仿真器标配11.0592MHz的晶振,但用户可以在仿真器上的晶振插孔中换插其他频率的晶振。
*仿真器上的复位按钮只复位仿真芯片,不复位目标系统。
*仿真芯片的31脚已接至高电平,所以仿真时只能使用片内ROM,不能使用片外ROM;但仿真器外引插针中的31脚并不与仿真芯片的31脚相连,故该仿真器仍可插入到扩展有外部ROM(其CPU的/EA引脚接至低电平)的目标系统中使用。
3.2.2 LCD1602显示模块程序设计
图4-2 显示程序框图
如图4-2,初始化LCD1602显示模块,设置8位格式,2行,5*7矩阵显示,整体显示,关光标,不闪烁设定输入方式,增量不移位,清除屏幕显示,延时等待,将采集到的温湿度数据进行转换,十六进制转换成十进制,然后,判断是否在第一行显示,输入相应的地址数据,延时等待,输入需要显示的数据。 3.2.3 PWM程序设计
图4-3 PWM程序框图
如图4-3所示,进行中断程序初始化,设置定时器T0中断时间为1ms,中断100次,即100ms作为一个脉冲周期,每中断一次,由变量T0_number进行计数,当变量T0_number大于100时,给变量T0_number赋值0,重新开始计数,当变量T0_number小于变量PWM_width_H时,输出高电平,当变量T0_number大于变量PWM_width_H时,输出低电平,以此控制脉宽[10]。
第四章 总结与展望
以上为毕业期间所设计的温室大棚控制控制系统,它经过多次修改和整理,可以满足设计的基本要求。采用STC89C52单片机、DHT11数字温湿度传感器、LCD1602液晶显示模块和M4QA045电机等器件设计温室大棚控制系统,实现温湿度采集、英文显示;温度自动调节,湿度越限报警功能。
因为本人水平有限,此设计存在一定的问题。譬如系统抗干扰能力差,且没有实现自动自动复位。由于使用的是单片机作为核心的控制元件,配合其它器件,使本温度控制系统具有功能强、性能可靠、电路简单、成本低的特点,加上经过优化的程序,使其有很高的智能化水平。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结
论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
本次设计主要是运用GUI图像编辑器。在GUI编程中,我们可能有时候想改变某些object的属性,或者想让它安装自己的想法实现,但是我们又不记得这些object的属性,更别提怎么设置他们的值了。这时,可以用 get(handles)得到此对象的所有的属性及其当前值。用set(handles)可以得到对象所有可以设置的属性及其可能的取值。找到我们需要的属性名字和可能的取值之后,就意义用 get(handles,‘propertyname’)取得此属性的值,用set(handles,‘propertyname’,values)设置此对象此属性的值,同时也可以用鼠标双击需要改属性的objec,在所弹出的对话框内改相应的属性。
在本次设计中,给我的体会颇多在现在这个信息发达的社会,工程科学分析、数字信号处理及很多领域多需要软件的实现,依据理论的分析与模拟出的图像及结果数据相结合进一步检测,这样不仅结果清晰明了而且得到的值也非常的精确。半学期的学习提高知识的同时也得到了很多的教育和指导,为以后的应用打下了良好的基础。
参考文献
[1] 孙育才.MCS-51系列单片微型计算机及其应用(第四版) [M].南京:东南大学出版社,2004 [2] 康华光.电子技术基础-模拟部分(第四版)[M].北京:高等教育出版社,1999 [3] 康华光.电子技术基础-数字部分(第四版)[M].北京:高等教育出版社,1999 [4] 石来德.机械参数电测技术[M].上海:上海科学技术出版社,1981
[5] Ernest O.Doebelin. Measurement Systems: Application and Design [M].America: McGraw-HILL BOOK COMPANY,1976
[6] 曹继松.测试电路[M].上海:上海交通大学出版社,1995
[7] 谢自美.电子线路设计实验测试[M].武汉:华中科技大学出版社,2000 [8] 马靖善,秦玉平.C语言程序设计[M].北京:清华大学出版社,2005
[9] 赖麒文.8051 单片机 C语言开发环境实务与设计 [M].北京:科学出版社,2002 [10] 徐爱钧.智能化测量控制仪表原理与设计[M].北京:北京航空航天大学出版社,2004
附 录
#include #include
#define LCD_DB P2
sbit DQ = P1^0; sbit BUZZER = P1^1; sbit PWM = P1^2; sbit LCD_RS = P1^4; sbit LCD_RW = P1^5; sbit LCD_E = P1^6; sbit HEAT = P1^7;
void initial(void); void read_DHT11(void);
void LCD_write_command(unsigned char com);
void LCD_display_char(unsigned char x, unsigned char y, unsigned char dat); unsigned char read_DHT11_char(void); void control_temperature_humidity(void); void delay_xms(unsigned int time_xms); void delay_x10us(unsigned int time_x10us);
unsigned char stop_system = 0;
unsigned char lineOne[] = "TS(0-50): C"; unsigned char lineTwo[] = "HS(20-90): %RH"; unsigned int T0_number = 0, T1_number, PWM_width_H;
unsigned char temperature_ten, temperature_one, humidity_ten, humidity_one; unsigned char temperature_H, temperature_L, humidity_H, humidity_L, checkData;
void initial(void) {
unsigned char i, j;
}
TMOD = 0x11; //定时器0工作方式1,16位计数器;定时器1工作方式1,16位TH1 = 0xFC; TH1 = 0x66; TH0 = 0xFC; EA = 1; ET1 = 1; ET0 = 1; EX0 = 1; IT1 = 1; TR0 = 1;
LCD_write_command(0x38); //设置8位格式,2行,5x7
LCD_write_command(0x0c); //设置整体显示,关闭光标,且不闪烁 LCD_write_command(0x06); //设置输入方式,增量不移位 LCD_write_command(0x01); //清屏 for (i = 0; i
for (j = 0; j
LCD_display_char(14, 1, 0xDF);
//显示
LCD_display_char(j, 2, lineTwo[j]); LCD_display_char(i, 1, lineOne[i]);
//定时器1溢出周期1ms,延时
//定时器0中断周期1ms,PWM
计数器
TL0 = 0x66;
void read_DHT11(void) {
DQ = 0; delay_xms(18);
} delay_x10us(2); if (DQ == 0) { while (DQ == 0); } while (DQ == 1); humidity_H = read_DHT11_char(); humidity_L = read_DHT11_char(); temperature_H = read_DHT11_char(); temperature_L = read_DHT11_char();
unsigned char read_DHT11_char(void)
{
for (i = 0; i
17 unsigned char i, temp_one, temp_two; while (DQ == 0); delay_x10us(3); if (DQ == 0) { } else { } temp_two
void delay_x10us(unsigned int time_x10us)
{
while (time_x10us--)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void main(void)
{
initial();
while(1)
{
delay_xms(2000);
read_DHT11();
LCD_display_DHT11();
control_temperature_humidity();
}
}
致 谢 18
在整个数字信号处理实训过程中,范珩老师,刘云秀老师给了我很大的帮助,在语音信号加噪处理问题上,刘云秀给了我很大的帮助,提示我用高斯白噪声加噪,更是在一些语音信号相关知识方面给了我很多的指导,范珩老师也在我语音信号加噪遇到阻碍的时候给了帮助和指导,帮我检查出了程序设计错误所在, 老师也在平时的实训过程中给了我指导,在这里谢谢各位老师的指导。
其次,还要感谢在实训过程中给予我帮助和分析的同学们,在我遇到阻碍的时候,耐心的帮助我分析程序设计,让我在分析过程中学到了很多的相关知识,让我了解更深的语音信号降噪知识。
最后,再一次衷心感谢这次实训的指导老师和同学们!
19