51單片機和msp430單片機讀寫射頻卡程序的原理圖和例程都有
0.png (54.94 KB, 下載次數: 140)
下載附件
2017-5-16 23:13 上傳
0.png (34.94 KB, 下載次數: 129)
下載附件
2017-5-16 23:13 上傳
0.png (60.22 KB, 下載次數: 135)
下載附件
2017-5-16 23:13 上傳
文檔包含:
ISO14443\
ISO14443-2.pdf
ISO14443-3.pdf
ISO14443-4.pdf
Mifare卡片資料\
Design of MF RC500 Matching Circuits and Antennas.PDF
M01811.PDF
M112120_FSpec_RC522_20050801.pdf
MF1 S50.pdf
0.png (86.15 KB, 下載次數: 136)
下載附件
2017-5-16 23:16 上傳
0.png (61.57 KB, 下載次數: 122)
下載附件
2017-5-16 23:13 上傳
51單片機源程序如下:
- #include "lpcreg.h"
- #include "main.h"
- #include "mfrc522.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] = {0x12,0,0,0};
- unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
- unsigned char g_ucTempbuf[20];
- void main( )
- {
- unsigned char status;
- InitializeSystem( );
- PcdReset();
- PcdAntennaOff(); //關閉天線
- PcdAntennaOn(); //開啟天線
- while ( 1 )
- {
- status = PcdRequest(PICC_REQALL, g_ucTempbuf); #define PICC_REQIDL 0x26 //尋天線區內未進入休眠狀態
- ////////////////////////////////////////////////////////////////////////////////
- if (status != MI_OK)
- {
- LED_GREEN = 1;
- continue;
- }
- /////////////////////////////////////////////////////////////////////
- LED_GREEN = 0;
- status = PcdAnticoll(g_ucTempbuf);
- //////////////////////////////////////////////////////////////////////
- if (status != MI_OK)
- {
- continue;
- }
- /////////////////////////////////////////////////////////////////////
- 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;
- }
- /////////////////////////////////////////////////////////////////////////////////
- status = PcdValue(PICC_DECREMENT,1,data2);
- if (status != MI_OK)
- {
- continue;
- }
- /////////////////////////////////////////////////////////////////////////////////
- status = PcdBakValue(1, 2);
- if (status != MI_OK)
- {
- continue;
- }
- /////////////////////////////////////////////////////////////////////////////
- status = PcdRead(2, g_ucTempbuf);
- if (status != MI_OK)
- {
- continue;
- }
- PcdHalt(); //命令卡片進入休眠狀態
- }
- }
- /////////////////////////////////////////////////////////////////////
- //系統初始化
- /////////////////////////////////////////////////////////////////////
- void InitializeSystem()
- {
- P0M1 = 0x0; P0M2 = 0x0;
- P1M1 = 0x0; P1M2 = 0x0;
- P3M1 = 0x0; P3M2 = 0xFF;
- P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;
- }
- /////////////////////////////////////////////////////////////////////
- //功 能:復位RC522
- //返 回: 成功返回MI_OK
- /////////////////////////////////////////////////////////////////////
- char PcdReset(void)
- {
- MF522_RST=1;
- _nop_();
- MF522_RST=0;
- _nop_();
- MF522_RST=1;
- _nop_();
- WriteRawRC(CommandReg,PCD_RESETPHASE);
- _nop_();
-
- WriteRawRC(ModeReg,0x3D); //和Mifare卡通訊,CRC初始值0x6363
- WriteRawRC(TReloadRegL,30);
- WriteRawRC(TReloadRegH,0);
- WriteRawRC(TModeReg,0x8D);
- WriteRawRC(TPrescalerReg,0x3E);
-
- return MI_OK;
- }
- /////////////////////////////////////////////////////////////////////
- //功 能:寫RC632寄存器
- //參數說明:Address[IN]:寄存器地址
- // value[IN]:寫入的值
- /////////////////////////////////////////////////////////////////////
- void WriteRawRC(unsigned char Address, unsigned char value)
- {
- unsigned char i, ucAddr;
- MF522_SCK = 0;
- MF522_NSS = 0;
- ucAddr = ((Address<<1)&0x7E);
- for(i=8;i>0;i--)
- {
- MF522_SI = ((ucAddr&0x80)==0x80);
- MF522_SCK = 1;
- ucAddr <<= 1;
- MF522_SCK = 0;
- }
- for(i=8;i>0;i--)
- {
- MF522_SI = ((value&0x80)==0x80);
- MF522_SCK = 1;
- value <<= 1;
- MF522_SCK = 0;
- }
- MF522_NSS = 1;
- MF522_SCK = 1;
- }
- /////////////////////////////////////////////////////////////////////
- //功 能:讀RC632寄存器
- //參數說明:Address[IN]:寄存器地址
- //返 回:讀出的值
- /////////////////////////////////////////////////////////////////////
- unsigned char ReadRawRC(unsigned char Address)
- {
- unsigned char i, ucAddr;
- unsigned char ucResult=0;
- MF522_SCK = 0;
- MF522_NSS = 0;
- ucAddr = ((Address<<1)&0x7E)|0x80;
- for(i=8;i>0;i--)
- {
- MF522_SI = ((ucAddr&0x80)==0x80);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
51單片機rc522 射頻的程序和與電路圖.rar
(2.66 MB, 下載次數: 92)
2017-5-16 23:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|