找回密码
 立即注册

QQ登录

只需一步,快速开始

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

STC89C52RC+RFID RC522 刷卡开锁程序

[复制链接]
跳转到指定楼层
楼主
ID:246248 发表于 2017-11-5 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg52.h"
#include "main.h"
#include "mfrc522.h"

#define DataPort P0 //定义数据端口
unsigned char UID[5],Temp[4];
unsigned char UID1[4]={188,96,184,121};        //钥匙1
unsigned char UID2[4]={158,101,169,84};

unsigned char mn,num;
unsigned char KeyScan(void);//键盘扫描

sbit KEY1=P3^5;
sbit KEY2=P3^6;
sbit KEY3=P3^7;

void feeb() //蜂鸣器函数
{
        ff=0;
        delay_10ms(1);
        ff=1;
        delay_10ms(1);
}

void Auto_Reader(void)
{

  while(1)
  {
  num=KeyScan();
   switch(num)
       {
            case 1:LED6=1; break;//触发KEY1关闭到位
                   case 2:LED6=1; break;
                case 3:LED6=1; break;
            default:break;
           }

    if(PcdRequest(0x52,Temp)==MI_OK)  //寻卡,成功后Temp数组为卡类型
    {
      if(PcdAnticoll(UID)==MI_OK)          //防冲突,UID数组数据为卡序列号
      {
            CALL_isr_UART();                          //开串口中断将UID数组前四个字节上传到串口调试助手                  
                 feeb();   
                       
                if (mn==4)
                   {
                LED6=0;
                mn=0;
                   }
                           
      }
    }
  }               
}

void InitializeSystem()         //祲始化
{
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        TR1=1;
        REN=1;
        SM0=0;
        SM1=1;       
        EA=1;
        ES=1;
    PcdReset();         //复位RC522
    PcdAntennaOff();   //关闭天线
    PcdAntennaOn();    //开启天线  
        M500PcdConfigISOType( 'A' );  //设置RC632的工作方式
}

void isr_UART(void) interrupt 4 using 1
{
    unsigned char i;

        if(TI)
        {
                TI=0;
                for(i=0;i<4;i++)
                {
                        SBUF=UID[i];
                        while(!TI);
                        TI=0;
                if (UID[i]==UID1[i]||UID[i]==UID2[i])
                   {
                mn++;               
                   }                                                                
                }
                REN=1;
        }       
}

/*------------------------------------------------
            按键扫描函数,返回扫描键值
------------------------------------------------*/
unsigned char KeyScan(void)
{

if(!KEY1)
    {
         delay_10ms(1);
     if(!KEY1)     
           {
        while(!KEY1);
               {
                   return 1;
                         }
           }
        }

else if(!KEY2)
    {
         delay_10ms(1);
     if(!KEY2)   
           {
        while(!KEY2);
               {
                   return 2;
                         }
           }
        }

else if(!KEY3)  
    {
         delay_10ms(1);
     if(!KEY3)     
           {
        while(!KEY3);
               {
                   return 3;
                         }
           }
        }


    return 0;
}

void main( )
{   

    InitializeSystem( );
        Auto_Reader();
       
}

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

使用道具 举报

沙发
ID:71421 发表于 2018-11-16 12:38 | 只看该作者
感谢分享!!!
回复

使用道具 举报

板凳
ID:470242 发表于 2020-4-17 15:35 | 只看该作者
刷不了卡
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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