当前位置: 首页 > news >正文

42 基于单片机的智能浇花系统

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于51单片机,采样DHT11温湿度传感器检测温湿度,通过LCD1602显示
4*4按键矩阵可以设置温度湿度阈值,温度大于阈值则开启水泵,湿度大于阈值则开启风扇
并且通过串口实时打印温湿度信息。

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

编辑

三、程序编程

#include <REGX52.H>#include<intrins.h>#include<stdio.h>#include "Delay.h"#include "LCD1602.h"#include "MatrixKey.h"#define uchar unsigned char#define uint unsigned  intsbit Temp_data=P2^6;  //DHT11sbit beep = P3^4;
sbit out1 = P2^7;
sbit out2 = P3^7;
sbit out3 = P3^2;
sbit out4 = P3^3;unsigned char KeyNum;unsigned char rec\_dat\_lcd0\[6\];unsigned char rec\_dat\_lcd1\[6\];unsigned char rec\_dat\_lcd2\[6\];unsigned char rec\_dat\_lcd3\[6\];unsigned int rec\_dat\[4\];unsigned int password,count; //static int wdyz=50,sdyz=800;//温度、湿度、气压static uchar wd,sd;static int moshi=0;void ajpd();void DHT11\_delay\_us(unsigned char n);void DHT11\_delay\_ms(unsigned int z);void DHT11\_start();unsigned char DHT11\_rec\_byte();void DHT11\_receive();void beep\_warning();//延时msvoid DHT11\_delay\_ms(unsigned int z){    unsigned int i,j;    for(i=z; i>0; i--)        for(j=110; j>0; j--);
}//延时us   --2*n+5usvoid DHT11\_delay\_us(unsigned char n){    while(--n);
}//DHT11起始信号void DHT11_start(){Temp\_data=1;    DHT11\_delay_us(10);Temp\_data=0;    DHT11\_delay_ms(50);//这个延时不能过短,18ms以上,实际在仿真当中要想读到数据延时要在延时参数要在40以上才能出数据Temp\_data=1;    DHT11\_delay\_us(30);//这个延时不能过短}//接收一个字节unsigned char DHT11\_rec_byte(){    unsigned char i,dat=0;    for(i=0; i<8; i++){        while(!Temp\_data);        DHT11\_delay_us(8);dat <<=1;        if(Temp_data==1){dat +=1;}        while(Temp_data);}    return dat;
}//接收温湿度数据void DHT11\_receive(){    unsigned int R\_H,R\_L,T\_H,T\_L;    unsigned char RH,RL,TH,TL,revise;    DHT11\_start();Temp\_data=1;    if(Temp\_data==0){        while(Temp_data==0);   //等待拉高DHT11\_delay\_us(40);  //拉高后延时80usR\_H=DHT11\_rec_byte();    //接收湿度高八位R\_L=DHT11\_rec_byte();    //接收湿度低八位T\_H=DHT11\_rec_byte();    //接收温度高八位T\_L=DHT11\_rec_byte();    //接收温度低八位revise=DHT11\_rec\_byte(); //接收校正位DHT11\_delay\_us(25);    //结束if((R\_H+R\_L+T\_H+T\_L)==revise)      //校正{RH=R_H;RL=R_L;TH=T_H;TL=T_L;}        /*数据处理,方便显示*/rec_dat\[0\]=RH;rec_dat\[1\]=RL;rec_dat\[2\]=TH;rec_dat\[3\]=TL;}}void dht11(){	      DHT11\_delay\_ms(150);        DHT11\_receive();	      sprintf(rec\_dat\_lcd0,"%d",rec\_dat\[0\]);        sprintf(rec\_dat\_lcd1,"%d",rec\_dat\[1\]);        sprintf(rec\_dat\_lcd2,"%d",rec\_dat\[2\]);        sprintf(rec\_dat\_lcd3,"%d",rec\_dat\[3\]);        DHT11\_delay_ms(100);//	     //湿度LCD\_ShowString(2,5,rec\_dat_lcd0);  //湿度低位LCD\_ShowString(2,4,rec\_dat_lcd1);   //湿度高位//温度LCD\_ShowString(2,1,rec\_dat_lcd2); //温度低位LCD\_ShowString(2,0,rec\_dat_lcd3); //温度高位wd = rec\_dat\[3\]*10 + rec\_dat\[2\];sd = rec\_dat\[1\]*10 + rec\_dat\[0\];}void beep_warning()//蜂鸣器警报并且电机转动{	  if(wd>wdyz){out1= 1;out2= 0;beep = 1;		printf("温度异常,请维修人员来查看\\r\\n");	}	else {out1= 0;out2= 0;}		if(sd > sdyz){beep = 1;out3 = 1;out4= 0;		printf("湿度异常,请维修人员来查看\\r\\n");	}		else{out3 = 0;out4 = 0;}	if(wd>wdyz || sd>sdyz ){			beep = 1;}		else if(wd < wdyz && sd <sdyz){beep = 0;}
}//串口初始化void init_com(void){TMOD =0x20;		   //设T0为方式1,GATE=1;SCON=0x50;        //开启串口TH1=0xFD;          //波特率是9600bpsTL1=0xFD;TR1=1;			   //开启定时器TI=1;EA=1;
}void main()					  //主函数{	init\_com();	LCD\_Init();         //显示屏初始化beep = 0;	do{		dht11(); //温湿度获取ajpd();  //按键判断beep_warning();    //状态判断}  while(1);
}void ajpd()//按键判断{KeyNum = MatrixKey();//键盘输入的值进行传递if(KeyNum){			if(moshi == 0){	if(KeyNum <= 10) //把按键的范围定义在0~9{			if(count < 3){password*=10; //出水量左移一位password += KeyNum % 10; //获取一位出水量count++;    //计次++,对应出水量位数}			LCD_ShowNum(1,1,password,3); //LCD更新显示}	//确认键if(KeyNum == 11) //把11表示确认,对阈值进行确认{		 LCD_ShowNum(1,1,password,3); //LCD更新显示wdyz = password; //温度阈值}		//取消键if(KeyNum == 12){password = 0;count = 0;				LCD_ShowNum(1,1,password,3); //LCD更新显示}			if(KeyNum == 13)  //q切换{moshi++;password = 0;count = 0;				if(moshi>1){moshi = 0;}}} else if(moshi == 1){		if(KeyNum <= 10) //把按键的范围定义在0~9{			if(count < 3){password*=10; //出水量左移一位password += KeyNum % 10; //获取一位出水量count++;    //计次++,对应出水量位数}			LCD_ShowNum(1,5,password,3); //LCD更新显示}	//确认键if(KeyNum == 11) //把11表示确认,对阈值进行确认{		 LCD_ShowNum(1,5,password,3); //LCD更新显示sdyz = password;}		//取消键if(KeyNum == 12){password = 0;count = 0;				LCD_ShowNum(1,5,password,3); //LCD更新显示}			if(KeyNum == 13)  //q切换{moshi++;password = 0;count = 0;				if(moshi>1){moshi = 0;}}}}		}

四、实现现象

具体动态效果看B站演示视频:

B站演示视频

基于单片机的智能浇花系统

全部资料(源程序、仿真文件、安装包、演示视频、串口演示视频):
链接: https://pan.baidu.com/s/1qslNKA2Ae1augE-kXnlecQ?pwd=ky52 提取码: ky52

============================================================================================================================================================================================================================================================

相关文章:

42 基于单片机的智能浇花系统

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采样DHT11温湿度传感器检测温湿度&#xff0c;通过LCD1602显示 4*4按键矩阵可以设置温度湿度阈值&#xff0c;温度大于阈值则开启水泵&#xff0c;湿度大于阈值则开启风扇…...

乐橙云小程序插件接入HbuilderX

乐橙插件使用&#xff1a; 1.配置app.json文件&#xff0c;uniapp中在mainfest.json中配置 https://uniapp.dcloud.net.cn/collocation/manifest.html#mp-weixin ** 2、集成插件页面.json文件 ** uniapp在 pages.json 对应页面的 style -> usingComponents 引入组件&…...

VoCo-LLaMA: Towards Vision Compression with Large Language Models

视觉语言模型在各种多模态任务上取得了显著的成功&#xff0c;但经常受到有限上下文窗口和处理高分辨率图像输入和视频的高计算成本的瓶颈。视觉压缩可以通过减少视觉令牌数量避免该问题。先前方法使用额外模块压缩视觉令牌并强制LLM理解压缩的令牌。然而&#xff0c;LLM对视觉…...

Vue+vite 组件开发的环境准备

一.nodejs安装 进入Node.js 官网&#xff08;Node.js — Run JavaScript Everywhere&#xff09;&#xff0c;点击下载。 双击打开&#xff0c;进行安装 双击打开后&#xff0c;点击 next&#xff08;下一步&#xff09;,后面也是一直点击 next 无其他设置&#xff0c;直到 …...

基于社区发现的GraphRAG思路

GraphRAG出自2024年4月的论文《From Local to Global: A Graph RAG Approach to Query-Focused Summarization》&#xff0c;其代码也在2024年年中开源 。它在用图结构来完成RAG时&#xff0c;使用社区这个概念并基于社区摘要来回答一些概括性的问题。 Graph RAG流程如论文图1所…...

react学习记录

一、目录结构react优秀代码之react目录结构简洁之道React 作为一个库&#xff0c;不会决定你如何组织项目的结构。这是件好事&#xff0c;因为这样 - 掘金【React】项目的目录结构全面指南_react项目结构-CSDN博客 1、创建项目&#xff1a;开发文档 Getting Started | Create…...

Day2——需求分析与设计

教师端签到应用软件的需求分析&#xff1b; 产品经理如何写好产品需求文档&#xff08;附模板&#xff09; 需求分析是软件开发过程中的关键步骤&#xff0c;它确保了开发的软件能够满足用户的需求。以下是进行需求分析的具体步骤&#xff1a; 1. 确定分析目标 明确教师端签到…...

VScode离线下载扩展安装

在使用VScode下在扩展插件时&#xff0c;返现VScode搜索不到插件&#xff0c;网上搜了好多方法&#xff0c;都不是常规操作&#xff0c;解决起来十分麻烦&#xff0c;可以利用离线下载安装的方式安装插件&#xff01;亲测有效&#xff01;&#xff01;&#xff01; 1.找到VScod…...

【机器学习】机器学习的基本分类-监督学习-决策树(Decision Tree)

决策树是一种树形结构的机器学习模型&#xff0c;适用于分类和回归任务。它通过一系列基于特征的条件判断来将数据分割为多个子区域&#xff0c;从而预测目标变量的值。 1. 决策树的结构 根节点&#xff08;Root Node&#xff09; 决策树的起点&#xff0c;包含所有样本。根据某…...

【第 1 章 初识 C 语言】1.8 使用 C 语言的 7 个步骤

目录 1.8 使用 C 语言的 7 个步骤 1.8.1 第 1 步&#xff1a;定义程序的目标 1.8.2 第 2 步&#xff1a;设计程序 1.8.3 第 3 步&#xff1a;编写代码 1.8.4 第 4 步&#xff1a;编译 1.8.5 第 5 步&#xff1a;运行程序 1.8.6 第 6 步&#xff1a;测试和调试程序 1.8.…...

Docker 使用 Dockerfile 文件打包部署前端项目

编写 Dockerfile 文件&#xff1a; FROM nginx:latest ADD dist /etc/nginx/html/dist COPY nginx.conf /etc/nginx/nginx.conf ENV PATH /usr/sbin:$PATH EXPOSE 80 ENTRYPOINT ["nginx"] CMD ["-g","daemon off;"]编写 nginx.conf 文件&#…...

HTML-全

. CSS css后缀名的文件被html引用 在HTML中&#xff0c;CSS&#xff08;层叠样式表&#xff0c;Cascading Style Sheets&#xff09;是一种用于设置网页上的文本内容、图片布局和版面设计等外观样式的样式表语言。简单来说&#xff0c;CSS定义了HTML元素如何显示在浏览器中。…...

高效流程图绘制:开发设计流程图利器

在选择画流程图的工具时&#xff0c;不同的项目和使用场景会决定最佳的工具。以下是几款常见的流程图工具&#xff0c;并结合具体项目使用场景提供建议&#xff1a; 1. Lucidchart 特点&#xff1a; 在线协作&#xff1a;支持多人实时协作&#xff0c;适合团队合作。模板丰富&…...

数据仓库的概念

先用大白话讲一下&#xff0c;数据仓库的主要目的就是存储和分析大量结构化数据的。 > 那么它的核心目的是&#xff1a;支持商业智能&#xff08;BI&#xff09;和决策支持系统&#xff0c;也就是说&#xff0c;它不仅仅是为了存储&#xff0c;更重要的是为了分析提供便利。…...

AI - 谈谈RAG中的查询分析(2)

AI - 谈谈RAG中的查询分析&#xff08;2&#xff09; 大家好&#xff0c;RAG中的查询分析是比较有趣的一个点&#xff0c;内容丰富&#xff0c;并不是一句话能聊的清楚的。今天接着上一篇&#xff0c;继续探讨RAG中的查询分析&#xff0c;并在功能层面和代码层面持续改进。 功…...

Java基础面试题,46道Java基础八股文(4.8万字,30+手绘图)

Java是一种广泛使用的编程语言&#xff0c;由Sun Microsystems&#xff08;现为Oracle Corporation的一部分&#xff09;在1995年首次发布。它是一种面向对象的语言&#xff0c;这意味着它支持通过类和对象的概念来构造程序。 Java设计有一个核心理念&#xff1a;“编写一次&am…...

taro小程序马甲包插件

插件名 maloulab/taro-plugins-socksuppet-ci maloulab/taro-plugins-socksuppet-ci安装 yarn add maloulab/taro-plugins-socksuppet-ci or npm i maloulab/taro-plugins-socksuppet-ci插件描述 taro官方是提供了小程序集成插件的tarojs/plugin-mini-ci &#xff0c;且支持…...

【分组去重】.NET开源 ORM 框架 SqlSugar 系列

&#x1f4a5; .NET开源 ORM 框架 SqlSugar 系列 &#x1f389;&#x1f389;&#x1f389; 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…...

2020年

C D A C B B A B C B A 42...

基于Matlab卡尔曼滤波的GPS/INS集成导航系统研究与实现

随着智能交通和无人驾驶技术的迅猛发展&#xff0c;精确可靠的导航系统已成为提升车辆定位精度与安全性的重要技术。全球定位系统&#xff08;GPS&#xff09;和惯性导航系统&#xff08;INS&#xff09;在导航应用中各具优势&#xff1a;GPS提供全球定位信息&#xff0c;而INS…...

modbus-esp8266库深度解析:工业级Modbus协议栈实现

1. modbus-esp8266 库深度技术解析&#xff1a;面向工业嵌入式场景的全协议栈实现1.1 库定位与工程价值modbus-esp8266是当前 Arduino 生态中功能最完备、架构最严谨的 Modbus 协议栈实现&#xff0c;专为 ESP8266/ESP32 等资源受限但网络能力突出的 Wi-Fi 微控制器平台深度优化…...

基于django的社区设备报修住户反馈智能预测系统设计_1pyj28qj

前言本论文的研究目的是以Django架构为基础&#xff0c;建立一套针对住宅设施维修需求的住宅物业维修信息的智能预测系统。随着我国城镇化进程的持续推进&#xff0c;社区规模越来越大&#xff0c;传统的社区设施维修与信息处理模式已经很难满足现代化社区高效便捷管理的需要。…...

云原生应用的可观测性最佳实践

云原生应用的可观测性最佳实践 &#x1f525; 硬核开场 各位技术老铁&#xff0c;今天咱们聊聊云原生应用的可观测性最佳实践。别跟我扯那些理论&#xff0c;直接上干货&#xff01;在云原生时代&#xff0c;可观测性是系统可靠性的关键&#xff0c;它能帮助我们全面了解系统…...

终极游戏模组管理器:XXMI启动器让模组管理变得前所未有的简单

终极游戏模组管理器&#xff1a;XXMI启动器让模组管理变得前所未有的简单 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一个开源的多游戏模组管理平台&#xff0c…...

用快马快速构建API限流演示原型,直观理解rate limit exceeded

最近在开发一个需要调用第三方API的项目时&#xff0c;遇到了"rate limit exceeded"的错误提示。为了更直观地理解API限流机制&#xff0c;我决定用InsCode(快马)平台快速搭建一个演示原型。整个过程比想象中简单很多&#xff0c;分享下我的实现思路和经验。 项目构思…...

如何快速提升Windows性能:Win11Debloat一键优化指南

如何快速提升Windows性能&#xff1a;Win11Debloat一键优化指南 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and cust…...

如何快速将网页转换为Figma设计稿:5分钟完成HTML到Figma的无缝转换

如何快速将网页转换为Figma设计稿&#xff1a;5分钟完成HTML到Figma的无缝转换 【免费下载链接】figma-html Convert any website to editable Figma designs 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html HTML到Figma转换工具是一款能够将任何网站转换为可…...

独立创业自动化系统构建指南:从副业到被动收入的实践路径

独立创业自动化系统构建指南&#xff1a;从副业到被动收入的实践路径 【免费下载链接】opc-methodology 《一人企业方法论》第二版&#xff0c;也适合做其他副业&#xff08;比如自媒体、电商、数字商品&#xff09;的非技术人群。 项目地址: https://gitcode.com/GitHub_Tre…...

Qwen3-VL-2B-Instruct部署资源占用过高?显存压缩方案

Qwen3-VL-2B-Instruct部署资源占用过高&#xff1f;显存压缩方案 重要提示&#xff1a;本文介绍的显存优化方案适用于多种视觉语言模型部署场景&#xff0c;但具体效果可能因硬件配置和实际使用情况而有所差异。 1. 问题背景&#xff1a;为什么显存占用这么高&#xff1f; 如果…...

UniApp安卓端MQTT连接踩坑记:mqtt.js 3.0版本与原生插件到底怎么选?

UniApp安卓端MQTT方案深度对比&#xff1a;从协议适配到性能优化的实战指南 去年接手一个智能家居控制项目时&#xff0c;我曾在mqtt.js和原生插件之间反复横跳。那个凌晨三点还在调试WSS协议的夜晚让我明白——技术选型从来不是非黑即白的选择题。本文将用真实项目经验&#…...