首页 > 其他分享 >基于51单片机的灌溉系统【温湿度,定时,水量,LCD1602】(仿真)

基于51单片机的灌溉系统【温湿度,定时,水量,LCD1602】(仿真)

时间:2024-03-25 23:30:30浏览次数:19  
标签:uchar 温湿度 1602 51 write 单片机 add uint com

自动灌溉系统

1、系统分为湿度控制模式和定时模式

2、湿度控制模式下,当湿度低于下限时启动水泵,高于上限时停止水泵

3、定时模式下,当计时时间到达设定值时,启动水泵。水量可设置

4、设置湿度上下限、加水水量

#include "lcd1602.h"

void delay_uint(uint i)
{
	while(i--);
}
/********************************************************************
* 名称 : write_com(uchar com)
* 功能 : 1602命令函数
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
void write_com(uchar com)
{
	e=0;
	rs=0;
	rw=0;
	P0=com;
	delay_uint(20);
	e=1;
	delay_uint(20);
	e=0;
}

/********************************************************************
* 名称 : write_data(uchar dat)
* 功能 : 1602写数据函数
* 输入 : 需要写入1602的数据
* 输出 : 无
***********************************************************************/
void write_data(uchar dat)
{
	e=0;
	rs=1;
	rw=0;
	P0=dat;
	delay_uint(20);
	e=1;
	delay_uint(20);
	e=0;	
}

/********************************************************************
* 名称 : write_sfm(uchar hang,uchar add,uchar date)
* 功能 : 设置当前行和列
* 输入 : 行,列
* 输出 : 无
***********************************************************************/
void write_sfm(uchar hang,uchar add)
{
	if(hang==1)   			   //设置当前行
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);	
}

/********************************************************************
* 名称 : write_string(uchar hang,uchar add,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
	 	 write_string(1,5,"ab cd ef;")
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
		while(1)
		{
			if(*p == '\0')  break;
			write_data(*p);
			p++;
		}	
}

/********************************************************************
* 名称 : init_1602()
* 功能 : 初始化1602液晶 
* 输入 : 无
* 输出 : 无
***********************************************************************/
void init_1602()
{
	write_com(0x38);						//数据总线为8位,显示2行,5x7点阵
	write_com(0x0c);						//开显示,有光标,光标闪烁
	write_com(0x06);						//光标自动右移
	delay_uint(1000);						//等待设置完成
}

资料借鉴于此纷传

标签:uchar,温湿度,1602,51,write,单片机,add,uint,com
From: https://blog.csdn.net/qq_63964231/article/details/137029410

相关文章

  • 基于51单片机的教室灯控制【光照,手动自动,LCD1602】(仿真)
    教室光控1、系统分为自动模式和手动模式2、自动模式:根据光照强度调节亮灯的数量3、手动模式:按键控制灯的亮灭4、LCD1602显示系统状态#include"lcd1602.h"voiddelay_uint(uinti){ while(i--);}/*************************************************************......
  • 1-1 初识C51单片机的各种准备工作
    大家好呀,这里是小X。相信大家已经准备好进行51单片机的开发了。但对于现在的我们来说,人来了,魂没来。魂来了,电脑没准备好。当我们满怀信心的把咱们的开发板连到电脑上,熟悉的提示音响起,然后——没了。对,是这么离谱。就像找网课要去小破站,上百度要戳小红书(不是广子),想要进行......
  • 代码随想录第18天 | 513.找左下角的值 112.路径总和
    513.找左下角的值513.找树左下角的值-力扣(LeetCode)代码随想录(programmercarl.com)怎么找二叉树的左下角?递归中又带回溯了,怎么办?|LeetCode:513.找二叉树左下角的值_哔哩哔哩_bilibili给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假......
  • 基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集
    基于LabVIEW上位机与Arduino单片机串口通信的DS18B20环境温度采集Arduino代码#include<OneWire.h>#include<DallasTemperature.h>#defineONE_WIRE_BUS2//DS18B20接至Arduino数字口2OneWireoneWire(ONE_WIRE_BUS);DallasTemperaturesensors(&oneWire);byteco......
  • 51单片机扩展4G模块
    1.1:产品型号1.1.1:单片机:STC89C51RC1.1.2:4G模块:塔石的E36V-S1.2:实现功能可以在没有WiFi的户外实现远程控制设备的开关等功能。2.1:所需硬件单片机、4G模块、双路5V控制220V继电器、杜邦线若干、水阀(我这里远程控制水阀)2.2:硬件连线通过USB用电脑给单片机供电。4G模块的V......
  • 0082-基于单片机的双电机调速仿真设计
    功能描述1、采用51/52单片机作为主控芯片;2、采用L298作为电机驱动两台电机;3、通过按键控制两台电机启动、转向调速、停止;4、通过LED指示两台电机运行状态;仿真设计采用Proteus作为仿真设计工具。Proteus是一款著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围......
  • 代码随想录算法训练营第五十七/天 | 516. 最长回文子序列,647. 回文子串
     动态规划最强总结篇!如今动态规划已经讲解了42道经典题目,共50篇文章,是时候做一篇总结了。关于动态规划,在专题第一篇关于动态规划,你该了解这些! (opensnewwindow)就说了动规五部曲,而且强调了五部对解动规题目至关重要!这是Carl做过一百多道动规题目总结出来的经验结晶啊......
  • SQLYOG连接数据库时报错1251
    报错图片报错原因:主要是由于mysql8以前的加密规则与mysql8以后的存在差异,一些版本旧的客户端和服务端版本差别太大!解决办法:1.修改加密规则(注意引号为英文单引号,后面结尾的分号必须带上,@符号和引号之间无空格,下同)ALTERUSER'root'@'localhost'IDENTIFIEDBY'passwor......
  • 【机器学习300问】51、余弦相似度一般用在哪儿?
    一、基础知识扫盲(1)欧式距离        想象你在一个平坦的公园里,看到两个孩子分别在不同的游乐设施上玩耍。你想知道他们之间有多远。直觉的方法就是拉直测量绳,量一下他们直线距离有多远。在数学中,这就是所谓的欧式距离,也就是两点间直线的最短距离。在多维空间中,欧式距......
  • 代码随想录算法训练营Day51 ||leetCode 309.最佳买卖股票时机含冷冻期 || 714.买卖股
    309.最佳买卖股票时机含冷冻期  需要新添加状态classSolution{public:intmaxProfit(vector<int>&prices){intn=prices.size();if(n==0)return0;vector<vector<int>>dp(n,vector<int>(4,0));dp[0][0]......