【Proteus仿真】【51单片机】智能晾衣架设计

news2024/10/1 7:37:22

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用LCD1604液晶、按键、蜂鸣器、L298N电机、PCF8591 ADC模块、DHT11温湿度传感器、雨滴传感器、风速、光线传感器等。
主要功能:
系统运行后,LCD1604显示传感器检测的温湿度、光线强度和风速,工作模式,以及相应阈值,系统工作状态等;系统默认为自动模式,
可通过K4键切换为手动模式,此时可通过K1键来控制晾衣架的开和关;若系统处于自动模式时,可通过K3键进入阈值设置模式,K1和K2键调节各阈值参数,K4确定保存。如果检测光线强度低于阈值,光线暗,晚上或阴雨天,此时晾衣架关闭;如果检测光线强度高于阈值,光线强,白天,此时如果下雨或大风,关闭晾衣架,否则如果温度高于阈值且湿度低于阈值,代表晴天,打开晾衣架;如果湿度高于阈值,则关闭晾衣架;手动模式下,可通过串口远程控制,发送十六进制0X11指令实现开关控制;


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/


//系统数据显示
void sys_data_show(void)
{
	while(1)
	{	
		//温度显示
		lcd1604_show_nums(3,0,sys_ctrl.temp,2,0);
		//湿度显示
		lcd1604_show_nums(3,1,sys_ctrl.humi,2,0);
		//自动/手动状态显示
		if(sys_ctrl.auto_flag==1)lcd1604_show_string(14,0,"SD");
		else lcd1604_show_string(14,0,"Au");
		
		//下雨状态显示
		if(sys_ctrl.rain==1)lcd1604_show_string(14,1,"Y");
		else lcd1604_show_string(14,1,"N");
		
		//光线显示
		lcd1604_show_nums(3,2,sys_ctrl.light,2,0);
		//风速显示
		lcd1604_show_nums(3,3,sys_ctrl.wind,2,0);
		
		//开关状态显示
		if(sys_ctrl.run==1)lcd1604_show_string(13,3," ON");
		else lcd1604_show_string(13,3,"OFF");
		
		//温度阈值显示
		lcd1604_show_nums(7,0,sys_ctrl.temph,2,0);
		//湿度阈值显示
		lcd1604_show_nums(7,1,sys_ctrl.humil,2,0);	
		//光线阈值显示
		lcd1604_show_nums(7,2,sys_ctrl.lightl,2,0);
		//风速阈值显示
		lcd1604_show_nums(6,3,sys_ctrl.windh,2,0x80);		
		
		//阈值闪烁
		switch(sys_ctrl.mode)
		{
			case 1://温度
				lcd1604_show_string(7,0,"  ");
				delay_ms(50);
				lcd1604_show_nums(7,0,sys_ctrl.temph,2,0);
				break;
			case 2://湿度
				lcd1604_show_string(7,1,"  ");
				delay_ms(50);
				lcd1604_show_nums(7,1,sys_ctrl.humil,2,0);
				break;
			case 3://光线
				lcd1604_show_string(7,2,"  ");
				delay_ms(50);
				lcd1604_show_nums(7,2,sys_ctrl.lightl,2,0);
				break;
			case 4://风速
				lcd1604_show_string(6,3,"  ");
				delay_ms(50);
				lcd1604_show_nums(6,3,sys_ctrl.windh,2,0x80);
				break;
		}

		break;			
	}
}

//系统数据设置
void sys_data_set(void)
{
	u8 key=0;

	key=key_scan(0);
	//确定/自动手动
	if(key==KEY4_PRESS)
	{
		if(sys_ctrl.mode!=0)//确定
		{
			sys_ctrl.mode=0;
		}
		else//自动/手动 
		{
			sys_ctrl.auto_flag=!sys_ctrl.auto_flag;
		}
	}
	//自动模式
	if(sys_ctrl.auto_flag==0)
	{
		//阈值设置
		if(key==KEY3_PRESS)
		{
			sys_ctrl.mode++;
			if(sys_ctrl.mode>4)sys_ctrl.mode=1;
		}
		//加
		else if(key==KEY1_PRESS)
		{
			switch(sys_ctrl.mode)
			{
				case 1://温度
					sys_ctrl.temph++;
					if(sys_ctrl.temph>99)sys_ctrl.temph=0;
					break;
				case 2://湿度
					sys_ctrl.humil++;
					if(sys_ctrl.humil>99)sys_ctrl.humil=0;
					break;
				case 3://光线
					sys_ctrl.lightl++;
					if(sys_ctrl.lightl>99)sys_ctrl.lightl=0;
					break;
				case 4://风速
					sys_ctrl.windh++;
					if(sys_ctrl.windh>10)sys_ctrl.windh=1;
					break;
			}
		}
		//减
		else if(key==KEY2_PRESS)
		{
			switch(sys_ctrl.mode)
			{
				case 1://温度
					sys_ctrl.temph--;
					if(sys_ctrl.temph<0)sys_ctrl.temph=99;
					break;
				case 2://湿度
					sys_ctrl.humil--;
					if(sys_ctrl.humil<0)sys_ctrl.humil=99;
					break;
				case 3://光线
					sys_ctrl.lightl--;
					if(sys_ctrl.lightl<0)sys_ctrl.lightl=99;
					break;
				case 4://风速
					sys_ctrl.windh--;
					if(sys_ctrl.windh<0)sys_ctrl.windh=10;
					break;
			}
		}
	}
	//手动模式
	else
	{
		//开/关
		if(key==KEY1_PRESS)
		{
			sys_ctrl.run=!sys_ctrl.run;
			if(sys_ctrl.run==1)//开
			{
				motor_fr_run();
				delay_ms(500);
				motor_stop();
			}
			else//关
			{
				motor_rev_run();
				delay_ms(500);
				motor_stop();
			}
		}
	}
}



三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

视频地址:https://space.bilibili.com/444388619/video
专注于51单片机、STM32、国产32、DSP、Proteus、arduino、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1261356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

负公差智能测径仪 升级体验智能仪器

负公差轧制离不开智能测径仪 受自动化控制程度限制&#xff0c;一些工艺流程的操作还是依靠工人经验来完成&#xff0c;由于个人工作技能水平限制&#xff0c;尺寸控制极不稳定&#xff0c;因此控制台就需要及时准确的了解成品钢的尺寸及重量。现在信息的沟通主要依靠电话。取样…

excel合并单元格教程

在表格里&#xff0c;总是会遇到一级表格、二级表格的区别&#xff0c;这时候一级表格会需要合并成一个大格子&#xff0c;那么excel如何合并单元格呢&#xff0c;其实使用快捷键或者功能键就可以了。 excel如何合并单元格&#xff1a; 1、首先我们用鼠标选中所有要合并的单元…

geemap学习笔记015:下载哨兵2号(Sentinel-2)数据

前言 使用GEE下载数据应该是最常见的功能了&#xff0c;今天就介绍一下如何使用geemap下载哨兵2号(Sentinel-2)数据&#xff0c;分别包括自己画感兴趣&#xff0c;以及利用Assets中的shp文件进行下载。 1 自己画感兴趣下载哨兵2号影像 import geemap import eeMap geemap.M…

北美区域性确定性预测系统平均温度数据

区域确定性预测系统&#xff08;RDPS&#xff09; 区域确定性预测系统 (RDPS) 进行物理计算&#xff0c;以 10.0 公里网格&#xff08;1/11 度&#xff09;空间分辨率对当天到未来 48 小时内的大气元素进行确定性预测。平均温度数据覆盖北美&#xff0c;由加拿大气象局 (MSC) …

Python语言学习笔记之四(Python文档化)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 Python文档化是指在Python代码中添加注释和文档字符串&#xff0c;以提供有关代码的详细信息和说明。 文档的…

最简单的英文网站

代码图&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>College Job Website</title> <link rel"stylesheet" href"https://cdn.staticfile.org/…

java学习part17final

110-面向对象(高级)-关键字final的使用及真题_哔哩哔哩_bilibili 1.概念 tips&#xff1a;java里有const关键字&#xff0c;但是用于保留字&#xff0c;不会使用&#xff0c;目前没有意义。 final变量没有默认赋值&#xff0c;只能在以下三个地方赋值&#xff0c;且只能赋值一…

数据结构_D6(231126)

①二分折半查找 ②单排快排主调

20231128让RK3399的挖掘机开发板在Andorid12系统下永不休眠

20231128让RK3399的挖掘机开发板在Andorid12系统下永不休眠 2023/11/28 7:56 适用于SOC以及系统版本&#xff1a; RK3399&#xff1a;Android10/11/12 RK3568&#xff1a;Android11/12 RK3588&#xff1a;Android12 缘起&#xff0c;调试的时候&#xff0c;RK3399的挖掘机开发板…

vue3+ts 指令拖拽案例

<template><div class"box" v-move><div class"header"></div><div>内容</div></div> </template><script setup lang"ts"> import { ref, Directive, DirectiveBinding } from "vu…

PLC与组态王之间Modbus无线通讯的从站设置

本方案主要详述了在多台西门子300PLC与组态王之间Modbus无线通讯中如何设置从站。方案中所用到的无线通讯终端是DTD434MC——欧美系PLC专用无线通讯终端。 一、方案概述 无线Modbus网络组成如下&#xff1a; 二、测试背景 ● PC端组态软件版本&#xff1a;组态王6.55 ● 默…

京东秒杀之秒杀详情

1 编写前端页面&#xff08;商品详情&#xff09; <!DOCTYPE html> <head><title>商品详情</title><meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /><script type"text/javascript" src&…

HTML页面开发

html简单页面开发&#xff0c;主要用来测试 1. 开发环境&#xff1a;VScode 1. 在某路径下先新建文件夹&#xff0c;打开VScode打开文件夹&#xff0c;新建文件&#xff0c;文件命名为index.html 2. 安装库 open in browser 库安装完成后&#xff0c;在编写文本位置右击->op…

RK3568 android11 实现双路I2C触摸 --gt9xx

一&#xff0c;GT911 触摸屏简介 它的接口类型为 I2C &#xff0c;供电电压和通讯电压均为 3.3V 。这款电容触摸屏内置了上拉电阻&#xff0c;这意味着我们的开发板上与该触摸屏的接口处不需要设置上拉电阻。关于线序&#xff0c;同样是 GT911 &#xff0c;不同批次的器件都有…

【JMeter】配置元件

1. 元件的分类 HTTP Request Default 作用&#xff1a; 可以配置成通用的信息&#xff0c;可复用 ​​​​​​​ JDBC Connection Configuration 作用&#xff1a;连接数据库 前提&#xff1a; 下载好对应数据类型的jar包 ​​​​​​​ HTTP Header Manager信息头管理…

Scanner常用知识点

在Java中&#xff0c;Scanner类是用于读取用户输入的工具类&#xff0c;可以从多种输入源读取数据&#xff0c;如标准输入流、文件或字符串。以下是一些Scanner类的常用知识点&#xff1a; Scanner的初始化&#xff1a;在使用Scanner类之前&#xff0c;需要先将其导入到你的Ja…

基于SSM的零食物语购物商城的设计与实现

基于SSM的零食物语购物商城的设计与实现 摘要&#xff1a;“日常网购”作为一种比传统购物更便捷的方式&#xff0c;越来越受到大众的欢迎和认可。因此&#xff0c;系统的设计和应用技术对零食购物商城网站的要求越来越高&#xff0c;于是本系统应运而生。基于SSM[1]的零食购物…

android开发:安卓13Wifi和热点查看与设置功能

近日对安卓热点功能做了一些技术验证&#xff0c;目的是想利用手机开热点给设备做初始化&#xff0c;用的是安卓13&#xff0c;简言之&#xff1a; 热点设置功能不可用&#xff0c;不可设置SSID和密码&#xff0c;不可程序控制开启关闭&#xff0c;网上的代码统统都过时了Loca…

Matplotlib线形图的创建_Python数据分析与可视化

线形图的创建 绘制线形图设置颜色和风格设置坐标轴上下限设置图形标签 绘制线形图 在所有图形中&#xff0c;最简单的应该就是线性方程y f (x) 的可视化了。来看看如何创建这个简单的线形图。要画Matplotlib图形时&#xff0c;都需要先创建一个图形fig 和一个坐标轴ax。创建图…

抖音小店百货类目还能不能玩?卷不卷?

抖音小店百货类目还能不能玩&#xff1f;日用百货这个类目可以说是抖店里面最热门的一个类目了&#xff0c;因为客单价低&#xff0c;好出单&#xff0c;而且操作技术门槛也低&#xff0c;所以很多新手进入者市场之后&#xff0c;第一个店铺就是百货类目的&#xff0c;那现阶段…