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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

MSP430F149讀rc522射頻卡卡號參考例程

[復制鏈接]
跳轉到指定樓層
樓主
這是基于MSP430的rc522射頻卡程序,希望對大家有幫助~~~

完整源碼下載:
MSP430F149讀卡號參考例程.rar (404.19 KB, 下載次數: 29)






MSP430F149源程序:
  1.                                                                         //
  2. //===========================================================================//

  3. #include "msp430x14x.h"
  4. #include "PIN_DEF.H"
  5. #include "RC522.H"
  6. #include "UART0_Func.c"
  7. #include "ctype.h"
  8. #include "BoardConfig.h"
  9. unsigned char writeData[16]={1, 2, 3, 4, 0};
  10. unsigned char str[16];
  11. unsigned char UID[4],Temp[4]                                       ;
  12. unsigned char RF_Buffer[18]                                        ;
  13. unsigned char Password_Buffer[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}   ; // Mifare One 缺省密碼

  14. char          MBRX[30]                                             ;
  15. char          MBKeyTP[30]                                          ;
  16. char          Event                                                ;
  17. unsigned char DISP_MODE,i                                            ; // 編輯控件顯示模式
  18. unsigned char des_on       = 0                                     ; // DES加密標志
  19. void Key_TP_Task(void)                                             ;

  20. //***************************************************************************//
  21. //                                                                           //
  22. //                 初始化主時鐘: MCLK = XT1×(FLL_FACTOR+1)                  //
  23. //                                                                           //
  24. //***************************************************************************//
  25. void Init_CLK(void)
  26. {
  27.   unsigned int qq;
  28.   WDTCTL     = WDTPW + WDTHOLD                                     ; // 關看門狗
  29.   BCSCTL1 &= ~XT2OFF;           //打開XT2高速晶體振蕩器  
  30.   do
  31.   {
  32.     IFG1 &= ~OFIFG;           //Clear oscFault flag清除振蕩器失效標志
  33.     for(qq=0xff;qq>0;qq--);
  34.   }while((IFG1&OFIFG));       //oscFault flag still set
  35.   
  36.   BCSCTL2 |= SELM_2;          //MCLK=XT2
  37.   //BCSCTL2 |= DIVM_0;        //控制MCLK不分頻,默認
  38.   
  39.   BCSCTL2 |= SELS;            //SMCLK=XT2
  40.   //BCSCTL2 |= DIVS_0;        //控制SMCLK不分頻,默認
  41. }

  42. void Delay(unsigned int time)
  43. {
  44.   unsigned int i,k                             ;
  45.   for(i=0;i<255;i++)
  46.     for(k=0;k<time;k++)
  47.       _NOP()                                   ;          
  48. }

  49. void Auto_Reader(void)
  50. {
  51.   while(1)
  52.   {
  53.     if(PcdRequest(0x52,Temp)==MI_OK)//MI_OK=0  尋卡  0x52 = 尋感應區內所有符合14443A標準的卡  Temp返回卡片的類型
  54.     {
  55.       if(Temp[0]==0x04&&Temp[1]==0x00)  
  56.           PutString("MFOne-S50");//卡片的類型為MFOne-S50   目前手上買的為此型號
  57.         else if(Temp[0]==0x02&&Temp[1]==0x00)
  58.           PutString("MFOne-S70");
  59.         else if(Temp[0]==0x44&&Temp[1]==0x00)
  60.           PutString("MF-UltraLight");
  61.         else if(Temp[0]==0x08&&Temp[1]==0x00)
  62.           PutString("MF-Pro");
  63.         else if(Temp[0]==0x44&&Temp[1]==0x03)
  64.           PutString("MF Desire");
  65.         else
  66.           PutString("Unknown");
  67.       if(PcdAnticoll(UID)==MI_OK)//獲得卡片序列號UID
  68.       {
  69.         PutString0("Card Id is:");
  70.         tochar(UID[0]);
  71.         tochar(UID[1]);
  72.         tochar(UID[2]);
  73.         tochar(UID[3]);
  74.         while (!(IFG1 & UTXIFG0));
  75.         TXBUF0 = '\n';                              //發送換行指令
  76.                         
  77.         RED_LED_ON                                            ;
  78.         Delay(200)                                           ;
  79.         RED_LED_OFF                                           ;
  80.         Delay(200)                                           ;
  81.       }
  82.     }
  83.   else GRE_LED_OFF                                            ;
  84.   }
  85. }

  86. void Find_Card(void)
  87. {
  88.     if(PcdRequest(0x52,Temp)==MI_OK)
  89.     {
  90.       if(Temp[0]==0x04&&Temp[1]==0x00)  
  91.           PutString("MFOne-S50");
  92.         else if(Temp[0]==0x02&&Temp[1]==0x00)
  93.           PutString("MFOne-S70");
  94.         else if(Temp[0]==0x44&&Temp[1]==0x00)
  95.           PutString("MF-UltraLight");
  96.         else if(Temp[0]==0x08&&Temp[1]==0x00)
  97.           PutString("MF-Pro");
  98.         else if(Temp[0]==0x44&&Temp[1]==0x03)
  99.           PutString("MF Desire");
  100.         else
  101.           PutString("Unknown");
  102.         PutString("SUCCESS!");
  103.     }
  104.     else PutString("Faile!");                                             
  105. }

  106. void Init_Port(void)
  107. {
  108.   P4DIR   =   RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT                     ;
  109.   P2DIR |= BIT0+RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT;
  110.   P1DIR   =   RF_LPCTL + RF_SS   + RF_SCLK  + RF_DATA_OUT                     ;
  111. }
  112. /*******************************************
  113. 函數名稱:HandleConfigMenu
  114. 功    能:處理PC的配置函數
  115. 參    數:inputvalue--接收到的來自PC機的字符
  116. 返回值  :無
  117. ********************************************/
  118. void HandleConfigMenu(uchar inputvalue)
  119. {
  120.     switch(toupper(inputvalue))
  121.     {
  122.     case 'A':
  123.               Auto_Reader();
  124.               break;
  125.     case 'F':
  126.               Find_Card();
  127.               break;
  128.     default:
  129.               DisplayConfigMenu();  
  130.     }
  131. }


  132. void main( void )
  133. {
  134.   WDTCTL     = WDTPW + WDTHOLD                                     ; // 關看門狗
  135.   int i;
  136.   unsigned char status2;
  137.   BoardConfig(0xf0);
  138.   Init_Port();
  139.   InitUART();
  140.   _EINT()                                            ;
  141.   PcdReset();//復位RC522
  142.   PcdAntennaOn();//開啟天線發射
  143. //  DisplayConfigMenu();
  144.   while(1)
  145.   {
  146. //       Send1Char('>');
  147. //       Send1Char('\n');
  148.   //      i=Get1Char();
  149.   //      HandleConfigMenu(i);
  150.    
  151.     status2=PcdRequest(0x52,Temp);////尋卡,輸出為卡類型
  152.     if(status2==MI_OK)
  153.       status2 = PcdAnticoll(UID);  //防沖撞處理,輸出卡片序列號,4字節
  154.     if(status2==MI_OK)
  155.     {
  156.         PutString0("Card Id is:");
  157.         tochar(UID[0]);
  158.         tochar(UID[1]);
  159.         tochar(UID[2]);
  160.         tochar(UID[3]);    //串口輸出卡號
  161.     }
  162.     status2 = PcdSelect(UID);    //選擇卡片,輸入卡片序列號,4字節
  163.     if(status2==MI_OK)   
  164.       status2 = PcdAuthState(PICC_AUTHENT1A, 1, Password_Buffer, UID);//在進行讀寫操作之前需要先進行認證
  165.     if(status2==MI_OK)
  166.       status2=PcdWrite(1,writeData);//寫數據,將數組writeData中的數寫入到卡中
  167.     if(status2==MI_OK)
  168.       status2 = PcdRead(1, str);//讀卡
  169.     if(status2==MI_OK)
  170.     {
  171.       for(i=0;i<16;i++)
  172.       {
  173.          tochar(str[i]);//串口輸出讀出的16個數據
  174.       }
  175.       Send1Char('\n');//換行
  176.       //程序串口輸出結果為:Card Id is:b45c7a1a01024104000000000000000000000000
  177.     }

  178.     }
  179.   }

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

使用道具 舉報

沙發
ID:375715 發表于 2019-11-20 15:45 來自手機 | 只看該作者
謝謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人久久综合一区,久久久国产99 | 国产91久久久久 | 国产精品精品久久久 | 婷婷综合 | 天天天操天天天干 | 看av片网站| 一区二区三区免费 | 欧美久久久网站 | 女人夜夜春 | 亚洲成人三级 | 国产一区二区观看 | 国产又色又爽又黄又免费 | 亚洲免费在线视频 | 亚洲视频一区在线观看 | 亚洲国产精品一区二区久久 | 天天操天天干天天爽 | 亚洲网在线 | 成人在线一区二区 | 亚洲区一 | 国产真实精品久久二三区 | 2018国产大陆天天弄 | 久久伊人一区二区 | 欧美综合在线视频 | 久久高清国产 | 成人午夜看片 | 久久99国产精品久久99果冻传媒 | 久久草在线视频 | 91视频中文 | 久草新在线| 91久久久久 | 亚洲视频三区 | 欧美成人自拍 | 羞羞午夜 | 国产日韩欧美激情 | 国产精品呻吟久久av凹凸 | 男人久久天堂 | 亚洲天堂二区 | 日本精品国产 | 久久精品影视 | 亚洲在线免费观看 | 亚洲精品一二三 |