基于单片机智能浇灌系统课设报告.doc

上传人:聆听****声音 文档编号:567417 上传时间:2023-04-29 格式:DOC 页数:36 大小:915.95KB
下载 相关 举报
基于单片机智能浇灌系统课设报告.doc_第1页
第1页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第2页
第2页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第3页
第3页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第4页
第4页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第5页
第5页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第6页
第6页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第7页
第7页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第8页
第8页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第9页
第9页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第10页
第10页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第11页
第11页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第12页
第12页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第13页
第13页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第14页
第14页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第15页
第15页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第16页
第16页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第17页
第17页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第18页
第18页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第19页
第19页 / 共36页
基于单片机智能浇灌系统课设报告.doc_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机智能浇灌系统课设报告.doc

《基于单片机智能浇灌系统课设报告.doc》由会员分享,可在线阅读,更多相关《基于单片机智能浇灌系统课设报告.doc(36页珍藏版)》请在冰点文库上搜索。

基于单片机智能浇灌系统课设报告.doc

武汉华夏理工学院

课程设计报告书

课程名称单片机原理及应用课程设计

课程设计总评成绩

学生姓名、学号周子林102124142217

学生专业班级自动化1142

指导教师姓名李文彦

课程设计起止日期2016.12.19——2016.12.30

单片机课程设计任务书

题目:

基于单片机的全自动浇花系统电路设计

初始条件:

1.采用湿度传感器采集数据;

2.采用温度传感器采集数据;

3.采用单片机组成数据采集系统;

4.采用ULN2803芯片驱动直流电机。

要求完成的主要任务:

1.对环境的温湿度状态进行数据采集;

2.设湿度传感器输出为0-5V的电路;

3.设计8位或10位A/D转换接口电路;

4.设计单片机的信号显示电路;

5.设计单片机的控制电路;

6.设计掉电保存数据电路;

7.设计驱动直流电机电路;

8.严格按照课程设计说明书要求撰写课程设计说明书;

时间安排:

序号

阶段内容

所需时间(周)

1

方案选择及电路设计

假期进行

2

制作、编程、调试

1

3

撰写课程设计报告及答辩

1

合计

2

指导教师签名:

年月日

基于单片机的全自动浇花系统设计

作者:

周子林

武汉华夏理工学院信息工程学院自动化1142

摘要:

现代生活中,随着人们生活水平的提高,人们对花卉、树木等绿色植物的喜爱和种植越来越多,然而以前对花木的浇灌、施肥等工作都需要人工来实现,由于现代生活节奏加快,人们往往忙于工作而忘记及时为花卉补充水分和养料,导致花木枯死。

水是植物生存、生长的最基本需要,因此,设计一种能够在无人管理的情况下为花木自动浇水的系统,能够有效解决花木因缺水而枯死的难题。

本系统是采用AT89C52单片机为核心的全自动浇花系统。

系统主要实现的功能是对花木的土壤中的湿度进行实时检测,当土壤湿度低于用户设定值时及时给花木浇水,当土壤湿度高于系统设定值时停止给花木浇水。

关键词:

C51单片机A/D转换IIC通信协议LCD1602显示

1系统设计

本次设计包括AT89C52单片机及基本外围电路模块、温湿度检测电路模块、A/D转换电路模块、显示电路模块、EEPROM掉电数据保存电路模块、按键控制电路模块、电机驱动电路模块、电源电路模块等部分组成,具体设计方案如图1-1所示。

图1-1.系统框图

2硬件电路设计

2.1单片机

本系统采用AT89C52单片机。

图2-1单片机引脚图

AT89C52是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机,如图2-1所示。

AT89C2052是一种带4K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C52是一种高效微控制器,就单片机而言,在课程中已经介绍,在此就不在多加解释。

2.2湿度传感器

本系统采用FC-28电阻式湿度传感器输出模拟量更精确的计算出湿度值,如图2-2所示。

图2-2湿度检测电路

湿度值计算公式如式

(1):

(1)

当湿度传感器完全部浸入水中时,Rs=5.87k(稳定值),计算出Vo1=1.85V;当湿度传感器不接触水时,Rs=∞,计算出V01=5.0V。

由于V01的变化范围为1.85V~5.0V,为了方便计算出湿度值,在程序的算法中作以下处理:

Vo2=5.0V-Vo1,即Vo2的变化范围为0V~3.15V。

显示湿度值计算公式:

HR=(Vo2/3.15)*100%。

2.3温度传感器

(1)温度传感器DS18B20特性

①全数字温度转换及输出。

②先进的单总线数据通信。

③支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

④可编程分辨率为9~12位,对应的可分辨温度分别为0.5℃,0.25℃,0.125℃和0.0625℃,可实现高精度测温。

⑤检测温度范围为-55℃~+125℃。

⑥内置EEPROM,限温报警功能。

⑦64位光刻ROM,内置产品序列号,方便多机挂接。

⑧负压特性。

电源接反时,芯片不会因为发热而烧毁,但不能正常工作。

(2)DS18B20引脚介绍如图2-3所示。

①GND:

电源负极。

②DQ:

信号输入输出。

③VDD:

电源正极。

图2-3DS18B20直插式

(3)DS18B20RAM及EEPROM结构图如图2-4所示。

图2-4

高速暂存器RAM由9个字节的存储器组成。

第0、1个字节是温度转换后的数据值信息;第2、3个字节是用户EEPROM(常用于温度报警值储存)的镜像;第4个字节则是用户第3个EEPROM的镜像;第5、6、7个字节为计数寄存器,是为了让用户得到更高的分辨率而设计的,同样也是内温度转换、计算的暂存单元;第8个字节为前8个字节的CRC码。

(4)DS18B2电路原理图如图2-5所示。

图2-5DS18B20典型电路

(5)DS18B20工作时序图如图2-6所示。

图2-6DS18B20工作时序

2.4A/D转换电路设计

模数转换电路的作用是将图2-2所示电路中湿度传感器输出的直流量转换成数字量,送至单片机进行分析与处理。

本设计模数转换器选用ADC0820,它是8位并行单极性A/D转换器。

(1)ADC0820引脚说明

图2-7

ADC0820引脚图如图2-7所示。

其中

模拟信号输入端,输入电压范围是。

数据端,三态数据输出。

片选端,低电平有效。

输入信号参考电压,当模拟信号的电压范围在时,接,接地。

溢出指示端,正常情况下,是逻辑高电平,当模拟输入比还高,在转换结束时将变低,还可用级联两个或多个器件以提高分辨率(9位或10位)。

工作电压,

中断输出,其使用方法详见后述ADC0820工作方式。

方式选择端,ADC0820有两种工作方式,分别是读方式和写-读方式,当为低电平时为读方式,当为高电平时为写-读方式。

写/准备端,在写-读方式下,为低电平时,下降沿启动A/D转换;在读工作方式,在的下降沿且转换结果送入输出锁存电路时,进入高阻状态。

读,在写-读方式下,三态数据输出端在变为低电平时允许输出;在读方式下,在下降沿开始A/D转换,当进入高阻态且由高电平变为低电平时,表示一次A/D转换结束。

(2)ADC0820工作方式

ADC0820有两种工作方式:

读方式和写-读方式。

①读方式

当为低电平时,ADC0820工作于读方式。

在读方式下,作为输出端且为准备端(即作为功能)。

在此状态,当由高电平变为低电平,表示器件准备就绪,在下降沿,开始转换,在由高电平变为低电平且恢复为高阻抗状态后内,完成转换。

转换完成后,数据输出()从高阻状态转变为有效状态。

数据读出之后,、为高电平,数据输出端恢复至高阻抗状态。

读方式时序如图2-8所示。

图2-8读方式工作时序(MODE为低电平)

②写-读方式

当置为高电平时,转换器为写-读工作方式。

在此模式下,将接低电平,若将接单片机I/O口,转换开始于的上升沿,并在其后600ns完成转换。

在该工作方式下,单片机有三种读取数据的方式:

a.程序延时,在上升沿启动转换,延时后,将由高电平置为低电平,通过读取数据,数据读出后,置为高电平,恢复高电平状态,数据输出恢复至高阻抗状态;

b.程序查询,在此模式下,当单片机检测到下降沿到来时,将由高电平置为低电平,开始读取数据,数据读出之后,恢复为高电平状态,将置为高电平。

当恢复高电平状态后,数据输出端恢复至高阻状态;

c.直通方式,此工作方式操作简单,将、一直置于处低电平,转换开始于的上升沿,转换大约在内完成,在下降沿到来时表示转换完成,数据可读出。

直通方式工作时序如图2-9所示。

图2-9直通方式工作时序(独立工作,MODE为高电平且为低电平)

(3)本系统设计中ADC0820所选工作方式说明

本设计ADC0820选用写-读方式下的直通工作方式,以提高工作效率。

模数转换电路如图2-10所示。

该方式下,将ADC0820的与直接接地、接高电平、不与外电路连接、端接单片机PB7端口以控制转换;先将置为低电平,延时一段时间后,将其置为高电平,A/D转换开始于其上升沿,由其内部计数器开始延时计时(延时时间约),如果后还没读取数据,则变为高电平,数据被锁存。

本设计中没有使用端,因为当置为低电平后,在转换开始后约数据就能读出。

本设计中,数据输出端接单片机P1.7-P1.0口。

图2-10A/D转换电路

2.5显示电路模块设计

显示电路的作用是显示土壤湿度值、用户设定值及环境温度值,由于显示内容复杂,本系统采用LCD1602液晶显示屏作为显示器。

(1)接口信号说明

1602型液晶接口信号说明如表2.1所示。

表2.11602液晶接口信号说明

编号

符号

引脚说明

编号

符号

引脚说明

1

电源地

9

D2

数据口

2

电源正极

10

D3

数据口

3

VO

液晶显示对比度调节

11

D4

数据口

4

RS

数据/命令选择端(H/L)

12

D5

数据口

5

读写选择端(H/L)

13

D6

数据口

6

E

使能信号

14

D7

数据口

7

D0

数据口

15

BLA

背光电源正极

8

D1

数据口

16

BLK

背光电源负极

(2)基本操作时序

读状态输入:

RS=L,=H,E=H输出:

D0-D7=状态字。

读数据输入:

RS=H,=H,E=H输出:

无。

写指令输入:

RS=L,=L,D0-D7=指令码,E=高脉冲输出D0-D7=数据。

写数据输入:

RS=H,=L,D0-D7=数据,E=高脉冲输出D0-D=无。

(3)RAM地址映射图

控制器内部带有80B的RAM缓冲区,对应关系如图2.2所示。

表2.21602内部RAM地址映射表

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

10

.....

27

40

41

42

43

44

45

46

47

48

49

4A

4B

4C

4D

4E

4F

50

.....

67

当我们向表2.2中的00-0F、40-4F地址中的任一处写入显示数据时,液晶都可以立即显示出来,当写入到10-27或50-67地址时,必须通过移屏指令将它们移入可显示区域方可正常显示。

(4)写操作时序(见图2-11)

分析时序图可知操作1602液晶的流程如下:

①通过RS确定是写数据还是写命令。

写命令包括使液晶的光标显示/不显示、光标闪烁/不闪烁、需/不需要移屏、在液晶的什么位置显示,等等。

写数据是指要显示什么内容。

②读/写控制端设置为写模式,即低电平。

③将数据或命令送达数据线上。

④给E一个高脉冲将数据送入液晶控制器,完成写操作。

图2-111602液晶写操作时序图

(5)1602液晶与单片机接口如图2-12所示。

图2-121602液晶与单片机接口

2.6EEPROM掉电数据保存电路设计

EEPROM掉电数据保存电路主要功能:

在系统掉电之后保存用户设定的土壤湿度下限值。

电路设计采用具有IIC总线接口的EEPROMAT24C02,ATMEL公司生产的AT24C02可解决掉电数据保存问题,可对所存数据保存100年,并可多次擦写,擦写次数可达10万次以上。

(1)AT24C02引脚配置与引脚功能

AT24C02芯片的常用封装形式有直插(DIP8)式和贴片(S0-8)式两种,无论是直插式还是贴片式,其引脚功能与序号都一样,引脚图如图2-13所示。

图2-13AT24C02引脚图

各引脚功能如下:

1,2,3(A0、A1、A2)——可编程地址输入端。

4(GND)——电源地。

5(SDA)——串行数据输入/输出端。

6(SCL)——串行时钟输入。

7(WP)——写保护输入端,用于硬件数据保护。

当其为低电平时,可以对整个存储器进行正常的读/写操作;当其为高电平时,存储器具有写保护功能,但读操作不受影响。

8(Vcc)——电源正端。

(2)存储器结构与寻址

ATC2402的存储容量为2KB,内部分成32页,每页8B,共256B,操作时有两种寻址方式:

芯片寻址和片内子地址寻址。

①芯片寻址。

AT24C02的芯片地址为1010,其地址控制字格式为1010A2A0。

其中A2,A1,A0为可编程地址选择位。

A2,A1,A0引脚接高、低电平后得到确定的三位编码,与1010形成7位编码,即为该器件的地址码。

为芯片读写控制位,该位为0,表示对芯片进行读操作。

②片内子地址寻址。

芯片寻址可对内部256B中的任一个进行读/写操作,其寻址范围为00-FF,共256个寻址单元。

由于第二种寻址方式寻址灵活,操作简单,即采用片内子地址寻址。

(3)读/写操作时序

图2-14AT24C02工作时序图

(4)AT24C02电路连接如图2-15所示。

图2-15AT24C02连接图

2.7按键控制电路设计

按键的功能:

用户针对不同植物的生长对土壤湿度需求的差异,设定土壤湿度下限值LHR。

按键电路设计采用独立键盘,电路图如图2-16所示。

图2-16键盘电路

S1键:

控制土壤湿度下限值LHR增加

S2键:

控制土壤湿度下限值LHR增加

2.8电机驱动电路设计

当传感器检测到土壤湿度值低于土壤湿度下限值LHR时,单片机发出命令,要求水泵启动,由于单片机只能输出0V或5V的电压,不足以驱动6V-12V直流电机,因此需要借助驱动电路驱动电机。

(1)电磁继电器

利用单片机输出的高低电平触发电磁继电器工作,从而控制电机工作,但是,电磁继电器在工作瞬间常开触点闭合、常闭触点断开,会有嘀嗒的声音,制造噪音,所以不选用电磁继电器。

(2)电机驱动芯片

采用达林顿驱动器(ULN2803)如图2-17所示,它实际上是一个集成芯片,单块芯片同时可驱动8个电机,每个电机由单片机的一个I/O口控制,当需要调节直流电机转速时,使单片机相应I/O口输出不同占空比的PWM波形即可。

驱动芯片工作时静音,且电路简单,功能强大,即选用ULN2803驱动器驱动电机。

图2-17ULN2803电路连接图

2.9电源电路设计

(1)用5V直流电压给单片机及基本外围电路模块供电。

(2)用9V干电池给直流电机供电。

切记:

直流电机供电电源和单片机的供电电源要共地。

3系统软件设计

3.1软件设计思路

本系统软件设计是基于KEIL软件平台,以AT89C52单片机软件编程为主,系统软件部分主要由系统初始化模块、温湿度数据采集模块、A/D转换模块、键盘控制模块、数据存储模块以及1602液晶显示模块等部分组成。

当系统上电后单片机及基本外围模块进行初始化设置,主程序运行,用户设置LHR值,湿度传感器开始检测土壤湿度,A/D模块将土壤湿度模拟量转换为数字量送到单片机处理分析,如果土壤湿度值HR低于土壤湿度下限值LHR,单片机P3.7端口输出高电平触发驱动器工作,水泵开始浇水,如果土壤湿度值HR高于系统设定土壤湿度上限值HHR,单片机P3.7端口输出低电平,驱动器停止工作,水泵停止浇水。

3.2系统主程序流程图如图3-1所示。

图3-1系统主程序流程图

3.3程序设计

主程序:

#include

#include"head.h"

#defineV5.0

sbitM=P3^7;

floatvi=0.0;

uintc1;

ucharnum1;

uchars;

voidmain()//主函数

{

EEPROM_int();

num1=read_add

(2);

lcd1602_init();//LCD1602初始化

LCD_clear();//LCD1602清屏

delay_ms(5);//硬件反应时间

display3();

P1=0xff;

while

(1)

{

AD_Convert();

vi=vi*V/256;

c1=((500-vi*100)/315)*100;

if(99

if(0<=c1&&c1<=99)

{display1(11,c1);}

read_temperature();//读取温度数据

if(s==0)

{display2(5,read_temperature());}

if(s==1)

{display4(6,read_temperature());}

delay_us(100);//硬件反应时间

keyscan();

display1(4,num1);

write_add(2,num1);

if(c1<=num1)

{

M=1;

delay_ms(500);

M=0;

delay_ms(1500);

}

if(40<=c1)

{M=0;}

}

}

A/D转换程序:

#include

#include

#include

#include"head.h"

#defineN64

sbitad_wr=P3^6;

externfloatvi;

ucharData[N];

voidAD_Convert()

{

uinti;

vi=0.0;

for(i=0;i

{

ad_wr=1;//wrportraiseedage

delay_ms

(1);

ad_wr=0;//wrpotfalseedage

delay_ms

(1);

ad_wr=1;//startadconvert

_nop_();

_nop_();

_nop_();

Data[i]=P1;

ad_wr=0;

}

for(i=0;i

{

vi+=Data[i];

}

vi=vi/N;

}

温度检测程序:

#include

#include

#include"head.h"

sbitds=P2^6;

uchartime;

externuchars;

voiddsreset(void)//DS18B20复位,初始化函数

{

ds=1;//数据线置高电平1

for(time=0;time<2;time++);//延时约6us,延时尽可能短一点

ds=0;//数据线置低电平0

for(time=0;time<200;time++);//延时约600us,延时控制在480~960us之间

ds=1;//数据线置高电平1

for(time=0;time<10;time++);//延时约30us

if(!

ds)//等待DS18B20应答

for(time=0;time<200;time++);//延时约600us,DS18B20应答脉冲

}

voiddswrite(uchardat)//向DS18B20写指令函数,dat表示指令编码,例如,温度转换——0x44

{

uchari=0;

for(i=0;i<8;i++)//把dat中的数据分八次传给ds,一次只发送一位二进制数

{

ds=1;//数据线置高电平1

_nop_();//延时一个机器周期,约1us

ds=0;//数据线置低电平0

_nop_();//延时一个机器周期,约1us

ds=dat&0x01;//DS18B20采样,把dat中的最低位传给ds

for(time=0;time<15;time++); //延时约45us

ds=1;//数据线置高电平1

for(time=0;time<1;time++);//延时约3us(1us

dat>>=1;//dat数据右移一位

}

for(time=0;time<4;time++);//延时约为12u

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2