- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
花园自动浇水系统
西安邮电大学
单片机课程设计报告
题目: 花园自动浇水系统设计
班级 : 学生姓名 : 指导老师 : 实习时间 : 13-04-08-----13-04-19
单片机之间的通信综合设计
设计要求
1.利用温控传感器及液晶显示屏实现实时温湿度显示。
2.当温度或湿度达到或超过某个临界值时启动电磁阀,来控制花园的浇水系统。
二、实验步骤
1.根据单片机原理,分析实验要求,编写程序。
2.设计硬件电路,并且在Proteus中进行模拟仿真。
3.仿真成功后,合理布线,进行焊接。
4.进行检查调试。
5.实际环境测试。
三、所需元器件列表
器件名称
数量
AT89C52
1
40脚管脚座
1
11.0592M晶振
1
30P电容
2
10U电容
1
开关
1
10k,5.1k,4.7k电阻
各一个
DHT11温湿传感器
1
电路板
1
10
MD1602液晶显示屏
1
11
单通电磁阀
1
12
红、绿发光二极管
各1个
13
9012PNP三极管
1
14
电磁继电器HK4100f DC3V
1
15
导线
若干
四、系统功能与原理描述
利用单片机实现实时温湿度检测并控制电磁阀实现自动浇水。
通过温湿度传感器进行数据采集,然后传入单片机中,驱动lcd进行显示,同时判断采集的数据是否超过花园自动浇水的临界值,若超过,通过继电器来控制电磁阀的导通,实现浇水,若未达到,继电器不工作,完成对电磁阀的实时控制。
五、实验电路图(用protel画)
六、实验proteus仿真图及仿真结果
七、系统流程图与源程序
流程图:
源程序:
/*****包含头文件*****/
#includereg51.h
#include intrins.h
#include string.h
#includemath.h
#includestdio.h
#define uint unsigned int //定义无符号整型
#define uchar unsigned char //定义无符号字符型
#define LCD_DATA P1 //设P1口为数据传输口
sbit YN = P2^0; //判断单片机能否正常工作口
sbit RS = P2^3; //1602的数据/指令选择控制线
sbit RW = P2^2; //1602的读写控制线
sbit EN = P2^1; //1602的使能控制线
sbit DHT11 = P2^4; // dht11数据传输口
sbit button = P2^5; //电磁阀工作控制口
float F16T,F16RH; //定义全局变量,F16T 表示实型温度值,F16RH表示实型湿度值
uchar U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata; //定义dht11温湿数据的高、低8位及CRC检验数据
void Init_Lcd(void); //lcd初始化函数声明
void LCD_write_str(uchar X,uchar Y,uchar *s); //lcd指定位置写字符串函数声明
void LCD_set_xy( uchar x, uchar y ); //lcd位置定位函数声明
void LCD_en_write(void); //lcd使能命令声明
void LCD_write_char(uchar cd,uchar ab); //lcd写数据/命令命令声明
void LCD_byte(uchar abc); //向lcd写一个字符
int LCD_value(uchar x,uchar y,float f); //在液晶中显示浮点数函数
void Delay_ms(uint n) //延时ms级函数
{
uchar j; //定义一个字符j
while(n--)
{
for(j=0;j125;j++); //执行125次空操作
}
}
void Delay_us(uchar n) //N us 延时函数精度±4us
{
n=n/2;
while(--n);
}
/********dht11数据采集程序*******/
char COM(
文档评论(0)