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

该设计使用STC89C52作为控制器,结合读卡器模块读取RFID卡信息,通过比较卡序列号来决定是否开门或触发报警。系统包含数据采集、分析、处理,以及密码输入和报警机制。采用AT24C04存储密码,4×4矩阵键盘输入和LCD显示人机交互,以及驱动开锁和报警电路。
摘要由CSDN通过智能技术生成

一、方案描述

        本设计采用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操作
    }
}      
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jacklood

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值