当前位置: 首页 > article >正文

基于STM32的电压检测WIFI模拟

目录

一、主要功能

二、硬件资源

三、程序编程

四、实现现象


一、主要功能

基于STM32单片机,通过滑动变阻器模拟电压传感器检测电压,通过12864显示显示电压和电压阈值,按键可以控制阈值的增加,并通过串口实时显示相关参数和状态

二、硬件资源

基于KEIL5编写C++代码,PROTEUS8.15进行仿真,全部资源在页尾,提供安装包。

三、程序编程

#include "stm32f10x.h"
#include "usart.h"
#include "delay.h"
#include "sys.h"
#include "led.h"
#include "adc.h"
#include "key.h"
#include "oled.h"
#include "code.h"
#include "bmp.h"



u16 t;  
u16 times=0;
u16 times1 = 0;
u16 times2 = 0;
u8 LsensVal=0;  //将电压传感器的值赋值给LsensVal  PF.7
u8 key=0;

void Check_serial_KEY(void);
void Check(void);
void serial_port(void);
	
 int main(void)
 {	
	 
	 LED_Init();		  	        //初始化与LED连接的硬件接口
   Adc_Init();
   delay_init();
	 KEY_Init();
	 Lsens_Init();        //初始化电压传感器端口
	 uart_init(57600);
		OLED_Init();
		OLED_ColorTurn(0);//0正常显示,1 反色显示
		OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示	
		printf("开机测试完成!\r\n");
		OLED_Clear();
		OLED_Display_Sensitizer();//显示传感器种类
		OLED_Display_Welcome();//
		
		printf("开机测试完成!\r\n");
	  printf("\r\n欢迎使用!\r\n"); // 初始化完成并测试串口
	 
	 LED0 = 1;
	 LED1 = 0;
	 while(1)
	 {
		 Check_serial_KEY();       //按键控制函数
		  Check();
      serial_port();			
			if(LsensVal > dyyz)
			{
				LED0 = 0;
				LED1 = 1;
				if(times1 %20 == 1)
				{
				printf("电压过高,请注意\r\n");
				}
				times1++;
			}
			else
			{
				LED0 = 1;
				LED1 = 0;
				if(times2 %20 == 1)
				{
				printf("电压正常\r\n");
				}
				times2++;
			}
		}	 
 }

 //串口传输函数,并检查
void serial_port()
{

		
					LsensVal=Lsens_Get_Val();  //将电量传感器的值赋值
					for(t=0;t<1;t++)                //Proteus的STM32F103仿真模型只能正确接收第一个字符
					{
						USART1->DR=USART_RX_BUF[t];
						while((USART1->SR&0X40)==0);//等待发送结束
					}
					if(times%20 == 1)
					{
          printf("DIANYA= %d\r\n",LsensVal);
					printf("DIANYAYU= %d\r\n",dyyz);
					delay_ms(10);
					USART_RX_STA=0;
					}
					times++;
					
				delay_ms(10);
}
 
void Check_serial_KEY(void)
{
	
	OLED_Clear_Down();
	key=KEY_Scan(1);	  //0,不支持连续按;1,支持连续按;
	if(key)
	{						   
		switch(key)
		{				 
			case WKUP_PRES:	// 电压阈值增大

				dyyz++;
				break; 

			case KEY1_PRES:	  //电压阈值减少
				dyyz--;
				break;																																																								
			default:
				break;
		}
	}
	else delay_ms(10); 

}


void Check(void)
{
			times++;
			if(times%5==0)
			{     
				OLED_Display_SensitizerNumber();//显示传感器数值
			}
				delay_ms(10);
}

四、实现现象

具体动态效果看B站演示视频:

基于STM32的电压检测WIFI模拟

虚拟串口讲解

全部资料(源程序、仿真文件、安装包、演示视频):

百度网盘资料下载icon-default.png?t=O83Ahttps://pan.baidu.com/s/1tPHt82_tvyGZhqJqhLVcXQ?pwd=p63y


http://www.kler.cn/a/318967.html

相关文章:

  • redis bind 127.0.0.1和bind 10.34.56.78的区别
  • 【121. 买卖股票的最佳时机】——贪心算法/动态规划
  • [ 网络安全介绍 5 ] 为什么要学习网络安全?
  • 在linux中使用nload实时查看网卡流量
  • 【Spring】@Autowired与@Resource的区别
  • Java基于SpringBoot+Vue的宠物共享平台的设计与实现(附源码,文档)
  • 常见服务器大全----都是什么?又有何作用?区别联系是什么?---web,应用,数据库,文件,消息队列服务器,Tomat,Nginx,vite.....
  • python 实现PPT转化为长图,代码如下
  • 面经 | webpack
  • langchain 提示词(一) 字符提示词和聊天提示词
  • 类似QQ聊天功能的Java程序
  • Linux —— Socket编程(一)
  • 叉车防撞报警系统解决方案:提高仓库、保障员工的安全性
  • 零基础学Axios
  • 每天学习一个技术栈 ——【Celery】篇(1)
  • C++20-协程
  • 短视频矩阵管理系统贴牌 源码开发
  • 数据库某字段要保存中文时,怎样确定长度(以Oracle为例)
  • 神经网络(四):UNet语义分割网络
  • 走向管理岗,必须懂这13个人才管理铁律
  • 详解机器学习经典模型(原理及应用)——岭回归
  • 一场大模型面试,三个小时,被撞飞了
  • MODELS 2024震撼续章:科技与可持续性的未来交响曲
  • MES系统如何提升制造企业的运营效率和灵活性
  • [6]Opengl ES预览摄像头
  • 徐州网站建设的最新趋势与技术