找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2906|回复: 7
收起左侧

单片机+RC522调试不成功,大佬快支招

[复制链接]
ID:675145 发表于 2020-1-2 15:12 | 显示全部楼层 |阅读模式
我这个是用4X4的按键控制RC522的功能,然后在OLED显示屏上显示一些想要知道的信息。
我的寻卡和防冲撞功能以及可以了,但是其他功能用不了,比如选择卡,验证密码(新卡,不知道卡片真正的密码),读卡,写卡之类的。
请大佬指教,先谢过
  1. void Rc522_Allot()
  2. {        
  3.         static u16 xdata count=0;
  4.         u8 status;
  5.         count++;
  6.         if(count>=2000)
  7.         {
  8.                 count=0;
  9.                 switch(key4x4_Read_Byte)
  10.                 {
  11.                         case 1:    //终止卡的操作
  12.                                 status= PcdHalt();//功    能:命令卡片进入休眠状态        
  13.                                 break;                        
  14.                         case 2:     
  15.                                                 // 寻卡,防冲突,选择卡    返回卡类型(2 bytes)+ 卡系列号(4 bytes)
  16.                                 status= PcdRequest(0x52,MLastSelectedSnr);
  17.                                 if(status==MI_OK)
  18.                                         key4x4_Read_Byte=3;
  19.                                 break;
  20.                                 
  21.                         case 3:                         // 防冲突 读卡的系列号 MLastSelectedSnr
  22.                                 status = PcdAnticoll(MLastSelectedSnr);  //功    能:防冲撞
  23.                                 if(status==MI_OK)
  24.                                         key4x4_Read_Byte=4;
  25.                                 break;        
  26.                         case 4:                                    // 选择卡 Select Card
  27.                                 status=PcdSelect(MLastSelectedSnr);
  28.                                 if(status==MI_OK)
  29.                                 {
  30.                                         kkk=1;
  31. //                                        key4x4_Read_Byte=1;        
  32.                                 }
  33.                                 else
  34.                                 {
  35.                                         kkk=2;
  36. //                                        key4x4_Read_Byte=1;
  37.                                 }               
  38.                                 break;
  39.                         case 5:           
  40.                                 status = PcdAuthState(0x60, 0, DefaultKey,MLastSelectedSnr);// 校验卡密码
  41.                                 if(status==MI_OK)
  42.                                 {
  43.                                         kkk=3;
  44. //                                        key4x4_Read_Byte=1;
  45.                                 }
  46.                                 break;        
  47.                         case 8:   // 读卡
  48.                                 status=PcdRead(1,RevBuffer);
  49.                                 if(status==MI_OK)
  50.                                 {
  51.                                         key4x4_Read_Byte=17;
  52.                                         kkk=4;
  53.                                 }
  54.                                 else
  55.                                 {
  56.                                         kkk=5;
  57. //                                        key4x4_Read_Byte=1;
  58.                                 }
  59.                                 break;
  60.                         case 9:    // 写卡  下载密码
  61.                                 status=PcdWrite(1,RevBuffer);
  62.                                 if(status==MI_OK)
  63.                                 {
  64.                                         key4x4_Read_Byte=17;
  65.                                         kkk=6;
  66.                                 }
  67.                                 else
  68.                                 {
  69.                                         kkk=7;
  70. //                                        key4x4_Read_Byte=1;
  71.                                 }
  72.                                 break;
  73. //                        case 10:
  74. //                                PcdValue(RevBuffer[1],RevBuffer[2],&RevBuffer[3]);
  75. //                                key4x4_Read_Byte=1;
  76. //                                break;
  77. //                        case 12:    // 参数设置
  78. //                                PcdBakValue(RevBuffer[1], RevBuffer[2]);
  79. //                                key4x4_Read_Byte=1;
  80. //                                break;               
  81.                 }
  82.         }
  83. }
复制代码

测试 - RC522.zip

129.95 KB, 下载次数: 17

回复

使用道具 举报

ID:675145 发表于 2020-1-2 16:11 | 显示全部楼层
还没有人吗?已经可以选择卡,验证密码,读卡了,还有最后一个问题,我应该往卡里面写一些什么数据,卡片的密码应该怎么写
回复

使用道具 举报

ID:675145 发表于 2020-1-2 16:42 | 显示全部楼层
现在基本操作都可以了,读卡写卡的返回都是OK,但是随便写进去几个数据,再读出来全部都是0是怎么回事,还有我应该往卡里写什么数据,密码应该怎么设置呢?
回复

使用道具 举报

ID:110606 发表于 2020-1-3 09:36 | 显示全部楼层
t 宝有例程,你可以看一下,你可以先研究明白,然后再自己发挥
回复

使用道具 举报

ID:185523 发表于 2020-4-14 15:13 | 显示全部楼层
张小不懂 发表于 2020-1-2 16:11
还没有人吗?已经可以选择卡,验证密码,读卡了,还有最后一个问题,我应该往卡里面写一些什么数据,卡片的 ...

选择卡是什么问题?怎么解决的?我现在也是不能选择卡
回复

使用道具 举报

ID:742308 发表于 2020-5-4 12:45 | 显示全部楼层
张小不懂 发表于 2020-1-2 16:42
现在基本操作都可以了,读卡写卡的返回都是OK,但是随便写进去几个数据,再读出来全部都是0是怎么回事,还 ...

可以看看你的历程了 我的读写都失败返回EF不知道原因出在哪里 我是寻卡、选卡、验卡、读写
回复

使用道具 举报

ID:855114 发表于 2020-12-12 14:13 | 显示全部楼层
莫小豪 发表于 2020-5-4 12:45
可以看看你的历程了 我的读写都失败返回EF不知道原因出在哪里 我是寻卡、选卡、验卡、读写

我也是返回EF,问题解决了吗?
回复

使用道具 举报

ID:855114 发表于 2020-12-12 14:16 | 显示全部楼层
莫小豪 发表于 2020-5-4 12:45
可以看看你的历程了 我的读写都失败返回EF不知道原因出在哪里 我是寻卡、选卡、验卡、读写

请问问题解决了吗?我的读写也是返回EF,这是为什么?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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