历史上的今天
今天是:2024年12月11日(星期三)
2019年12月11日 | MFRC522电路原理图与单片机测试程序
2019-12-11 来源:51hei
MFRC522电路原理图:
天线部分:
单片机+MFRC522测试源程序如下:
/**********************RC522实验开发板例程************************
* CPU:STC89C52RC
* 晶振:11.0592MHZ
******************************************************************/
//实验目的:
/*-----------------------------------------------
名称:MF RC522
内容:通过标准程序静态显示字符
引脚定义如下:
sbit MF522_NSS = P1^7; //SDA
sbit MF522_SCK = P1^6;
sbit MF522_SI = P1^5;
sbit MF522_SO = P1^4;
sbit MF522_RST = P1^3;
//蜂鸣器OR指示灯
sbit LED_GREEN = P2^3;
------------------------------------------------*/
#include "lpcreg.h"
#include "main.h"
#include "mfrc522.h"
#include #include 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("卡的类型:"); for(i=0;i<2;i++) { temp=g_ucTempbuf[i]; printf("%X",temp); } status = PcdAnticoll(g_ucTempbuf);//防冲撞 if (status != MI_OK) { continue; } ////////以下为超级终端打印出的内容//////////////////////// printf("卡序列号:"); //超级终端显示, for(i=0;i<4;i++) { temp=g_ucTempbuf[i]; printf("%X",temp); } /////////////////////////////////////////////////////////// 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; } while(1) { status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡 if (status != MI_OK) { InitializeSystem( ); PcdReset(); PcdAntennaOff(); PcdAntennaOn(); continue; } 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 = 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; } printf("卡读块:"); //超级终端显示, for(i=0;i<16;i++) { temp=g_ucTempbuf[i]; printf("%X",temp); } printf("n"); LED_GREEN = 0; delay1(100); LED_GREEN = 1; delay1(100); LED_GREEN = 0; delay1(200); LED_GREEN = 1;
上一篇:数码管显示时钟可设置断电记忆
史海拾趣
|
wince5.0 USB HOST 只能插入两个U盘,怀疑是wince驱动的问题,希望探讨一下! 如题,我在wince5.0下接两个U盘可以正常工作,但接第三个U盘时会跳出输入驱动名称的对话框,而且供电电流是足够的,现在在研究wince的USB HOST驱动,还没发现什么问题,希望有研究过的可以指点一下!… 查看全部问答> |
|
1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2. 初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉 ...… 查看全部问答> |
|
【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十五章 USB读卡器实验 第五十五章 USB读卡器实验 上一章我们向大家介绍了如何利用STM32的USB来做一个触控USB鼠标,本章我们将利用STM32的USB来做一个USB读卡器。本章分为如下几个部分:55.1 USB读卡器简介55.2 硬件设计55.3 软件设计55.4 下载验证 55.1 U ...… 查看全部问答> |
|
本帖最后由 旺宝电子 于 2015-1-19 14:01 编辑 第三章 宝马1768——EXTI开发环境:集成开发环境μVision4 IDE版本4.60.0.0主机系统:Microsoft Windows XP开发平台:旺宝NXP LPC1768开发板 3.1 EXTI3.2 硬件描述3.3 程序说明3.4 实 ...… 查看全部问答> |
|
本帖最后由 weizhongc 于 2015-4-8 10:07 编辑 #define ROTATE_A PAin(2) #define ROTATE_B PAin(3) s16 DATA=0; void EXTI2_IRQHandler(void) { if(EXTI_GetITStatus(EXTI_Line2) != RESET) { &nbs ...… 查看全部问答> |




