当前位置:   article > 正文

基于51单片机的RFID门禁系统

基于51单片机的rfid门禁系统

一、方案描述

        本设计采用STC89C52作为主控芯片,专用读卡器模块用来读射频卡的信息,当有卡进入到读卡器读卡的范围内时就会读取到相应的卡序列号,并根据得到的卡序列号做出相应的操作。若正确则开门,若不正确则报警并显示错误信息。本设计实现了自动、准确的识别卡序列号,对门禁系统起着重要的作用EEPROM采用AT24C04芯片,掉电后可以存储密码,从而保证了系统的安全性。人机交互通道部分采用了4×4矩阵键盘输入以及LCD12864标准字符型液晶显示。针对于用按键输入密码,根据密码的正确与否来进行相应的操作,管理员可以自行设定和修改密码;输出系统部分包括驱动开锁电路和报警电路;其中,在本系统设计中,驱动开锁电路用发光二极管表示,而报警电路则使用蜂鸣器。

二、系统组成

        本系统的主要电路包括:读卡器数据采集电路、串行E2PROM存储电路、LCD12864显示电路、报警电路、门控电路、键盘电路。

  (1)数据采集:读卡器YHY502ATG通过天线读取RFID卡的数据,然后将数据传送出去。但这部分还只是设计阶段没有真正的实现,该系统还需要在今后的工作中进一步的研究和改善。所以在仿真中简单的用一个开关按钮代替读卡器正确信号的输入。

   (2)数据分析:AT89C52接收到数据后,将数据传送给AT24C04或上位机,AT24C04或上位机对数据进行分析,从而判断数据的有效性。

   (3)数据处理:针对数据的采集和分析的结果做出相应的处理,例如显示、报警、门控等。

(4)密码输入模块:(a)针对于用按键输入密码,根据密码的正确与否来进行相应的操作;(b)管理员可以自行设定和修改密码; (c)友好的人机界面;(d)输入正确的密码后,驱动开锁电路。

(5)报警机制模块:当出现非法卡或输入的密码不正确时产生报警。

三、硬件电路图

四、元器件清单

规格规格位号数量
电解电容10uFC11
瓷片电容22pFC2, C32
瓷片电容0.1uFC17, C182
二极管IN4148D21
晶振12MHZJ11
LEDLED41
金属膜电阻10KR1, R3, R43
金属膜电阻1KR5, R7, R103
电位器10kRT11
单片机ST89C52U11
排阻4.7KU31
开关SWITCHU41
电源接口POWU51
排针U61
三极管S8550U71
蜂鸣器BELLU81
存储器AT24C02U91
RC522CON8U12, U282
排针CON2U131
三极管'S8550U141
继电器JDQ-5U151
稳压管LM1117U221
液晶LCD12864U231

 五、部分程序

#include "reg52.h"
#include "main.h"
#include "uart.h"
#include "timer.h"
#include "rc522.h"
#include "ctrl.h"
#include "lcd12864.h"
#include "beep.h"
#include "key.h"  
#include "EEPROM.h"
 
void init_all(void)    //初始化
{
    EA = 0;          //关总中断         
    init_timer(); //定时器初始化
    init_uart();  //串口初始化
    init_rc522(); //RC522初始化    
    lcd_init();      //LCD初始化   
    EEPROM_READ(0,Card_SN_BUF,4);//EEPROM初始化,取出记录的卡号  
    EEPROM_READ(7,KEY_BUF,8);//EEPROM初始化,取出记录的密码 
    
    send_bytes(Card_SN_BUF,4);
    EA = 1;          //开总中断
}

void main(void)      //主函数
{    
    INT8U key;

    Delay_ms(50); //让硬件稳定
    init_all();       //执行初始化函数
    relay_OFF();   //关继电器
    LED_BLINK_1(); //led test
    beep1();       //beep test     
    display(0,0,0);     //显示初始化

    while(1)
    {
       key=key_scan(); //按键操作
       if(key==12)  if(states>0) states--;
                    else states=0;    //上一功能
       
       if(key==13) if(++states>3) states=3;    //下一功能
       ctrl_process(); //进入RC522操作
    }
}      
 

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/772134
推荐阅读
相关标签
  

闽ICP备14008679号