首页 > 微波/射频 > 射频学习交流 > 请教51单片机和RC522读卡器相关问题,无法寻卡

请教51单片机和RC522读卡器相关问题,无法寻卡

录入:edatop.com    阅读:
想用51单片机和RC522连接,实现刷一下卡单片机上某个灯亮一下的功能,感觉这是最基础的,想先做出这一步再加一些复杂的功能,但是现在这一步也实现不了,不知道程序或连线有没有问题,麻烦帮我一下。
我是用I/O口模拟SPI通信
sbit     MF522_NSS  =P1^3 ;                       
sbit     MF522_SCK  = P1^4;
sbit     MF522_SI   = P1^5;
sbit     MF522_SO   = P1^6;
sbit     MF522_RST  = P1^7;
指示灯定义为
sbit     LED  =    P1^0;
sbit     LED1  =    P1^1;
sbit     LED2  =    P1^2;
#include <STDIO.H>
#include <string.h>
#include "LPCREG.h"
#include "pindef.h"
#include "mfrc522.h"
unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
unsigned char g_ucTempbuf[20];   
/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem()
{
        P0M1 = 0x0; P0M2 = 0x0;
        P1M1 = 0x0;        P1M2 = 0x0;                     
        P3M1 = 0x0; P3M2 = 0xFF;        
        P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;P2 = 0xFF;
}
void main( )
{   
     unsigned char status;
     InitializeSystem( );
     PcdReset();
     PcdAntennaOff();
     PcdAntennaOn();
     while ( 1 )
     {   
         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
                 switch(status)
                 {
                    case MI_NOTAGERR:  //status=-2;
                                 LED=0;
                        break;
                        case MI_ERR:       //status=-1;
                                LED1=0;
                        break;       
                        case MI_OK:            //status=0;
                            LED2=0;                        
                        break;
                        default:
                        P1=0xFF;
                        ;         
                 }
                 continue;
                }
}
想先检查一下寻卡函数PcdRequest到底有没有起作用,所以用了switch语句,检查它到底返回的状态字到底是0还是-1还是-2(只有这三种状态),结果程序烧写进单片机后我还没刷卡第二个指示灯就亮了,也就是说返回的状态字是-1,不知道到底哪儿有问题,请帮我解答一下

IMG_20160118_150728.jpg

看你的描述,应该是初始化没有做好。

可否指点一下,哪一块的初始化,我是根据例程改的,其实很多地方不懂

这三个函数的实现你再看看,是不是有问题。
PcdReset();
     PcdAntennaOff();
     PcdAntennaOn();

这是RC522的库函数,应该没问题吧,厂家给的

你的rc522做好了吗? 我也需要用到,请问要怎么实现刷卡啊

少了头文件
#include<reg52.h>
#include <intrins.h>   
端口定义不正确

13.56M PRO1520  pin对pin 兼容 CV520,RC522,FM17520,FM17522质量第一,价格第二。 E-mail:bin.hu@profact.net  扣扣:1101521061

申明:网友回复良莠不齐,仅供参考。如需专业解答,请学习本站推出的微波射频专业培训课程

上一篇:WIFI
下一篇:通信接收电路的电感大小选择

射频和天线工程师培训课程详情>>

  网站地图