|
- /*-----------------------------------------------
- 名称:MF RC522
- 内容:通过标准程序静态显示字符
- 引脚定义如下:
- sbit MF522_NSS =P2^4 ; //RC500片选 SDA
- sbit MF522_SCK = P2^5;
- sbit MF522_SI = P2^3; //MOSI
- sbit MF522_SO = P2^2; //MISO
- sbit MF522_RST = P2^1;
- ------------------------------------------------*/
- #include "lpcreg.h"
- #include "main.h"
- #include "mfrc522.h"
- #include <STDIO.H>
- #include <string.h>
- unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
- //M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令
- //4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反
- unsigned char code data2[4] = {0,0,0,0x01};
- unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
- unsigned char g_ucTempbuf[20];
- void delay1(unsigned int z)
- {
- unsigned int x,y;
- for(x=z;x>0;x--)
- for(y=110;y>0;y--);
- }
- void main( )
- {
- unsigned char status,i;
- unsigned int temp;
- InitializeSystem( );
- PcdReset();
- PcdAntennaOff();
- PcdAntennaOn();
- while ( 1 )
- {
- status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
- if (status != MI_OK)
- {
- InitializeSystem( );
- PcdReset();
- PcdAntennaOff();
- PcdAntennaOn();
- continue;
- }
- /****卡类型***********/
- printf("card type:");
- for(i=0;i<2;i++)
- {
- temp=g_ucTempbuf[i];
- printf("%X",temp);
-
- }
- printf("\ncard type end \n");
- status = PcdAnticoll(g_ucTempbuf);//防冲撞
- if (status != MI_OK)
- { continue; }
-
- ////////以下为超级终端打印出的内容////////////////////////
- /****卡序列**********/
- printf("card number:"); //超级终端显示,
- for(i=0;i<4;i++)
- {
- temp=g_ucTempbuf[i];
- printf("%X",temp);
-
- }
- if((g_ucTempbuf[0]==0xac) && (g_ucTempbuf[1]==0x9b) && (g_ucTempbuf[2]==0xca) && (g_ucTempbuf[3]==0x85))
- printf("\nOKK,this prog is ready!\n");
- printf("\ncard number end \n");
- ///////////////////////////////////////////////////////////
- status = PcdSelect(g_ucTempbuf);//选定卡片
- if (status != MI_OK)
- { continue; }
-
- status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//验证卡片密码
- if (status != MI_OK)
- { continue; }
-
- status = PcdWrite(1, data1);//写块
- if (status != MI_OK)
- { continue; }
复制代码 |
|