链接:
提取码:c0yf
3.1系统的功能分析及体系结构设计
3.1.1系统功能分析
本设计由STM32F103C8T6单片机核心板电路+LCD1602液晶显示电路+RFID模块电路+按键电路+继电器电路组成。
1、继电器模拟车位入口锁开关(类似车位前车桩),正常情况下闭合不允许其他车辆驶入,如果刷卡成功继电器断开,车辆驶入。
2、车辆驶入后,通过按键再次打开继电器,打开车桩,即将车锁在车位处。
3.1.2系统总体结构
本系统具体框图如下图所示:
MFRC-522RFID射频模块电路设计
本系统选择MFRC-522射频模块进行刷卡操作。MF RC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,是NXP公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。MF RC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持14443A兼容应答器信号。数字部分处理ISO14443A帧和错误检测。此外,还支持快速CRYPTO1加密算法,用语验证MIFARE系列产品。MFRC522支持MIFARE系列更高速的非接触式通信,双向数据传输速率高达424kbit/s。作为13.56MHz高集成度读写卡系列芯片家族的新成员,MF RC522与MF RC500和MF RC530有不少相似之处,同时也具备许多特点和差异。它与主机间通信采用SPI模式,有利于减少连线,缩小PCB板体积,降低成本。MF522-AN模块采用Philips MFRC522原装芯片设计读卡电路,使用方便,成本低廉,适用于设备开发、读卡器开发等高级应用的用户、需要进行射频卡终端设计/生产的用户。本模块可直接装入各种读卡器模具。模块采用电压为3.3V,通过SPI接口简单的几条线就可以直接与用户任何CPU主板相连接通信,可以保证模块稳定可靠的工作、读卡距离远;
一、电气参数简介
(1)工作电流:13—26mA/直流3.3V
(2)空闲电流:10-13mA/直流3.3V
(3)休眠电流:<80uA
(4)峰值电流:<30mA
(5)工作频率:13.56MHz
(6)支持的卡类型:mifare1 S50、mifare1 S70、mifare UltraLight、mifare Pro、mifare Desfire
(7)环境工作温度:摄氏-20—80度
(8)环境储存温度:摄氏-40—85度
(9)环境相对湿度:
(10)相对湿度5%—95%
二、模块接口SPI参数
(1)数据传输速率:最大10Mbit/s
三、模块主要指标
(1)容量为8K位EEPROM
(2)分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位
(3)每个扇区有的一组密码及访问控制
(4)每张卡有唯一序列号,为32位
(5)具有防冲突机制,支持多卡操作
(6)无电源,自带天线,内含加密控制逻辑和通讯逻辑电路
(7)数据保存期为10年,可改写10万次,读无限次
(8)工作温度:-20℃~50℃(湿度为90%)
(9)工作频率:13.56MHZ
(10)通信速率:106 KBPS
(11)读写距离:10 cm以内(与读写器有关)
模块接口原理图如下图所示。
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "lcd.h"
#include <stdio.h>
#include "timer.h"
#include "lcd1602.h"
#include "key.h"
#include "rc522.h"
/**************/
unsigned char idCard[4]={0x87,0x15,0xc9,0x73}; //有效卡号
/**************/
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
LED_Init(); //初始化与LED连接的硬件接口
KEY_Init(); //初始化按键
relay1 = 0;
delay_ms(200);
relay1 =1;
Rc522IoInit();
PcdReset();//复位RC522
PcdAntennaOn();//开启天线发射
while(1)
{
if(key1==0) //检测到按键按下
{
delay_ms(10); //小抖动
if(key1==0) //检测是否按下
{
relay1 =1; //打开继电器
}
}
if(PcdRequest(0x52,Temp)==MI_OK)//读取到卡
{
if(PcdAnticoll(UID)==MI_OK)//卡号获取成功
{
if((UID[0]==idCard[0])&&(UID[2]==idCard[2])&&(UID[3]==idCard[3]))//匹配卡号
{
relay1 =0; //关闭继电器
}
delay_ms(10);
}
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- nryq.cn 版权所有 赣ICP备2024042798号-6
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务