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

一、方案描述

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

二、系统组成

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

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

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

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

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

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

三、硬件电路图

基于51单片机的RFID门禁系统_第1张图片

四、元器件清单

规格 规格 位号 数量
电解电容 10uF C1 1
瓷片电容 22pF C2, C3 2
瓷片电容 0.1uF C17, C18 2
二极管 IN4148 D2 1
晶振 12MHZ J1 1
LED LED4 1
金属膜电阻 10K R1, R3, R4 3
金属膜电阻 1K R5, R7, R10 3
电位器 10k RT1 1
单片机 ST89C52 U1 1
排阻 4.7K U3 1
开关 SWITCH U4 1
电源接口 POW U5 1
排针 U6 1
三极管 S8550 U7 1
蜂鸣器 BELL U8 1
存储器 AT24C02 U9 1
RC522 CON8 U12, U28 2
排针 CON2 U13 1
三极管 'S8550 U14 1
继电器 JDQ-5 U15 1
稳压管 LM1117 U22 1
液晶 LCD12864 U23 1

 五、部分程序

#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操作
    }
}      
 

你可能感兴趣的:(51单片机,c语言,51单片机,嵌入式硬件,单片机)