历史上的今天
返回首页

历史上的今天

今天是: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;                                                          

推荐阅读

史海拾趣

Computer Conversions Corp公司的发展小趣事

随着公司技术的成熟和知名度的提升,Computer Conversions Corp开始将目光投向国际市场。公司派出专业的市场拓展团队,深入欧洲、亚洲等多个地区进行市场调研。经过一系列精准的市场分析和产品定位,公司成功地将产品推向了全球市场。这一过程中,他们不仅赢得了众多国际客户的信赖,还通过与当地企业的合作,进一步提升了品牌的影响力和市场份额。

Continental公司的发展小趣事

随着汽车工业的发展,大陆集团开始将业务扩展到汽车轮胎领域。1901年,马牌轮胎首次与德国戴姆勒·奔驰汽车公司合作参加汽车竞赛,这标志着大陆集团正式进入汽车轮胎市场。仅仅三年后,大陆集团就生产出了全世界第一条带花纹的汽车轮胎,这一创新大大提高了轮胎的抓地力和安全性。1908年,大陆集团又生产出了全世界第一个可拆装的车轮,使车轮和车轴分开,由此大大节省了换轮胎的时间。这些技术创新使得大陆集团在汽车轮胎市场上占据了重要地位。

Adamant Co Ltd公司的发展小趣事

随着企业规模的扩大,Adamant Co Ltd逐渐意识到社会责任的重要性。公司积极参与公益事业,为社会做出贡献。同时,公司还注重可持续发展,通过采用环保材料和生产工艺、降低能耗等方式,实现绿色生产。这些举措不仅提升了公司的社会形象,也为公司的长期发展注入了新的活力。

这些故事虽然基于虚构的Adamant Co Ltd公司,但其中所描述的挑战、机遇和策略在电子行业中是普遍存在的。通过这些故事,我们可以对电子行业企业的发展过程有一个大致的了解。

Anpec(茂达)公司的发展小趣事

凭借卓越的产品质量和良好的市场口碑,茂达电子在国内电源模拟IC设计领域的地位逐渐提升。公司不仅在国内市场取得了显著的成绩,还积极拓展海外市场,与众多国际知名企业建立了稳定的合作关系。茂达电子的产品广泛应用于计算机、通信和消费者等领域,为全球客户提供了高质量的电源解决方案。

Bombardier Inc公司的发展小趣事

随着全球航空市场的不断变化,庞巴迪公司在商用航空领域也取得了显著成就。其生产的CRJ系列区域喷气客机和Q系列涡桨飞机在全球范围内广受欢迎。这些飞机配备了先进的电子设备和系统,提供了更高的安全性和舒适性。庞巴迪还推出了C系列单通道中距客机,该机型以其环保、经济和人性化的设计赢得了市场的广泛认可。

Horn公司的发展小趣事

自1969年成立以来,Horn公司便致力于开发和生产切槽、侧铣和槽铣刀具。起初,公司聚焦于为小型机械加工企业提供高质量的工具解决方案。在创始人Paul Horn的领导下,公司迅速建立了技术团队,专注于刀具材料的研发与生产工艺的改进。这一时期,Horn公司凭借其出色的产品质量和定制化的服务,在行业内逐渐树立了良好的口碑。

问答坊 | AI 解惑

关于AD7228

请问坛子上有没有人用过ADI公司的AD7228,D/A转换芯片啊,我有问题请教…

查看全部问答>

wince5.0 USB HOST 只能插入两个U盘,怀疑是wince驱动的问题,希望探讨一下!

    如题,我在wince5.0下接两个U盘可以正常工作,但接第三个U盘时会跳出输入驱动名称的对话框,而且供电电流是足够的,现在在研究wince的USB HOST驱动,还没发现什么问题,希望有研究过的可以指点一下!…

查看全部问答>

抢答:51里怎样用pwm产生正弦信号?

51里怎样用pwm产生正弦信号呢?…

查看全部问答>

.NET Compact Framework

.NET Compact Framework的经典解释.…

查看全部问答>

请不要做浮躁的嵌入式工程师

1. 不要看到别人的回复,第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2. 初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是只对部分功能熟悉 ...…

查看全部问答>

求助

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY count ISPORT (clk,start,reset : IN STD_LOGIC;        cout : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)      & ...…

查看全部问答>

今天试着申请了下“金刚狼”

还是XMS的标号。 试着申请MSP430FR5969,但是可能是样品库还没有货的原因不能添加 …

查看全部问答>

【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十五章 USB读卡器实验

第五十五章 USB读卡器实验     上一章我们向大家介绍了如何利用STM32的USB来做一个触控USB鼠标,本章我们将利用STM32的USB来做一个USB读卡器。本章分为如下几个部分:55.1 USB读卡器简介55.2 硬件设计55.3 软件设计55.4 下载验证 55.1 U ...…

查看全部问答>

NXP LPC1768宝马开发板 第三章EXTI

本帖最后由 旺宝电子 于 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 实 ...…

查看全部问答>

最精简的stm32编码器程序

本帖最后由 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 ...…

查看全部问答>