【Proteus仿真】【Arduino单片机】坐姿矫正提醒器设计

文章目录

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


一、功能简介

本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602液晶显示模块、HC-SR04超声波模块、蜂鸣器、按键、人体红外传感器等。

主要功能:
系统运行后,LCD1602显示超声波检测距离、计时时间、报警距离和定时时间;当检测有人时,计时器开启,如果检测坐姿距离小于阈值或者到达设定时间,蜂鸣器发出报警提示音;如果检测距离大于阈值或者手动按下K1键可取消报警;可通过K1和K2键调节定时时间,K3和K4键调节报警距离。


二、软件设计

/*
作者:嗨小易(QQ技术交流群:570487280)*///系统数据显示
void sys_data_show(void)
{u8 buf[5];while(1){//距离显示buf[0]=sys_ctrl.dis/100+0x30;buf[1]='.';buf[2]=sys_ctrl.dis%100/10+0x30;buf[3]=sys_ctrl.dis%100%10+0x30;buf[4]='\0';lcd1602_show_string(3,0,buf);//时间显示lcd1602_show_nums(10,0,sys_ctrl.time[0],2,0x80);lcd1602_show_nums(13,0,sys_ctrl.time[1],2,0x80);	//距离阈值显示buf[0]=sys_ctrl.dish/100+0x30;buf[1]='.';buf[2]=sys_ctrl.dish%100/10+0x30;buf[3]=sys_ctrl.dish%100%10+0x30;buf[4]='\0';lcd1602_show_string(3,1,buf);//设置时间显示lcd1602_show_nums(10,1,sys_ctrl.settime,2,0x80);break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//时间+if(key==KEY1_PRESS){if(sys_ctrl.alarmflag==0){sys_ctrl.settime++;if(sys_ctrl.settime>60)sys_ctrl.settime=1;}else//取消报警{sys_ctrl.alarmflag=0;sys_ctrl.time[0]=0;sys_ctrl.time[1]=0;	}	}//时间-else if(key==KEY2_PRESS){sys_ctrl.settime--;if(sys_ctrl.settime<1)sys_ctrl.settime=60;	}//距离+else if(key==KEY3_PRESS) {sys_ctrl.dish++;if(sys_ctrl.dish>400)sys_ctrl.dish=0;	}//距离-else if(key==KEY4_PRESS) {sys_ctrl.dish--;if(sys_ctrl.dish<0)sys_ctrl.dish=400;	}
}//系统功能控制
void sys_fun_ctrl(void)
{//如果红外检测到有人if(sys_ctrl.man==1){TR1=1;//打开定时器//如果距离小于阈值if(sys_ctrl.dis<sys_ctrl.dish)sys_ctrl.alarmflag=1;	else sys_ctrl.alarmflag=0;//如果时间到达设置值if(sys_ctrl.time[0]==sys_ctrl.settime){sys_ctrl.alarmflag=2;}			}//如果红外未检测到有人else{TR1=0;//关闭定时器sys_ctrl.alarmflag=0;sys_ctrl.time[0]=0;sys_ctrl.time[1]=0;			}if(sys_ctrl.alarmflag)beep_alarm(100,100);//提示音
}//应用控制系统
void appdemo_show(void)
{sys_parm_init();//系统参数初始化lcd1602_init();ultrasonicwave_init();time1_init();//定时器初始化,10mssys_open_show();//系统开机界面显示while(1){	sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制}
}

三、实验现象

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

联系作者

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

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

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

相关文章

Linux运维:在线/离线安装Telnet客户端和Telnet服务

Linux运维&#xff1a;在线/离线安装Telnet客户端和Telnet服务 前言1.1 在线安装Telnet1.2 离线安装Telnet1.3 Telnet服务有关的命令 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 前言 Telnet是一种用于远程登录到其他计算机的协议&…

未来已来!AI大模型引领科技革命

未来已来&#xff01;AI大模型正以惊人的速度引领着科技革命。随着科技的发展&#xff0c;人工智能在各个领域展现出了非凡的能力和潜力&#xff0c;大模型更是成为了科技领域的明星。从自然语言处理到图像识别&#xff0c;从智能推荐到语音识别&#xff0c;大模型的应用正在改…

Nuxt2升级Nuxt3指南(一):升级准备

一、项目环境说明 升级前&#xff1a;Node: 14.19.1; Nuxt&#xff1a;2.12.2&#xff1b;Vue&#xff1a;2.6.11&#xff1b;Element-UI&#xff1a;2.4.11 升级后&#xff1a; Node: 18.14.0 ; Nuxt: 3.10.3&#xff1b;Vue&#xff1a;3.4.19&#xff1b;Element-Plus&#…

分布式数字身份:通往Web3.0世界的个人钥匙

数字化时代&#xff0c;个人身份已不再仅仅局限于传统形式&#xff0c;分布式数字身份&#xff08;Decentralized Identity&#xff0c;简称DID&#xff09;正崭露头角&#xff0c;它允许个人通过数字签名等加密技术&#xff0c;完全掌握和控制自己的身份信息。研究报告显示&am…

Polar 写shell

Polar 写shell 直接给了源码 还是没啥好说的&#xff0c;考点是die()死亡函数绕过之不同变量 **绕过原理&#xff1a; **通过base64解密或rot13解密使"<?php exit();"变为乱码&#xff0c;而传入的$content为base64编码&#xff0c;解码后为正常shell语句。通过…

智慧城市中的数字孪生:构建城市管理的未来框架

目录 一、引言 二、数字孪生技术概述 三、数字孪生技术在智慧城市中的应用 1、实时监测与预警 2、模拟与优化 3、智能化决策 4、协同与共享 四、数字孪生技术构建城市管理的未来框架的价值 1、提高管理效率 2、优化资源配置 3、提升公共服务水平 4、增强应对突发事…

K8s集群调度,亲和性,污点,容忍,排障

目录 1.调度约束 调度过程 指定调度节点 查看详细事件 获取标签帮助 修改成 nodeSelector 调度方式 2.亲和性 节点亲和性 Pod 亲和性 键值运算关系 硬策略 软策略 Pod亲和性与反亲和性 创建一个标签为 appmyapp01 的 Pod 使用 Pod 亲和性调度&#xff0c;创建多…

32单片机基础:TIM输入捕获

指定的电平跳变&#xff0c;就是上升沿或者下降沿&#xff0c;可以通过程序设置 PWMI模式&#xff0c;就是PWM的输入模式&#xff0c;是专门为测量PWM频率和占空比设计的&#xff0c; 可配合主从触发模式 这两个功能结合起来&#xff0c;测量频率占空比就是硬件全自动运行的…

分类算法入门:以鸢尾花数据集为例

近两年人工智能技术蓬勃发展&#xff0c;OpenAI连续放出ChatGPT、Sora等“王炸”产品&#xff0c;大模型、AIGC等技术带来了革命性的提升&#xff0c;很多人认为人工智能将引领第四次工业革命。国内各大互联网公司也是重点投资布局&#xff0c;从个人角度来说要尽快跟上时代的潮…

MyBatis操作数据库(SQL注入)

本文主要来讲解6大标签&#xff0c;以便更好的MyBatis操作数据库&#xff01; <if>标签<trim>标签<where>标签<set>标签<foreach>标签<include>标签 前提需求&#xff1a; MyBatis是一个持久层框架&#xff0c;和Spring没有任何关系&…

静态时序分析:SDC约束命令set_fasle_path详解

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 目录 指定建立/保持时间检查 指定上升/下降沿 指定时序路径起点 删除虚假路径 添加注释 简单使用 写在最后 在之前的文章中&#xff0c;我们讨论了如何使…

持续集成(CICD)- Jenkins+Git+gogs综合实战(笔记二)

文章目录 七、拉取代码方法一:直接填写命令进行拉取(不建议用这种)方法二:使用源码管理拉取代码步骤一:确认环境(检查自己是否有Git插件)步骤二:构建项目时对项目的源码管理选择 Git步骤三:输入你仓库的SSH地址或者https地址,并且添加gitee的用户名和密方法一和方法二…