IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 基于51单片机的智能浇花系统(可做毕设) -> 正文阅读

[嵌入式]基于51单片机的智能浇花系统(可做毕设)

对LCD1602原理和操作掌握不好的可以看这篇:
快速掌握——LCD1602液晶显示(多组实验,附带源程序)
按键可以参考这篇:
按键(独立按键、矩阵键盘)——附带程序
定时器可以参考这两篇
1、基于51的数码管电子时钟(显示时、分、秒)——定时器
2、基于51单片机的数码管时钟设计——按键修改时间

一、系统介绍

本系统主要由STC89C52单片机最小系统、土壤湿度传感器、温湿度检测传感器DHT11、ADC0832 芯片、LCD1602显示电路、水泵控制电路、按键设置电路以及电源电路构成。

工作过程是:
温湿度传感器DHT11将采集到的温湿度信号直接由数据接口传到单片机,单片机处理后再LCD1602上显示出来;传感器采集到湿度信号经ADC0832 A/D转换后传给单片机,经单片机处理后,在LCD1602上显示出湿度的具体数值,同时单片机将接收到的湿度信号与湿度的上下限比较,判断是否浇水。通过按键可以设置湿度的上下限,并在LCD上显示。

硬件材料:
单片机最小电路是我自己焊接的,材料和电路百度上就有,不想麻烦的可以直接买最小电路板,其他都是模块,直接在某宝买就行

材料型号不了解的私信我
系统结构框图

二、仿真展示

LCD显示内容介绍:
R:环境湿度
T:环境温度
H:土壤最高湿度值
L:土壤最低湿度值
S:土壤当前湿度值
>>>:手动浇水模式(不显示>>>为自动模式)

在这里插入图片描述

三、实物展示

在这里插入图片描述

四、仿真过程

在仿真的过程中用滑动变阻器代替湿度传感器。如下图,是启动仿真刚开始的情况。LCD1602上显示的湿度上限是60,湿度下限是30,当前湿度是62,超过湿度上限,所以LED灯没有被点亮,电动机也没有启动。
在这里插入图片描述

当调节滑动变阻器,使得阻值增大,即实际的湿度很小,如下图,此时在LCD1602上显示的湿度是26,低于湿度的下限,因此LED被点亮,电动机启动。
在这里插入图片描述
按键的调试。按键K1是菜单键,当按下第一次时,是对湿度的上限进行设置,K2是对湿度进行加,K3是对湿度进行减,如下图。
在这里插入图片描述

当K1被按下第二次时,是对湿度的下限进行设置,K2是对湿度进行加,K3是对湿度进行减,如下图。
在这里插入图片描述
当K1倍按下第三次时,是启动手动浇水模式,LCD的右下角会显示“>>>”,如下图,K2是启动,K3是停止。
在这里插入图片描述

五、代码

1、ADC0832

///ADC0832///

uchar adc0832() {
	uchar i,temp,temp1,num;
	CLK=0; DO=1;CS=0; CLK=1;  
	CLK=0; DO=1;      CLK=1;  
	CLK=0; DO=0;      CLK=1;  
	CLK=0; DO=1;
	for(i=0;i<8;i++){
		CLK=1;
		CLK=0;
		temp<<=1;
		if(DO)
			temp++;
	}
   	for(i=0;i<8;i++){
		temp1>>=1;
		if(DO)
			temp1+=0x80;
		CLK=1;
		CLK=0;							 
	}
	CLK=1;DO=1;
	CS=1;
	if(temp==temp1) 
		num=100-temp*99/255;    	//adat=100-adat*99/255;
	return num; 
}

2、LCD1602

/LCD1602

void Read_Busy(){                 //判忙
    unsigned char sta;      
    P0 = 0xff;
    lcd_rs= 0;
    lcd_rw = 1;
    do{
        lcd_e= 1;
        sta = P0;
        lcd_e = 0;   
    }
	while(sta & 0x80);
}

void Lcd1602_Write_Cmd(uchar cmd){     //写指令
    Read_Busy();
    lcd_rs = 0;
    lcd_rw = 0;
    P0= cmd;
    lcd_e = 1;
    lcd_e = 0;    
}

void Lcd1602_Write_Data(uchar dat){  //写数据
      Read_Busy();
      lcd_rs = 1;
      lcd_rw = 0;
      P0 = dat;
      lcd_e = 1;
      lcd_e = 0;
}

void init_lcd(){
	uchar code D[]="H:  ";
	uchar code T[]="L:  ";
	uchar code S[]="S:  ";
	uchar code R[]="R:  %";
	uchar code F[]="T:  ";

	.
	.
	.
	.
	.
}


3、按键

4、水泵

5、温湿度

6、定时器

void t0()interrupt 1{
	uchar count;
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
	count++;
	if(count>0&&count<=60){
		Wat=0;
	}
	if(count>60&&count<=120){
		if(count==120)count=0;
		Wat=1;
	}		
}

7、main.c

主函数///
void main() {
	TMOD=0x01;
	TH0=(65536-50000)/256;	
	TL0=(65536-50000)%256;
	EA=1;                  
	ET0=1;                
//	TR0=1;                
	k1n=0;
  	init_lcd();
	while(1){
		key0();
		if(k1n==0){
			adat=adc0832();
			water();
			disp0();		
		}
		if(k1n!=0){
			key1();
		}
	}
}

五、完整工程

基于51单片机智能浇花系统(可做毕设)(内含传感器资料和示例代码).zip

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2021-07-09 17:37:02  更:2021-07-09 17:37:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:40:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码