自动化毕设 基于stm32的RFID与指纹识别的门禁系统 (项目开源) | 您所在的位置:网站首页 › rfid门禁改密码 › 自动化毕设 基于stm32的RFID与指纹识别的门禁系统 (项目开源) |
文章目录
1 简介2 绪论2.1 课题背景与目的
3 射频识别3.1 射频识别技术3.2 射频识别模块3.2.1 RFID模块3.2.2 RFID模块组成
4 系统设计4.1 系统架构4.1.1 硬件部分4.1.2 软件部分
4.2 软件总体流程图4.3 密码子程序4.4 数据采集子程序4.5 显示子程序4.6 存储子程序
5 指纹识别部分5.1 指纹识别模块的程序设计5.2 指纹录入5.3 指纹识别代码流程
5.4 显示屏程序设计5.5 整体业务逻辑代码流程
6 最后
1 简介
Hi,大家好,这里是丹成学长,今天向大家介绍一个 如何使用RFID技术构建一个单片机门禁系统 基于stm32的RFID与指纹识别的门禁系统 (项目开源) 大家可用于 课程设计 或 毕业设计 🧿 项目分享:见文末! 实现效果 门禁安全管理系统是新型现代化安全管理系统, 它集自动识别技术和现代安全管理措施为一体。 门禁系统可有效管理门的开启关闭, 对出入人员进行监控管理。 基于RFID的门禁系统通过对射频IC卡的识别, 保证那些持有相应证件的人员能自由进出, 阻止外来人员或无法提供证件的人员进入。 还有些门禁是利用生物识别的技术, 通过对人体某些部位(如眼睛、 指纹) 的识别来确认来人是否经过授权。 这种门禁系统相对射频识别的系统安全系数有很大提高, 但其成本较高, 在日 常生活中还未广泛应用。 3 射频识别 3.1 射频识别技术射频识别(Radio Frequency Identification, RFID) 技术是从八十年代逐渐走向成熟的一种自 动识别技术, 它 是一项利用 射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过所传递的信息达到识别目 的的技术。 根据射频卡读写方式的不同可分成可读写(RW) 卡、 一次写入多次读出(WORM) 卡和只读(RO) 卡。 RW 卡成本较 WORM 卡和 RO 卡相比要高, 而且写入数据所花费的时间要远大于读取数据所花费的时间。 用户可以一次性将信息写入 WORM 卡, 写入后数据不能改变。 RO 卡存有一个唯一的号码。 只可读取, 不能修改, 虽然安全性较高, 但用途有限。 射频识别「Radio Frequency IDentification,简称RFID」技术,又称为无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触,普遍应用于企业/校园一卡通、公交储值卡、高速公路收费、停车场、小区管理等。 RFID 技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。 3.2.2 RFID模块组成 标签(Tag,即射频卡),耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。阅读器:读取(在读写卡中还可以写入)标签信息的设备。天线:在标签和读取器间传递射频信号。这里使用的RFID-RC522模块采用MFRC522芯片,SPI通讯方式,支持Mifarel S50、S70 、Pro、Desfire等类型的卡,附带的白卡和钥匙扣是S50卡,每张卡都有自己的标识(UID)。 本系统的主要电路包括: 读卡器数据采集电路、 串行 E 2 PROM 存储电路、 LCD1602 显示电路、 串口通讯电路、 报警电路、 门控电路、 键盘电路。 器件列表 主控芯片: AT89C52。 读卡器: YHY502ATG。 E 2 PROM: AT24C04。 LCD 液晶: ZL1602C2。 串口通讯芯片: MAX232。 报警器: 1 个蜂鸣器加一个 LED 红灯。 门控器件: 一个 LED 绿灯。 4.1 系统架构 4.1.1 硬件部分LCD1602 显示电路设计 串口通讯电路设计 报警电路设计 在本系统中, 软件的设计主要包括: 数据采集模块、 存储模块、 显示模块、 门控模块、 报警模块、 键盘模块和上位机软件的设计几个方面。 本系统的软件结构框图如图 4-1 所示。 数据采集模块: 读卡器 YHY502ATG 通过天线读取 RFID 卡的数据,然后将数据传送出去。 存储模块: AT89C52 接收到数据后, 将数据传送给 AT24C04 进行存储。 显示模块: AT89C52 接收到数据后, 将数据与 AT24C04 里存储的数据进行对比, 若两者完全相同, 则液晶显示正确的信息; 若不相同, 则液晶显示错误的信息。 门控模块: AT89C52 接收到数据后, 将数据与 AT24C04 里存储的数据进行对比, 若两者完全相同, 则进行开门操作; 若不相同, 则不开门。 报警模块: AT89C52 接收到数据后, 将数据与 AT24C04 里存储的数据进行对比, 若不相同则报警。 键盘模块: 通过键盘输入密码, 并根据输入密码的有效性做相应的操作。![]() 系统的软件总体流程图如图 当程序运行时, 会一直判断是否有按键被按下, 当有按键被按下时, 系统会确定键值, 关将键值存入到密码数组里, 然后将输入的密码与本身的密码做比较, 若相同, 则执行开门和显示正确信息的操作; 若不相同, 则执行报警和显示错误信息的操作。 核心代码: P1=0x0f; if(P1!=0x0f) compare(P1); for(n=0;n WriteLcdCom(0x01); //清屏 WriteLcdCom(0x80); //第一行数据指针地址 for(s=0;suchar cmd; uchar cStatus; cmd = g_cReceBuf[1]; switch(cmd) {case 0x20: // 寻卡, 防冲突, 选择卡返回卡系列号(4 bytes) cStatus =IicSendHY502(g_cReceBuf); // 发送寻卡命令 cStatus =IicReadHY502(cp); // 读取卡号并存入到 cP if((cStatus==SUCCESS)&&(cp[1]==CARD_SN)) {memcpy(&g_cReceBuf[0],&cp[2],4); eeprom();}}//将读取到的卡序列号与 E 2 PROM 里存储的进行比较 return cStatus;} 开始 上位机发送读卡命令 Y Y N N 有感应卡 ? 验证感应卡权限 权限满足? 开门, 显示正确信息 报警, 显示错误信息 延时后, 自动关门 结束 4.5 显示子程序显示子程序的主要功能是对当前的门控状态进行显示, 显示函数首先判断是写命令操作还是写数据操作, 若是写命令操作, 则根据命令进行相应的操作, 如清屏、 设置显示模式等; 若是写数据操作, 则在显示器上显示相应数据。 核心程序 void LcdShowError() { WriteLcdCom(0x38); //显示模式设置 WriteLcdCom(0x0c); //开显示, 无光标, 光标不闪烁 WriteLcdCom(0x06); //读写字符后地址指针加一设置 WriteLcdCom(0x80); //第一行数据指针地址 for(k=0;k WriteLcdDat(str4[k]); delay(20);} WriteLcdCom(0x01); } void WriteLcdCom(unsigned char c) { LCDRW =00; LCDRS=0; //切换到写命令 P0=c; LCDE=1; LCDE=0; for(a=0;awrite_byte(0,0x1e); write_byte(1,0xda); write_byte(2,0x62); write_byte(3,0xb6); write_byte(4,0x25); write_byte(5,0xee); write_byte(6,0xde); write_byte(7,0xb6); write_byte(8,0x05); write_byte(9,0xc8); write_byte(10,0x43);write_byte(11,0xb8);write_byte(12,0x3a); write_byte(13,0x04);write_byte(14,0x5d);write_byte(15,0xb6);} bit shout(uchar write_data)// 从 MCU 移出数据到 AT24C04 {uchar i; bit ack_bit; for(i = 0; i |
CopyRight 2018-2019 实验室设备网 版权所有 |