目录
资料下载地址:基于51单片机的RFID密码锁门禁系统设计资料(源码+原理图+论文等)
1、实物图
2、原理图
3、PCB
4、器件清单
5、 设计描述
本设计采用STC89C52作为主控芯片,专用读卡器模块用来读射频卡的信息,当有卡进入到读卡器读卡的范围内时就会读取到相应的卡序列号,并根据得到的卡序列号做出相应的操作。若正确则开门,若不正确则报警并显示错误信息。本设计实现了自动、准确的识别卡序列号,对门禁系统起着重要的作用EEPROM采用AT24C04芯片,掉电后可以存储密码,从而保证了系统的安全性。人机交互通道部分采用了4×4矩阵键盘输入以及LCD12864标准字符型液晶显示。针对于用按键输入密码,根据密码的正确与否来进行相应的操作,管理员可以自行设定和修改密码;输出系统部分包括驱动开锁电路和报警电路;其中,在本系统设计中,驱动开锁电路用发光二极管表示,而报警电路则使用蜂鸣器。
2、研究方案
本系统的主要电路包括:读卡器数据采集电路、串行E2PROM存储电路、LCD12864显示电路、报警电路、门控电路、键盘电路。
(1)数据采集:读卡器YHY502ATG通过天线读取RFID卡的数据,然后将数据传送出去。但这部分还只是设计阶段没有真正的实现,该系统还需要在今后的工作中进一步的研究和改善。所以在仿真中简单的用一个开关按钮代替读卡器正确信号的输入。
(2)数据分析:AT89C52接收到数据后,将数据传送给AT24C04或上位机,AT24C04或上位机对数据进行分析,从而判断数据的有效性。
(3)数据处理:针对数据的采集和分析的结果做出相应的处理,例如显示、报警、门控等。
(4)密码输入模块:(a)针对于用按键输入密码,根据密码的正确与否来进行相应的操作;(b)管理员可以自行设定和修改密码; (c)友好的人机界面;(d)输入正确的密码后,驱动开锁电路。
(5)报警机制模块:当出现非法卡或输入的密码不正确时产生报警。
3. 拟解决的关键问题
(1)系统总方案的论证
(2)系统硬件设计
(3)程序软件设计
五、已进行的科研工作基础和已具备的科学研究条件(包括已经取得的科研成果、已经完成的科学实验及调查研究、具备的主要仪器设备及资料与数据等),以及可行性分析
1. 已进行的科研工作基础和已具备的科学研究条件
在大学期间,我们开设了单片机的,对整个单片机的控制比较熟悉,做过相关的单片机设计的实验,目前我校图书库里有很多较好的相关资料,在这个过程中我们查阅相关资料,文献,熟悉单片机的仿真软件环,具备相关科研工作基础与条件。
近年来,门禁系统因其独特的优越性作为安全防范系统中的一个分支得到了飞速的发展和较广泛的应用。门禁系统之所以能在众多安防产品中脱颖而出,是因为它变以往安防产品(如闭路监控、 防盗报警等)的被动安防方式为主动控制方式。射频识别技术是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预,作为条形码的无线版本,RFID技术具有条形码所不具备的防水、防磁、耐高温、使用寿命长、读取距离大、标签上数据可以加密、存储数据容量更大、存储信息更改自如等优点,其应用将给零售、物流等产业带来革命性变化。同时,经济水平的高速发展让人们越来越关心建筑内部的安全性。为了适应信息时代的需要,保证小区内部的安全性,满足用户当时的各种需求,智能门禁系统应运而生。智能门禁系统集计算机技术、电子技术、机械技术、磁电技术和射频识别技术于一体,使卡与锁之间实现完整“对话”功能,以智能卡来控制门锁的开启,开创了门禁管理的新概念,它不仅给管理者提供了更安全、更快捷、更自动化的管理模式,而且也给使用者带来了极大的方便。本文研究的基于射频识别技术的门禁系统就是这样的一种系统。
2.可行性分析
我查阅了相关资料,也了解到目前已经具备进行这个实验的基础,并且实用性很强,很多人都进行过相关研究,这个实验是可行的。
首先规划出了系统的硬件功能模块和软件功能模块,以及在此分析基础上设计出的具体的、可以满足本系统全部需求和要求的子模块,并在整个的设计中可以进行模块化设计,为以后的设计带来方便。所以此设计是可行的。
元器件清单:
规格 | 规格 | 位号 | 数量 |
电解电容 | 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 |
6、源码
#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操作