1 系统功能介绍

本系统是一个 基于 STM32 单片机的智能 RFID 刷卡车位锁桩控制系统,其设计理念来源于现实中智能停车场的车位锁桩管理。通过 RFID 刷卡认证、LCD1602 显示、继电器控制以及按键辅助操作,实现对车位的安全管理。该系统不仅模拟了车辆驶入与驶出的流程,还能通过单片机智能判断车位状态,并且提供简洁的人机交互界面。

主要功能如下:

  1. 车位入口控制

    • 系统正常状态下,车位桩处于关闭状态(继电器闭合),其他车辆无法进入;
    • 当车辆用户刷有效 RFID 卡后,继电器断开,车位桩升起或解锁,允许车辆驶入车位。
  2. 车辆驶入确认与车位锁定

    • 当车辆驶入后,用户可以通过按键再次控制继电器,使车位桩恢复闭合状态;
    • 此时车辆被锁定在车位中,防止其他车辆占用该车位。
  3. LCD1602 显示信息

    • 系统启动时显示欢迎界面与状态信息;
    • 显示车位状态(空闲/已占用/刷卡成功/非法卡片等);
    • 显示用户刷卡认证结果。
  4. 安全与扩展

    • 只有合法 RFID 卡能够打开继电器,非法卡片无效;
    • 可扩展多用户卡绑定功能,实现多个车主共享系统;
    • 可扩展至远程控制,例如结合蓝牙、WIFI,实现 APP 控制。

该系统在停车场车位管理、私人车位防止外车占用等场景具有实际应用价值。


2 系统电路设计

2.1 STM32 最小系统

本设计选用 STM32F103C8T6 作为核心控制单片机,具有 ARM Cortex-M3 内核,主频 72MHz,内置丰富的外设接口,能够轻松应对 RFID 通信、LCD 显示和继电器控制等任务。

  • 电源电路:使用 AMS1117 稳压芯片,将 5V 转换为 3.3V,供单片机与部分外设使用;
  • 晶振电路:采用 8MHz 外部晶振,保证系统运行稳定;
  • 复位电路:包括上电复位和手动复位按键。

2.2 RFID 模块电路

采用 MFRC522 RFID 模块,支持 13.56MHz 频率的 Mifare S50/S70 卡。其主要功能:

  • 通过 SPI 接口与 STM32 通信;
  • 读取卡片 UID(唯一序列号),作为用户身份认证;
  • 可扩展读写卡片数据,用于存储用户信息。

2.3 LCD1602 显示模块

LCD1602 液晶显示屏用于实时显示系统状态和用户操作提示:

  • 系统启动时显示“Welcome”;
  • 显示车位状态:“车位空闲”、“刷卡成功,车位解锁”;
  • 显示非法卡提示:“非法卡片”;
  • 显示按键操作结果:“车位锁定完成”。
    LCD1602 通过并口与 STM32 连接,利用 GPIO 控制 RS、RW、EN 以及数据线。

2.4 按键电路

设计了一个主要控制按键:

  • 锁定按键:车辆驶入后按下,用于重新闭合继电器,完成车位锁定;
  • 按键采用下拉电阻防抖处理,确保触发可靠。

2.5 继电器驱动电路

继电器用于模拟 车位桩的开关控制

  • 正常状态下继电器闭合,车桩处于关闭状态,禁止进入;
  • 刷卡成功后继电器断开,车桩打开,车辆进入车位;
  • 按键确认后继电器再次闭合,车位锁定。
    为防止电流冲击,继电器驱动端口增加 三极管驱动和二极管续流保护

3 程序设计

3.1 主程序框架

#include "stm32f10x.h"
#include "lcd1602.h"
#include "rc522.h"
#include "relay.h"
#include "key.h"
#include "delay.h"u8 CardID[5];          // 存放读取的卡号
u8 MasterCard[5] = {0x12,0x34,0x56,0x78,0x90}; // 预设合法卡
int CarStatus = 0;     // 0-空闲 1-已解锁 2-已锁定int main(void)
{SystemInit();LCD_Init();RC522_Init();Relay_Init();Key_Init();Delay_Init();LCD_ShowString(0,0,"Welcome Parking");Relay_Lock();   // 默认锁定while(1){Check_Card();Key_Process();}
}

3.2 RFID 刷卡识别程序

void Check_Card(void)
{if(RC522_Check(CardID) == MI_OK)   // 检测到卡片{if(Compare_Card(CardID, MasterCard)) // 合法卡{LCD_Clear();LCD_ShowString(0,0,"Card Success!");Relay_Unlock();   // 打开继电器CarStatus = 1;}else   // 非法卡{LCD_Clear();LCD_ShowString(0,0,"Invalid Card!");}}
}int Compare_Card(u8 *card1, u8 *card2)
{for(int i=0;i<5;i++){if(card1[i] != card2[i]) return 0;}return 1;
}

3.3 按键控制逻辑

void Key_Process(void)
{if(Key_Scan() == KEY0_PRES)  // 按下按键{if(CarStatus == 1)  // 已解锁状态{Relay_Lock();   // 重新闭合继电器LCD_Clear();LCD_ShowString(0,0,"Car Locked!");CarStatus = 2;}}
}

3.4 继电器驱动程序

void Relay_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_0); // 默认上锁
}void Relay_Lock(void)
{GPIO_SetBits(GPIOB, GPIO_Pin_0); // 继电器闭合
}void Relay_Unlock(void)
{GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 继电器断开
}

4 总结

本设计通过 STM32F103C8T6 单片机,结合 RFID 模块、LCD1602 显示、按键与继电器电路,实现了一个智能化的 车位锁桩系统。系统的主要特点如下:

  1. 智能刷卡识别:只有合法用户刷卡才能打开车位锁,确保车位安全;
  2. LCD1602 人机交互:实时显示车位状态和刷卡信息,操作直观;
  3. 按键辅助控制:车辆进入后可人工确认再次锁定,提高安全性;
  4. 继电器控制车桩:模拟现实车位桩动作,保证流程贴近实际应用;
  5. 扩展性强:可增加多用户卡片识别、联网远程管理、车位状态上传等功能。

该系统不仅适用于实验教学,也可为智能停车场车位锁桩的实际开发提供参考。

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

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

相关文章

SQL185 试卷完成数同比2020年的增长率及排名变化

描述现有试卷信息表examination_info&#xff08;exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间&#xff09;&#xff1a;试卷作答记录表exam_record&#xff08;uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交…

网络编程中的TCP——TCP的连接的建立、关闭、状态转移

网络编程中的TCP——TCP的连接的建立、关闭、状态转移 TCP连接的建立和关闭wireshark捕获数据&#xff1a;TCP三次握手四次挥手的时序图&#xff1a;三次握手&#xff1a; 报文段1包含SYN标志&#xff0c;这是一个同步报文段&#xff0c;表示发起连接请求&#xff0c;包含自己起…

SQL 语句拼接在 C 语言中的实现与安全性分析

代码解析 // 构建SQL插入语句 char *sql_insert (char *)malloc(sizeof(char) * 200); // 分配200字节内存 strcpy(sql_insert, "INSERT INTO user(username, passwd) VALUES("); // 复制基础SQL语句 strcat(sql_insert, ""); // 添加单引号 strcat(sq…

`lock()` 和 `unlock()` 线程同步函数

1) 函数的概念与用途 lock() 和 unlock() 不是特定的标准库函数&#xff0c;而是线程同步原语的一般概念&#xff0c;用于在多线程环境中保护共享资源。在不同的编程环境和库中&#xff0c;这些函数有不同的具体实现&#xff08;如 POSIX 线程的 pthread_mutex_lock() 或 C 的 …

升级openssh后ORACLE RAC EM 安装失败处理

升级过程中由于SCP传输时目标目录/tmp/tempRACTrans_2025_08_22--18-25-44-032/ractrans 不存在导致的OC4J配置失败&#xff1a;WARNING: /usr/bin/scp: dest open "/tmp/tempRACTrans_2025_08_22--18-25-44-032/ractrans": No such file or directory/usr/bin/scp…

ADB 调试工具的学习[特殊字符]

一、ADB 的工作原理 1.1 ADB 概念 ADB (Android Debug Bridge)&#xff1a;Android 调试桥&#xff0c;是开发/测试 Android 应用必备的调试工具。作用&#xff1a;通过 电脑终端命令 操作 安卓手机/模拟器。 1.2 ADB 构成与原理 ADB 由三部分组成&#xff1a; Client 端&#…

用一根“数据中枢神经”串起业务从事件流到 Apache Kafka

1. 为什么是“事件流”&#xff1f; 在一个软件定义、自动化、永远在线的世界里&#xff0c;系统之间最需要的是&#xff1a;把发生了什么这件事&#xff0c;第一时间、按正确顺序、可靠地传到该知道的人/系统那里。 事件流就像企业的中枢神经&#xff1a;它把数据库更新、设备…

【RAGFlow代码详解-4】数据存储层

数据库基础设施 RAGFlow 使用关系数据库&#xff08;MySQL 或 PostgreSQL&#xff09;作为主要元数据存储&#xff0c;通过具有连接池和重试机制的 Peewee ORM 进行管理。 连接管理 数据库连接通过 service_conf.yaml 和环境变量进行配置。该系统支持具有可配置连接池的 MySQL …

ES_映射

一、 映射&#xff08;Mapping&#xff09;是什么&#xff1f; 简单来说&#xff0c;映射就像是关系型数据库中的表结构定义&#xff08;Schema&#xff09;。它定义了索引&#xff08;Index&#xff09;中的文档&#xff08;Document&#xff09;可以包含哪些字段&#xff08;…

【Linux | 网络】多路转接IO之poll

一、poll函数二、poll的优缺点三、实现poll服务器&#xff08;只关心读事件&#xff09;3.1 Log.hpp&#xff08;日志&#xff09;3.2 Lockguard.hpp&#xff08;自动管理锁&#xff09;3.3 Socket.hpp&#xff08;封装套接字&#xff09;3.4 PollServer.hpp&#xff08;服务端…

一站式资源共享平台模板,助力快速搭建专属资源站源码

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 这个资源分享网站模板是一个功能完整、设计现代的单页网站&#xff0c;非常适合快速搭建资源分享平台。以下是关于这个模板的详细介绍&#xff0c;帮助你更好地理解并发布到自己的网站&a…

ngnix的部分配置

1. 禁止特定IP地址访问你可以通过在Nginx配置文件中添加deny指令来阻止特定IP地址或IP地址段的访问。server {listen 80;server_name example.com;location / {deny 192.168.1.0/24;allow all;} }2. 允许特定IP地址访问如果你想允许只有特定IP地址或IP地址段的访问&#xff0c;…

Qwt7.0-打造更美观高效的Qt开源绘图控件库

概述 Qt 生态里能画图的库不多&#xff0c;主流的为QCustomPlot、Qwt、Qt Charts和KDChart&#xff0c;Qt6.8之后把原来的 Qt Charts&#xff08;2D&#xff09; 与 Qt DataVisualization&#xff08;3D&#xff09; 合并为统一的Qt Graphs模块&#xff08;注意不是Qt Graphic…

NFC线圈设计计算

对工作于13.56MHz的电感耦合的NFC系统,针对小距离的传统天线通常是环形或者矩形的扁平线圈。 圆形扁平线圈计算评估 对于二阶估计,我们可以由匝数决定的电感等式为 考虑到线圈的物理参数,设置平均直径:D_averD0-N(gw) 线圈周长: &#xff1b;d2*(w t)/π 初始设置中的这种电感…

mac设置鼠标滚轮方向

mac中滚轮的滑动方向和windows是相反的&#xff0c;如果需要设置和windows相同&#xff0c;设置如下&#xff1a;将自然滚动关闭即可。

QSpinBox的用法及其使用QSS对其美化

摘要 在现代应用程序开发中&#xff0c;提供一个直观且用户友好的界面至关重要。Qt框架提供了丰富的控件和工具&#xff0c;帮助开发者实现这一目标。本文将详细介绍如何使用Qt的QSpinBox控件让用户输入数值&#xff0c;并通过Qt Style Sheets (QSS) 美化界面&#xff0c;提升…

18 继续学习

要设计出一个好的系统&#xff0c;需要多年的知识积累。有一个捷径是研究真实世界的系统架构。本文将介绍一些有帮助的阅读材料。 务必留意那些真实系统之间共通的原理和相同的底层技术。研究每个技术并了解它解决了什么问题&#xff0c; 这是一个巩固基础知识和完善设计过程的…

深度学习篇---混淆矩阵

要理解混淆矩阵&#xff08;Confusion Matrix&#xff09;&#xff0c;我们可以从它的名字入手&#xff1a;它本质是一张 “帮你理清模型预测结果到底‘混淆’在哪里” 的表格&#xff0c;核心作用是评估分类模型的表现 —— 比如判断一张图片是 “猫” 还是 “狗”、一封邮件是…

MySQL重大隐患!mysqlpump的--set-gtid-purged参数在5.7和8.0的雷区

MySQLPump是MySQL官方提供的一个用于备份和恢复MySQL数据库的工具。它于MySQL 5.7.8版本中首次引入&#xff0c;旨在提供一种快速、可靠且高效的备份和恢复解决方案。MySQL Pump首次支持了并行导出、压缩导出&#xff0c;可以利用多核CPU来提高备份能力&#xff0c;在效率上要比…

低质量视频变高清AI:告别模糊,重现清晰画质

在数字时代&#xff0c;视频内容的创作和消费日益普及&#xff0c;然而&#xff0c;许多早期拍摄或存储的视频&#xff0c;由于技术限制或压缩等原因&#xff0c;往往存在画质不佳的问题&#xff0c;如模糊、噪点多、分辨率低等。这不仅影响观看体验&#xff0c;也限制了这些珍…