识别M1卡——LCD液晶屏显示开门—LED亮—舵机转向
未识别M1卡——LCD液晶屏显示关门—LED灭—舵机反向
参考链接:
M1卡介绍 - ivantang - 博客园 (cnblogs.com)
【MFRC522】STM32 MFRC522 IC读卡 程序及原理图_rc522模块原理图_yiquhui666的博客-CSDN博客
主程序
/*
管脚接线图:
RST---PF4
MISO---PF3
MOSI---PF2
SCK---PF1
NSS(SDA)--PF0
*/
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "usart.h"
#include "tftlcd.h"
#include "RC522.h"
#include "time.h"
#include "pwm.h"
unsigned char g_ucTempbuf[20];
int main()
{
unsigned char status,i;
unsigned int temp;
SysTick_Init(72);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2组
LED_Init();
USART1_Init(9600);
TFTLCD_Init(); //LCD初始化
TIM3_CH2_PWM_Init(199,7199); //频率是50Hz
TIM3_Change_PWM();
RC522_Init();
PcdReset();
PcdAntennaOff();
delay_ms(10);
PcdAntennaOn();
delay_ms(10);
TIM4_Init(1000,7199);
FRONT_COLOR=GREEN;
LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"PRECHIN STM32F1");
LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"www.prechin.net");
LCD_ShowString(10,50,tftlcd_data.width,tftlcd_data.height,16,"RFID-RC522 Test");
FRONT_COLOR=RED;
LCD_ShowString(10,110,tftlcd_data.width,tftlcd_data.height,16,"Close Door...");
printf("Start \r\n");
while ( 1 )
{
status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
if (status != MI_OK)//寻卡不成功
{
LED2=1;
Close_door();
PcdReset();
PcdAntennaOff();
PcdAntennaOn(); //重置
continue;
}
printf("卡的类型:");
for(i=0;i<2;i++)
{
temp=g_ucTempbuf[i];
printf("%X",temp);
}
status = PcdAnticoll(g_ucTempbuf);//防冲撞
if(status != MI_OK)
{
continue;
}
printf("卡序列号:"); //超级终端显示,
for(i=0;i<4;i++)
{
temp=g_ucTempbuf[i];
printf("%X",temp);
}
if(g_ucTempbuf[0]==0xBC&&g_ucTempbuf[1]==0xCC&&g_ucTempbuf[2]==0x54&&g_ucTempbuf[3]==0x18)
{
LED2=0;
FRONT_COLOR=RED;
LCD_ShowString(10,110,tftlcd_data.width,tftlcd_data.height,16,"Open Door... ");//开门
Open_door();
}
else
{
LED2=1;
FRONT_COLOR=RED;
LCD_ShowString(10,110,tftlcd_data.width,tftlcd_data.height,16,"Open Fail... ");
Close_door();
}
printf("\n");
PcdHalt();//卡片休眠
}
}
视频
RFID-RC522门禁控制系统--STM32F1程序