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

2019-07-18 17:13发布

想用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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
liujinyi016
1楼-- · 2019-07-18 22:11
看你的描述,应该是初始化没有做好。
zzh3301
2楼-- · 2019-07-18 23:00
jinyi7016 发表于 2016-1-21 21:57
看你的描述,应该是初始化没有做好。

可否指点一下,哪一块的初始化,我是根据例程改的,其实很多地方不懂
liujinyi016
3楼-- · 2019-07-19 01:56
zzh3301 发表于 2016-1-21 05:59
可否指点一下,哪一块的初始化,我是根据例程改的,其实很多地方不懂

这三个函数的实现你再看看,是不是有问题。
PcdReset();
     PcdAntennaOff();
     PcdAntennaOn();
zzh3301
4楼-- · 2019-07-19 04:33
 精彩回答 2  元偷偷看……
哆哆哆
5楼-- · 2019-07-19 07:56
你的rc522做好了吗? 我也需要用到,请问要怎么实现刷卡啊
纳言西
6楼-- · 2019-07-19 08:46
少了头文件
#include<reg52.h>
#include <intrins.h>   
端口定义不正确

一周热门 更多>