标题:
RC522模块原理图与PCB图,包括51单片机和430单片机测试程序
[打印本页]
作者:
happy112
时间:
2016-6-10 07:38
标题:
RC522模块原理图与PCB图,包括51单片机和430单片机测试程序
0.png
(12.51 KB, 下载次数: 334)
下载附件
2016-6-10 07:30 上传
0.png
(36.7 KB, 下载次数: 193)
下载附件
2016-6-10 07:31 上传
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);
MF522_SCK = 1;
ucAddr <<= 1;
MF522_SCK = 0;
}
for(i=8;i>0;i--)
{
MF522_SCK = 1;
ucResult <<= 1;
ucResult|=(bit)MF522_SO;
MF522_SCK = 0;
}
MF522_NSS = 1;
MF522_SCK = 1;
return ucResult;
}
复制代码
430单片机测试程序:
#include <msp430x41x.h>
#include "main.h"
#include "mfrc522.h"
#pragma memory = constseg(TAB)
unsigned char 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 data2[4] = {0x12,0,0,0};
unsigned char DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
#pragma memory=default
unsigned char g_ucTempbuf[20];
void main(void)
{
unsigned char status;
InitializeSystem();
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
while ( 1 )
{
status = PcdRequest(PICC_REQALL, g_ucTempbuf);
if (status != MI_OK)
{
LED_GREEN_OFF;
continue;
}
LED_GREEN_ON; //检测到有卡存在
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(void)
{
WDTCTL = WDTPW + WDTHOLD; //Stop watchdog timer
_DINT();
P1DIR = 0xE8;
P1OUT = 0xFF;
P6DIR = 0x08;
P6OUT = 0xFF;
}
复制代码
全部资料(压缩包)下载:
M112120_FSpec_RC522_20050801.pdf
(1.3 MB, 下载次数: 214)
2016-6-10 07:34 上传
点击文件名下载附件
下载积分: 黑币 -5
SL016.rar
(10.92 KB, 下载次数: 254)
2016-6-10 07:34 上传
点击文件名下载附件
下载积分: 黑币 -5
SL106.rar
(3.11 KB, 下载次数: 160)
2016-6-10 07:34 上传
点击文件名下载附件
下载积分: 黑币 -5
源代码.zip
(66.11 KB, 下载次数: 129)
2016-6-10 07:34 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
robinxiong
时间:
2016-7-19 14:05
供应13.56M非接芯片,兼容CV520,RC522,RC523,FM17520,FM17522.具有绝对成本优势。有意者可加QQ458231727
作者:
Tliang
时间:
2016-8-5 08:35
图好小
作者:
一线光辉
时间:
2016-8-9 09:49
楼主522和51通信能不能只接TX,RX,不接DTRQ,MX呢?
作者:
zg1519126168
时间:
2016-11-16 22:29
不能用
作者:
lehigh
时间:
2016-12-1 22:36
感谢分享,费用有用
作者:
605891789
时间:
2017-5-6 15:13
很好的资料,谢谢分享
作者:
clementa
时间:
2017-5-10 18:45
没发现原理图,,,??
作者:
armauk
时间:
2017-5-29 17:57
资料不错
作者:
Lgsa88
时间:
2017-6-21 18:29
正找呢 可是没有黑币啊
作者:
Lgsa88
时间:
2017-6-21 18:30
新手发不了贴?
作者:
psven
时间:
2017-7-11 14:31
不错,学习了。
作者:
djk0125
时间:
2017-9-13 14:05
研究研究!拿来主义!3Q啦
作者:
hcrdi
时间:
2017-9-19 21:47
不错,学习了。
作者:
firegod01cn
时间:
2017-9-26 18:24
多谢 好东西
作者:
lishaoyu2012
时间:
2017-10-18 14:06
好东西 收藏收藏
作者:
a125327964
时间:
2017-11-15 10:43
这么小的图,看得到么?
作者:
fanglei2583
时间:
2017-11-24 22:43
好东西 收藏收藏
作者:
guoxiao69
时间:
2018-4-1 21:58
非常感谢楼主的无私分享精神。
作者:
pengzhangjun
时间:
2018-6-6 15:34
学习了
作者:
wwwwheihei
时间:
2018-6-7 15:50
帖子不错不过没有黑比
作者:
wwwwheihei
时间:
2018-6-7 16:39
希望发我qq邮箱一份,
2906905479@qq.com
作者:
mengtao689
时间:
2018-6-8 10:43
赞一个~~~
作者:
hai1980
时间:
2018-6-12 14:08
刚好用上
作者:
hai1980
时间:
2018-6-12 14:08
谢谢分享
作者:
dd774975175
时间:
2018-7-17 17:59
没把参数放出来
作者:
hbsun2007
时间:
2018-8-10 21:51
谢谢楼主贡献
作者:
d379751428
时间:
2018-8-11 20:51
非常感谢 、正愁PCB天线怎么画
作者:
LUXIAN
时间:
2018-8-29 11:22
不错,学习了。
作者:
375582624
时间:
2018-8-29 11:42
不错,学习了。
作者:
luodato
时间:
2018-11-21 11:22
很有帮助
作者:
keyvan
时间:
2018-12-12 17:46
谢谢楼主分享好东西!
作者:
mitosis
时间:
2019-2-17 17:28
谢谢分享!
作者:
X3814072
时间:
2019-3-25 09:30
研究一下,再来回复
作者:
zhuhanliang
时间:
2019-5-11 13:11
参考
作者:
xiong2088
时间:
2019-7-23 10:31
不错,很有用。
作者:
gugou
时间:
2019-9-2 14:59
谢谢分享
作者:
okwe
时间:
2019-12-19 13:43
好东西 收藏收藏
作者:
Robust_Gao
时间:
2020-3-1 22:48
不错挺好的
作者:
漫影
时间:
2020-5-26 14:02
不错不错,学习了!
作者:
onono
时间:
2020-5-29 13:38
最近正准备调这个,只是天线还不会画。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1