求助!!!RFID RC522 IC卡显示

2019-07-21 05:33发布

这个是我从论坛里下载的程序,研究了很久,不知怎么样才能显示出IC卡号,
我用的板子是战舰,模块是RFID RC522,想实现的效果是刷一张卡就在液晶屏上显示其卡号。
有朋友能帮我看下程序指点一下吗。。。

基于战舰板RFID RC522实验.rar (2.83 MB, 下载次数: 73) 2018-12-7 08:57 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
鲨鱼辣椒
1楼-- · 2019-07-21 08:29
//#include "led.h"
#include "delay.h"
//#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "string.h"
#include "Myspi.h"
#include "rc522.h"
u8 Temp[4],UID[4];
int main(void)
{       
                
u8 status2,        status1;
         u16 RETRY=0xFFF;
         u8  status=MI_ERR;
        Stm32_Clock_Init(9);//系统时钟设置
          delay_init();                     //延时函数初始化                      
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         
        uart_init(115200);                
        LCD_Init();
         InitRc522();                                //初始化射频卡模块
                PcdReset();                        //复位RC522
         delay_ms(2);
    PcdAntennaOn();                //开启天线发射
        LCD_Clear(WHITE);
         POINT_COLOR=BLACK;
   LCD_ShowString(30,40,210,24,24,"RC522 INITIAL");                                
          while(1)
        {                 
                //PcdAntennaOn();                //开启天线发射
                status=PcdRequest(0x52,Temp);////寻卡,输出为卡类型----
                if (status != MI_OK)
         {   
                                        PcdReset();
                                        PcdAntennaOff();
                                        PcdAntennaOn();
                                        continue;               
                                                  
         }       
//                do
//        {
//                RETRY--;
//                status=PcdRequest(PICC_REQALL,Temp);  
//        }while(RETRY!=0&&status!=MI_OK); //等待寻卡成功
       
                if(status==MI_OK)      //寻卡成功
                {
                                LCD_ShowString(30,70,210,24,24,"PcdRequest OK");
                                status=MI_ERR;
                                status = PcdAnticoll(UID);  //防冲撞处理,输出卡片序列号,4字节--第0扇区第0块前4个字节是UID(序列号)
                        if(status==MI_OK)
                                {
                                         status=MI_ERR;
                                        status=PcdSelect(UID);
                                }
                                if(status==MI_OK)  //选卡成功
                                {
                                         // LCD_Clear(WHITE);
                                                POINT_COLOR=BLACK;
                                                LCD_ShowString(30,100,210,24,24,"Select SUCCESS");
                                                //LCD_Showxnum();
                                          if(UID[0]==0xB0&&UID[1]==0x86&&UID[2]==0x4D&&UID[3]==0x25)
                                                          LCD_ShowString(30,130,210,24,24,"RIGHT");
                                                else
                                                          LCD_ShowString(30,130,210,24,24,"ERROR");
                                                delay_ms(5000);
//                                          PcdAntennaOff();
                                }
                                LCD_Clear(WHITE);
                                POINT_COLOR=BLACK;
                                LCD_ShowString(30,40,210,24,24,"RC522 INITIAL");
                                delay_ms(5000);
                                continue;
          }
                else
        {
                //printf("检测超时,未检测到消费卡!!! ");
                LCD_ShowString(30,70,210,24,24,"检测超时,未检测到消费卡");
                PcdAntennaOff();  //关闭天线
        }
        }
         
}
鲨鱼辣椒
2楼-- · 2019-07-21 13:47
 精彩回答 2  元偷偷看……
高翔宇
3楼-- · 2019-07-21 14:43
你解决了吗  我也需要这个程序

一周热门 更多>