×
单片机 > 单片机程序设计 > 详情

51单片机读写RC522卡参考例程及上位机调试软件源码

发布时间:2024-04-18 发布时间:
|

原理图:

单片机源程序如下:

#include "reg52.h"

#include "main.h"

#include "mfrc522.h"

#include

//M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令

//4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反

unsigned char code data2[4] = {0x12,0,0,0};

unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

unsigned char g_ucTempbuf[20];

unsigned char idata MLastSelectedSnr[4];

unsigned char idata RevBuffer[30];

unsigned char data SerBuffer[20];

bit CmdValid;


void iccardcode()

{

unsigned char cmd;

unsigned char status;

cmd = RevBuffer[0];

switch(cmd)

{

case 1: // Halt the card //终止卡的操作

status= PcdHalt();;

RevBuffer[0]=1;

RevBuffer[1]=status;

break;

case 2: // Request,Anticoll,Select,return CardType(2 bytes)+CardSerialNo(4 bytes)

// 寻卡,防冲突,选择卡 返回卡类型(2 bytes)+ 卡系列号(4 bytes)

status= PcdRequest(RevBuffer[1],&RevBuffer[2]);

if(status!=0)

{

status= PcdRequest(RevBuffer[1],&RevBuffer[2]);

if(status!=0)

{

RevBuffer[0]=1;

RevBuffer[1]=status;

break;

}

}

RevBuffer[0]=3;

RevBuffer[1]=status;

break;

case 3: // 防冲突 读卡的系列号 MLastSelectedSnr

status = PcdAnticoll(&RevBuffer[2]);

if(status!=0)

{

RevBuffer[0]=1;

RevBuffer[1]=status;

break;

}

memcpy(MLastSelectedSnr,&RevBuffer[2],4);

RevBuffer[0]=5;

RevBuffer[1]=status;

break;

case 4: // 选择卡 Select Card

status=PcdSelect(MLastSelectedSnr);

if(status!=MI_OK)

{

RevBuffer[0]=1;

RevBuffer[1]=status;

break;

}

RevBuffer[0]=3;

RevBuffer[1]=status;

break;

case 5: // Key loading into the MF RC500's EEPROM

status = PcdAuthState(RevBuffer[1], RevBuffer[3], DefaultKey, MLastSelectedSnr);// 校验卡密码

RevBuffer[0]=1;

RevBuffer[1]=status;

break;

case 6:

RevBuffer[0]=1;

RevBuffer[1]=status;

break;

case 7:

RevBuffer[0]=1;

RevBuffer[1]=status;

break;

case 8: // Read the mifare card

// 读卡

status=PcdRead(RevBuffer[1],&RevBuffer[2]);

if(status==0)

{RevBuffer[0]=17;}

else

{RevBuffer[0]=1;}

RevBuffer[1]=status;

break;

case 9: // Write the mifare card

// 写

[1] [2] [3]
51单片机读写RC522卡参上位机调试

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
qemu+chroot构建arm aarch64虚拟机