找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5094|回复: 4
打印 上一主题 下一主题
收起左侧

自己改的RC522门禁程序,管脚定义都在程序里

[复制链接]
跳转到指定楼层
楼主
如题。传动是用的直流减速电机带动门上的主轴。,
驱动用的是L9110H芯片。

全部代码下载:
RC522_C51.zip (63.73 KB, 下载次数: 102)


主程序:

  1. #include "lpcreg.h"
  2. #include "main.h"
  3. #include "mfrc522.h"
  4. sbit LED=P0^6;
  5. sbit LED1=P0^7;
  6. sbit key=P1^2;
  7. sbit returnkey=P1^3;
  8. #define N 6//卡数量
  9. unsigned char *g_ucTbuf;
  10. unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};
  11. unsigned char code data2[4]  = {0x12,0,0,0};
  12. unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
  13. unsigned char g_ucTempbuf[20];                        
  14. char code *Date[]={"F2B4F51C","126AE91C","9256F41C","1290F41C","961F8141","AA33263B"};//卡ID

  15. void open_door(void)
  16. {
  17.                         int j,l;
  18.                 for(j=0;j<50;j++)   
  19.                    for(l=0;l<1000;l++);
  20.                  LED1=1;
  21.                  LED=0;                               
  22.                 for(j=0;j<500;j++)
  23.                    for(l=0;l<1000;l++);
  24.                  LED=0;
  25.                  LED1=0;
  26.               for(j=0;j<1000;j++)
  27.                  for(l=0;l<1000;l++);
  28.                  LED=1;
  29.                                  LED1=0;
  30.                                            
  31.           for(j=0;j<200;j++)
  32.               for(l=0;l<1000;l++);
  33.                  LED=0;
  34.                  LED1=0;

  35. }

  36. void set()
  37. {
  38.         TMOD=0x20;
  39.         TH1=0x00;
  40.         TH1=0x00;
  41.         IT0=1;
  42.         EX0=1;
  43.         ET1=1;
  44.         EA=1;
  45.         TR1 =1;
  46. }
  47. void DelayMs(unsigned int _MS)
  48. {
  49.     TH0 = (unsigned char)(RCAP2_1ms>>8);
  50.     TL0 = (unsigned char)(RCAP2_1ms);
  51.     ET0     = 0;                                            // Disable timer2 interrupt
  52.     TR0     = 1;
  53.     while (_MS--)
  54.     {  
  55.         while (!TF1);
  56.                 TF0 = 0;
  57.         TH0 = (unsigned char)(RCAP2_1ms>>8);
  58.         TL0 = (unsigned char)(RCAP2_1ms);
  59.         }
  60.     TR0 = 0;            
  61. }

  62. void rfidpanduan(void)
  63. {
  64.         int f;       
  65.       unsigned char status,Card[8];
  66.                 unsigned char code *ar={"0123456789ABCDEF"};
  67.                  status = PcdRequest(PICC_REQALL,g_ucTbuf);
  68.          if (status == MI_OK)
  69.          {   
  70.                         status = PcdAnticoll(g_ucTempbuf);
  71.                  if (status == MI_OK)
  72.                  {   
  73.                                
  74.                                  status = PcdSelect(g_ucTempbuf);
  75.                          if (status == MI_OK)
  76.                          {      
  77.                                          
  78.                   for(f=0;f<4;f++)
  79.                          {
  80.                                  Card[f*2]=ar[*(g_ucTempbuf+f)/16];
  81.                                 Card[f*2+1]=ar[*(g_ucTempbuf+f)%16];
  82.                          }         
  83.                         for(f=0;f<N;f++)
  84.                         {       
  85.                                 if(Card[0]==Date[f][0]&&Card[1]==Date[f][1]&&Card[2]==Date[f][2]&&Card[3]==Date[f][3]&&Card[4]==Date[f][4]&&Card[5]==Date[f][5]&&Card[6]==Date[f][6]&&Card[7]==Date[f][7])
  86.                                 {
  87.                                           open_door();       
  88.                                         break;       
  89.                                 }
  90.                         }
  91.                         }
  92.                 }
  93.                 }
  94. }




  95. void main( )
  96. {             

  97.      InitializeSystem( );
  98.      PcdReset();         
  99.      PcdAntennaOff();
  100.      PcdAntennaOn();
  101.          set();       
  102.          M500PcdConfigISOType( 'A' );
  103.          LED=0;
  104.          LED1=0;
  105.      while (1)
  106.      {          
  107.                          rfidpanduan();
  108.                          if(key==0)
  109.                          {
  110.                                  returnkey=1;
  111.                                    open_door();
  112.                          }
  113.                          else
  114.                          {
  115.                                   returnkey=0;
  116.                          }
  117.         }                                                                                                                                     
  118. }



  119. /////////////////////////////////////////////////////////////////////
  120. //系统初始化
  121. /////////////////////////////////////////////////////////////////////
  122. void InitializeSystem()
  123. {
  124.     P0M1 = 0x0; P0M2 = 0x0;
  125.     P1M1 = 0x0;        P1M2 = 0x0;                     
  126.     P3M1 = 0x0; P3M2 = 0xFF;
  127.     P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;
  128. }

  129. /////////////////////////////////////////////////////////////////////
  130. //用T2做延时子程序
  131. /////////////////////////////////////////////////////////////////////
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:127973 发表于 2017-1-10 19:43 | 只看该作者
char code *Date[]={"F2B4F51C","126AE91C","9256F41C","1290F41C","961F8141","AA33263B"};//卡ID这个数组大小可改,里面的就是卡ID,也要改成自己ID
回复

使用道具 举报

板凳
ID:134870 发表于 2017-1-24 16:35 来自手机 | 只看该作者
51hei有你更精彩!
回复

使用道具 举报

地板
ID:134242 发表于 2017-4-24 11:02 | 只看该作者
我司供应完全PIN对PIN兼容RC522之非接芯片,可直接替换,不需做任何软硬件更改,功耗更低,成本更低,欢迎索样,QQ458231727
回复

使用道具 举报

5#
ID:607641 发表于 2020-1-13 09:28 | 只看该作者
正在学习rc522
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表