找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5238|回复: 8
打印 上一主题 下一主题
收起左侧

stm32f103驱动RC522射频模块读取磁卡ID的程序源码

  [复制链接]
跳转到指定楼层
楼主
ID:374796 发表于 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();//系统时钟初始化
  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)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:384422 发表于 2018-8-9 14:19 | 只看该作者
感谢分享
回复

使用道具 举报

板凳
ID:386577 发表于 2018-8-15 16:29 | 只看该作者
mark 一下   
回复

使用道具 举报

地板
ID:436241 发表于 2018-12-4 22:49 | 只看该作者
你好,请问这个程序对应的线路怎么接,能发一下电路图吗?
回复

使用道具 举报

5#
ID:375092 发表于 2018-12-5 13:42 | 只看该作者
楼主你好,请问能不能实现扣款,充值等这些高级一点的功能呢,我现在能够识别卡了,就是不能扫卡扣费这些
回复

使用道具 举报

6#
ID:257763 发表于 2018-12-25 14:27 | 只看该作者

感谢分享
感谢分享
感谢分享
感谢分享
回复

使用道具 举报

7#
ID:310349 发表于 2019-1-14 14:06 | 只看该作者
609763691 发表于 2018-12-5 13:42
楼主你好,请问能不能实现扣款,充值等这些高级一点的功能呢,我现在能够识别卡了,就是不能扫卡扣费这些

的要先验证卡后才可以对其进行数据的输入和输出
回复

使用道具 举报

8#
ID:501870 发表于 2019-3-31 17:38 | 只看该作者
感谢分享,感谢分享
回复

使用道具 举报

9#
ID:522358 发表于 2019-4-26 16:22 | 只看该作者
   uint16_t cardType = (Card_Type1[0]<<8)|Card_Type1[1];
楼主这句话什么意思,怎么实现的能不能举个例子
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表