37 基于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.7u8 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站演示视频:

B站演示视频

基于STM32的电压检测WIFI模拟
B站演示视频

虚拟串口讲解

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

百度网盘资料下载%3Ft%3DO83A&pos_id=img-1tQfw6vT-1732950048072)https://pan.baidu.com/s/1tPHt82_tvyGZhqJqhLVcXQ?pwd=p63y

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值