RFID-RC522+STC89C52+IC卡号识别教程 by小伍子 一、将排针焊到板子上,切记要焊好,不要虚焊,如下图:
二、 识别模块与单片机之间通过SPI进行通信,硬件引脚与程序中引脚的对应情况如下:
SDA——MF522_NSS
SCK——MF522_SCK
MOSI——MF522_SI
MISO——MF522_SO
RST——MF522_RST
单片机IO口引脚与程序中引脚对应关系可在MAIN.H文件中修改,位置如下:
三、 RC522模块的电源问题(笔者曾经因为这个问题被困扰了很久)
电压最大不能超过3.6V,单片机供电为5V,切记不要直接供电,否则会出现不识卡的情况,可以使用“稳压LM1117-3.3”这个原件,或者这样:
四、 本人程序中设置RC522与单片机的连接如下:
五、 程序中设置好的串口通信波特率为4800,当寻卡成功后io口ff连着的LED灯或者蜂鸣器发光或者发声,同时通过串口传输4个字节的数据,数据内容如下:
如果不使用十六进制解析的话,得到的可能是乱码,使用十六进制得到的就是8个字符。
六、本人也是菜鸟,如果有写的不好的地方,还请谅解!
MFRC522中文手册目录:
MFRC522单片机源程序如下(主程序):
- #include<reg52.h>
- #include<main.h>
- #include<mfrc522.h>
- unsigned char UID[5],Temp[4];
- void feeb(){ //寻卡成功响应函数
- ff=0;
- delay_10ms(1);
- ff=1;
- delay_10ms(1);
- }
- void Auto_Reader(void){
- while(1){
- if(PcdRequest(0x52,Temp)==MI_OK){ //寻卡,成功后Temp数组为卡类型
- if(PcdAnticoll(UID)==MI_OK){ //防冲突,UID数组数据为卡序列号
- CALL_isr_UART(); //开串口中断将UID数组前四个字节上传到串口调试助手
- feeb(); //调用蜂鸣器提示
- }
- }else ff = 0;//寻卡失败
- }
- }
- void InitializeSystem(){
- SCON=0X50; //设置为工作方式1
- TMOD=0X21; //设置计数器工作方式2
- PCON=0X80; //波特率加倍
- TH1=0XF3; //计数器初始值设置,注意波特率是4800的
- TL1=0XF3;
- REN = 1;
- ES=1; //打开接收中断
- EA=1; //打开总中断
- TR1=1;
- ff = 0;
- PcdReset();
- PcdAntennaOff();
- PcdAntennaOn();
- M500PcdConfigISOType( 'A' );
- }
- void isr_UART(void) interrupt 4 using 1{
- unsigned char i;
- if(TI){
- TI=0;
- for(i=0;i<4;i++){
- SBUF=UID[i];
- while(!TI);
- TI=0;
- }
- REN=1;
- }
- }
- void main( ){
- InitializeSystem( );
- Auto_Reader();
- }
复制代码
所有资料51hei提供下载:
RC522 STC89C52 串口通信.zip
(9.35 MB, 下载次数: 1122)
|