标题: 基于51单片机的RFID密码锁门禁系统设计资料(源码+原理图等) [打印本页]

作者: czcdzscszd    时间: 2018-4-28 09:48
标题: 基于51单片机的RFID密码锁门禁系统设计资料(源码+原理图等)
分享一个51单片机做的门禁系统,资料齐全,亲测可用


Altium Designer画的RFID密码锁门禁系统电路原理图和PCB图如下:(51hei附件中可下载工程文件)


设计文档内容截图:


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

单片机源程序如下:
  1. #include "reg52.h"
  2. #include "main.h"
  3. #include "uart.h"
  4. #include "timer.h"
  5. #include "rc522.h"
  6. #include "ctrl.h"
  7. #include "lcd12864.h"
  8. #include "beep.h"
  9. #include "key.h"  
  10. #include "EEPROM.h"

  11. void init_all(void)        //初始化
  12. {
  13.         EA = 0;              //关总中断                 
  14.         init_timer(); //定时器初始化
  15.         init_uart();  //串口初始化
  16.         init_rc522(); //RC522初始化        
  17.         lcd_init();          //LCD初始化   
  18.         EEPROM_READ(0,Card_SN_BUF,4);//EEPROM初始化,取出记录的卡号  
  19.         EEPROM_READ(7,KEY_BUF,8);//EEPROM初始化,取出记录的密码
  20.         
  21.         send_bytes(Card_SN_BUF,4);
  22.         EA = 1;                  //开总中断
  23. }

  24. void main(void)          //主函数
  25. {        
  26.         INT8U key;

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

  33.         while(1)
  34.         {
  35.            key=key_scan(); //按键操作
  36.            if(key==12)  if(states>0) states--;
  37.                         else states=0;        //上一功能
  38.            
  39.            if(key==13) if(++states>3) states=3;        //下一功能
  40.            ctrl_process(); //进入RC522操作
  41. ……………………

  42. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

代码+原理图+文档:
RFID门禁.7z (11.79 MB, 下载次数: 3160)

作者: lucheng77    时间: 2018-4-30 21:41
不错不错,资料全,写的也详细,方案也很有实用性。

作者: 13118302007    时间: 2018-5-12 10:51
为什么没有显示啊?
作者: 13118302007    时间: 2018-5-13 13:54
代码和原理图不匹配吧
作者: meilidianzhi    时间: 2018-5-14 21:01
谢谢楼主的分享
作者: 陌上花开lemons    时间: 2018-5-16 13:20
资料很不错
作者: czcdzscszd    时间: 2018-5-17 14:43
13118302007 发表于 2018-5-12 10:51
为什么没有显示啊?

检查下你12864的线接对了吗 P07对应DB0
作者: 13118302007    时间: 2018-5-17 18:28
czcdzscszd 发表于 2018-5-17 14:43
检查下你12864的线接对了吗 P07对应DB0

24C02定义的引脚没有看见
作者: czcdzscszd    时间: 2018-5-20 16:49
13118302007 发表于 2018-5-17 18:28
24C02定义的引脚没有看见

是的 实际程序用的是自置EEPROM 但不影响实际效果 你想用24C02就改一下呗
作者: 邸博涵    时间: 2018-5-30 15:41
好,非常好,太好了
作者: SZYASL    时间: 2018-5-31 11:20
资料很不错,不过程序还没来得及调试,先来给个好评
作者: 琼楼玉宇2018    时间: 2018-5-31 18:04
好东西,感谢分享
作者: phl123456    时间: 2018-6-1 19:00
我的下好程序,蜂鸣器一直响。屏幕没显示,这是怎么回事
作者: panshuo980311    时间: 2018-6-8 11:40
不错不错,资料全,写的也详细,方案也很有实用性
作者: 纵夕入林定心    时间: 2018-6-13 20:11
66666666666666
作者: psusxj    时间: 2018-6-16 14:14
资料完备!值得学习
作者: 罗村    时间: 2018-6-22 11:27
能发一下邮箱吗
作者: 夜魔流火    时间: 2018-6-22 23:52
为什么两个RC522?
作者: 97423842    时间: 2018-6-28 10:03
很实用的好程序,感谢大佬分享
作者: 弹丸大哥    时间: 2018-8-7 16:11
感谢~~好教程
作者: tianyazcc    时间: 2018-8-11 13:45
感谢楼主的分享,正好需要这方面的东西
作者: ronglle    时间: 2018-8-26 00:09
不错,很详细的。
作者: sykim    时间: 2018-8-29 06:55
很实用的资源
作者: sykim    时间: 2018-8-29 06:56
我也要做一个。
作者: 笑者    时间: 2018-9-24 20:41

好东西,感谢分享
作者: s95134    时间: 2018-9-24 23:14
可以不错
作者: lcl1260519806    时间: 2018-10-2 09:46
不错不错非常好,谢谢lz
作者: q1106499240    时间: 2018-10-8 17:43
谢谢大佬
作者: 电子丶小白    时间: 2018-10-11 10:41
大佬,电容是几v呢,rc522图片上不是一个嘛,器件清单上,咋有两个
作者: kuilian    时间: 2018-10-18 00:36
谢谢分享!!
作者: tyarist    时间: 2018-10-23 10:19
不错不错,资料全,写的也详细,方案也很有实用性
作者: duop    时间: 2018-10-29 16:49
还是很不错的
作者: wanglinrong    时间: 2018-10-30 19:36
这个可以好好学学,值得跟着做下
作者: mone哥    时间: 2018-11-7 20:17
好东西不错
作者: 392.    时间: 2018-11-8 01:05
分享得很详细,但是我黑币不够下载啊
作者: 铃恋仙    时间: 2018-11-8 16:38
恩,值得学习学习
作者: 712356385    时间: 2018-11-13 15:55
不错,资料全,写的也详细,
作者: Erhey    时间: 2018-11-14 08:55
这个用的是什么板子?
作者: sf7    时间: 2018-11-19 16:12
请问里面的那些.h的文件呢,头文件呢,咋都是.C文件
作者: 老赵    时间: 2018-11-21 10:12
很好的资料!
作者: 小喽喽i    时间: 2018-11-21 10:50
正好学了RFID
作者: 梦想LZP    时间: 2018-11-23 10:01
楼主有么又基于STM32的IC门禁卡系统设计的资料。
作者: 凤的情绪    时间: 2018-11-30 23:05
图中的三个文件哪个是需要导入51芯片的?我以前都是只导入一个源程序,没这么多的小分类。能麻烦楼主小姐姐解释下吗?
--------------追加----
直接用Keil5打开prj目录里面的IC_RC522.uvproj 即可,不需要导入

CW2[T(Y$FGR}3L28IV]}C2U.png (104.15 KB, 下载次数: 1047)

CW2[T(Y$FGR}3L28IV]}C2U.png

作者: rainbowyu    时间: 2018-12-5 11:21
你好,请问一下能存几张IC卡,还有我读程序的时候好像是存ID卡时,那个EEPROOM的地址不会改变,是每次都覆盖掉之前的吗

作者: sjh1025    时间: 2018-12-12 16:05
先下载下来学习学习。谢谢了
作者: lzhl    时间: 2018-12-12 18:46
谢谢楼主分享
作者: fengzhuang    时间: 2018-12-15 19:19
感谢分享,学习。
作者: xiaoleS    时间: 2018-12-17 18:02
资料不错,赞一个!
作者: liu583501928    时间: 2018-12-18 00:14
phl123456 发表于 2018-6-1 19:00
我的下好程序,蜂鸣器一直响。屏幕没显示,这是怎么回事

同样的问题
作者: 何某人    时间: 2018-12-18 14:38
谢谢楼主分享
作者: a233211834    时间: 2018-12-18 15:41
谢谢,很好
作者: ddss    时间: 2018-12-20 16:43
非常好,先下载看一下源程序
作者: woojoon1981    时间: 2018-12-20 19:54
正是我所需要的,,谢谢。。
作者: 凤的情绪    时间: 2018-12-22 21:14
liu583501928 发表于 2018-12-18 00:14
同样的问题

也是同样的问题   
你解决了吗?
作者: 孤独一生背锅狗    时间: 2018-12-23 16:53
我用带字库的12864 没显示啊
作者: weiluo66    时间: 2018-12-24 17:49
下载看看   
作者: Linux—    时间: 2018-12-24 20:25
rainbowyu 发表于 2018-12-5 11:21
你好,请问一下能存几张IC卡,还有我读程序的时候好像是存ID卡时,那个EEPROOM的地址不会改变,是每次都覆 ...

同问能存几张卡,是不是存8张卡就要定义8个卡号缓存?
作者: 吕马璐    时间: 2018-12-25 10:07
资料非常详细,想要学习下

作者: 吕马璐    时间: 2018-12-25 10:15
这个密码锁可以加音乐么
作者: tangsir    时间: 2018-12-25 22:27
学习了
作者: 1376837    时间: 2018-12-26 17:27
拿走了,多谢!!!
作者: bg3irm    时间: 2018-12-28 22:02
留下脚步顶贴是美德

作者: 赵玉俊    时间: 2018-12-29 11:16
没有仿真图
作者: 33329    时间: 2018-12-29 14:17
感谢楼主分享。
作者: cm7626    时间: 2018-12-29 17:15
非常好!
作者: beardyan    时间: 2018-12-31 21:02
浏览了好多有关智能开锁文章,就属这篇文章内容详尽,图文并茂,赞
作者: 凤的情绪    时间: 2019-1-1 21:22
phl123456 发表于 2018-6-1 19:00
我的下好程序,蜂鸣器一直响。屏幕没显示,这是怎么回事

只用楼主的程序,你的可以用了吗?

作者: 赵玉俊    时间: 2019-1-2 16:43
13118302007 发表于 2018-5-13 13:54
代码和原理图不匹配吧

是的,部匹配。
作者: lihaijun2014    时间: 2019-1-3 21:56
试一试
作者: 梦想LZP    时间: 2019-1-4 13:54
凤的情绪 发表于 2018-12-22 21:14
也是同样的问题   
你解决了吗?

你们解决了吗 ?我也遇到了同样的问题

作者: w7016203w    时间: 2019-1-9 16:30
请问可以出仿真图吗,protues的

作者: cheshin    时间: 2019-2-17 22:20
小姐姐!!我用51最小系统板做这个应该就不用在接电容电阻那些了把
作者: 270497470    时间: 2019-3-18 12:34
谢谢分享!!
作者: zdengxin    时间: 2019-3-19 09:02
很好的教程
作者: lgqcxj    时间: 2019-3-23 20:02
感谢楼主
作者: RANGER75    时间: 2019-3-24 22:15
rainbowyu 发表于 2018-12-5 11:21
你好,请问一下能存几张IC卡,还有我读程序的时候好像是存ID卡时,那个EEPROOM的地址不会改变,是每次都覆 ...

为什么我的就是蜂鸣器一直响   屏幕没显示  我就是直接用上面的PCB做出来直接用的他的程序
作者: sty376366866    时间: 2019-3-25 10:02
谢谢分享!
作者: Ccccs    时间: 2019-3-27 15:35
很给力!!!
作者: 杨大飞    时间: 2019-4-8 13:24
很好的资料
作者: Bubble88    时间: 2019-4-9 22:04
太无敌了,谢谢楼主
作者: wuyukai    时间: 2019-4-9 22:39
可以哦!!!!
作者: 123321gjx    时间: 2019-4-10 18:19
phl123456 发表于 2018-6-1 19:00
我的下好程序,蜂鸣器一直响。屏幕没显示,这是怎么回事

我的也有问题,引脚和程序不匹配
作者: Bubble88    时间: 2019-4-12 22:32
原理图库能私发一下么?我看这里面好像没有。
邮箱:934518302@qq.com
作者: Bubble88    时间: 2019-4-13 10:15
123321gjx 发表于 2019-4-10 18:19
我的也有问题,引脚和程序不匹配

你们有这个的PCB库压缩包里有吗?
作者: jijikebian    时间: 2019-4-15 11:20
下载你的资料 编译就都是错误
作者: chenweiming666    时间: 2019-4-22 09:21
不是免费的吗
作者: 51小黑白    时间: 2019-4-22 15:39
这个资料真的很给力
作者: 大道必成    时间: 2019-4-22 19:50
好资料,值得学习


作者: E1549296087    时间: 2019-4-26 16:51
源程序不对啊,有没有大佬解释一下啊

作者: E1549296087    时间: 2019-4-26 16:52
凤的情绪 发表于 2018-11-30 23:05
图中的三个文件哪个是需要导入51芯片的?我以前都是只导入一个源程序,没这么多的小分类。能麻烦楼主小姐姐 ...

你那个问题解决了吗?到底是哪个文件?

作者: HELLOYOU    时间: 2019-4-30 11:55
可以,学习了。。。
作者: 953234525    时间: 2019-4-30 14:08
很给力!!!
作者: mdzz971222    时间: 2019-5-4 10:41
emmm,感觉看着好厉害啊
作者: zheng0401    时间: 2019-5-7 12:59
6666,效果很满意
作者: 1339613840    时间: 2019-5-9 20:04
num=16;//16表示没按键输入         P1=0xfe; //扫描第一行         temp=P1;         temp&=0xf0;         if(temp!=0xf0)        //检测有按键按下         {                 Delay_ms(5);                 temp=P1;                 temp&=0xf0;                 if(temp!=0xf0)                 {                         temp=P1;                         switch(temp)          //判断按下是哪一个按键                         {                                 case 0xee:num=1;                                         break;                                 case 0xde:num=2;                                         break;                                 case 0xbe:num=3;                                         break;                                 case 0x7e:num=12;                                         break;                         }                         while(temp!=0xf0)                         {                                 temp=P1;                                 temp&=0xf0;                                 }                 }         }
作者: 1339613840    时间: 2019-5-9 20:07
0xfe什么意思?
oxee又是什么?里面的十六进制都不知道代表什么?
还有后面的那些数字代表什么,1 ,2,3? 12?



num=16;//16表示没按键输入
        P1=0xfe; //扫描第一行
        temp=P1;
        temp&=0xf0;
        if(temp!=0xf0)        //检测有按键按下
        {
                Delay_ms(5);
                temp=P1;
                temp&=0xf0;
                if(temp!=0xf0)
                {
                        temp=P1;
                        switch(temp)          //判断按下是哪一个按键
                        {
                                case 0xee:num=1;
                                        break;
                                case 0xde:num=2;
                                        break;
                                case 0xbe:num=3;
                                        break;
                                case 0x7e:num=12;
                                        break;
                        }
                        while(temp!=0xf0)
                        {
                                temp=P1;
                                temp&=0xf0;       
                        }
                }
        }

作者: 458135523    时间: 2019-5-14 16:04
资料很全学习了
作者: kill_ha_ha    时间: 2019-5-14 21:13
谢谢楼主的慷慨!
作者: 枫火    时间: 2019-5-16 11:52
有没有单片机仿真图啊
大佬们
作者: Lu娜    时间: 2019-5-22 18:41
原理图打不开咋回事?





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1