久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 29761|回復: 40
打印 上一主題 下一主題
收起左側

RC522模塊原理圖與PCB圖,包括51單片機和430單片機測試程序

  [復制鏈接]
跳轉到指定樓層
樓主






51單片機測程序:
  1. #include "lpcreg.h"
  2. #include "main.h"
  3. #include "mfrc522.h"

  4. unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
  5. //M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
  6. //4字節金額(低字節在前)+4字節金額取反+4字節金額+1字節塊地址+1字節塊地址取反+1字節塊地址+1字節塊地址取反
  7. unsigned char code data2[4]  = {0x12,0,0,0};
  8. unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};


  9. unsigned char g_ucTempbuf[20];                        

  10. void main( )
  11. {   
  12.      unsigned char status;
  13.      InitializeSystem( );
  14.      PcdReset();
  15.      PcdAntennaOff(); //關閉天線
  16.      PcdAntennaOn();  //開啟天線
  17.      while ( 1 )
  18.      {   
  19.          status = PcdRequest(PICC_REQALL, g_ucTempbuf);       #define PICC_REQIDL 0x26    //尋天線區內未進入休眠狀態
  20. ////////////////////////////////////////////////////////////////////////////////
  21.          if (status != MI_OK)
  22.          {
  23.               LED_GREEN = 1;
  24.               continue;
  25.          }
  26. /////////////////////////////////////////////////////////////////////
  27.          LED_GREEN = 0;
  28.          status = PcdAnticoll(g_ucTempbuf);
  29. //////////////////////////////////////////////////////////////////////
  30.          if (status != MI_OK)
  31.          {
  32.              continue;   
  33.          }
  34. /////////////////////////////////////////////////////////////////////
  35.          status = PcdSelect(g_ucTempbuf);
  36.          if (status != MI_OK)
  37.          {   
  38.             continue;   
  39.          }
  40. ////////////////////////////////////////////////////////////////////////////         
  41.          status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);
  42.          if (status != MI_OK)
  43.          {   
  44.              continue;   
  45.          }
  46. /////////////////////////////////////////////////////////////////////////////         
  47.          status = PcdWrite(1, data1);
  48.          if (status != MI_OK)
  49.          {   
  50.             continue;   
  51.          }
  52. /////////////////////////////////////////////////////////////////////////////////         
  53.          status = PcdValue(PICC_DECREMENT,1,data2);
  54.          if (status != MI_OK)
  55.          {   
  56.            continue;   
  57.          }
  58. /////////////////////////////////////////////////////////////////////////////////         
  59.          status = PcdBakValue(1, 2);
  60.          if (status != MI_OK)
  61.          {   
  62.              continue;   
  63.          }
  64. /////////////////////////////////////////////////////////////////////////////         
  65.          status = PcdRead(2, g_ucTempbuf);
  66.          if (status != MI_OK)
  67.          {   
  68.             continue;   
  69.          }
  70.           PcdHalt();   //命令卡片進入休眠狀態
  71.     }
  72. }


  73. /////////////////////////////////////////////////////////////////////
  74. //系統初始化
  75. /////////////////////////////////////////////////////////////////////
  76. void InitializeSystem()
  77. {
  78.     P0M1 = 0x0; P0M2 = 0x0;
  79.     P1M1 = 0x0;        P1M2 = 0x0;                     
  80.     P3M1 = 0x0; P3M2 = 0xFF;
  81.     P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;
  82. }
  83. /////////////////////////////////////////////////////////////////////
  84. //功    能:復位RC522
  85. //返    回: 成功返回MI_OK
  86. /////////////////////////////////////////////////////////////////////
  87. char PcdReset(void)
  88. {
  89.     MF522_RST=1;
  90.     _nop_();
  91.     MF522_RST=0;
  92.     _nop_();
  93.     MF522_RST=1;
  94.      _nop_();
  95.     WriteRawRC(CommandReg,PCD_RESETPHASE);
  96.     _nop_();
  97.    
  98.     WriteRawRC(ModeReg,0x3D);            //和Mifare卡通訊,CRC初始值0x6363
  99.     WriteRawRC(TReloadRegL,30);           
  100.     WriteRawRC(TReloadRegH,0);
  101.     WriteRawRC(TModeReg,0x8D);
  102.     WriteRawRC(TPrescalerReg,0x3E);
  103.    
  104.     return MI_OK;
  105. }
  106. /////////////////////////////////////////////////////////////////////
  107. //功    能:寫RC632寄存器
  108. //參數說明:Address[IN]:寄存器地址
  109. //          value[IN]:寫入的值
  110. /////////////////////////////////////////////////////////////////////
  111. void WriteRawRC(unsigned char Address, unsigned char value)
  112. {  
  113.     unsigned char i, ucAddr;

  114.     MF522_SCK = 0;
  115.     MF522_NSS = 0;
  116.     ucAddr = ((Address<<1)&0x7E);

  117.     for(i=8;i>0;i--)
  118.     {
  119.         MF522_SI = ((ucAddr&0x80)==0x80);
  120.         MF522_SCK = 1;
  121.         ucAddr <<= 1;
  122.         MF522_SCK = 0;
  123.     }

  124.     for(i=8;i>0;i--)
  125.     {
  126.         MF522_SI = ((value&0x80)==0x80);
  127.         MF522_SCK = 1;
  128.         value <<= 1;
  129.         MF522_SCK = 0;
  130.     }
  131.     MF522_NSS = 1;
  132.     MF522_SCK = 1;
  133. }
  134. /////////////////////////////////////////////////////////////////////
  135. //功    能:讀RC632寄存器
  136. //參數說明:Address[IN]:寄存器地址
  137. //返    回:讀出的值
  138. /////////////////////////////////////////////////////////////////////
  139. unsigned char ReadRawRC(unsigned char Address)
  140. {
  141.      unsigned char i, ucAddr;
  142.      unsigned char ucResult=0;

  143.      MF522_SCK = 0;
  144.      MF522_NSS = 0;
  145.      ucAddr = ((Address<<1)&0x7E)|0x80;

  146.      for(i=8;i>0;i--)
  147.      {
  148.          MF522_SI = ((ucAddr&0x80)==0x80);
  149.          MF522_SCK = 1;
  150.          ucAddr <<= 1;
  151.          MF522_SCK = 0;
  152.      }

  153.      for(i=8;i>0;i--)
  154.      {
  155.          MF522_SCK = 1;
  156.          ucResult <<= 1;
  157.          ucResult|=(bit)MF522_SO;
  158.          MF522_SCK = 0;
  159.      }

  160.      MF522_NSS = 1;
  161.      MF522_SCK = 1;
  162.      return ucResult;
  163. }
  164.    
  165.   
復制代碼
430單片機測試程序:
  1. #include  <msp430x41x.h>
  2. #include "main.h"
  3. #include "mfrc522.h"

  4. #pragma memory = constseg(TAB)
  5. unsigned char data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
  6. //M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
  7. //4字節金額(低字節在前)+4字節金額取反+4字節金額+1字節塊地址+1字節塊地址取反+1字節塊地址+1字節塊地址取反
  8. unsigned char data2[4]  = {0x12,0,0,0};
  9. unsigned char DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};               
  10. #pragma memory=default
  11.             
  12. unsigned char g_ucTempbuf[20];

  13. void main(void)
  14. {
  15.      unsigned char status;
  16.      InitializeSystem();
  17.      PcdReset();
  18.      PcdAntennaOff();
  19.      PcdAntennaOn();  
  20.      while ( 1 )
  21.      {   
  22.          status = PcdRequest(PICC_REQALL, g_ucTempbuf);
  23.          if (status != MI_OK)
  24.          {   
  25.              LED_GREEN_OFF;
  26.              continue;
  27.          }
  28.          LED_GREEN_ON;     //檢測到有卡存在
  29.          
  30.          status = PcdAnticoll(g_ucTempbuf);
  31.          if (status != MI_OK)
  32.          {    continue;    }
  33.          
  34.          status = PcdSelect(g_ucTempbuf);
  35.          if (status != MI_OK)
  36.          {    continue;    }
  37.          
  38.          status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);
  39.          if (status != MI_OK)
  40.          {    continue;    }
  41.          
  42.          status = PcdWrite(1, data1);
  43.          if (status != MI_OK)
  44.          {    continue;    }
  45.          
  46.          status = PcdValue(PICC_DECREMENT,1,data2);
  47.          if (status != MI_OK)
  48.          {    continue;    }
  49.          
  50.          status = PcdBakValue(1, 2);
  51.          if (status != MI_OK)
  52.          {    continue;    }
  53.          
  54.          status = PcdRead(2, g_ucTempbuf);
  55.          if (status != MI_OK)
  56.          {    continue;    }
  57.          
  58.          PcdHalt();
  59.     }
  60. }


  61. /////////////////////////////////////////////////////////////////////
  62. //功能:系統初始化
  63. /////////////////////////////////////////////////////////////////////       
  64. void InitializeSystem(void)
  65. {
  66.     WDTCTL = WDTPW + WDTHOLD;             //Stop watchdog timer
  67.     _DINT();
  68.      
  69.     P1DIR = 0xE8;
  70.     P1OUT = 0xFF;
  71.       
  72.     P6DIR = 0x08;
  73.     P6OUT = 0xFF;
  74. }   


復制代碼

全部資料(壓縮包)下載:
M112120_FSpec_RC522_20050801.pdf (1.3 MB, 下載次數: 214) SL016.rar (10.92 KB, 下載次數: 254) SL106.rar (3.11 KB, 下載次數: 160) 源代碼.zip (66.11 KB, 下載次數: 129)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:134242 發表于 2016-7-19 14:05 | 只看該作者
供應13.56M非接芯片,兼容CV520,RC522,RC523,FM17520,FM17522.具有絕對成本優勢。有意者可加QQ458231727
回復

使用道具 舉報

板凳
ID:47761 發表于 2016-8-5 08:35 | 只看該作者
圖好小
回復

使用道具 舉報

地板
ID:136328 發表于 2016-8-9 09:49 | 只看該作者
樓主522和51通信能不能只接TX,RX,不接DTRQ,MX呢?
回復

使用道具 舉報

5#
ID:148358 發表于 2016-11-16 22:29 | 只看該作者
不能用
回復

使用道具 舉報

6#
ID:110866 發表于 2016-12-1 22:36 | 只看該作者
感謝分享,費用有用
回復

使用道具 舉報

7#
ID:197324 發表于 2017-5-6 15:13 | 只看該作者
很好的資料,謝謝分享
回復

使用道具 舉報

8#
ID:199074 發表于 2017-5-10 18:45 | 只看該作者
沒發現原理圖,,,??
回復

使用道具 舉報

9#
ID:59768 發表于 2017-5-29 17:57 | 只看該作者
資料不錯
回復

使用道具 舉報

10#
ID:213446 發表于 2017-6-21 18:29 | 只看該作者
正找呢   可是沒有黑幣啊
回復

使用道具 舉報

11#
ID:213446 發表于 2017-6-21 18:30 | 只看該作者
新手發不了貼?
回復

使用道具 舉報

12#
ID:107454 發表于 2017-7-11 14:31 | 只看該作者
不錯,學習了。
回復

使用道具 舉報

13#
ID:91469 發表于 2017-9-13 14:05 | 只看該作者
研究研究!拿來主義!3Q啦
回復

使用道具 舉報

14#
ID:229568 發表于 2017-9-19 21:47 | 只看該作者
不錯,學習了。
回復

使用道具 舉報

15#
ID:226872 發表于 2017-9-26 18:24 | 只看該作者
多謝 好東西
回復

使用道具 舉報

16#
ID:239125 發表于 2017-10-18 14:06 | 只看該作者
好東西 收藏收藏
回復

使用道具 舉報

17#
ID:249599 發表于 2017-11-15 10:43 | 只看該作者
這么小的圖,看得到么?
回復

使用道具 舉報

18#
ID:253265 發表于 2017-11-24 22:43 | 只看該作者
好東西 收藏收藏
回復

使用道具 舉報

19#
ID:300562 發表于 2018-4-1 21:58 | 只看該作者
非常感謝樓主的無私分享精神。
回復

使用道具 舉報

20#
ID:309180 發表于 2018-6-6 15:34 | 只看該作者
學習了
回復

使用道具 舉報

21#
ID:64985 發表于 2018-6-7 15:50 | 只看該作者
帖子不錯不過沒有黑比
回復

使用道具 舉報

22#
ID:64985 發表于 2018-6-7 16:39 | 只看該作者
希望發我qq郵箱一份,2906905479@qq.com
回復

使用道具 舉報

23#
ID:309921 發表于 2018-6-8 10:43 | 只看該作者
贊一個~~~
回復

使用道具 舉報

24#
ID:350231 發表于 2018-6-12 14:08 | 只看該作者
剛好用上
回復

使用道具 舉報

25#
ID:350231 發表于 2018-6-12 14:08 | 只看該作者
謝謝分享
回復

使用道具 舉報

26#
ID:57522 發表于 2018-7-17 17:59 | 只看該作者
沒把參數放出來
回復

使用道具 舉報

27#
ID:69476 發表于 2018-8-10 21:51 | 只看該作者
謝謝樓主貢獻
回復

使用道具 舉報

28#
ID:45845 發表于 2018-8-11 20:51 | 只看該作者
非常感謝  、正愁PCB天線怎么畫
回復

使用道具 舉報

29#
ID:391124 發表于 2018-8-29 11:22 | 只看該作者
不錯,學習了。
回復

使用道具 舉報

30#
ID:391130 發表于 2018-8-29 11:42 | 只看該作者

不錯,學習了。
回復

使用道具 舉報

31#
ID:384212 發表于 2018-11-21 11:22 | 只看該作者
很有幫助
回復

使用道具 舉報

32#
ID:407570 發表于 2018-12-12 17:46 | 只看該作者
謝謝樓主分享好東西!
回復

使用道具 舉報

33#
ID:241124 發表于 2019-2-17 17:28 | 只看該作者
謝謝分享!
回復

使用道具 舉報

34#
ID:240778 發表于 2019-3-25 09:30 | 只看該作者
研究一下,再來回復
回復

使用道具 舉報

35#
ID:431095 發表于 2019-5-11 13:11 | 只看該作者
參考                     
回復

使用道具 舉報

36#
ID:48257 發表于 2019-7-23 10:31 | 只看該作者
不錯,很有用。
回復

使用道具 舉報

37#
ID:557149 發表于 2019-9-2 14:59 | 只看該作者
謝謝分享
回復

使用道具 舉報

38#
ID:598175 發表于 2019-12-19 13:43 | 只看該作者
好東西 收藏收藏
回復

使用道具 舉報

39#
ID:322454 發表于 2020-3-1 22:48 | 只看該作者
不錯挺好的
回復

使用道具 舉報

40#
ID:609332 發表于 2020-5-26 14:02 | 只看該作者
不錯不錯,學習了!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91成人午夜性a一级毛片 | 午夜免费网站 | 国产精品亚洲一区二区三区在线 | 91国产在线视频在线 | 欧美精品一区三区 | 99re在线视频 | 成人久久视频 | 国产a区 | 久久久久亚洲 | 超碰成人免费 | h在线 | 高清18麻豆 | 午夜精品久久久久久久久久久久久 | 欧美日韩精品久久久免费观看 | 91高清在线观看 | 亚洲精品免费视频 | 欧美精品中文字幕久久二区 | 成人av片在线观看 | 亚洲精品99999 | 久久久高清| 操人视频在线观看 | 亚洲高清视频一区二区 | 黄色毛片大全 | 欧美日韩在线一区 | 亚洲欧美中文日韩在线v日本 | 欧美xxxx黑人又粗又长 | 国产福利资源 | 日韩中文字幕在线观看 | 精品婷婷 | 91视频在线 | aaaa网站| 五月婷婷在线播放 | 久久免费高清视频 | 国产亚洲一区二区三区 | 国产一级电影在线 | 亚洲国产欧美在线人成 | 日韩在线一区二区 | 国产三级日本三级 | 人妖一区| 91精品久久久 | 亚洲电影一区 |