【Proteus仿真】【STM32单片机】安全驾驶检测系统

文章目录

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


一、功能简介

系统运行后,LCD1602显示传感器检测的酒精浓度和CO2值,以及阈值;若按下K3键进入阈值设置模式,默认以酒精阈值开始位置闪烁;再次按下K3键则进入CO2阈值闪烁,如此循环。可通过K1和K2调节阈值,当设定好后按下K4键确定并返回主界面;
如果酒精浓度或CO2高于阈值,声光报警;否则关闭报警;
如果酒精浓度高于阈值,则开启制动装置,否则关闭;


二、软件设计

/*
作者:嗨小易(QQ:3443792007)*///系统数据显示
void sys_data_show(void)
{while(1){//酒精浓度显示lcd1602_show_nums(5,0,sys_ctrl.alco,2,0);//CO2浓度显示lcd1602_show_nums(5,1,sys_ctrl.co2,2,0);//酒精浓度阈值显示lcd1602_show_nums(13,0,sys_ctrl.alcoh,2,0);//CO2阈值显示lcd1602_show_nums(13,1,sys_ctrl.co2h,2,0);//设置阈值下,数字闪烁提示switch(sys_ctrl.mode){case 1://酒精lcd1602_show_string(13,0,"  ");delay_ms(30);lcd1602_show_nums(13,0,sys_ctrl.alcoh,2,0);break;case 2://CO2lcd1602_show_string(13,1,"  ");delay_ms(30);lcd1602_show_nums(13,1,sys_ctrl.co2h,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;}//在设置模式下,加else if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://酒精上限 sys_ctrl.alcoh++;if(sys_ctrl.alcoh>99)sys_ctrl.alcoh=0;break;case 2://CO2上限 sys_ctrl.co2h++;if(sys_ctrl.co2h>99)sys_ctrl.co2h=0;break;}			}//在设置模式下,减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://甲醛浓度上限 sys_ctrl.alcoh--;if(sys_ctrl.alcoh<0)sys_ctrl.alcoh=99;break;case 2://PM2.5上限 sys_ctrl.co2h--;if(sys_ctrl.co2h<0)sys_ctrl.co2h=99;break;}}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;}
}//应用控制系统
void appdemo_show(void)
{u8 i=5;sys_parm_init();//系统参数初始化KEY_Init();BEEP_Init();pcf8591_init();ctrl_pin_init();while(i--){//获取酒精浓度sys_ctrl.alco=pcf8591_read_adcvalue(1);sys_ctrl.alco=cal_map(sys_ctrl.alco,0,255,0,99);	//获取CO2浓度sys_ctrl.co2=pcf8591_read_adcvalue(0);sys_ctrl.co2=cal_map(sys_ctrl.co2,0,255,0,99);delay_ms(100);}lcd1602_init();//LCD1602初始化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.hqwc.cn/news/106620.html

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

相关文章

无涯教程-JavaScript - NPV函数

描述 NPV函数通过使用折现率以及一系列未来付款(负值)和收入(正值)来计算投资的净现值。 语法 NPV (rate,value1,[value2],...)争论 Argument描述Required/OptionalRateThe rate of discount over the length of one period.RequiredValue11 to 254 arguments representing…

UDP的可靠性传输

UDP系列文章目录 第一章 UDP的可靠性传输-理论篇&#xff08;一&#xff09; 第二章 UDP的可靠性传输-理论篇&#xff08;二&#xff09; 文章目录 UDP系列文章目录前言1.TCP 和UDP格式对比2.UDP分片原理3.UDP 传输层应该注意问题4.MTU5.UDP 分片机制设计重点 一、ARQ协议什么…

2023年中国电影行业研究报告

第一章 行业概况 1.1 定义 电影行业是一门涉及电影制作、发行、放映和推广的综合艺术和商业活动。它结合了戏剧、音乐、舞蹈、绘画等多种艺术形式&#xff0c;通过视觉和听觉的方式向观众展示故事和情感。 电影不仅仅是一门艺术&#xff0c;更是一项复杂的商业运作。它涵盖了…

docker 生成镜像的几个问题

docker 生成镜像的几个问题 根据jdk8.tar.gz 打包Jdk8 镜像失败运行镜像报错差不多是网络ip错误,在网上说重启docker即可解决运行mysql5.7.25 镜像失败向daemon.json文件添加内容导致docker重启失败docker run 命令常用参数根据jdk8.tar.gz 打包Jdk8 镜像失败 首选做准备工作…

Go基础16-defer的运作机制及常见用法

defer的运作离不开函数&#xff0c;这至少有两层含义&#xff1a; ● 在Go中&#xff0c;只有在函数和方法内部才能使用defer&#xff1b; ● defer关键字后面只能接函数或方法&#xff0c;这些函数被称为deferred函数。defer将它们注册到其所在goroutine用于存放deferred函数…

时序分解 | MATLAB实现RIME-VMD霜冰优化算法优化VMD变分模态分解信号分量可视化

时序分解 | MATLAB实现RIME-VMD霜冰优化算法优化VMD变分模态分解信号分量可视化 目录 时序分解 | MATLAB实现RIME-VMD霜冰优化算法优化VMD变分模态分解信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 RIME-VMD【23年新算法】霜冰优化算法优化VMD变分模态分…

面向对象技术

面向对象技术 考情分析面向对象基本概念面向对象分析面向对象的设计原则面向对象测试统一建模语言事务关系图 考情分析 设计模式在新版教材被删除了 考察偏向面向对象的基本概念和UML建模 但是设计模型在案例和论文题目中出现 面向对象基本概念 c b a 面向对象分析 记忆面向对…

分布式、锁、延时任务

1. redission redission 原理 Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案) 2.zk 2.1 指令 ls / / 下有哪些子节点 get /zookeeper 查看某个子节点内容 create /aa “test” delete /aa set /aa “test01” 2.2 创建节点 模式 默认创建永久 create -e …

Linux命令200例:write用于向特定用户或特定终端发送信息

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…

读高性能MySQL(第4版)笔记06_优化数据类型(上)

1. 良好的逻辑设计和物理设计是高性能的基石 1.1. 反范式的schema可以加速某些类型的查询&#xff0c;但同时可能减慢其他类型的查询 1.2. 添加计数器和汇总表是一个优化查询的好方法&#xff0c;但它们的维护成本可能很 1.3. 将修改schema作为一个常见事件来规划 2. 让事情…

Redis原理:IntSet

&#xff08;笔记总结自b站黑马程序员课程&#xff09; 一、结构 IntSet是Redis中set集合的一种实现方式&#xff0c;基于整数数组来实现&#xff0c;并且具备长度可变、有序等特征。 结构如下&#xff1a; typedef struct intset {uint32_t encoding; //编码方式uint32_t l…

二叉树的顺序结构以及堆的实现——【数据结构】

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 上篇文章&#xff0c;我们认识了什么是树以及二叉树的基本内容、表示方法……接下来我们继续来深入二叉树&#xff0c;感受其中的魅力。 目录 二叉树的顺序结构 堆的概念及结构 堆的实现 堆的创建 堆的初始化与…