硬件设计

基本框架
该电路的工作原理是由STC89C52单片机和ADC0832组成系统的核心部分,湿度传感器将采集到的数据直接传送到ADC0832的IN端作为输入的模拟信号。选用湿度传感器和AD转换,电路内部包含有湿度采集、AD转换、单片机译码显示等功能。单片机需要采集数据时,发出指令启动A/D转换器工作,ADC0832根据送来的地址信号选通IN1通道,然后对输入的模拟信号进行转换,转换结束时,EOC输出高电平,通知单片机可以读取转换结果,单片机通过调用中断程序,读取转换后的数据。最后,单片机把采集到的湿度数据经过软件程序处理后送到LCD1602进行显示。自动浇水系统设计为智能和手动两个部分:智能浇水部分是通过单片机程序设计浇水的上下限值与感应电路送入单片机的土壤湿度值相比较,当低于下限值时,单片机输出一个信号控制浇水,高于上限值时再由单片机输出一个信号控制停止浇水;手动部分是由通过关闭单片机电源,由外围电路供电进行浇灌。

土壤温湿度采集与显示
土壤温湿度采集与显示系统以单片机STC89C52为控制核心,通过软件设置达到具体动作实现。土壤的温湿度是由ADC0832和两个点位器进行模拟并送入单片机,通过单片机的I/O口把检测到的土壤温湿度值用LCD显示出来。同时,如果系统在智能浇水设置情况下,则该值与设定的浇水上下限值相比较,若低于下限值,则单片机发出一个控制信号,开始浇水。若高于上限值时,单片机再发出一个控制信号控制,停止浇水。如果系统设置在手动浇水情况下,则按照设定好的定时浇水时间进行浇水,温湿度检测电路把检测到的土壤温湿度值显示在LCD上,以达到对土壤温湿度实时监测的目的。

仿真图:


原理图:

程序设计

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int sbit ad_cs=P1^3;  //ADC0832的控制位
sbit ad_clk=P1^0;
sbit ad_dat=P1^1;sbit lcd_rs=P3^0;     //LCD1602的控制位
sbit lcd_e=P3^1;sbit key1=P1^4;        //独立按键
sbit key2=P3^2;
sbit key3=P3^3;sbit relay=P1^6;     //继电器
sbit led=P1^7;     //指示灯bit flag=1;            //工作模式标志
bit flag_motor=1;   //手动模式下,抽水机开关标志
bit flag_jia=0;
bit flag_jian=0;uchar Hum_H=60;        //自动模式下,湿度设定最大值
uchar Hum_L=30;         //自动模式下,湿度设定最小值uchar num=0;/********************延时函数1ms*****************
void delay_ms(uint a)
{uint i;while(a--)for(i=0;i<125;i++);
}
*************************************//*******************延时函数50us******************/
void delay_50us(uint a)
{uint i;while(a--)for(i=0;i<19;i++);
}
/*************************************//*******************ADC读取******************/
uchar read_ad(uchar channel)
{uchar i;uchar dat1,dat2;ad_clk=0;ad_cs=0;ad_dat=1;ad_clk=1;ad_clk=0;  //起始信号ad_dat=1;ad_clk=1;ad_clk=0;  //选择单通道模式ad_dat=channel;//0对应通道0,1对应通道1ad_clk=1;ad_clk=0;ad_dat=1;for(i=0;i<8;++i){ad_clk=1;ad_clk=0;dat1=dat1<<1;if(ad_dat)dat1|=0x01;    }for(i=0;i<8;i++){dat2=dat2>>1;if(ad_dat)dat2|=0x80;  ad_clk=1;ad_clk=0;} ad_cs=1;return (dat1==dat2)?dat1:0;}
/*************************************//*******************LCD1602初始化******************/
void write_com(uchar com)   //写指令
{lcd_e=0;lcd_rs=0;P0=com;delay_50us(10);lcd_e=1;delay_50us(10);lcd_e=0;
}void write_data(uchar dat)  //写数据
{lcd_e=0;lcd_rs=1;P0=dat;delay_50us(10);lcd_e=1;delay_50us(10);lcd_e=0;
}            void init_lcd1602()         //lcd 初始化
{delay_50us(300);write_com(0x38);delay_50us(100);write_com(0x38);delay_50us(100);write_com(0x38);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0c);
}void display_shu(uchar add,uchar dat)    //显示数字
{uchar l,m;//   k=dat/100;l=dat%100/10;m=dat%10;write_com(0x80+add);
//  write_data(k+0x30);write_data(l+0x30);write_data(m+0x30);
}void display_string(uchar add,uchar *dat)  //显示字符串
{uchar i;write_com(0x80+add);while(dat!=0&&(*dat!='\0')&&i<16){write_data(*dat);dat++;i++;if(i==15) i=0;}
}
/*****************************************//****************主函数*******************/
void main()
{EA=1;                           //开总中断EX0=1;                           //开外部中断0EX1=1;                             //开外部中断1IT0=0;                             //外部中断0触发方式为低电平IT1=0;                              //外部中断1触发方式为低电平init_lcd1602();
//  relay=0;display_string(0,"Hum:  %");      //实时显示当前的湿度display_string(11,"H:  %");       //显示设置的湿度最大值display_string(0x40,"Mode:");   //显示工作模式display_string(0x40+11,"L:  %");  //显示设置的湿度最小值

附:http://www.jh-tec.cn/archives/7141

基于51单片机的自动浇花浇水系统LCD1602显示仿真相关推荐

  1. 基于51单片机的自动浇花系统设计/基于51单片机的智能抽奖系统控制设计/基于51单片机的数字时钟与日历显示控制设计 毕业设计

    1147基于51单片机的自动浇花系统设计 设计思路:通湿度传感器实时监测湿度,通过LCD显示出实时的湿度采集值,可以通过按键设定目标界限,当达到这个界限值时,浇花系统的电机装置运行. 电路包含:LCD ...

  2. 基于51单片机的自动浇花系统

    目录 一.项目需求 二.仿真 三.程序 四.资料清单 资料下载地址:基于51单片机的自动浇花系统 一.项目需求 1.自动检测土壤湿度.温度.光照强度: 2.土壤湿度过低驱动水泵进行浇花: 3.LCD1 ...

  3. 基于51单片机的自动浇花系统设计

    引言 1 选题的目的和意义 随着社会的进步,人们的生活质量越来越高.在家里养养盆花可以陶冶情操,丰富生活.同时盆花可以通过光合作用吸收二氧化碳,净化室内空气,在有花木的地方空气中阴离子聚集较多,所以空 ...

  4. 基于51单片机的自动打铃器系统

    基于51单片机的自动打铃器系统 1)显示实时时间和日期 2)可设置20组打铃时间 3)按键可更改实时时间和打铃时间 4)到时间蜂鸣器响30S 5)DS1302时钟芯片,LCD1602液晶屏显示 包括: ...

  5. 基于51单片机的智能浇花系统(可做毕设)

    基于51单片机的智能浇花系统(可做毕设) 一.系统介绍 二.仿真展示 三.实物展示 四.仿真过程 五.代码 1.ADC0832 2.LCD1602 3.按键 4.水泵 5.温湿度 6.定时器 7.ma ...

  6. 51系列—基于51单片机的校园教室打铃系统(代码+仿真+电路图超级全)

    基于51单片机的校园教室打铃系统(代码+仿真+电路图超级全) 本文主要介绍基于51单片机实现的校园打铃系统设计,实现了基本的上下课打铃功能.本设计基于51单片机,使用单片机定时计数器及LCD1602接 ...

  7. 基于51单片机的智能家居安防系统(程序+仿真+PCB)

    @TOC 一.基于51单片机的智能家居安防系统 1.主要功能 通过人体红外检测模块.光敏传感器.蜂鸣器.继电器模块模拟智能家居安防功能. 2.实验结果 3.实验仿真 4.程序源码 /********* ...

  8. Arduino DIY 电子自动浇花浇水系统

    目录 1.简介 第1章 实验前的准备 第一小节 控制板简介 1.规格参数 2.各个接口和主要元件说明 3.特殊功能接口说明 第二小节 在Windows系统电脑使用方法 1.下载安装arduino软件: ...

  9. 【Proteus仿真】【51单片机】自动浇花灌溉系统设计

    文章目录 一.功能简介 二.软件设计 三.实验现象 联系作者 一.功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶.按键.DS18B20.PCF8591 ADC.土壤湿 ...

最新文章

  1. java spring scope_如何在Spring中自定义scope的方法示例
  2. Android -- TextView与EditText 同步显示
  3. 深度学习debug沉思录
  4. 3D Computer Grapihcs Using OpenGL - 04 First Triangle
  5. Android开发中反编译时出现Unsupported major.minor version 51.0错误的问题
  6. DCD DSR DTR RTS CTS表示什么意思
  7. linux man命令的1和1p,Linux中man命令的使用方法再解释
  8. java课程课后作业04之动手动脑
  9. C++对C的一些加强和变化
  10. java web开发之上机指导(2)
  11. [SecureCRT] 解决 securecrt failed to open the host key database file 的问题
  12. centos不同版本修改主机名的正确方法
  13. Linux使用SIGALARM信号的定时器
  14. Java开发心得:HttpServletRequest基本功能
  15. js实现中文简繁切换效果
  16. 可视化丨福尔摩斯探案集的数据分析
  17. 算法基础--梯度消失的原因
  18. luckysheet导出excel表格(使用exceljs,支持图片)
  19. CAD打开文件提示许可检出超时,AutoCAD将关闭
  20. Spring循环依赖的三种方式以及解决办法

热门文章

  1. 2018对啊网CPA优秀学员表彰大会暨颁奖典礼在京举行
  2. [INS-30131] 执行安装程序验证所需的初始设置失败
  3. 惠普台式计算机硬盘拆卸方法,简单的拆解二_惠普 EliteDesk 800 G1 DM_台式电脑评测-中关村在线...
  4. 58 mysql 军规_58 到家 MySQL 军规升级版
  5. FreeCad的编译注意事项
  6. 2021/10/14程式培力刷題記錄
  7. 初试一结束,考研人怎么变成这个鬼样子?!
  8. 非root用户安装python第三方模块出现Permission denied的解决办法
  9. 关于C/C++中int *p=10 为什么不行,而char *s=“wbq“却可以
  10. Gather statistics 导致的DRM 应用已经隔离