【Proteus仿真】【Arduino单片机】智能感应温控风扇

文章目录

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


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602液晶显示模块、DS18B20温度、按键、声光报警、L293D电机驱动等。

主要功能:
系统运行后,LCD1602显示传感器检测的温度值;
当红外传感器检测到有人信号时,
默认以自动模式运行,若按下K4键切换为手动模式,此时可以
通过K1和K2控制风扇加减速,风扇档位共5档(0-5)。当再次按下K4键切换为自动
模式;自动模式下,实时检测温度值,当温度高于上限且在2C范围内,以3档运行。
当温度高于上限且在4C范围内,以4档运行。当温度高于上限且在6C范围内,以5挡
运行。当温度高于上限且超过6C范围,以5档运行且蜂鸣器报警。
若温度在上下限范围内,风扇以2档运行。
若温度低于下限,风扇停止。
可通过K3键进入阈值设置,K1和K2调节。
当红外传感器未检测到有人信号时,风扇停止。


二、软件设计

/*
作者:嗨小易(技术QQ群:570487280)
*///系统数据显示
void sys_data_show(void)
{u8 buf[5];while(1){//温度显示buf[0]=sys_ctrl.temp/100+0x30;buf[1]=sys_ctrl.temp%100/10+0x30;buf[2]='.';buf[3]=sys_ctrl.temp%100%10+0x30;buf[4]='\0';lcd1602_show_string(3,0,buf);//温度阈值显示lcd1602_show_nums(6,1,sys_ctrl.templ,2,0);lcd1602_show_nums(9,1,sys_ctrl.temph,2,0);//阈值闪烁指示switch(sys_ctrl.mode){case 1://温度下限lcd1602_show_string(6,1,"  ");delay_ms(50);lcd1602_show_nums(6,1,sys_ctrl.templ,2,0);break;case 2://温度上限lcd1602_show_string(9,1,"  ");delay_ms(50);lcd1602_show_nums(9,1,sys_ctrl.temph,2,0);break;}//档位显示lcd1602_show_nums(10,0,sys_ctrl.gear,1,0);//手动状态显示if(sys_ctrl.auto_flag)lcd1602_show_string(14,0,"SD");else lcd1602_show_string(14,0,"Au");//有无人检测信号显示if(sys_ctrl.man==1)lcd1602_show_string(13,1,"Yes");else lcd1602_show_string(13,1," No");break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//自动手动模式设置if(key==KEY4_PRESS){sys_ctrl.auto_flag=!sys_ctrl.auto_flag;}//阈值模式设置else if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>2)sys_ctrl.mode=0;}//阈值设置模式下,K1和K2加减if(sys_ctrl.mode!=0){//加if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://温度下限sys_ctrl.templ++;if(sys_ctrl.templ>99)sys_ctrl.templ=0;break;case 2://温度上限sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;}	}//减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://温度下限sys_ctrl.templ--;if(sys_ctrl.templ<0)sys_ctrl.templ=99;break;case 2://温度上限sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;}	}	}//手动模式下,档位调节if(sys_ctrl.auto_flag==1){//加速if(key==KEY1_PRESS){sys_ctrl.gear++;if(sys_ctrl.gear>5)sys_ctrl.gear=5;}//减速else if(key==KEY2_PRESS){sys_ctrl.gear--;if(sys_ctrl.gear<0)sys_ctrl.gear=0;}		}
}//系统功能控制
void sys_fun_ctrl(void)
{//如果红外检测到有人if(sys_ctrl.man==1){//手动模式下,速度控制if(sys_ctrl.auto_flag==1){pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比	}//自动模式下,速度控制else{//如果温度高于上限,温度越高,风扇越快if(sys_ctrl.temp>=sys_ctrl.temph*10){if(sys_ctrl.temp>=sys_ctrl.temph*10 && sys_ctrl.temp<sys_ctrl.temph*10+20)sys_ctrl.gear=3;else if(sys_ctrl.temp>=sys_ctrl.temph*10+20 && sys_ctrl.temp<sys_ctrl.temph*10+40)sys_ctrl.gear=4;else if(sys_ctrl.temp>=sys_ctrl.temph*10+40)sys_ctrl.gear=5;			}//如果温度低于下限,风扇停止else if(sys_ctrl.temp<=sys_ctrl.templ*10)sys_ctrl.gear=0;//温度在阈值范围内,风扇以固定速度运行else sys_ctrl.gear=2;pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比}		}//如果红外未检测到有人else{sys_ctrl.gear=0;pwm_set_duty_cycle(sys_ctrl.gear*20);//占空比	}
}

三、实验现象

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


联系作者

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

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

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

相关文章

高级JavaScript。同步和异步,阻塞和非阻塞

同步阻塞 同步非阻塞 异步阻塞 异步非阻塞 在当什么是同步和异步&#xff0c;阻塞与非阻塞的概念还没弄清楚之前&#xff0c;更别提上面这些组合术语了&#xff0c;只会让你更加困惑。 同步和异步 同步和异步其实指的是&#xff0c;请求发起方对消息结果的获取是主动发起…

uniCloud - 云函数 的基本使用

目录 基本概念 简介 快速上手 1.新建云函数 2.使用云函数 callFunction方法 云函数的入参 获取云函数调用来源 云函数的返回格式 uniCloud响应体规范 总结案例 新建云函数 使用云函数 展示 基本概念 云函数即在云端&#xff08;服务器端&#xff09;运行的函数。…

SpringFramework实战指南(二)

SpringFramework实战指南&#xff08;二&#xff09; 2.1 Spring 和 SpringFramework概念2.2 SpringFramework主要功能模块2.3 SpringFramework 主要优势 2.1 Spring 和 SpringFramework概念 Spring-ioc 广义的 Spring&#xff1a;Spring 技术栈&#xff08;全家桶&#xff0…

odoo17基础培训1-odoo开发基础知识准备以及odoo17开发环境安装

odoo17基础培训 一、odoo开发基础知识准备以及odoo17开发环境安装 1、odoo是什么&#xff1f; 当我介绍客户使用odoo系统作为业务管理平台时&#xff0c;有时会被问到Odoo是什么&#xff1f; 简单点&#xff0c;可以这么说&#xff1a; Odoo是一套完整的系统&#xff0c;是…

ssm基于web的电影购票系统+vue论文

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统电影购票信息管理难度大&#xff0c;容错率低&#xff0c…

Python基础知识:整理14 利用pyecharts生成地图

1 地图可视化的基本使用 from pyecharts.charts import Map from pyecharts.options import VisualMapOpts # 准备地图对象 map Map()# 准备数据 data [("北京市", 8), ("上海市", 99), ("广州省", 199), ("重庆市", 400), ("…

DSL查询文档--各种查询

DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1查询所有 结果&#xff1a; 2全文检索&#xff08;full text&#xff09;查询 常见的全文检索查询包括&#xff1a; match查询&#xff1a;单字段查询 multi_match查询&#xff1a;多字段查询&#xff…

.NET开源免费、企业级、可商用内容管理系统 - SSCMS

前言 今天给大家推荐一款基于.NET Core开源、企业级、可商用、能够以最低的成本、最少的人力投入在最短的时间内架设一个功能齐全、性能优异、规模庞大并易于维护的内容管理系统&#xff1a;SSCMS。 系统官方介绍 SSCMS 内容管理系统基于微软 .NET Core 平台开发&#xff0c…

黑马程序员SpringBoot2-开发实用篇

视频连接&#xff1a;开发实用篇-67-手工启动热部署_哔哩哔哩_bilibili 热部署 手动启动热部署 热部署仅包含restart的过程。 自动启动热部署 按CtrlAltShift/打开下列界面。 禁用热部署 配置高级 ConfigurationProperties 宽松绑定/松散绑定 常用计量单位绑定 数据校验 设置…

Android音视频编码(2)

Android本身提供了音视频编解码工具&#xff0c;很多时候是不需要第三方工具的&#xff0c;比如ffmpeg, OpenCV等&#xff0c;在android中引入第三库比较复杂&#xff0c;在Android音视频编码中介绍了如何引入第三方库libpng来进行进行图片处理&#xff0c;同时引入这些第三方库…

JVM内存区域详解,一文弄懂JVM内存【内存分布、回收算法、垃圾回收器】

视频讲解地址 学习文档 一、内存区域 区域描述线程私有如何溢出程序计数器为了线程切换后能恢复到正确的执行位置&#xff0c;每个线程都要有一个独立的程序计数器。✅唯一一个不会内存溢出的地方虚拟机栈1. 每个方法执行的时候&#xff0c;Java虚拟机都会同步创建一个栈帧用于…

获取当前设备的IP

背景&#xff1a; 在本地使用自带webUI的项目时&#xff0c;需要制定webUI的访问地址。 一般本地访问使用&#xff1a;127.0.0.1&#xff0c;配置为可以从其他设备访问时&#xff0c;需要指定当前设备的IP&#xff0c;或者指定为0.0.0.0。 例如&#xff1a;使用locust的时候&a…

【Python学习】Python学习18- 方法OS 文件/目录方法

目录 【Python学习】Python学习17- File方法 前言os.access()语法&#xff1a; os.chdir(path)语法 os.chflags(path, flags)语法 os.chmod(path, mode)os.chown(path, uid, gid)os.chroot(path)os.close(fd)os.unlink(path)os.popen(command[, mode[, bufsize]])os.read(fd, …

Python--循环语句

在 Python 中&#xff0c;循环语句用于重复执行一段代码多次。Python 主要提供了两种类型的循环&#xff1a;for 循环和 while 循环。 1. for 循环 for 循环用于遍历可迭代对象&#xff08;如列表、元组、字典、字符串等&#xff09;中的每个元素&#xff0c;并对每个元素执行…

精通业务:资深程序员的核心优势

在IT行业&#xff0c;我们常常听到关于技术实力、项目经验、团队协作等方面的讨论&#xff0c;但有一个重要因素常常被忽视&#xff0c;那就是对业务的了解。 对于资深程序员来说&#xff0c;懂业务和不懂业务之间的区别&#xff0c;犹如一道深邃的鸿沟&#xff0c;决定着他们…

MCS-51---串行通信的特点

目录 一.同步通信和异步通信 1.异步通信 2.同步通信 二.串行通信的方式 1.单工 2.半双工 3.全双工 三.串行通信的速率 四.MCS-51单片机结构 五.串行口的控制 1.串行口控制寄存器(SCON) 2.电源控制寄存器(PCON) 六.波特率的设计 七.串行口的工作方式 1.方式0 2.…

DM数据库安装注意事项

数据库安装注意事项 一、安装前 一些参数需要在数据库创建实例前找用户确认。 参数名参数掩码参数值备注数据页大小PAGE_SIZE32数据文件使用的页大小(缺省使用8K&#xff0c;建议默认&#xff1a;32)&#xff0c;可以为 4K、8K、16K 或 32K 之一&#xff0c;选择的页大小越大…

k8s存储卷之动态

动态pv需要两个组件 1、卷插件&#xff0c;k8s本身支持的动态pv创建不包含NFS&#xff0c;需要声明和安装一个外部插件 Provisioner 存储分配器&#xff0c;动态创建pv&#xff0c;然后根据pvc的请求自动绑定和使用 2、StorageClass&#xff0c;用来定义pv的属性&#xff0c…

选择和训练模型(Machine Learning 研习之十一)

当您看到本文标题时&#xff0c;不禁感叹&#xff0c;总算是到了训练模型这一节了。 是啊&#xff0c;在之前的文章中&#xff0c;我们对数据进行了探索&#xff0c;以及对一个训练集和一个测试集进行了采样&#xff0c;也编写了一个预处理管道来自动清理&#xff0c;准备您的数…

大数据赋能电竞出海企业发展

近几年电竞行业发展迅速&#xff0c;我国单2022年新增近4万家电竞相关企业&#xff0c;竞争十分激烈。中国电竞市场规模在全球占比19%左右&#xff0c;海外有巨大的增量市场&#xff0c;特别是东南亚、中南亚和拉丁美洲是电竞市场增长最快的地区&#xff0c;在2020至2025年期间…