欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2562|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

水控單機(jī)版rc5224.16一個(gè)密碼版

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:405893 發(fā)表于 2018-10-7 09:22 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
可以參考一下,keil代碼。
RC522在STC89C52上開發(fā)實(shí)例
STC-ISP V39.exe下載就不會(huì)擦出eeprom,STC_ISP_V479.exe下載會(huì)將eeprom擦出

單片機(jī)源程序如下:
  1. /****************************************Copyright (c)**************************************************
  2. M1卡使用情況:
  3. 1.卡號(hào)對(duì)應(yīng)不同人員
  4. 2.塊號(hào)1存放該人員可進(jìn)入的區(qū)域編號(hào),從第一字節(jié)表示區(qū)域編號(hào)為1,

  5. 3.如果通過,則紅燈亮,否則,不亮。
  6. 4.每次刷卡,RC522上傳卡號(hào)以及塊號(hào)1內(nèi)容到上位機(jī)           
  7. ********************************************************************************************************/

  8. #include "STC12C54xx.h"        
  9. #include "eeprom.h"
  10. #include "mfrc522.h"  
  11. //uchar code data1[16] ={0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};

  12. //M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
  13. //4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反

  14. //uchar code money[4]      = {1,0,0,0};
  15. uchar code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //初始密碼
  16. uchar code administer_key[6]={0,0,0,0,0,0};//管理員卡密碼
  17. uchar code this=0x01;
  18. uchar code bianhao[16]={0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  19. //*********全局變量定義*********************************//

  20. static uchar xdata Rec_Buffer[REC_BUFFER_SIZE];                //串口接收緩沖區(qū)
  21. static uchar Recvd_Count;                                                 //串口已接收數(shù)據(jù)的個(gè)數(shù)
  22. unsigned char g_ucTempbuf1[4];  //返回卡號(hào)       
  23. unsigned char g_ucTempbuf2[16]; //返回塊中16位數(shù)據(jù)                     

  24. bit  time_flag=0;//1秒時(shí)間標(biāo)志位
  25. bit  mode     =0;//模式選擇標(biāo)志位,0為定時(shí)計(jì)費(fèi)模式,1為流量計(jì)費(fèi)模式
  26. static uint gather_money=0;//匯總金額變量,需要充分考慮停電問題????????????????????



  27. /*****************************************************************************
  28. *原型:void time0_init(void)
  29. *功能:定時(shí)器0初始化
  30. *input:無
  31. *ouput:無
  32. 用于定時(shí)計(jì)費(fèi)
  33. ******************************************************************************/
  34. void time0_init(void)
  35. {

  36.     if(mode==0)  
  37.     {
  38.           TMOD  = TMOD|0x01;
  39.           TH0   = 0x10;
  40.           TL0   = 0x00;//4096,定時(shí)15次就是1S,11.0592M
  41.         }
  42.         if(mode==1)
  43.         {
  44.             TMOD  = TMOD|0x05;//計(jì)外部脈沖
  45.           TH0   = 0xff;
  46.           TL0   = 0xfe;//一個(gè)脈沖來則溢出
  47.           TR0   =1;
  48.         }
  49. //          TR0   =1;
  50.           ET0   =1;   
  51. }
  52. void timer0() interrupt 1
  53. {

  54.   static uchar overflow=0;
  55.   if(mode==0)
  56.   {

  57.         TH0   = 0x10;
  58.         TL0   = 0x00;//4096,定時(shí)15次就是1S,11.0592M
  59.         overflow++;
  60.         if(overflow>=15)//注意:如果overflow未付初值,此處if(overflow==15),第一次得不到立即響應(yīng),改成>=則可以立即響應(yīng)
  61.         {
  62.     overflow=0;
  63.         time_flag=1;
  64.         LED=~LED;//綠色指示燈閃爍,表示正在計(jì)費(fèi)
  65.         }
  66.   }
  67.   if(mode==1)
  68.   {
  69.             TH0   = 0xff;
  70.           TL0   = 0xfe;//一個(gè)脈沖來則溢出
  71.           time_flag=1;
  72.   }
  73.   

  74. }



  75. //-------------------------------- ------------------------------------------------------------------
  76. // 函數(shù)名稱: delay
  77. // 入口參數(shù): N
  78. // 函數(shù)功能:延時(shí)子程序,實(shí)現(xiàn)(16*N+24)us的延時(shí)
  79. // 系統(tǒng)采用11.0592MHz的時(shí)鐘時(shí),延時(shí)滿足要求,其它情況需要改動(dòng)
  80. //--------------------------------------------------------------------------------------------------
  81. void Delay_ms(uint N)      
  82. {
  83.   uint i,j;
  84.   for(j=0;j<1000;j++)
  85.   for(i=0;i<=N;i++);

  86. }

  87. void Pass()
  88. {
  89.   beep=0;
  90.   Delay_ms(50);
  91.   beep=1;

  92. }
  93. /*******************************************************************************
  94. * Function Name  : UART_Init
  95. * Description    : 初始化串行口和波特率發(fā)生器(用定時(shí)器1)
  96. * Input          : None
  97. * Output         : None
  98. * Return         : None
  99. *******************************************************************************/
  100. void UART_Init(void)
  101. {

  102.         SCON =0x50;            //選擇串口工作方式,打開接收允許
  103.         TMOD =TMOD|0x21;            //定時(shí)器1工作在方式2,定時(shí)器0工作在方式1
  104.         PCON|=0x80;
  105.     TH1=0xff;                             //BaudRate=57600(系統(tǒng)時(shí)鐘11.0592MHZ)
  106.     TL1=0xff;
  107.         TR1  =1;               //啟動(dòng)定時(shí)器T1
  108.         ET1  =0;

  109.         TR0         =1;                            //啟動(dòng)定時(shí)器T0
  110.     ET0         =1;                           //允許定時(shí)器0中斷
  111.         ES         =1;               //允許串行口中斷
  112.        
  113. }
  114. /*******************************************************************************
  115. * Function Name  : Sent_Byte
  116. * Description    : 發(fā)送一個(gè)字節(jié)到主機(jī)
  117. * Input          : Sdata:要發(fā)送的字節(jié)
  118. * Output         : None
  119. * Return         : None
  120. *******************************************************************************/
  121. void Sent_Byte(unsigned char Sdata)
  122. {
  123.         TI=0;
  124.         SBUF=Sdata;
  125.         while(TI==0) ;
  126.         TI=0;
  127. }
  128. /*******************************************************************************
  129. * Function Name  : Sent_String
  130. * Description    : 發(fā)送字節(jié)串到主機(jī)
  131. * Input          : pt_send:要發(fā)送的字符串
  132. * Output         : None
  133. * Return         : None
  134. *******************************************************************************/
  135. void Sent_String(unsigned char *pt_send)
  136. {
  137. TI=0;
  138.   while(*pt_send!='\0')
  139.        {
  140.         Sent_Byte(*pt_send++);
  141.        }
  142. }
  143. /*******************************************************************************
  144. * Function Name  : Sent_Buffer
  145. * Description    : 向串口1發(fā)送指定長(zhǎng)度的數(shù)據(jù)
  146. * Input          : string:發(fā)送緩沖區(qū)指針;len:發(fā)送長(zhǎng)度.
  147. * Output         : None
  148. * Return         : None
  149. *******************************************************************************/
  150. void Sent_Buffer(uchar *string,uchar len)
  151. {uchar i;
  152.         ES        =        0;
  153.           for(i=0;i<len;i++)
  154.            {
  155.             Sent_Byte(*string++);
  156.        }
  157.         ES        =        1;
  158. }

  159. //********************主函數(shù)******************************************
  160. main()
  161. {
  162.    
  163.     uchar status;
  164.         unsigned long int display_data=0;
  165.         WDT_Disable;
  166.         UART_Init();                //初始化串口
  167.         EA   =1;                //單片機(jī)中斷允許
  168.     //初始化射頻芯片
  169.     PcdReset();
  170.     PcdAntennaOff();
  171.     PcdAntennaOn();  
  172.     Delay_ms(100);
  173.        time0_init();       //初始化定時(shí)器0,要在讀mode以后

  174.           //復(fù)位芯片,打開天線
  175.           PcdReset();   
  176.           PcdAntennaOff();
  177.           PcdAntennaOn();  
  178.           Delay_ms(100);

  179.     while(1)
  180.          {  
  181.                     //尋卡,輸出為卡類型
  182.          status = PcdRequest(PICC_REQALL, g_ucTempbuf1);//*PICC_REQALL=0x52:尋天線區(qū)內(nèi)所有符合14443A標(biāo)準(zhǔn)的卡  PICC_REQIDL=0x26:只尋未進(jìn)入休眠狀態(tài)的卡                     
  183.          if (status == MI_OK)
  184.                  status = PcdAnticoll(g_ucTempbuf1);  //防沖撞處理,輸出卡片序列號(hào),4字節(jié)

  185.          if (status == MI_OK)
  186.                status = PcdSelect(g_ucTempbuf1);    //選擇卡片,輸入卡片序列號(hào),4字節(jié)

  187.          if (status == MI_OK)
  188.                    status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf1);

  189.           if (status == MI_OK)   
  190.                    status = PcdRead(1, g_ucTempbuf2);//讀卡
  191.          
  192.          // if (status == MI_OK)
  193.                   //{       
  194.                       //status=PcdWrite(1,bianhao);
  195.                  // }

  196.                  if (status == MI_OK)
  197.                    status = PcdRead(1,g_ucTempbuf2);//讀卡

  198.                   if(status==MI_OK)
  199.                   {
  200.                   Pass();
  201.                  //Sent_Byte(this);
  202.                  Sent_Byte(g_ucTempbuf1[0]);Sent_Byte(g_ucTempbuf1[1]);Sent_Byte(g_ucTempbuf1[2]);Sent_Byte(g_ucTempbuf1[3]); //卡號(hào)

  203.                  Sent_Byte(g_ucTempbuf2[0]);Sent_Byte(g_ucTempbuf2[1]);Sent_Byte(g_ucTempbuf2[2]);Sent_Byte(g_ucTempbuf2[3]); //卡中第一塊數(shù)據(jù)內(nèi)容
  204.                  Sent_Byte(g_ucTempbuf2[4]);Sent_Byte(g_ucTempbuf2[5]);Sent_Byte(g_ucTempbuf2[6]);Sent_Byte(g_ucTempbuf2[7]);
  205.                  Sent_Byte(g_ucTempbuf2[8]);Sent_Byte(g_ucTempbuf2[9]);Sent_Byte(g_ucTempbuf2[10]);Sent_Byte(g_ucTempbuf2[11]);
  206.                  Sent_Byte(g_ucTempbuf2[12]);Sent_Byte(g_ucTempbuf2[13]);Sent_Byte(g_ucTempbuf2[14]);Sent_Byte(g_ucTempbuf2[15]);

  207.                   }

  208.        

  209.   }
  210. }

  211. /*******************************************************************************
  212. * Function Name  : Serial ()
  213. * Description    : 串口中斷函數(shù)
  214. * Input          : None
  215. * Output         : None
  216. * Return         : None
  217. *******************************************************************************/
  218. void   Serial ()     interrupt    4          using 2
  219. {
  220.         EA = 0;
  221.      if(RI)
  222.      { RI=0;
  223.            if(Recvd_Count>=REC_BUFFER_SIZE) Recvd_Count=REC_BUFFER_SIZE-1;
  224.             Rec_Buffer[Recvd_Count++]=SBUF;
  225.      }
  226.          EA = 1;
  227. }
復(fù)制代碼

所有資料51hei提供下載:
RFID&amp;#143;.rar (77.9 KB, 下載次數(shù): 10)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-10-7 13:45 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表