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

【Proteus仿真】【STM32单片机】基于单片机的智能晾衣架控制系统

文章目录

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


一、功能简介

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


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据设置
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 || USART1_RX_BUF[0]==OPEN_CMD){USART1_RX_BUF[0]=0;sys_ctrl.run=!sys_ctrl.run;if(sys_ctrl.run==1)//开{_dc_motor_zturn();delay_ms(500);_dc_motor_stop();}else//关{_dc_motor_fturn();delay_ms(500);_dc_motor_stop();}}}
}//系统功能控制
void sys_fun_ctrl(void)
{//自动模式if(sys_ctrl.auto_flag==0){//正常模式下if(sys_ctrl.mode==0){//如果白天if(sys_ctrl.light>sys_ctrl.lightl){//如果下雨或大风,关闭晾衣架if(sys_ctrl.rain==1 || sys_ctrl.wind>=sys_ctrl.windh){//如果晾衣架已打开,关闭晾衣架if(sys_ctrl.run==1){sys_ctrl.run=0;_dc_motor_fturn();beep_alarm(40,2000);delay_ms(500);_dc_motor_stop();}}//没有下雨或大风else {//如果温度高于阈值if(sys_ctrl.temp>sys_ctrl.temph){//如果湿度低于阈值if(sys_ctrl.humi<sys_ctrl.humil){//如果晾衣架已关闭,打开晾衣架if(sys_ctrl.run==0){sys_ctrl.run=1;_dc_motor_zturn();delay_ms(500);_dc_motor_stop();}}//如果湿度高于阈值else {//如果晾衣架已打开,关闭晾衣架if(sys_ctrl.run==1){sys_ctrl.run=0;_dc_motor_fturn();delay_ms(500);_dc_motor_stop();}}}}}//如果晚上else{//如果晾衣架打开则关闭if(sys_ctrl.run==1){sys_ctrl.run=0;_dc_motor_fturn();delay_ms(500);_dc_motor_stop();}}}}
}//应用控制系统
void appdemo_show(void)
{u8 i=5;sys_parm_init();//系统参数初始化KEY_Init();BEEP_Init();DHT11_Init();ctrl_pin_init();pcf8591_init();dc_motor_init();USART1_Init(9600);while(i--){//读取DHT11温湿度值DHT11_Read_Data(&sys_ctrl.temp,&sys_ctrl.humi);delay_ms(100);}lcd1604_init();//LCD1604初始化sys_open_show();//系统初始界面显示while(1){sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制		}
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

http://www.lryc.cn/news/175023.html

相关文章:

  • C/C++代码静态检测工具PC-Lint常见错误总结
  • 概率深度学习建模数据不确定性
  • Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解
  • 【ELK】日志系统部署
  • 【算法挨揍日记】day08——30. 串联所有单词的子串、76. 最小覆盖子串
  • SpringCloud Gateway--网关服务基本介绍和基本原理
  • 使用Vue-cli构建spa项目及结构解析
  • 自定义Unity组件——AudioManager(音频管理器)
  • leetcode 558 设计内存文件系统
  • Haproxy负载均衡群集
  • 什么是面包屑导航?
  • VS2019创建GIt仓库时剔除文件或目录
  • 计算机等级考试—信息安全三级真题六
  • vue循环滚动字幕
  • 扩展pytest接口自动化框架-MS数据解析功能
  • docker容器安装MongoDB数据库
  • Python机器学习实战-特征重要性分析方法(3):迭代删除法:Leave-one-out(附源码和实现效果)
  • Go的error接口
  • RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列
  • 高项新版教程(第四版)解读+学习指导
  • 【Debian】Debian10.0.0安装选项问答
  • 【基于React-Native做位置信息获取,并展示出来】
  • ansible安装、点对点Ad-Hoc、模块、剧本Playbook
  • Ceph入门到精通-ceph pool 删除导致 misplaced 的原因
  • 计算机组成原理课程设计
  • 《从菜鸟到大师之路 MySQL 篇》
  • 使用qt完善对话框功能
  • Day 03 python学习笔记
  • 优化类问题概述
  • 第一个 Go 程序“hello,world“ 与 main 函数