日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年01月02日(星期四)

正在發(fā)生

2020年01月02日 | 51單片機讀寫RC522卡(LCD12864)RFID開發(fā)程序與原理圖

發(fā)布者:SparklingStar 來源: 51hei關鍵字:51單片機  讀寫RC522卡  LCD12864  RFID 手機看文章 掃描二維碼
隨時隨地手機看文章

RFID RC522程序及原理

單片機源程序如下:

#include "reg52.h"

#include "main.h"

#include "mfrc522.h"        

#include "LCD12864.h"

#include

#include


sbit BEEP=P0^1        ;

#define SET_BEEP  BEEP = 0

#define CLR_BEEP         BEEP = 1


//M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令

//4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反 

unsigned char code data2[4]  = {0x12,0,0,0};

unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; 

//unsigned char g_ucTempbuf[20];    

unsigned char idata MLastSelectedSnr[4];

unsigned char idata RevBuffer[30];  

//unsigned char data SerBuffer[20]; 

bit CmdValid;                            


unsigned char code ASCII_NUM[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

unsigned char idata LastKeyA[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//NO.2卡

unsigned char idata NewKeyA[6]={0x19,0x84,0x07,0x15,0x76,0x14};//NO.2卡

unsigned char idata NewKey[16]={0x19,0x84,0x07,0x15,0x76,0x14,

                                0xff,0x07,0x80,0x69,

                                0x19,0x84,0x07,0x15,0x76,0x14};


unsigned char idata Read_Data[16]={0x00};


//unsigned char idata RevBuffer[30];

//unsigned char idata MLastSelectedSnr[4];

unsigned char data OperationCard;


uchar data bWarn,bPass;



#define        REGCARD                        0xa1

#define        CONSUME                        0xa2

#define READCARD                0xa3

#define ADDMONEY                0xa4


void KeyScan(void)

{

                if(REGCARDBTN == 0)//注冊

                {

                                delay_10ms(1);

                                if(REGCARDBTN == 0 )

                                                OperationCard = REGCARD;        

                                LCD_PutString(0,3,"注冊:");

                }

                if(CONSUMEBTN == 0)//消費

                {

                                delay_10ms(1);

                                if(CONSUMEBTN == 0 )

                                                OperationCard = CONSUME;

                                LCD_PutString(0,3,"消費:      ");        

                }

                if(ADDMONEYBTN == 0)//充值

                {

                                delay_10ms(1);

                                if(ADDMONEYBTN == 0 )

                                                OperationCard = ADDMONEY;        

                                LCD_PutString(0,3,"充值:      ");

                }

                if(READCARDBTN == 0)//讀卡信息

                {

                                delay_10ms(1);

                                if(READCARDBTN == 0 )

                                                OperationCard = READCARD;        

                                LCD_PutString(0,3,"查詢:      ");

                }

}


/*

void delay(void)

{

        uint i ;

        for(i=0;i++;i<100)

        ;

}


void ShortBeep(void)

{

        uint i;

        for(i=0;i<3;i++)

        {

                SET_BEEP;            

                delay_10ms(3);

                CLR_BEEP;

                delay();

        }

}


void LongBeep(void)

{

        uint i;

        for(i=0;i<20;i++)

        {

                SET_BEEP;            

                delay_10ms(5);

                CLR_BEEP;

                delay();

        }

}

*/

void Warn(void)

{         

  uchar data ii;

  for(ii=0;ii<3;ii++)

  {

    SET_BEEP;//ShortBeep();如果是有源蜂鳴器就一句SET_BEEP就ok了

    delay_10ms(5);

    CLR_BEEP;

    delay_10ms(5);

  }         

}


void Pass(void)

{        

  SET_BEEP;//LongBeep();如果是有源蜂鳴器就一句SET_BEEP就ok了

  delay_10ms(30);

  CLR_BEEP;

}

void CtrlProcess(void)

{

        //        unsigned char idata Write_First_Data[16];

          char string[]="           ";

                unsigned char idata Write_Consume_Data[16];

          

                signed long money_value;

          float f_money_value;

          unsigned char ii;

          char status;


          status=PcdRequest(PICC_REQIDL,&RevBuffer[0]);//尋天線區(qū)內未進入休眠狀態(tài)的卡,返回卡片類型 2字節(jié)


          if(status!=MI_OK)

                          return;

                

                for(ii=0;ii<2;ii++)

                {

                                string[2*ii]   = ASCII_NUM[(RevBuffer[ii]>>4)&0x0f];

                                string[2*ii+1] = ASCII_NUM[RevBuffer[ii]&0x0f];

                }

                string[4] = '