找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2924|回復(fù): 0
收起左側(cè)

51單片機(jī)NFC—RC522程序

[復(fù)制鏈接]
ID:891089 發(fā)表于 2021-5-9 16:03 | 顯示全部樓層 |閱讀模式
  1. /*-----------------------------------------------
  2.   名稱:MF RC522
  3.   內(nèi)容:通過(guò)標(biāo)準(zhǔn)程序靜態(tài)顯示字符
  4.   引腳定義如下:
  5. sbit     MF522_NSS  =P2^4 ;            //RC500片選 SDA
  6. sbit     MF522_SCK  = P2^5;
  7. sbit     MF522_SI   = P2^3;         //MOSI
  8. sbit     MF522_SO   = P2^2;         //MISO
  9. sbit     MF522_RST  = P2^1;   
  10. ------------------------------------------------*/
  11. #include "lpcreg.h"
  12. #include "main.h"
  13. #include "mfrc522.h"
  14. #include   <STDIO.H>
  15. #include <string.h>
  16. unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
  17. //M1卡的某一塊寫(xiě)為如下格式,則該塊為錢包,可接收扣款和充值命令
  18. //4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反
  19. unsigned char code data2[4]  = {0,0,0,0x01};
  20. unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};


  21. unsigned char g_ucTempbuf[20];                        
  22. void delay1(unsigned int z)
  23. {
  24.     unsigned int x,y;
  25.     for(x=z;x>0;x--)
  26.     for(y=110;y>0;y--);   
  27. }  


  28. void main( )
  29. {   
  30.      unsigned char status,i;
  31.       unsigned int temp;
  32.      InitializeSystem( );
  33.      PcdReset();
  34.      PcdAntennaOff();
  35.      PcdAntennaOn();
  36.      while ( 1 )
  37.      {   


  38.          status = PcdRequest(PICC_REQALL, g_ucTempbuf);//尋卡
  39.          if (status != MI_OK)
  40.          {   
  41.               InitializeSystem( );
  42.      PcdReset();
  43.      PcdAntennaOff();
  44.      PcdAntennaOn();
  45.               continue;
  46.          }
  47.         /****卡類型***********/         
  48.             printf("card type:");
  49.             for(i=0;i<2;i++)
  50.                     {
  51.                         temp=g_ucTempbuf[i];
  52.                         printf("%X",temp);
  53.                         
  54.                     }
  55.          printf("\ncard type end \n");   
  56.          status = PcdAnticoll(g_ucTempbuf);//防沖撞
  57.          if (status != MI_OK)
  58.          {    continue;    }

  59.          
  60.                     ////////以下為超級(jí)終端打印出的內(nèi)容////////////////////////
  61.             /****卡序列**********/   
  62.                     printf("card number:");    //超級(jí)終端顯示,
  63.                     for(i=0;i<4;i++)
  64.                     {
  65.                         temp=g_ucTempbuf[i];
  66.                         printf("%X",temp);
  67.                         
  68.                     }
  69.         if((g_ucTempbuf[0]==0xac) && (g_ucTempbuf[1]==0x9b) && (g_ucTempbuf[2]==0xca) && (g_ucTempbuf[3]==0x85))
  70.           printf("\nOKK,this prog is ready!\n");
  71.           printf("\ncard number end \n");
  72.                     ///////////////////////////////////////////////////////////

  73.          status = PcdSelect(g_ucTempbuf);//選定卡片
  74.          if (status != MI_OK)
  75.          {    continue;    }
  76.          
  77.          status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//驗(yàn)證卡片密碼
  78.          if (status != MI_OK)
  79.          {    continue;    }
  80.          
  81.          status = PcdWrite(1, data1);//寫(xiě)塊
  82.          if (status != MI_OK)
  83.          {    continue;    }
復(fù)制代碼

MFRC522測(cè)試程序.zip

88.68 KB, 下載次數(shù): 53, 下載積分: 黑幣 -5

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表