標(biāo)題:
STC8A8K單片機(jī)實(shí)現(xiàn)無源RC522模塊讀寫卡程序+資料
[打印本頁]
作者:
叁夢(mèng)
時(shí)間:
2019-9-21 15:48
標(biāo)題:
STC8A8K單片機(jī)實(shí)現(xiàn)無源RC522模塊讀寫卡程序+資料
STC最新的STC系列單片機(jī)可以實(shí)現(xiàn)RFID的讀卡,寫卡,擦除卡的操作,有源碼和上位機(jī)
單片機(jī)源程序如下:
/****************************************Copyright (c)****************************************************
**
**
**
**--------------File Info---------------------------------------------------------------------------------
** File name: main.c
** Last modified Date:
** Last Version:
** Descriptions:
**--------------------------------------------------------------------------------------------------------
** Created by: FiYu
** Created date: 2018-2-1
** Version: 1.0
** Descriptions: 無源RFID MFRC522實(shí)驗(yàn)
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
** Rechecked by:
**********************************************************************************************************/
#include <string.h>
#include "uart.h"
#include "rc522.h"
#include "UartComm.h"
#define READ_CARD 0x10
#define WRITE_CARD 0x11
#define MODIFY_PASSWORD 0x12
#define RECE_CMD FrameReceInfo.buf[1] //命令
#define BLOCK_NUM FrameReceInfo.buf[2] //塊號(hào)
/**********************
引腳別名定義
***********************/
sbit LED_B=P0^7; //RGB藍(lán)色LED用IO口P07
xdata uint8 uartReceBuf[20];
xdata uint8 WriteDat[16];
//M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
//4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反
//uint8_t code data2[4] = {0,0,0,0x01};
uint8 CardKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
uint8 NewKey[16];
uint8 xdata g_ucTempbuf[20];
void RC522_Init(void)
{
RC522_Reset();
PcdAntennaOff();
//PcdAntennaOn();
M500PcdConfigISOType( 'A' );
}
uint8 CardHanding(void)
{
uint8 status,i;
status = RC522_Request(PICC_REQIDL, g_ucTempbuf);//尋卡,返回卡的類型:2個(gè)字節(jié)
if(status != MI_OK) return 0;
if(RECE_CMD == READ_CARD)for(i=0;i<2;i++)U1SendData(g_ucTempbuf[i]); //發(fā)送卡類型,2個(gè)字節(jié) 只有接收到讀卡命令才發(fā)送
status = RC522_Anticoll(g_ucTempbuf);//防沖撞,返回卡的序列號(hào):4字節(jié)
if(status != MI_OK) return 0;
if(RECE_CMD == READ_CARD)for(i=0;i<4;i++)U1SendData(g_ucTempbuf[i]); //發(fā)送卡號(hào),4個(gè)字節(jié) 只有接收到讀卡命令才發(fā)送
status = PcdSelect(g_ucTempbuf);//選定卡片
if(status != MI_OK) return 0;
switch(RECE_CMD) //解析命令
{
case READ_CARD: // 讀卡
memcpy(CardKey,&FrameReceInfo.buf[3],6); //拷貝密碼
status = PcdAuthState(PICC_AUTHENT1A, BLOCK_NUM, CardKey, g_ucTempbuf);//驗(yàn)證卡片密碼
if(status != MI_OK) return 0;
status = PcdRead(BLOCK_NUM, g_ucTempbuf);//讀塊
if(status != MI_OK) return 0;
for(i=0;i<16;i++)U1SendData(g_ucTempbuf[i]); //發(fā)送讀出的內(nèi)容,16個(gè)字節(jié)
PcdHalt();
break;
case WRITE_CARD: //寫卡
memcpy(CardKey,&FrameReceInfo.buf[3],6); //拷貝密碼
memcpy(WriteDat,&FrameReceInfo.buf[9],16); //拷貝待寫入的數(shù)據(jù)
status = PcdAuthState(PICC_AUTHENT1A, BLOCK_NUM, CardKey, g_ucTempbuf);//驗(yàn)證卡片密碼
if(status != MI_OK) return 0;
status = PcdWrite(BLOCK_NUM, WriteDat); //寫塊
if(status != MI_OK) return 0;
PcdHalt();
break;
case MODIFY_PASSWORD: //修改密碼
memcpy(CardKey,&FrameReceInfo.buf[3],6); //拷貝待寫入的數(shù)據(jù)
for(i=0;i<6;i++)NewKey[i] = FrameReceInfo.buf[9+i];//拷貝新密碼
for(i=0;i<6;i++)NewKey[i+10] = FrameReceInfo.buf[9+i];
NewKey[6] = 0xFF;
NewKey[7] = 0x07;
NewKey[8] = 0x80;
NewKey[9] = 0x69;
status=PcdAuthState(PICC_AUTHENT1A,BLOCK_NUM,CardKey,g_ucTempbuf);
if(status!=MI_OK) return 0;
status=PcdWrite(BLOCK_NUM,&NewKey[0]);
if(status!=MI_OK)
return 0;
PcdHalt();
break;
}
return 0;
}
/***************************************************************************
* 描 述 : 主函數(shù)
* 入 參 : 無
* 返回值 : 無
**************************************************************************/
int main()
{
P3M1 &= 0xFE; P3M0 &= 0xFE; //設(shè)置P3.0為準(zhǔn)雙向口
P3M1 &= 0xFD; P3M0 |= 0x02; //設(shè)置P3.1為推挽輸出
Uart1_Init();
RC522_Init();
EA = 1;
while(1)
{
if(UartReceFrame() == UART_FRAME_AVAIL)//串口接收到數(shù)據(jù)?
{
CardHanding();
LED_B = ~LED_B;
}
}
}
復(fù)制代碼
所有資料51hei提供下載:
無源RFID RC522實(shí)驗(yàn).7z
(7.61 MB, 下載次數(shù): 197)
2019-9-21 16:37 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
woojoon1981
時(shí)間:
2020-5-8 16:33
下載來看看如何
作者:
魚之躍
時(shí)間:
2021-3-15 09:09
真棒 nice
作者:
fancunwu
時(shí)間:
2024-3-7 16:23
你反應(yīng) 讀不了卡 不知道啥原因
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1