基于STM32单片机智能车位锁桩设计原理图程序

功能:
0.本项目采用STM32F103C8T6作为单片机系统的控制MCU
1.采用电磁锁模拟车位锁,正常情况下闭合不允许其他车辆驶入,如果刷卡成功继电器控制锁断开,车辆驶入。
2.本项目采用RC-522作为射频卡模块,通过刷卡来识别信息
3.同时具备一个隐藏的按键可以手动控制车锁的状态
4.采用DC002作为电源接口可直接输入5V给整个系统供电

原理图:
在这里插入图片描述

PCB :
在这里插入图片描述

主程序:

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include <stdio.h>
#include "timer.h"
#include "key.h"
#include "rc522.h"

/**************/
unsigned char idCard[4] = {0x0C, 0x59, 0xB3, 0x16}; // 有效卡号
/**************/

u8 rekey = 0; // 按键防止重复
u8 i;
unsigned char UID[5]; // 读取到的卡号
unsigned char Temp[4];

int main(void)
{
	Delay_Init();			  // 延时函数初始化
	// UART_Init(9600);		  // 串口初始化为9600
	TIM3_Int_Init(499, 7199); // 50ms
	Relay_GPIO_Init();				  // 初始化与LED连接的硬件接口
	KEY_Init();				  // 初始化按键

	Relay1 = 0;

	Rc522IoInit();
	PcdReset();		// 复位RC522
	PcdAntennaOn(); // 开启天线发射

	while (1)
	{
		if (KEY1 == 0) // 检测到按键按下
		{
			Delay_ms(10); // 小抖动

			if (KEY1 == 0) // 检测是否按下
			{
                Relay1 = 1;
                Delay_ms(200);
                Relay1 = 0;
			}
            while (KEY1 == 0);
		}
		if (PcdRequest(0x52, Temp) == MI_OK) // 读取到卡
		{
            Delay_ms(500); //延迟响应
			if (PcdAnticoll(UID) == MI_OK) // 卡号获取成功
			{
                Delay_ms(500);
				if ((UID[0] == idCard[0]) && (UID[2] == idCard[2]) && (UID[3] == idCard[3])) // 匹配卡号
				{
                    Relay1 = 1;
                    Delay_ms(200);
                    Relay1 = 0;
				}
				Delay_ms(10);
			}
            while (PcdAnticoll(UID) == MI_OK);
		}
	}
}

实物演示视频:
https://www.bilibili.com/video/BV1ke411A7Jz/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值