【Proteus仿真】【Arduino单片机】视力保护仪

文章目录

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


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使LCD1602液晶,DS18B20温度传感器、按键、蜂鸣器、继电器开关、HC05蓝牙模块等。
主要功能:
系统运行后,LCD1602显示温度、温度阈值,定时时间及状态信息等;如果温度高于阈值,则开关关闭,且蜂鸣器报警。
如果温度低于阈值,当定时器状态开启,定时结束,开关关闭,发出提示音。正常模式下,可通过K1键对开关的开和关控制。
通过K3键进入阈值设置模式,可通过K3选择需修改的数据位置,K1和K2调节,当需要开启定时器时,需将状态由N设置为Y,K4键确定并返回正常模式。可通过蓝牙发送字符’O’远程打开开关,发送字符’C’关闭。


二、软件设计

/*
作者:嗨小易(QQVIP群2:570487280)*///系统数据显示
void sys_data_show(void)
{while(1){//距离显示lcd1602_show_nums(2,0,sys_ctrl.dis,3,0);//光线显示lcd1602_show_nums(2,1,sys_ctrl.light,2,0);//有无开启计时状态显示if(sys_ctrl.timeflag==1)lcd1602_show_string(15,0,"Y");else lcd1602_show_string(15,0,"N");//时间显示lcd1602_show_nums(11,1,sys_ctrl.time[0],2,0x80);lcd1602_show_nums(14,1,sys_ctrl.time[1],2,0x80);//距离阈值显示lcd1602_show_nums(8,0,sys_ctrl.disl,3,0);//光线阈值显示lcd1602_show_nums(6,1,sys_ctrl.lightl,2,0);//设置参数闪烁switch(sys_ctrl.mode){case 1://距离lcd1602_show_string(8,0,"   ");delay_ms(50);lcd1602_show_nums(8,0,sys_ctrl.disl,3,0);break;case 2://光线lcd1602_show_string(6,1,"  ");delay_ms(50);lcd1602_show_nums(6,1,sys_ctrl.lightl,2,0);break;}break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>2)sys_ctrl.mode=1;}//阈值设置模式if(sys_ctrl.mode!=0){//加if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://距离sys_ctrl.disl++;if(sys_ctrl.disl>500)sys_ctrl.disl=0;break;case 2://光线sys_ctrl.lightl++;if(sys_ctrl.lightl>99)sys_ctrl.lightl=0;break;}	}//减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://距离sys_ctrl.disl--;if(sys_ctrl.disl<0)sys_ctrl.disl=500;break;case 2://光线sys_ctrl.lightl--;if(sys_ctrl.lightl<0)sys_ctrl.lightl=99;break;}	}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;	}	}//正常模式else{//计时器开关if(key==KEY1_PRESS){sys_ctrl.timeflag=!sys_ctrl.timeflag;if(sys_ctrl.timeflag==1){TR1=1;//打开定时器}else{TR1=0;//关闭定时器sys_ctrl.time[0]=0;sys_ctrl.time[1]=0;}	}}
}//系统功能控制
void sys_fun_ctrl(void)
{//正常模式if(sys_ctrl.mode==0){//如果光线强度低于阈值,指示灯亮,蜂鸣器报警if(sys_ctrl.light<sys_ctrl.lightl){LED_LIGHT=0;beep_alarm(1,1000);		}//如果光线强度正常,指示灯灭,报警取消else{LED_LIGHT=1;	}//如果检测距离低于阈值,指示灯亮,蜂鸣器报警if(sys_ctrl.dis<sys_ctrl.disl){LED_DIS=0;beep_alarm(1,1000);	}//如果检测距离正常,指示灯灭,报警取消else{LED_DIS=1;	}//如果开启计时if(sys_ctrl.timeflag){//如果计时到达60分钟,指示灯亮,蜂鸣器报警if(sys_ctrl.time[0]==60){LED_TIME=0;beep_alarm(1,1000);}}}	
}

三、实验现象

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

联系作者

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

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

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

相关文章

js键盘事件keydown事件,防止重复触发,组合键的配合使用

js键盘事件keydown事件&#xff0c;防止重复触发 键盘事件类型主要有三种&#xff1a; keydown 、keypress(不建议使用&#xff0c;部分浏览器已放弃)和 keyup 。 添加普通键盘keydown事件 // 监听键盘按下事件document.addEventListener(keydown, function(event) {// 输出按…

搭建动态网站之——基于Redhat8.6搭建Discuz论坛

目录 一、动态网站与静态网站区别 1、提供用户互动接口的动态网站 2、搭建动态网站的需求&#xff1a; 二、搭建步骤 第一步&#xff1a;www服务器配置 第二步;编辑网页文件 第三步&#xff1a;使用xftp 将Discuz包传到/discuz解压 1、将Discuz包移动到/discuz 2、解压…

ArkTS @Observed、@ObjectLink状态装饰器的使用

作用 Observed、ObjectLink装饰器用于在涉及嵌套对象或者数组元素为对象的场景中进行双向数据同步。 状态的使用 1.嵌套对象 我们将父类设置为Observed状态&#xff0c;这个时候&#xff0c;子应该设置ObjectLink才能完成数据的双向绑定&#xff0c;所以我们构建一个组件&…

C语言插入排序算法及代码

一、原理 在待排序的数组里&#xff0c;从数组的第二个数字开始&#xff0c;通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后向前扫描&#xff0c;找到相应位置并插入。 二、代码部分 #include<stdio.h> #include<stdlib.h> int ma…

通过样例数据补全中间数据

import numpy as np from scipy.interpolate import CubicSpline# 已知的数据点 known_points [(1, 384423), (61,415097),(121,470247),(541,491876),(601,428462)]# 提取已知数据点的x和y值 x_known, y_known zip(*known_points)# 生成所有数据点的x值 x_all list(range(0…

Android的基础开发

基础开发 listView ListView就是列表条目&#xff0c;可以向下滚动&#xff0c;也可以点击。 首先设置两个视图布局 activity_main2.xml【充当容器{ListView}】 <ListViewandroid:layout_width"match_parent"android:layout_height"match_parent"a…

HDShredder 7,符合 NCSC 及 NIST SP 800-88R1 等国际权威安全清除标准

HDShredder 是德国 Miray 公司多年研发推出的符合国际数据销毁标准的数据清除软件&#xff0c;是国内外市场中为数不多的基于物理清除原理的数据清除软件。 HDShredder 用于在物理层面上彻底地清除 HDD, SSD, eMMC, NVMe, UFS, CompactFlash, SD/MMC 卡(甚至SAS, SCSI, IDE, R…

AWS向量数据库Amazon OpenSearch Service使用测评

前言 在大模型盛行的当今&#xff0c;选择适宜的数据库显得尤为重要。因为你需要面对海量训练数据&#xff0c;快速的检索至关紧要&#xff0c;以及对于存储的要求也是至关重要的。对于海量的数据查询和存储是需要巨大的算力支持。向量数据库常用在一些图像文本或者视频的生成…

AuthenticationEntryPoint和AccessDeniedHandler接口用法

文章目录 场景实现配置 场景 AccessDeniedHandler 访问一个需要需要认证的资源,身份认证成功(登录成功) 但是角色和权限不足时 该接口会被调用, 用来返回: 重定向到错误页面、返回特定的错误响应等 AuthenticationEntryPoint 接口是 Spring Security 中的一个接口&#xff0c;用…

【大数据存储与处理】实验二 HBase 过滤器操作

实验二 HBase 过滤器操作 【实验目的】&#xff1a; 1.掌握使用 HBase 过滤器进行全表扫描。 【实验内容与要求】&#xff1a; 在 HBase 中&#xff0c;Get 和 Scan 操作都可以使用过滤器来设置输出的范围&#xff0c;类似于 SQL 里面 的 Where 查询条件。使用 show_filte…

vue2组件引入错误

问题描述 import CategoryList from /components/CategoryList/index.vue components: {CategoryList}, 使用以上代码正常引入 但是代码提醒没有任何反应 并且控制台显示 Unknown custom element: <Category> - did you register the component correctly? For recu…

【VScode和Leecode的爱恨情仇】command ‘leetcode.signin‘ not found

文章目录 一、关于command ‘leetcode.signin‘ not found的问题二、解决方案第一&#xff0c;没有下载Nodejs&#xff1b;第二&#xff0c;有没有在VScode中配置Nodejs第三&#xff0c;力扣的默认在VScode请求地址中请求头错误首先搞定配置其次搞定登入登入方法一&#xff1a;…

@FeignClient注解详解

FeignClient FeignClient 是 Spring Cloud 中用于声明一个 Feign 客户端的注解。Feign 是一个声明式的 Web Service 客户端&#xff0c;它的目的是让编写 HTTP 客户端变得更简单。通过 Feign&#xff0c;只需要创建一个接口&#xff0c;并使用注解来描述请求&#xff0c;就可以…

obswebsocket+douyinAPI+python,教你如何三步搭建自己的AI美女直播间,24小时的永动机

一&#xff1a;什么是AI直播美女直播间 就是在直播的时候通过弹幕进行选择不同的ai人物进行跳舞的直播间大致就是 可以看到左边是有提示&#xff0c;根据观众刷礼物的不同进行选择某一个AI人物进行展示&#xff0c;怎么通过技术手段实现呢 二&#xff1a;你需要懂的 其实还…

vmware安装银河麒麟V10高级服务器操作系统

vmware安装银河麒麟V10高级服务器操作系统 1、下载银河麒麟V10镜像2、VMware安装银河麒麟V10高级服务器操作系统2.1、新建虚拟机2.2、安装虚拟机 3、配置银河麒麟V10高级服务器操作系统3.1、安装vmware tools3.2、配置静态IP地址 和 dns3.3、查看磁盘分区 1、下载银河麒麟V10镜…

AI工具网站汇总——学习的好帮手

一、聊天AI 1.ChatGPT 地表最强AI聊天机器人 网址&#xff1a;https://chat.openai.com 2.Anthropic Anthropic发布的与ChatGPT竞争的聊天机器人 网址&#xff1a;https://www.anthropic.com 3.文心一言 百度全新知识增强大语言模型&#xff01;国产聊天机器人 网址&…

你想成为Linux高手吗?这些技巧你必须知道

系统信息 arch 显示机器的处理器架构 name -m 显示机器的处理器架构 name -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 -(SMBIOS/DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试读取操作 cat /proc/cpuinfo …

so-vits-svc的使用

1. 启动工程 找到工程的路径&#xff0c;找到启动的bat文件&#xff0c;这里以 d:/so-vits-svc为例。 2. 启动过程 启动后会出现cmp的一个弹框&#xff0c;初始启动相对较慢&#xff0c;请耐心等待一会儿&#xff0c;启动完成后&#xff0c;会出现一个页面&#xff0c;如下…

JDK各个版本特性讲解-JDK14特性

JDK各个版本特性讲解-JDK14特性 一、Java14概述二、语法层面的变化1. instanceof2. switch表达式3. 文本块的改进4. Records记录类型 二、关于GC1.G1的NUMA内存分配优化2. 弃用SerialCMS,ParNewSerial Old3.删除CMS4.ZGC on macOS and Windows 三、其他变化1.友好的空指针异常提…

HAproxy做七层代理+keepalived高可用,实现动静分离,由nginx处理静态页面,tomcat处理动态页面

目录 一、三种软负载均衡器的区别 关于三种负载均衡器的性能对比&#xff1a; 关于三种负载均衡器的代理类型对比&#xff1a; 关于三种负载均衡器的健康检查对比&#xff1a; 二、haproxy的8中负载均衡调度算法 haproxy的会话保持的方式 haproxy的配置文件学习 三、实操…