怎么会这样-_-! rc522在12864上的51读卡程序,怎么不行呢?

2019-07-15 15:57发布

如题,程序下载进去没反应。。。我这边有两个程序,一个是含lcd12864显示的,但是下载没反应。另一份没12864的可以,用串口调试,有数据,但是本人是小白,不会写12864的程序。
求大神看看!!!






GMOZUOXRSSFKA_6EA7~@8I4.png
71YQI1_)0_MRCU%%0$7Q]6Q.png
NFC_Test.rar 65.32 KB, 下载次数: 110
12864串口显示RC522射频模块读到的数据.rar 80.33 KB, 下载次数: 99
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
610674872
2019-07-16 01:02
韩山童 发表于 2015-4-19 18:06
我懒得下程序………………

大神!这是主函数,帮我看看对不对,本人小白!!!

#include "lpcreg.h"
#include "main.h"
#include "mfrc522.h"
#include "12864.h"
#include   <STDIO.H>
#include <string.h>
unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
//M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令
//4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反
unsigned char code data2[4]  = {0,0,0,0x01};
unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};


unsigned char g_ucTempbuf[20];                        
void delay1(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);       
}  


void main( )
{   
     unsigned char status,i;
          unsigned int temp;
         lcd_init();
     InitializeSystem( );
     PcdReset();
     PcdAntennaOff();
     PcdAntennaOn();  
          display_welcome2();
          

          
     while ( 1 )
     {   


         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
         if (status != MI_OK)
         {   
                          continue;
         }
                        display_type();//寻到卡后显示出该卡的类型


                        printf("卡的类型:");
            for(i=0;i<2;i++)
                                        {
                                                temp=g_ucTempbuf;
                                                printf("%X",temp);
                                               
                                        }
                       
         status = PcdAnticoll(g_ucTempbuf);//防冲撞
         if (status != MI_OK)
         {    continue;    }


                        display_cardnum();//显示寻到的卡的序列号


                                        ////////以下为超级终端打印出的内容////////////////////////
                               
                                        printf("卡序列号:");        //超级终端显示,
                                        for(i=0;i<4;i++)
                                        {
                                                temp=g_ucTempbuf;
                                                printf("%X",temp);
                                               
                                        }
                      
                                        //temp=m1erea;
                                       
                                        //printf("%X ",temp);



                                        ///////////////////////////////////////////////////////////





         status = PcdSelect(g_ucTempbuf);//选定卡片
         if (status != MI_OK)
         {    continue;    }

         status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//验证卡片密码
         if (status != MI_OK)
         {    continue;    }

         status = PcdWrite(1, data1);//写块
         if (status != MI_OK)
         {    continue;    }
while(1)
                {
         status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
         if (status != MI_OK)
         {   
                          continue;
         }
                 status = PcdAnticoll(g_ucTempbuf);//防冲撞
         if (status != MI_OK)
         {    continue;    }
                status = PcdSelect(g_ucTempbuf);//选定卡片
         if (status != MI_OK)
         {    continue;    }

         status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//验证卡片密码
         if (status != MI_OK)
         {    continue;    }


         status = PcdValue(PICC_DECREMENT,1,data2);//扣款
         if (status != MI_OK)
         {    continue;    }
                 display_xiaofeicarddat();//消费

        /*        status = PcdValue(PICC_INCREMENT,1,data2);//充值
         if (status != MI_OK)
         {    continue;    }
                 */
         status = PcdBakValue(1, 2);//块备份
         if (status != MI_OK)
         {    continue;    }

         status = PcdRead(2, g_ucTempbuf);//读块
         if (status != MI_OK)
         {    continue;    }
                printf("卡读块:");        //超级终端显示,
         for(i=0;i<16;i++)
                                        {
                                                temp=g_ucTempbuf;
                                                printf("%X",temp);
                                               
                                        }

                 printf(" ");
         display_carddat();//显示数据
         //memcpy(data1,g_ucTempbuf,16);
                LED_GREEN = 0;
                delay1(100);
                LED_GREEN = 1;
                delay1(100);
                LED_GREEN = 0;
                delay1(200);
                LED_GREEN = 1;                                 
                                
                 PcdHalt();
                }
    }
}


/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void InitializeSystem()
{
        P0M1 = 0x0; P0M2 = 0x0;
        P1M1 = 0x0;        P1M2 = 0x0;                     
        P3M1 = 0x0; P3M2 = 0xFF;
        P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;P2 = 0xFF;

        TMOD=0x21;                   //设T0为方式1,GATE=1;
        SCON=0x50;
        TH1=0xFA;          //波特率为4800bps
        TL1=0xFA;
        TH0=0;
        TL0=0;
        TR0=1;  
        ET0=1;             //允许T0中断
        TR1=1;                           //开启定时器
        TI=1;
        EA=1;                                   //开启总中断
       
        ES = 1;
        RI = 1;

}

一周热门 更多>