【Proteus仿真】【51单片机】基于物联网新能源电动车检测系统设计

文章目录

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


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶显示模块、WIFI模块、蜂鸣器、LED按键、ADC PCF8591、DS18B20温度传感器等。

主要功能:
系统运行后,LCD1602显示温度、电量、电压、电流值;电量0-99%,电压0-5V,电流0-5A;
可通过WIFI将检测数据传输至终端显示;
可通过按键K3进入阈值设置模式,K3键用于切换选择温度/电量/电压/电流阈值,
K1和K2用于调节对应阈值,K4用于确定并返回主界面。
当温度超限,报警指示亮,蜂鸣器报警;
当电量过低,报警指示,蜂鸣器报警;
当电压或电流过低,报警指示亮,蜂鸣器报警;
当出现报警时,WIFI会将报警信息发送到终端显示。


二、软件设计

/*
作者:嗨小易(QQ技术交流群:570487280)*///系统数据显示
void sys_data_show(void)
{u8 buf[5];static u8 i=0;while(1){//正常模式显示if(sys_ctrl.mode==0){//温度显示lcd1602_show_nums(5,0,sys_ctrl.temp,2,0);//电量显示lcd1602_show_nums(13,0,sys_ctrl.power,2,0);//电压显示buf[0]=sys_ctrl.vol/10+0x30;buf[1]='.';buf[2]=sys_ctrl.vol%10+0x30;buf[3]='\0';lcd1602_show_string(2,1,buf);//电流显示buf[0]=sys_ctrl.cur/10+0x30;buf[1]='.';buf[2]=sys_ctrl.cur%10+0x30;buf[3]='\0';lcd1602_show_string(12,1,buf);//WIFI传输数据,温度、电量、电压和电流i++;if(i%50==0)	{UART_SendString("\r\n温度:");buf[0]=sys_ctrl.temp/10+0x30;buf[1]=sys_ctrl.temp%10+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString("°C\r\n");UART_SendString("电量:");buf[0]=sys_ctrl.power/10+0x30;buf[1]=sys_ctrl.power%10+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString("%\r\n");UART_SendString("电压:");buf[0]=sys_ctrl.vol/10+0x30;buf[1]='.';buf[2]=sys_ctrl.vol%10+0x30;buf[3]='\0';UART_SendString(buf);UART_SendString("V\r\n");UART_SendString("电流:");buf[0]=sys_ctrl.cur/10+0x30;buf[1]='.';buf[2]=sys_ctrl.cur%10+0x30;buf[3]='\0';UART_SendString(buf);UART_SendString("A\r\n");	}}//阈值设置显示else{//温度阈值显示lcd1602_show_nums(4,0,sys_ctrl.temph,2,0);//电量阈值显示lcd1602_show_nums(13,0,sys_ctrl.powerl,2,0);//电压阈值显示buf[0]=sys_ctrl.voll/10+0x30;buf[1]='.';buf[2]=sys_ctrl.voll%10+0x30;buf[3]='\0';lcd1602_show_string(3,1,buf);//电流阈值显示buf[0]=sys_ctrl.curl/10+0x30;buf[1]='.';buf[2]=sys_ctrl.curl%10+0x30;buf[3]='\0';lcd1602_show_string(12,1,buf);//阈值设定,数据位置闪烁switch(sys_ctrl.mode){case 1://温度lcd1602_show_string(4,0,"  ");delay_ms(100);lcd1602_show_nums(4,0,sys_ctrl.temph,2,0);break;case 2://电量lcd1602_show_string(13,0,"  ");delay_ms(100);lcd1602_show_nums(13,0,sys_ctrl.powerl,2,0);break;case 3://电压lcd1602_show_string(3,1,"   ");delay_ms(100);buf[0]=sys_ctrl.voll/10+0x30;buf[1]='.';buf[2]=sys_ctrl.voll%10+0x30;buf[3]='\0';lcd1602_show_string(3,1,buf);break;case 4://电流lcd1602_show_string(12,1,"   ");delay_ms(100);buf[0]=sys_ctrl.curl/10+0x30;buf[1]='.';buf[2]=sys_ctrl.curl%10+0x30;buf[3]='\0';lcd1602_show_string(12,1,buf);break;	}}break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;static u8 oneflag=0;key=key_scan(0);//模式设置if(key==KEY3_PRESS){sys_ctrl.mode++;if(sys_ctrl.mode>4)sys_ctrl.mode=1;if(oneflag==0){oneflag=1;_parm_set_show();//系统参数设置显示}}if(sys_ctrl.mode!=0){//在设置模式下,加if(key==KEY1_PRESS){	switch(sys_ctrl.mode){case 1://温度 sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;case 2://电量 sys_ctrl.powerl++;if(sys_ctrl.powerl>99)sys_ctrl.powerl=0;break;case 3://电压 sys_ctrl.voll++;if(sys_ctrl.voll>50)sys_ctrl.voll=0;break;case 4://电流 sys_ctrl.curl++;if(sys_ctrl.curl>50)sys_ctrl.curl=0;break;}				}//在设置模式下,减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://温度 sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;case 2://电量 sys_ctrl.powerl--;if(sys_ctrl.powerl<0)sys_ctrl.powerl=99;break;case 3://电压 sys_ctrl.voll--;if(sys_ctrl.voll<0)sys_ctrl.voll=50;break;case 4://电流 sys_ctrl.curl--;if(sys_ctrl.curl<0)sys_ctrl.curl=50;break;}}//确定else if(key==KEY4_PRESS){sys_ctrl.mode=0;oneflag=0;sys_open_show();//系统开机界面显示		}	}
}//系统功能控制
void sys_fun_ctrl(void)
{static u8 wdoneflag=0;static u8 dloneflag=0;static u8 dydloneflag=0;//正常工作模式下if(sys_ctrl.mode==0){//温度高于上限,指示灯亮,蜂鸣器报警if(sys_ctrl.temp>sys_ctrl.temph){LED_WD=0;beep_alarm(10,1000);UART_SendString("\r\n温度高...\r\n");wdoneflag=1;}else{LED_WD=1;if(wdoneflag==1){wdoneflag=0;	UART_SendString("\r\n温度OK\r\n");}}//电量低于阈值,指示灯亮,蜂鸣器报警if(sys_ctrl.power<sys_ctrl.powerl){LED_DL=0;beep_alarm(10,1000);UART_SendString("\r\n电量低...\r\n");dloneflag=1;}else{LED_DL=1;if(dloneflag==1){dloneflag=0;	UART_SendString("\r\n电量OK\r\n");}}//电压或电流低于阈值,指示灯亮,蜂鸣器报警if(sys_ctrl.vol<sys_ctrl.voll || sys_ctrl.cur<sys_ctrl.curl){LED_DYDL=0;beep_alarm(10,1000);UART_SendString("\r\n电压电流低...\r\n");dydloneflag=1;	}else {LED_DYDL=1;if(dydloneflag==1){dydloneflag=0;	UART_SendString("\r\n电压电流OK\r\n");}}			}		
}

三、实验现象

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

联系作者

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

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

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

相关文章

视频集市新增支持多格式流媒体拉流预览

流媒体除了常用实时流外还有大部分是以文件的形式存在&#xff0c;做融合预览必须要考虑多种兼容性能力&#xff0c;借用现有的ffmpeg生态可以迅速实现多种格式的支持&#xff0c;现在我们将按需拉流预览功能进行了拓展&#xff0c;正式支持了ffmpeg的功能&#xff0c;可快捷方…

初学51单片机之PWM实例呼吸灯以及遇到的问题(已解答)

PWM全名Pulse Width Modulation中文称呼脉冲宽度调制 如图 这是一个周期10ms、频率是100HZ的波形&#xff0c;但是每个周期内&#xff0c;高低电平宽度各不相同&#xff0c;这就是PWM的本质。 占空比是指高电平占整个周期的比列,上图第一个波形的占空比是40%&#xff0c;第二个…

Linux:多线程中的互斥与同步

多线程 线程互斥互斥锁互斥锁实现的原理封装原生线程库封装互斥锁 死锁避免死锁的四种方法 线程同步条件变量 线程互斥 在多线程中&#xff0c;如果存在有一个全局变量&#xff0c;那么这个全局变量会被所有执行流所共享。但是&#xff0c;资源共享就会存在一种问题&#xff1…

天才简史——Diederik P. Kingma与他的Adam优化器

一、了解Diederik P. Kingma 发生日期&#xff1a;2024年6月18日 前几日&#xff0c;与实验室同门一同前往七食堂吃饭。饭间&#xff0c;一位做随机优化的同门说他看过一篇被引18w的文章。随后&#xff0c;我表示不信&#xff0c;说你不会数错了吧&#xff0c;能有1.8w次被引都…

【人机交互 复习】第7章 可视化设计

一、窗口界面类型 1.多文档界面 &#xff08;1&#xff09;优点 a.节省系统资源 b.最小的可视集 c.协同工作区 d.多文档同时可视化 &#xff08;2&#xff09;缺点 a.菜单随活动文档窗口状态变化&#xff0c;导致不一致性 b.文档窗口必须在主窗口内部&#xff0c;减弱多文档显…

台积电(TSMC)正在探索采用新型先进芯片封装技术

台积电&#xff08;TSMC&#xff09;正在探索采用新型先进芯片封装技术&#xff0c;使用类似面板的矩形基板&#xff0c;以应对日益增长的先进多芯片组处理器需求。据日经亚洲报道&#xff0c;这项开发仍处于早期阶段&#xff0c;可能需要数年时间才能商业化&#xff0c;但如果…

Minecraft服务端配置教程

一、下载服务端核心文件 下载 | FastMirror 无极镜像 | 我的世界核心下载 Downloads for Minecraft Forge for MinecraftForge服务端下载 MCVersions.net - Minecraft Versions Download List原版 注意&#xff0c;这个网站可以下载Forge水桶等插件和模组端&#xff0c;如果…

STM32HAL库--定时器篇

STM32F429 有14个定时器&#xff0c;其中包括 2 个基本定时器&#xff08;TIM6 和 TIM7&#xff09;、 10 个通用定时器&#xff08;TIM2~TIM5&#xff0c;TIM9~TIM14&#xff09;、 2 个高级控制定时器&#xff08;TIM1 和 TIM8&#xff09;。 由上表知道&#xff1a;除了 TIM…

视频服务网关的特点

一、视频服务网关的介绍 视频服务网关采用Linux操作系统&#xff0c;可支持国内外不同品牌、不同协议、不同设备类型监控产品的统一接入管理&#xff0c;同时提供标准的H5播放接口供其他应用平台快速对接&#xff0c;让您快速拥有视频集成能力。不受开发环境、跨系统跨平台等条…

数据分析思考

数据分析工作流程 在我的数据分析职业发展过程中&#xff0c;我从基础的数据提取工作开始&#xff0c;逐步深入到更为复杂和具有战略意义的领域。这包括构建和完善指标体系、设计风险预警模型&#xff0c;以及与多部门协作完成公司整体经营分析等工作。 在这个过程中&#xf…

Rust中的数据抓取:代理和scraper的协同工作

一、数据抓取的基本概念 数据抓取&#xff0c;又称网络爬虫或网页爬虫&#xff0c;是一种自动从互联网上提取信息的程序。这些信息可以是文本、图片、音频、视频等&#xff0c;用于数据分析、市场研究或内容聚合。 为什么选择Rust进行数据抓取&#xff1f; 性能&#xff1a;…

第22篇 Intel FPGA Monitor Program的使用<五>

Q&#xff1a;如何用Intel FPGA Monitor Program创建C语言工程并运行呢&#xff1f; A&#xff1a;总体过程与创建汇编语言工程类似&#xff0c;不同的是在指定程序类型时选择C Program。 后续用到DE2-115开发板的硬件如LED、SW和HEX等外设时&#xff0c;还需要将描述定义这些…

【机器学习】机器的登神长阶——AIGC

目录 什么是AIGC 普通用户接触AIGC网站推荐 通义千问 白马 普通用户如何用好AIGC 关键提示词的作用 AIGC的影响 就业市场&#xff1a; 教育领域&#xff1a; 创意产业&#xff1a; 经济活动&#xff1a; 社交媒体与信息传播&#xff1a; AIGC面临的挑战 什么是AIGC…

Vue68-路由简介

一、路由的应用&#xff1a;&#xff08;单页面应用&#xff09; 单页面应用&#xff1a;页面不刷新&#xff0c;但是路径会改变。 二、路由的原理&#xff1a; 2-1、多页面应用&#xff1a; 2-2、路由的相关概念 2-3、前端路由、后端路由 前端路由&#xff1a;你是什么路径…

transformers Model

☆ 问题描述 在 transformers 框架中&#xff0c;Model 模块是核心组件之一&#xff0c;提供了多种预训练模型及其相关功能&#xff0c;广泛应用于自然语言处理&#xff08;NLP&#xff09;任务。 ★ 解决方案 # 导入相关文件 from transformers import AutoConfig, AutoM…

【阅读论文】-- SWS:时空核密度可视化的复杂性优化解决方案

SWS: A Complexity-Optimized Solution for Spatial-Temporal Kernel Density Visualization 摘要1 引言2 预备知识2.1 STKDV 问题陈述2.2 基于范围查询的解决方案&#xff08;RQS&#xff09; 3 基于滑动窗口的解决方案&#xff08;SWS&#xff09;3.1 时间维度的滑动窗口3.2 …

【面试干货】throw 和 throws 的区别

【面试干货】throw 和 throws 的区别 1、throw1.1 示例 2、throws2.1 示例 3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;throw和throws都与异常处理紧密相关&#xff0c;但它们在使用和含义上有明显的区别。…

ElementPlus组件与图标按需自动引入

按需自动引入组件 1. 安装ElementPlus和自动导入ElementPlus组件的插件 pnpm install element-plus pnpm install -D unplugin-vue-components unplugin-auto-import 2. vite.config.ts进行修改 import { defineConfig } from vite import vue from vitejs/plugin-vue // …

T200S4高清4路SDI采集卡

产品简介&#xff1a; 同三维T200S4 4路高清SDI采集卡&#xff0c;可以同时采集4路SDI高清信号&#xff0c;卡上有4个SDI接口1个SDI环出转接口&#xff0c;配件有&#xff1a; 1个转SDI转接线&#xff0c;PCI-E2.0 X4&#xff0c;分辨率最高可以达到1080P/60HZ,带SDK开发包&am…

计算机网络:应用层 - 文件传输协议 FTP 电子邮件

计算机网络&#xff1a;应用层 - 文件传输协议 FTP & 电子邮件 文件传输协议 FTP电子邮件 文件传输协议 FTP 文件传送协议 FTP(File Transfer Protocol)&#xff0c;曾是互联网祝频讲解上使用得最广泛的文件传送协议。 其特点是&#xff1a;若要存取一个文件&#xff0c;…