基于单片机红外感应智能卫生间系统仿真

news2024/9/22 14:52:48

文章目录

  • 前言
  • 资料获取
  • 设计介绍
  • 功能介绍
  • 设计程序
  • 具体实现截图
  • 设计获取


前言

💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗
👇🏻 精彩专栏 推荐订阅👇🏻
单片机设计精品实战案例
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人

资料获取

文章底部名片,详细资料联系我。

设计介绍

本篇文章针对目前我国国内目前智能家居的发展设计了一套智能卫生间系统,这个系统的控制系统是基于STC89C52RC的。该系统由人体感应模块、按键模块、温度检测模块、照明控制模块等组成。与传统的卫生间相比,智能卫生间更加的智能化。可以根据屋内有无人的判断进行节水节电的工作;平时有人忘关水龙头的行为也可以利用智能卫生间的功能做到人走断水。为了节省平时冲马桶的用水量,也可通过检测如厕量的多少从而智能的选择冲水量。通过理论与实践的结合,可知,本控制系统具有成本低、结构简单、智能化、操作简洁、性能稳定等优点,一定程度上符合现阶段智能家居的发展,对进一步对水资源、电力资源的节约提供了一个良好的解决方案

功能介绍

1该系统能够自动识别房间有人和无人,并且根据有人和无人的情况,分别让不同的设备开启或关闭。
2房间有人时:
a)红外检测有人时,“有人指示灯”亮,并点亮照明系统。
b)冲厕开关与GND短接时,冲厕水泵开启3秒断开;两次冲厕时间间隔10秒。
c)洗手开关与GND短接时,洗手水泵开启3–7秒断开;两次洗手时间间隔7秒。
d)内风机转,全功率工作。
3房间无人状态下:
a)红外检测无人时,“无人指示灯”亮,照明系统不工作。
b)内风机转,半功率工作。
4用一个可调电阻,来调节洗手时间(0-4秒)。
5报警开关与GND短接时,蜂鸣器响。
整个系统的控制中心就是STC89C52最小系统模块,实现对所有数据的接受与处理功能,并且发出各种所需要的指令,让卫生间变得更加智能。

设计程序

/智能垃圾箱系统
#include <AT89X52.h>
#include <string.h>                               // 包含头文件    
Typedf signed   char      int8;                 // 有符号8位整型变量
typedef unsigned char      uint8;                // 无符号8位整型变量
typedef signed   int       int16;                // 有符号16位整型变量
typedef unsigned int       uint16;               // 无符号16位整型变量
static uint8 ds0,i;//定义全局变量
static uint16 ds1;//定义全局变量
sbit rtgy     = P3 ^ 6;                    // 人体感应输入
sbit key_open = P3 ^ 7;                    // 手动开盖按钮
sbit key_xz   = P2 ^ 1;                    // 手动自动选择
sbit out_dj  = P2 ^ 0;					  // 舵机输出
sbit out_gg  = P1 ^ 2;					  // 关盖指示
sbit out_kg  = P1 ^ 1;					  // 开盖指示
sbit out_cgq = P1 ^ 0;					  // 传感器指示
/********************************************************************************
* 函数名称:DelaymS()
* 功    能:1mS延时函数
* 入口参数:16位整型    延时时间(mS)
void DelaymS(uint16 b){
	uint8 i;
	while( -b != 0){
		for(i = 0; i < 92; i++);
	}
}


//中断程序
* 函数名称:time0_1_int()
* 功    能:定时中断0/1初始化
***********************************************************************************/
void time0_1_int(void) {
	TMOD=0x01;//time0方式1,16位定时器
	TH0=0xfe;//装载初始值0.5ms)
	TL0=0x3;
	ET0=1;//开T0中断
	TR0=1;//启动定时中断T0
	EA=1//开中断
	}

/*********************************************************************************
* 函数名称:time0_fun()interrupt1
* 功    能:定时中断0服务子程序
**********************************************************************************/
void time0_fun()interrupt 1 {
	TH0=0xfe;//重装载初始值
	TL0=0x33;
	ds0++;
	ds1++;
	if(ds0>40){ds0=0;}



/********************************************************************************************/
舵机控制程序开始
/********************************************************************************
* 函数名称:dj()
* 功    能:舵机控制
* 入口参数:角度
* 出口参数:无
*******************************************************************************/
void  dj(uint16 j)
{
	switch (j)
{
	case 0  :i=1;break; //
	case 45 :i=2;break; //
	case 90 :i=3;break; //
	case 135:i=4;break; //
	case 180:i=5;break; //
	case 225:i=6;break; // 

	default:break;
}
	if(ds0==0){out_dj=1;}
	if(ds0==i){out_dj=0;}
}					

/********************************************************************************************
//系统主程序 
//main()
*********************************************************************************************/    
void main (void){
	uint8 kgbz=1;
	time0_1_int();
	while (1)
	{
		if (key_xz)
		{
			if (rtg  && kgbz==1){
				ds1=0;
				while (ds1<800){
					dj(90);
				}kgbz=0;
				out_kg=0;
				out_gg=1;
			}
			if (!rtgy && kgbz==0){
				ds1=0;
				while (ds1<800){
					dj(0 );
				}kgbz=1;
				out_kg=1;
				out_gg=0;
			if (rtgy){
				out_cgq=0;
			}else{
				out_cgq=1;
			}
		}
		if (!key_xz)
		{
			out_cgq=1;
			if (!key_open && kgbz==1){
				DelaymS(100);
				while (!key_open);
				ds1=0;
				while (ds1<800){
					dj(90);
				}kgbz=0;
				out_kg=0;
				out_gg=1;
			}
			if (!key_open && kgbz==0){
				DelaymS(100);
				while (!key_open);
				ds1=0;
				while (ds1<800){
					dj(0 );
				}kgbz=1;
				out_kg=1;
				out_gg=0;
			}



具体实现截图

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

设计获取

文章下方名片联系我即可~

精彩专栏推荐订阅:在下方专栏👇🏻

毕业设计精品实战案例

收藏关注不迷路!!

🌟文末获取设计🌟

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

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

相关文章

基于微信小程序的智慧物业管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

设置VsCode搜索时排除文件,文件列表中隐藏文件

按照《VsCode gdb gdbserver远程调试C程序》中介绍的方法&#xff0c;配置好VsCode后&#xff0c;打开一个C/C工程&#xff0c;发现左侧的面板会显示编译时生成的中间文件&#xff08;比如.d和.o文件&#xff09;。我们可以通过设置隐藏掉一些我们不需要打开的文件以简洁面板…

Class path contains multiple SLF4J bindings.

最近由于要改kafka成datahub&#xff0c;于是在pom文件上引入了 <dependency><groupId>com.aliyun.datahub</groupId><artifactId>aliyun-sdk-datahub</artifactId><version>2.25.1</version> </dependency> 然后让我去测试…

C语言中if else组合

一 bool变量与“零值”进行比较 bool 变量与“零值”进行比较的 if 语句怎么写&#xff1f; bool bTestFlag FALSE;//想想为什么一般初始化为 FALSE 比较好&#xff1f; A), if(bTestFlag 0); if(bTestFlag 1); B), if(bTestFlag TRUE); if(bTestFlag FLASE); C), if(b…

WPF DataGrid 动态修改某一个单元格的样式

WPF DataGrid 动态修改某一个单元格的样式 <DataGrid Name"main_datagrid_display" Width"1267" Height"193" Grid.Column"1"ItemsSource"{Binding DataGridModels}"><DataGrid.Columns><!--ElementStyle 设…

libreoffice word转pdf

一、准备一个word文件 运行&#xff1a; cd /root libreoffice --headless --convert-to pdf --outdir /root/output doc1.docx 发现中文乱码&#xff1a; 此时我们需要给linux 上添加中文字体&#xff1a; centos7 添加中文字体 再次运行正常&#xff1a; libreoffice --h…

61. 旋转链表【 力扣(LeetCode) 】

零、原题链接 61. 旋转链表 一、题目描述 给你一个链表的头节点 head &#xff0c;旋转链表&#xff0c;将链表每个节点向右移动 k 个位置。 二、测试用例 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&#xff1a;[4,5,1,2,3]示例 2&#xff1a; 输入…

828华为云征文 | 在Huawei Cloud EulerOS系统中安装Docker的详细步骤与常见问题解决

前言 Docker是一种轻量级的容器技术&#xff0c;广泛用于应用程序的开发、部署和运维。在华为云的欧拉&#xff08;Huawei Cloud EulerOS&#xff09;系统上安装和运行Docker&#xff0c;虽然与CentOS有相似之处&#xff0c;但在具体实现过程中&#xff0c;可能会遇到一些系统…

【ArcGIS微课1000例】0123:数据库中要素类批量转为shapefile

除了ArcGIS之外的其他GIS平台,想要打开ArcGIS数据库,可能无法直接打开,为了便于使用shp,建议直接将数据库中要素类批量转为shapefile。 文章目录 一、连接至数据库二、要素批量转shp一、连接至数据库 打开ArcMap,或者打开ArcCatalog,找到数据库连接,如下图: 数据库为个…

Maven的详细解读和配置

目录 一、Maven 1.1 引言 1.2 介绍 1.3 下载安装 1.3.1 解压 1.3.2 配置环境变量 1.3.3 测试 1.4 仓库[了解] 1.5 Maven配置 1.5.1 修改仓库位置 1.5.2 设置镜像 二、IDEA - MAVEN 2.1 idea关联maven 2.2 为新项目设置 2.2 创建java项目[重点] 2.3 java项目结构…

连续数组问题

目录 一题目&#xff1a; 二思路&#xff1a; 三代码&#xff1a; 一题目&#xff1a; leetcode链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 二思路&#xff1a; 思路&#xff1a;前缀和&#xff08;第二种&#xff09;化0为-1hash&#xff1a; 这样可以把…

C++入门12——详解多态1

目录 1.多态的概念 2.多态的定义与实现 2.1多态构成的条件 2.2虚函数 2.3虚函数的重写 虚函数重写的两个例外&#xff1a; 1.协变(基类与派生类虚函数返回值类型不同) 2.析构函数的重写(基类与派生类析构函数的名字不同) 2.4 C11 override 和 final 2.5 重载、覆盖(…

机器学习周报(9.16-9.22)-Pytorch学习(四)

文章目录 摘要Abstract1 完整模型训练套路及模型验证套路1.1 模型及训练代码1.2 利用GPU训练模型1.3 完整的模型验证&#xff08;测试&#xff09;套路 2 CNN 实现mnist手写数字识别2.1 网络模型搭建2.2 测试训练好的模型 总结 摘要 通过学习CNN模型的训练及验证套路&#xff…

【服务器入门】Linux系统基础知识

【服务器入门】Linux系统基础知识 远程登录与文件传输基础命令与文本编辑vi/vim使用shell脚本基本命令1、目录操作2、文件创建与删改3、文件连接与查看 参考 目前超算使用的系统以Linux系统为主&#xff0c;肯定需要了解一些相关知识。本博客就以本人运行WRF模型所需&#xff0…

LeetCode[中等] 155. 最小栈

设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…

Docker配置代理解决pull超时问题

操作系统: CentOS Linux 8 Docker版本: 26.1.3 前置&#xff1a;你需拥有&#x1f431; 1. 配置 proxy.conf 1.1 创建配置文件目录 创建 docker.service.d&#xff0c;进入到 docker.service.d 中打开 proxy.conf (没有文件打开会自动创建)。 注意&#xff1a;每个人的路径可…

【数据结构-二维差分】力扣2536. 子矩阵元素加 1

给你一个正整数 n &#xff0c;表示最初有一个 n x n 、下标从 0 开始的整数矩阵 mat &#xff0c;矩阵中填满了 0 。 另给你一个二维整数数组 query 。针对每个查询 query[i] [row1i, col1i, row2i, col2i] &#xff0c;请你执行下述操作&#xff1a; 找出 左上角 为 (row1…

【漏洞复现】Nacos Derby SQL注入漏洞

Nacos Derby SQL注入漏洞 Nacos Derby SQL注入漏洞&#xff08;CNVD-2020-67618&#xff09;是一个重要的安全问题&#xff0c;它涉及到Nacos中使用的Derby数据库存在的SQL注入风险。SQL注入是一种攻击手段&#xff0c;攻击者通过在应用程序的输入字段中插入恶意的SQL代码&…

Day6:反转链表

题目&#xff1a;给你单链表的头节点head&#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 输入&#xff1a;head[1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] public ListNode reverseList() {if (head null) {return head;}ListNode cur head.next;head.next null…

virtualbox中的网络模式,网络设置,固定IP

virtualbox关于网络设置的文档&#xff1a;https://www.virtualbox.org/manual/topics/networkingdetails.html#networkingdetails DHCP Dynamic Host Configuration Protocol&#xff1a;动态主机配置协议&#xff0c;是专门用来给网络中的节点分发IP地址&#xff0c;确保每…