找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13705|回复: 19
收起左侧

单片机自动浇花系统设计的全套资料下载 含论文,源码,实物

  [复制链接]
ID:246796 发表于 2017-11-15 04:16 | 显示全部楼层 |阅读模式

资料包内容:
0.png

制作出来的实物图:
0.png 0.png 0.png 0.png 0.png


Altium Designer画的原理图如下:(51hei附件中可下载工程文件)
0.png


系统框图:
0.png

自动浇花系统元件清单
1)        9*15万用板
2)        STC89C52单片机
3)        AD0809
4)        40脚IC座
5)        28脚IC座
6)        土壤传感器
7)        3脚排阵
8)        继电器
9)        103排阻
10)        0.56四位一体共阳数码管
11)        8550三极管*5
12)        2.2k电阻*4
13)        4.7k电阻*4
14)        10k电阻
15)        10uf电容
16)        30pf电容*2
17)        12M晶振
18)        5mmLED(红)
19)        轻触按键*4
20)        自锁开关
21)        DC电源插口
22)        USB电源线或电池盒


设计论文内容预览:
0.png

定时器部分以单片机AT89C51为控制核心,通过软件设置达到具体动作实现。通过按键开关对当前时间以及定时浇水时间进行设置,共阴数码管显示,当时间处在所设置的浇水时间内时,单片机发出控制信号,开始浇水。否则,停止浇水。

  本次毕业设计是设计一种51单片机控制的自动浇水系统,实现室内盆花浇水的自动化系统。该系统可对土壤的湿度进行监控,并对作物进行适时适量的浇水。其核心是51单片机和土壤湿度检测器YL-69和显示电路以及浇水继电器驱动电路构成的检测控制部分。主要研究土壤湿度与浇水时间之间的关系、浇灌控制技术及设备系统的硬件、软件编程各个部分。检测部分,单片机选用AT89C51单片机,软件选用C51语言编程。土壤湿度采集与显示电路可将检测到的土壤湿度模拟量放大转换成数字量通过单片机内程序控制精确的将温度与湿度分别显示在LED数码管显示屏上,通过单片机内的中断服务程序判断是否要给盆花浇水,若需浇水,则单片机系统发出浇水信号,开始浇水,若不需要浇水,则进行下一次循环检测。在浇水系统中也同时设计一个定时浇水部分,通过按键开关设置不同的浇水时间段,在时间段以内时,单片机驱动浇水系统,开始浇水,如不在时间段内,则不浇水。

  本款为土壤干湿度检测自动浇花系统,启动系统时设定土壤水分为0,即土壤最干时候为250个单位。当将土壤传感器插入泥土(可以拿个纸杯装点),数值下降,例如显示0125,即目前土壤干燥度为125个单位,总共250,也可以算出土壤湿度在50%左右。如果往里面浇水,数值会下降,因为干燥度降低 ,相反的湿度增大。数码管显示为干燥度。
  如果目前数码管显示0125,你可以手动设置自动浇花启动的数值为0130,当土壤越来越干,数值到达0130单位时,继电器启动(可外接水泵),红灯亮。


单片机源程序如下:
  1. //程序头函数
  2. #include <reg52.h>
  3. //宏定义
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define Data_ADC0809 P1

  7. //管脚声明
  8. sbit Feng = P3^0;
  9. //ADC0809
  10. sbit ST=P3^3;
  11. sbit EOC=P3^4;
  12. sbit OE=P3^2;
  13. //按键
  14. sbit Key1=P3^5;
  15. sbit Key2=P3^6;
  16. sbit Key3=P3^7;

  17. //显示数组                0-9+F
  18. uchar Data_[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x71,0x3f};
  19. sbit Wei1 = P2^7;
  20. sbit Wei2 = P2^6;
  21. sbit Wei3 = P2^5;
  22. sbit Wei4 = P2^4;
  23. //函数声明
  24. extern uchar ADC0809();
  25. void Display(uchar X,uchar Data);
  26. void delay(uint t);

  27. //酒精含量变量
  28. uchar temp=0;
  29. //蜂鸣器变量
  30. uchar FF=125;
  31. //显示模式
  32. uchar Mode=0;
  33. uchar p;

  34. void main()
  35. {

  36.         while(1)
  37.         {
  38.                 //正常模式
  39.                 if(Mode==0)
  40.                 {
  41.                         //读取AD值
  42.                         temp=ADC0809();
  43.                         for(p=0;p<30;p++)
  44.                         Display(0,temp);
  45.                         //判断是否报警
  46.                         if(temp>FF)
  47.                         {
  48.                                 Feng=0;
  49.                         }
  50.                         else
  51.                         {
  52.                                 Feng=1;
  53.                         }
  54.                 }
  55.                 //调整模式
  56.                 else
  57.                 {
  58.                         Display(1,FF);
  59.                 }
  60.                 //功能键
  61.                 if(Key3==0)
  62.                 {
  63.                         Feng=0;
  64.                         delay(100);
  65.                         while(Key3==0)
  66.                         {
  67.                                 if(Mode==0)
  68.                                         Display(0,temp);       
  69.                                 else
  70.                                         Display(1,FF);                                                                       
  71.                         }
  72.                         if(Mode==0)
  73.                                 Mode=1;
  74.                         else
  75.                                 Mode=0;
  76.                         Feng=1;
  77.                 }
  78.                 //增加
  79.                 if(Key2==0&&Mode==1)
  80.                 {
  81.                         Feng=0;
  82.                         delay(100);
  83.                         while(Key2==0)
  84.                         {
  85.                                         Display(1,FF);                                                                       
  86.                         }
  87.                         FF++;
  88.                         if(FF==251)       
  89.                                 FF=250;       
  90.                         Feng=1;
  91.                 }
  92.                 //减少
  93.                 if(Key1==0&&Mode==1)
  94.                 {
  95.                         Feng=0;
  96.                         delay(100);
  97.                         while(Key1==0)
  98.                         {
  99.                                         Display(1,FF);                                                                       
  100.                         }
  101.                         FF--;
  102.                         if(FF==0xff)       
  103.                                 FF=0;       
  104.                         Feng=1;
  105.                 }
  106.         }
  107. }
  108. //ADC0809读取信息
  109. uchar ADC0809()
  110. {
  111.         uchar temp_=0x00;
  112.         //初始化高阻太
  113.         OE=0;
  114.         //转化初始化
  115.         ST=0;
  116.         //开始转换
  117.         ST=1;
  118.         ST=0;
  119.         //外部中断等待AD转换结束
  120.         while(EOC==0)
  121.         //读取转换的AD值
  122.         OE=1;
  123.         temp_=Data_ADC0809;
  124.         OE=0;
  125.         return temp_;
  126. }
  127. //延时
  128. void delay(uint t)
  129. {
  130.         uint i,j;
  131.         for(i=0;i<t;i++)
  132.                 for(j=0;j<10;j++);
  133. }

  134. //显示       X表示状态     Data表示数据
  135. void Display(uchar X,uchar Data)
  136. {
  137.         Wei1=1;
  138.         Wei2=1;
  139.         Wei3=1;
  140.         Wei4=1;
  141.         P0=0xff;

  142.         //正常模式
  143.         if(X==0)
  144.         {
  145.                 P0=~Data_[11];
  146.         }
  147.         //非正常
  148.         else
  149.         {
  150.                 P0=~Data_[10];
  151.         }
  152.         Wei1=0;
  153.         Wei2=1;
  154.         Wei3=1;
  155.         Wei4=1;
  156.         delay(10);
  157.         Wei1=1;
  158.         Wei2=1;
  159.         Wei3=1;
  160.         Wei4=1;

  161.         P0=~Data_[Data/100];
  162.         Wei1=1;
  163.         Wei2=0;
  164.         Wei3=1;
  165.         Wei4=1;
  166.         delay(10);
  167.         Wei1=1;
  168.         Wei2=1;
  169.         Wei3=1;
  170.         Wei4=1;


  171. ……………………

  172. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
基于单片机自动浇花系统.rar (7.77 MB, 下载次数: 525)

评分

参与人数 2黑币 +12 收起 理由
q977165 + 7 赞一个!
pfyy + 5 很给力!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2017-11-16 05:56 | 显示全部楼层
遇到这样的问题稍等1分钟即可(刷新下载页面)
回复

使用道具 举报

ID:259380 发表于 2017-12-9 20:51 | 显示全部楼层
仿真图有问题呀
回复

使用道具 举报

ID:315846 发表于 2018-4-28 19:49 | 显示全部楼层
能打开吗
回复

使用道具 举报

ID:329997 发表于 2018-5-16 18:40 | 显示全部楼层
楼主能不能私发给我,我黑币不够
回复

使用道具 举报

ID:283987 发表于 2018-5-16 19:02 | 显示全部楼层
谢谢作者分享
回复

使用道具 举报

ID:329997 发表于 2018-5-16 20:45 | 显示全部楼层
您好,你这个压缩包里边的程序好像不对,它是酒精检测程序,并有看到自动浇花的程序。您能不能修改一下
回复

使用道具 举报

ID:348158 发表于 2018-6-10 18:20 | 显示全部楼层

可以实现吗??
回复

使用道具 举报

ID:421240 发表于 2018-11-7 20:36 | 显示全部楼层
能检测到温度吗
回复

使用道具 举报

ID:437434 发表于 2018-12-3 12:56 | 显示全部楼层
很好,最近在做一个这个相关作业,能拿来参考
回复

使用道具 举报

ID:442170 发表于 2018-12-8 16:21 | 显示全部楼层
大神厉害,东西很给力
回复

使用道具 举报

ID:451564 发表于 2018-12-24 15:04 | 显示全部楼层
不错,大神厉害!
回复

使用道具 举报

ID:453644 发表于 2018-12-24 17:23 | 显示全部楼层
楼主程序不对啊,压缩包里的程序是酒精检测的,不是自动浇水的
回复

使用道具 举报

ID:372154 发表于 2019-1-29 02:01 | 显示全部楼层
这个厉害了
回复

使用道具 举报

ID:223725 发表于 2019-4-8 11:01 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:239426 发表于 2019-4-12 10:54 | 显示全部楼层
厉害了    感谢分享
回复

使用道具 举报

ID:507599 发表于 2019-4-12 11:02 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:461421 发表于 2019-10-8 01:09 | 显示全部楼层
这个是真的厉害了!资料太全了吧!
回复

使用道具 举报

ID:636349 发表于 2019-11-5 21:56 | 显示全部楼层
很棒,正在找单片机浇花的设计,感谢
回复

使用道具 举报

ID:637791 发表于 2019-11-7 22:12 | 显示全部楼层
水泵该买哪一个?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表