找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5866|回復: 8
收起左側

stm32f103驅動RC522射頻模塊讀取磁卡ID的程序源碼

  [復制鏈接]
ID:374796 發(fā)表于 2018-7-20 00:32 | 顯示全部樓層 |閱讀模式
RC522與stm32之間通過SPI通訊 STM32f103對rc522寄存器進行配置后讀取磁卡ID

單片機源程序如下:

  1. #include "main.h"
  2. #include "pc_usart.h"
  3. #include "esp8266_usart.h"
  4. #include "spi.h"
  5. #include "rc522.h"
  6. #include "delay.h"
  7. #include "string.h"


  8. int main(void)
  9. {
  10.         uint8_t Card_Type1[2];
  11.         uint8_t Card_ID[4];
  12.         uint8_t status;
  13.         SystemInit();//系統(tǒng)時鐘初始化
  14.         PC_USART_Config();//串口1初始化
  15.         delay_init();
  16.         RC522_IO_Init();
  17.         PcdReset();
  18.         PcdAntennaOff();
  19.         delay_ms(2);
  20.         PcdAntennaOn();
  21.        
  22.         printf("Card Type");       
  23.        
  24.         while(1)
  25.         {
  26.                 delay_ms(10);
  27.                 printf("Card Type");       

  28.                 if(MI_OK==PcdRequest(0x52, Card_Type1))
  29.                 {
  30.                         uint16_t cardType = (Card_Type1[0]<<8)|Card_Type1[1];
  31.                         printf("Card Type(0x%04X):",cardType);
  32.                         switch(cardType){
  33.                         case 0x4400:
  34.                                         printf("Mifare UltraLight\n\r");
  35.                                         break;
  36.                         case 0x0400:
  37.                                         printf("Mifare One(S50)\n\r");
  38.                                         break;
  39.                         case 0x0200:
  40.                                         printf("Mifare One(S70)\n\r");
  41.                                         break;
  42.                         case 0x0800:
  43.                                         printf("Mifare Pro(X)\n\r");
  44.                                         break;
  45.                         case 0x4403:
  46.                                         printf("Mifare DESFire\n\r");
  47.                                         break;
  48.                         default:
  49.                                         printf("Unknown Card\n\r");
  50.                                         continue;
  51.                         }
  52.                         //delay_ms(10);
  53.                         status = PcdAnticoll(Card_ID);//防沖撞
  54.                         if(status != MI_OK){
  55.                                         printf("Anticoll Error\n\r");
  56.                                         continue;
  57.                         }else{
  58.                                         printf("Serial Number:%02X%02X%02X%02X\n\r",Card_ID[0],Card_ID[1],Card_ID[2],Card_ID[3]);
  59.                         }

  60.                 }
  61.         }
  62. }


  63. /*********************************END OF FILE**********************************/
復制代碼

所有資料51hei提供下載:
0.讀卡.rar (300.55 KB, 下載次數(shù): 124)



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:384422 發(fā)表于 2018-8-9 14:19 | 顯示全部樓層
感謝分享
回復

使用道具 舉報

ID:386577 發(fā)表于 2018-8-15 16:29 | 顯示全部樓層
mark 一下   
回復

使用道具 舉報

ID:436241 發(fā)表于 2018-12-4 22:49 | 顯示全部樓層
你好,請問這個程序對應的線路怎么接,能發(fā)一下電路圖嗎?
回復

使用道具 舉報

ID:375092 發(fā)表于 2018-12-5 13:42 | 顯示全部樓層
樓主你好,請問能不能實現(xiàn)扣款,充值等這些高級一點的功能呢,我現(xiàn)在能夠識別卡了,就是不能掃卡扣費這些
回復

使用道具 舉報

ID:257763 發(fā)表于 2018-12-25 14:27 | 顯示全部樓層

感謝分享
感謝分享
感謝分享
感謝分享
回復

使用道具 舉報

ID:310349 發(fā)表于 2019-1-14 14:06 | 顯示全部樓層
609763691 發(fā)表于 2018-12-5 13:42
樓主你好,請問能不能實現(xiàn)扣款,充值等這些高級一點的功能呢,我現(xiàn)在能夠識別卡了,就是不能掃卡扣費這些

的要先驗證卡后才可以對其進行數(shù)據(jù)的輸入和輸出
回復

使用道具 舉報

ID:501870 發(fā)表于 2019-3-31 17:38 | 顯示全部樓層
感謝分享,感謝分享
回復

使用道具 舉報

ID:522358 發(fā)表于 2019-4-26 16:22 | 顯示全部樓層
   uint16_t cardType = (Card_Type1[0]<<8)|Card_Type1[1];
樓主這句話什么意思,怎么實現(xiàn)的能不能舉個例子
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表