基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示) 您所在的位置:网站首页 51单片机ad转换代码及仿真 基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示)

基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示)

2024-06-20 19:48| 来源: 网络整理| 查看: 265

wx供重浩:创享日记 对话框发送:单片机浇花 获取完整源码源文件+仿真源文件+原理图源文件+论文报告等

在这里插入图片描述

单片机土壤湿度检测及自动浇花系统仿真(带时间显示) 具体功能: (1)液晶第一行显示实际湿度,液晶第二行显示当前时间; (2)按键说明:减键、加键、设置键。 (3)可以设置湿度上下限报警范围,具有掉电保存功能,上电无需重新设置。 (4)当湿度低于下限值时,打开水泵(风扇开始转动)进行抽水且声光报警,当湿度高于上限值时,自动关闭水泵停止抽水。

仿真截图

请添加图片描述

软件、硬件框图

请添加图片描述

请添加图片描述 请添加图片描述

部分代码

/* 功能:土壤温湿度检测与自动浇花 */ #include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 #include sbit SCL=P1^4; //SCL定义为P1口的第3位脚,连接ADC0832SCL脚 sbit DO=P1^5; //DO定义为P1口的第4位脚,连接ADC0832DO脚 sbit CS=P1^3; //CS定义为P1口的第4位脚,连接ADC0832CS脚 sbit SCK_P = P2^1; // 时钟芯片DS1302的SCK管脚 sbit SDA_P = P2^2; // 时钟芯片DS1302的SDA管脚 sbit RST_P = P2^0; // 时钟芯片DS1302的RST管脚 sbit beep = P3^3; //蜂鸣器IO口定义 uint temperature,s_temp ; //温度的变量 uchar shidu; //湿度等级 uchar s_high = 70,s_low = 25; //湿度报警参数 sbit dianji = P1^6; //电机IO定义 bit flag_300ms ; uchar key_can; //按键值的变量 uchar menu_1; //菜单设计的变量 //这三个引脚参考资料 sbit rs=P1^0; //1602数据/命令选择引脚 H:数据 L:命令 sbit rw=P1^1; //1602读写引脚 H:数据寄存器 L:指令寄存器 sbit e =P1^2; //1602使能引脚 下降沿触发 uchar code table_num[]="0123456789abcdefg"; uchar TimeBuff[7]={17,9,1,6,18,30,40}; // 时间数组,默认2017年9月1日,星期五,18:30:40 /******************************************************************** * 名称 : delay_uint() * 功能 : 小延时。 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void delay_uint(uint q) { while(q--); } /******************************************************************** * 名称 : write_com(uchar com) * 功能 : 1602命令函数 * 输入 : 输入的命令值 * 输出 : 无 ***********************************************************************/ void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(25); e=0; } /******************************************************************** * 名称 : write_data(uchar dat) * 功能 : 1602写数据函数 * 输入 : 需要写入1602的数据 * 输出 : 无 ***********************************************************************/ void write_data(uchar dat) { e=0; rs=1; rw=0; P0=dat; delay_uint(3); e=1; delay_uint(25); e=0; } /*********************************************************/ // 液晶光标定位函数 /*********************************************************/ void LcdGotoXY(uchar hang,uchar add) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); } /*********************************************************/ // 液晶输出字符串函数 /*********************************************************/ void LcdPrintStr(uchar *str) { while(*str!='\0') write_data(*str++); } /*********************************************************/ // 液晶输出数字(0-99) /*********************************************************/ void LcdPrintNum(uint date) { write_data(0x30+date/10%10); write_data(0x30+date%10); } /******************************************************************** * 名称 : init_1602() * 功能 : 初始化1602液晶 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void init_1602() { write_com(0x38); write_com(0x38); write_com(0x0c); write_com(0x06); delay_uint(1000); LcdGotoXY(0,0); LcdPrintStr("20 - - : "); LcdGotoXY(1,0); LcdPrintStr(" shidu:00% "); } /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有