标题: stm32f103驱动RC522射频模块读取磁卡ID的程序源码 [打印本页]

作者: lin123456789    时间: 2018-7-20 00:32
标题: stm32f103驱动RC522射频模块读取磁卡ID的程序源码
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();//系统时钟初始化
  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, 下载次数: 124)




作者: lasermiao    时间: 2018-8-9 14:19
感谢分享
作者: blue153    时间: 2018-8-15 16:29
mark 一下   
作者: SGEEK    时间: 2018-12-4 22:49
你好,请问这个程序对应的线路怎么接,能发一下电路图吗?
作者: 609763691    时间: 2018-12-5 13:42
楼主你好,请问能不能实现扣款,充值等这些高级一点的功能呢,我现在能够识别卡了,就是不能扫卡扣费这些
作者: www76307a    时间: 2018-12-25 14:27

感谢分享
感谢分享
感谢分享
感谢分享
作者: 147wzl    时间: 2019-1-14 14:06
609763691 发表于 2018-12-5 13:42
楼主你好,请问能不能实现扣款,充值等这些高级一点的功能呢,我现在能够识别卡了,就是不能扫卡扣费这些

的要先验证卡后才可以对其进行数据的输入和输出
作者: xiaohua0822    时间: 2019-3-31 17:38
感谢分享,感谢分享
作者: dovejjh    时间: 2019-4-26 16:22
   uint16_t cardType = (Card_Type1[0]<<8)|Card_Type1[1];
楼主这句话什么意思,怎么实现的能不能举个例子




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1