首页 > 其他分享 >零基础学会制作 基于STM32/51的多功能车位锁设计/车位锁/停车计时/停车场计时器

零基础学会制作 基于STM32/51的多功能车位锁设计/车位锁/停车计时/停车场计时器

时间:2024-08-11 23:23:09浏览次数:15  
标签:delay flag1 Pin 51 STM32 GPIOA ms GPIO 车位锁

项目介绍

本研究旨在设计并实现一款基于STM32单片机的多功能车位锁系统,该系统利用STM32单片机的高性能和低功耗特性,集成了距离检测、光照控制、蓝牙通信等多种智能技术,实现了对停车位的智能管理和自动控制。通过超声波模块实时监测车辆与车位锁之间的距离,借助光敏传感器调节停车区域的照明亮度,以蓝牙模块实现远程控制开锁,系统旨在提高停车效率、保障停车安全,并优化用户体验。

功能介绍

设计一个基于STM32的多功能车位锁。该设计能够帮助用户更方便地实现车位的监控和管理,用户可以通过这个系统精准地管理停车位,有效防止非法占用或损坏车位,为用户提供更加便捷的停车服务。该设计由主控制器、光敏电阻模块、超声波检测模块、蓝牙模块、语音播报模块等组成。
1)实现车位锁和车辆的蓝牙通信,在车辆距离车库一定距离后,打开车位锁,语音播报:可以安全停车,车辆离开后,车库进行自动上锁;
2)采用光敏电阻对光线强度进行检测,当光线太弱时自动补光;
3)采用超声波传感器检测车位有车时车锁不动作;
4)实现车位锁的开和关;

所用模块

本设计采用单片机作为控制核心,负责处理来自各传感器的数据,执行用户命令,以及管理无线通信和语音模块。光照采集模块用于检测车位锁周围的光照条件,根据光照强度自动调节灯光,以确保用户停车安全。通过超声波传感器测量车辆与车位锁的距离,用于自动检测车位上是否有车,在有车时车锁不动作。采用显示屏,用于显示车位状态信息、操作提示或其他用户交互信息。语音模块提供语音提示和语音控制功能,增强用户交互体验,特别是在驾驶状态下提供便捷的操作方式。

系统原理图

在这里插入图片描述

实物图

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

部分代码

u8 set=20,set1=4;
u16 adcx,flag,flag1;
int main(void)
{
float temp;
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
NVIC_Configuration();//ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
uart_init1(9600); //´®¿Ú³õʼ»¯Îª9600
LED_Init(); //LED¶Ë¿Ú³õʼ»¯
Adc_Init(); //ADC³õʼ»¯
KEY_Init();
OLED_Init();
OLED_ShowCH(0,0,“light”);
OLED_ShowCH(0,2,“close”);
OLED_ShowCH(0,4,“dis”);

TIM2_PWM_Init(19,799);	 //²»·ÖƵ¡£PWMƵÂÊ=72000/900=8Khz

Timerx_Init(500,799); //10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½5000Ϊ500ms
UltrasonicWave_Configuration(); //¶Ô³¬Éù²¨Ä£¿é³õʼ»¯
while(1)
{

	adcx=Get_Adc_Average(ADC_Channel_0,10)*0.02;		
OLED_ShowNum(60, 0, adcx, 2,1);
OLED_ShowNum(100, 0, set, 2,1);
	OLED_ShowNum(80, 2, flag1, 2,1);
OLED_ShowNum(100, 4, set1, 3,1);
	delay_ms(250);	
	if(adcx<set)
	{
		 GPIO_SetBits(GPIOA,GPIO_Pin_1);		//PB.5 Êä³ö¸ß
	}
	if(adcx>set)
	{
	   GPIO_ResetBits(GPIOA,GPIO_Pin_1);	//PB.5 Êä³ö¸ß
	}
	
	if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)==1&&flag==0)
	{
	  flag=1;
    TIM_SetCompare3(TIM3,5); 
  delay_ms(300);
  TIM_SetCompare3(TIM3,10); 
  delay_ms(300);
  TIM_SetCompare3(TIM3,15); 
  delay_ms(300);
  TIM_SetCompare3(TIM3,20); 
  delay_ms(300);//
	  OLED_ShowCH(0,2,"open ");
    GPIO_SetBits(GPIOA,GPIO_Pin_2);			//PB.5 Êä³ö¸ß
    delay_ms(250);	
	  delay_ms(250);	
	  GPIO_ResetBits(GPIOA,GPIO_Pin_2);		//PB.5 Êä³ö¸ß

	}
	if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)==0&&flag==1)
	{
		 flag=0;
	   TIM_SetCompare3(TIM3,15); 
   delay_ms(300);
		 TIM_SetCompare3(TIM3,10); 
   delay_ms(300);
		 TIM_SetCompare3(TIM3,5); 
   delay_ms(300);
		 OLED_ShowCH(0,2,"close");		
	}

		
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6)==0)
	{
	  delay_ms(80);
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_6)==0)
	  {
	   flag1++;
	   if(flag1>=3)
		  {
		  flag1=0;
		  }
	  }
	}

	
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)==0&&flag1==1)
	{
	  delay_ms(30);
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)==0&&flag1==1)
	  {
	   set++;
		 if(set>99)
		   {
			  set=0;
	     }
	   }
	 }
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)==0&&flag1==1)
	{
		delay_ms(30);
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)==0&&flag1==1)
	  {
	   set--;
		if(set<1)
		  {
		   set=99;
		  }
	  }
  }
	
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)==0&&flag1==2)
	{
		delay_ms(30);
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_7)==0&&flag1==2)
	  {
	  set1++;
		if(set1>99)
		  {
			 set1=0;
	    }
	  }
  }
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)==0&&flag1==2)
	{
		delay_ms(30);
	if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_8)==0&&flag1==2)
	  {
	   set1--;
		 if(set1<1)
		   {
		    set1=99;
		   }
	   }
	 }
 }

}

资料下载链接

「实物制作资料 分享.rar」,来自夸克网盘分享。
夸克网盘无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
/7b80346jCs

标签:delay,flag1,Pin,51,STM32,GPIOA,ms,GPIO,车位锁
From: https://blog.csdn.net/weixin_55654459/article/details/141113953

相关文章

  • 零基础学会制作 基于STM32/51的智能水质监测系统设计/水检测/鱼塘检测/水质量检测
    项目介绍本论文是在研究和设计一套基于STM32单片机的智能水质监测系统,本系统主要包括监测模块、无线通信模块、报警模块、显示模块、电源模块等。当监测到的水质相关参数(如水温、水位、浑浊度、电导率、PH值等)与设定阈值不符时,则STM32的智能水质监测系统发出对应报警,并通过......
  • P9751 [CSP-J 2023] 旅游巴士
    原题链接分析很逆天的一道题设\(dp[i][j]\)为到达第\(i\)个点的时刻\(t\)且满足\(t\modk=j\)的最小\(t\)则有答案为\(dp[n][0]\)更新也很简单,设当前点为\(u\),当前时间为\(t\)需要遍历的下一个点\(v\),则有\(dis[v][(t+1)\%k]=dis[u][t\%k]+1\)如果道路还没开......
  • CF1515F Phoenix and Earthquake 题解
    CF1515F给定一张\(n\)个点\(m\)条边的无向连通图和正整数\(x\),点有非负权值\(a_i\)。如果一条边\((u,v)\)满足\(a_u+a_v\gex\),可以将\(u,v\)缩起来,新点的点权为\(a_u+a_v-x\)。判断这张图是否可以缩成一个点。如果是,还要输出每次缩的是哪条边。\(2\len\le3......
  • STM32学习记录(九):RTC
    RTC框图实时时钟(Real-timeclock:RTC)是一个独立的计时器。RTC提供一组连续运行的计数器,可以与合适的软件一起使用,以提供时钟日历功能。可以写入计数器值以设置系统的当前时间/日期。可以选择以下三种作为RTC时钟源:HSE时钟进行128分频LSE振荡器时钟LSI振荡器时钟有关时......
  • 在线仿真平台+C语言实现:STM32驱动0.96寸OLED屏幕显示DHT11温湿度传感器测量值
    这里推荐一款由深圳航天科技创新研究院推出的在线电路仿真软件,该软件不仅具备原理图绘制与代码编写功能,还支持在线编译代码、上传自定义代码以及进行仿真模拟,此外还能在线生成并允许下载.bin和.hex文件。官网地址如下:Document进入网页后先注册一个账号。  注册完账号后即可......
  • 【STM32】ADC模拟数字转换-规则组单通道
    本篇博客重点在于标准库函数的理解与使用,搭建一个框架便于快速开发 目录 ADC简介ADC时钟配置引脚模拟输入模式规则组通道选择ADC初始化 工作模式数据对齐 触发转换方式连续与单次转换模式扫描模式组内的通道个数ADC初始化框架ADC上电ADC校验 获取转换数......
  • 从零开始制作一个简易数字示波器,超详细看完必懂 举例基于stm32f103标准库
    为了实现使用STM32f103制作一个简易数值示波器,大体流程如下:1-模拟信号(输入)2-ADC(模数转换)(适当采样率和分辨率配置)3-DMA(直接存储器访问)(DMA搬运,减少CPU负担)4-内存缓冲区(数据转入缓冲区)5-FFT处理(频域数据)(FFT处理(可选,用于频域显示))6-显示处理(像素转换)(数据映射为......
  • 1410、proteus仿真-STM32单片机血压体温血氧心率检测阈值报警加远程监控设计(程序+pro
    毕设帮助、开题指导、技术解答(有偿)见文未 目录方案选择单片机的选择一、设计功能二、proteus仿真图三、程序源码资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的选择方案一:AT89C51是美国ATMEL公......
  • 佰泰盛世—HT5169内置BOOST升压的11WI2S输入D类音频功放
    1特性电源供电• 升压输入VBAT:2.5V-5.5V;• 升压输出PVDD可调,最高7.5V• DVDD/AVDD:3.3V音频性能•9.0W(VBAT=3.7V,PVDD=7.5V,RL=3Ω,THD+N=10%)•11.0W(VBAT=3.7V,PVDD=7.5V,RL=2Ω,THD+N=10%•5.5W(VBAT=3.7V,PVDD=6.5V,RL=4Ω,THD+N=10%)灵......
  • STM32通过ESP8266连接机智云APP(第二讲,烧录固件并测试)
       今天与大家分享STM32通过ESP8266连接机智云APP,并完成数据的上传下发第二讲。带大家一起烧录机智云固件到ESP8266并且将其通过机智云串口助手与APP进行测试。     另外新创建了公众号“宝藏Code园”,本系列相关代码将在公众号里面开源。需要本项目相关工程代码......