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

2.硬件设计
本次设计的硬件电路是由STC89C52 单片机为控制核心,射频卡信息由MFRC522模块读出,通过MCU在LCD12864上显示,通过按键完成密码验证和修改密码的功能,并根据输入密码的对错,执行相应继电器的动作和蜂鸣器的状态,整个门禁系统框图如图3-1所示。

(1) RFID射频模块电路
a.射频识别识别系统原理
典型RFID系统由应答器(Tag)、读写器(Read and Write Device)以及计算机系统等组成。

  1. 读写器由无线收发模块、天线、控制模块及接口电路等组成
  2. 应答器也称电子标签,它具有可存储读写信息及对信息进行加密的能力,是射频识别系统主要的核心
  3. 计算机系统是以单片机或微处理器为数据处理核心,主要是对读取到电子标签进行相关的信息管理。

在阅读器的感应范围之外,电子标签无源无法工作,只有在阅读器感应范围之内,电子标签才是有源的。应答器工作所需的能量,是通过读写器的耦合单元传输给应答器的。应答器如果是无源系统,即应答器内不含电池,则应答器工作的能量是由读写器发出的射频脉冲提供[8]。应答器如果是有源系统,即应答器内含有电池,则应答器工作能量和工作寿命有电池决定。RFID射频系统结构图如图:

实用RFID系统为无源系统,即射频卡能量由读写器发出的射频脉冲信号提供。无源系统的通信优劣取决于读写器发出的脉冲信号能否被射频卡完整接受。当射频卡进入读卡器接受范围后,如果接收到读卡器发出的射频信号,就能凭借产生的感应电流所获得的能量发送出存储在卡片中的信息,通过读卡器的处理,将信息送至信息管理系统进行有关数据处理。

b.MFRC522射频模块
MFRC522是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员,是NXP公司推出的一款非接触式读写卡芯片。MFRC522利用了先进的调制和解调的技术,完全集成了在13.56MHz下所有类型的通信协议,支持多种工作在13.56MHz下的射频卡读写操作 。其内部发送器部分可驱动读写器天线与射频卡和应答机的通信,无需其它的电路。模块的控制接口采用了标准SPI通讯接口,由于MFRC522射频模块采用3.3V供电电源,所以需利用LDO稳压电路将5V转换为3.3V,模块电路连接图如图:

(2)LCD12864显示屏电路
LCD12864显示屏电路主要采用了数据并行的控制方式(PSB接地为串行模式,PSB接电源为并行模式),同时使用了可调电位器实现显示屏背光的调节,电路如图:

(3)EEPROM存储电路
为了实现用户密码和RFID卡信息的存储,本设计采用EEPROM存储芯片AT24C02,其内部集成了256个8位字节共2K bit的储存空间,并采用了IIC总线接口进行操作,具有一个专门的写保护功能。电路如图:

由于其他电路相对简单,在此不做介绍了。

(4)总体硬件电路图

3.软件设计
本设计的软件主要采用状态机的原理对整体功能实现进行编程,主要实现四个操作:

  1. 按键输入功能获取
  2. 显示屏操作刷新及切换
  3. RFID标签信息获取及处理
  4. 用户密码输入及对比

(1)主函数

void main(void)    //主函数
{   INT8U key;Delay_ms(50); //让硬件稳定init_all();     //执行初始化函数relay_OFF();   //关继电器LED_BLINK_1(); //led testbeep1();     //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操作}
}

(2)状态机处理程序

void ctrl_process( void )
{         INT8U i,key_count,key_value=16,table[8]="--------",statesbuf; if(states!=statesbuf)  //状态改变,清屏{display_clear_line(2);display_clear_line(3);statesbuf=states;}switch(states){case 0:            //IC卡读卡输入display(1,0,1); if(IC_READ()) {if ((Card_SN[0]==Card_SN_BUF[0])&&(Card_SN[1]==Card_SN_BUF[1])&&(Card_SN[2]==Card_SN_BUF[2])&&(Card_SN[3]==Card_SN_BUF[3])){relay_ON();//灯开关display(2,0,5);}else   display(2,0,6);relay_OFF();}break;case 1:      display(1,0,2);    //密码输入display2(3,0,table,8);key_count=0;while(1){  key_value=key_scan();     if(key_value==12) { states--;return;}if(key_value==13){states++;return;}                 if(key_value>=0 && key_value <=9)//有按键输入{                                              table[key_count++]=key_value+'0';display2(3,0,table,8);           }if(key_value==11)//退格{                                   table[--key_count]='-';display2(3,0,table,8);                }if(key_count==8){if( table[0]==KEY_BUF[0] &&table[1]==KEY_BUF[1] &&table[2]==KEY_BUF[2] &&table[3]==KEY_BUF[3] &&table[4]==KEY_BUF[4] &&table[5]==KEY_BUF[5] &&table[6]==KEY_BUF[6] &&table[7]==KEY_BUF[7] )   //密吗正确 { bPass=1;relay_ON();//灯开关display(2,0,5);relay_OFF();break;                 }else      //密码错误{    relay_OFF();beep1()  ;bWarn=1;display(2,0,6);break;}                   }}break ;case 2:        display(1,0,3);      //IC卡登记if(IC_READ())  {for(i=0;i<4;i++)Card_SN_BUF[i] = Card_SN[i];EEPROM_WRITE(0,Card_SN,4);//写入EEPROM}break ;case 3:      display(1,0,4);      //密码设置display2(3,0,table,8);key_count=0;while(1){  key_value=key_scan();   if(key_value==12) { states--;return;}if(key_value>=0 && key_value <=9)//有按键输入{                                              table[key_count++]=key_value+'0';display2(3,0,table,8);           }if(key_value==11)//退格{                                   table[--key_count]='-';display2(3,0,table,8);                }if(key_count==8 && key_value == 15) //按下确定键{ for(i=0;i<8;i++)KEY_BUF[i]=table[i];   EEPROM_WRITE(7,KEY_BUF,8);//写入EEPROMbreak;}}             break ;default : break;}           if( bPass )      //处理成功{bPass = 0;pass();  }if( bWarn )         //处理失败{bWarn = 0;warn();}}

源码+AD原理图 下载:关注公众号,首页回复“智能门禁系统”获取资料

基于51单片机的RFID智能门禁系统相关推荐

  1. 基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)

    目录 门禁系统 需要的器件 设计思路 流程图实现 技术实现 实物接线图 实物接线图 函数设计 部分主程序代码,截取片段 12864显示模块 步进电机模块以及蜂鸣器 FRID射频模块 AT24C02模块 ...

  2. B47 - 基于51单片机的RFID停车计费系统

    任务摘要 当今社会,交通压力不断增加,智能停车场管理系统是人们对便捷高效交通的一种追求.本智能停车场管理系统运用RFID技术,采用STC8H8K64U单片机.RC522.串口屏.光电传感器实现系统设计 ...

  3. 基于51单片机射频RFID卡考勤上课上班统计设计

    具体实现功能 系统由STC89C52单片机电路+RFID模块电路+1602液晶显示电路+电源电路组成. 具体功能: (1)系统有3张卡,分别代表依次是张三.李四.王二: (2)任何一个人刷卡成功能,1 ...

  4. 基于51单片机的RFID RC522智能钱包

    RFID RC522智能钱包 基于51单片机的RFID RC522智能钱包,这个程序主要演示的是RFID RC522智能钱包中的设置及扣款功能,相信会扣款那么充值也就改一个数字的事,具体的功能要自己根 ...

  5. 基于51单片机的温室大棚环境检测系统

    ** 基于51单片机的温室大棚环境监测系统 空气温湿度监测,土壤温湿度监测,光照监测,无线传输数据 ** 文末尾附带源码 1.1 研究背景 随着人们生活水平的不断提高,人们对自身的健康越来越关注,对各 ...

  6. 基于51单片机的热水卡系统

    基于51单片机的热水卡系统 说明 功能描述 主要材料 原理图和实物图 部分代码 补充说明 说明 首先很感谢您对这篇文章的阅读,这是我第一次写博文,写得不好的地方请谅解.文章中如果有侵权的请联系我,我会 ...

  7. 基于51单片机简单病床呼叫系统

    基于51单片机简单病床呼叫系统 基于51单片机设计 主要硬件:AT89C52 扬声器.按键 采用16个按键控制16个床位系统设计 实现代码 #include<reg51.h> #defin ...

  8. 0800基于51单片机的甲烷监测系统proteus仿真

    [前言] hello 大家好,今天给大家讲一讲基于51单片机的甲烷监测系统.该项目的功能如下:1.LCD1602液晶实时显示当前温度和甲烷浓度2.超过甲烷浓度阈值,蜂鸣器报警3.按键可更改甲烷浓度阈值 ...

  9. 基于51单片机太阳能光伏充电宝系统 +防过充 基于单片机太阳能充电系统

    基于51单片机太阳能光伏充电宝系统 +防过充 基于单片机太阳能充电系统:由单片机最小系统+太阳能板+ADC0832转换模块+太阳能充电电池+升压模块+充电模块+继电器模块+液晶显示模块+USB供电组成 ...

最新文章

  1. Remove Trovi Search from Apple Mac OS X
  2. zookeeper集群部署(分布式)
  3. 转:Firebird 数据访问组件 (Delphi)
  4. scrapy如何指定生成python3的项目_如何把阿里图标库的图标生成代码并应用于自己的项目...
  5. 密钥分离,.Net程序猿不再背锅
  6. hdu 1536(博弈)
  7. tp5.0计划任务删除日志方法
  8. jpa 托管,Apache Aries托管JPA支持哪些JPA提供程序?
  9. 过滤字符串 和 select选择后控件值变更
  10. DOM中 property 和 attribute 详解
  11. java单例模式——双重检查
  12. 微信公众号测试号申请及访问(图详解)
  13. 考研单词记录 4.11day4
  14. 前端预览 PDF 文件几种方式汇总(使用PDFJS)
  15. 大聪明教你学Java | 深入浅出聊乐观锁与悲观锁(synchronized 悲观锁)
  16. Spring使用与两大核心(Bean,AOP)
  17. 年底了,怎么和领导提加薪?
  18. 如何提取幻灯片表格_如何将Google文档,表格或幻灯片文件共享为网页
  19. opencv设置摄像头分辨率不生效
  20. buildroot配置实例

热门文章

  1. java官网教程(基础篇)—— 基础的Java类 —— 基础 I / O
  2. MATH-现代=矩阵
  3. Java数据爬取——爬取携程酒店数据(二)
  4. 2.0 你的第一个CODESYS程序
  5. 薄收缩小外形封装(TSSOP)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 信息安全保证人员CISAW-安全集成
  7. 简单的canvas动画原理
  8. 这位新同事又矮又重,凭啥是阿里P8?
  9. 最简单DIY基于51单片机、PCA9685、IIC、云台的舵机集群控制程序
  10. 河北大学计算机专业调剂,河北大学考研接收调剂信息