当前位置:   article > 正文

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

基于51单片机的智能门禁系统设计

目录

门禁系统

需要的器件

设计思路

流程图实现

技术实现

实物接线图

实物接线图

 函数设计

部分主程序代码,截取片段

12864显示模块

步进电机模块以及蜂鸣器

FRID射频模块

AT24C02模块

功能实现及其源代码

完整文件


门禁系统

需要的器件

        STC89C52,MFRC-522 RFID射频模块,AT24C02存储电路,5v步进电机,5v转3.3v稳压模块,(1602)12864显示模块, usb接口的5V电源。

设计思路

        采用STC89C52作为主控芯片,MFRC-522模块(5V转3.3模块用于此)用来读射频卡的信息,当有卡进入到读卡器读卡的范围内时就会读取到相应的卡序列号,并根据得到的卡序列号做出相应的操作,或者通过输入密码来进行开门,若正确则开门,若3次不正确则蜂鸣器报警并显示错误信息。通过AT24C02存储密码,掉电后依然可以存储密码,保证系统安全性。如果输入密码正确,通过驱动步进电机来模拟开门。

流程图实现

        

技术实现

仿真接线与器件

        需要请私信或者Q1-9-9-0-5-7-1-0-9-6,数字电路与逻辑及设计课设大作业完整文件。

实物接线图

 函数设计

  1. 电机,存储器,射频模块,显示屏,蜂鸣器通过模块化编程
  2. 函数封装,预留不同的接口及功能
  3. 通过按键扫描key值来实现属于与功能选择
  4. 主要通过switch语句实现功能选择
  5. 标志变量判定当前状态与决定显示屏显示菜单

部分主程序代码,截取片段

  1. while(1)
  2. {
  3. PcdReset();//扫描完矩阵键盘后复位RC522
  4. detectCard();//探测NFC卡
  5. key = keyScan();
  6. if(key != 16)
  7. {
  8. if(keyboardMode == 0 || keyboardMode == 2 || keyboardMode == 3)//输入开门密码 输入新键盘密码 输入管理员密码
  9. {
  10. if(key >=0 && key <= 9)
  11. {
  12. //输入密码【0~9】,显示在第二行
  13. if(password <= (999999 - key) / 10)//最大可设置为9位密码,这里设置为6位密码, 请勿改动
  14. {
  15. password = password * 10 + key;
  16. if(password != 0)
  17. {
  18. lcdWriteDate(key + '0');
  19. }
  20. }
  21. }
  22. else
  23. {
  24. //【重输】【主页】【返回】【确定】
  25. switch(key)
  26. {
  27. //case 10:
  28. //打印数据
  29. //showAt24c02All();
  30. //break;
  31. case 12:
  32. //重输
  33. password = 0;
  34. lcdCleanLine(3);
  35. gotoRowCol(3, 1);
  36. break;
  37. case 13:
  38. //返回主页
  39. keyboardMode = 0;
  40. detectMode = 0;
  41. lcdShow_Welcome();
  42. gotoRowCol(3, 1);
  43. break;
  44. case 14:
  45. //显示菜单
  46. password = 0;
  47. detectMode = 0;
  48. keyboardMode = 1;
  49. lcdShowMenu_Main();
  50. break;
  51. case 15:
  52. //确定
  53. if(keyboardMode == 0)
  54. {
  55. readPassword();
  56. if(password / 100000 == passwordInMemory[0] &&
  57. password % 100000 / 10000 == passwordInMemory[1] &&
  58. password % 10000 / 1000 == passwordInMemory[2] &&
  59. password % 1000 / 100 == passwordInMemory[3] &&
  60. password % 100 / 10 == passwordInMemory[4] &&
  61. password % 10 == passwordInMemory[5])
  62. {
  63. //开门密码正确
  64. beep(1);//蜂鸣器响一下
  65. lcdCleanLine(3);
  66. gotoRowCol(3, 1);
  67. password = 0;
  68. passwordWrongCount = 0;//错误次数清零
  69. openDoor();//电机开门3s后恢复
  70. }
  71. else if(password / 100000 == adminPasswordInMemory[0] &&
  72. password % 100000 / 10000 == adminPasswordInMemory[1] &&
  73. password % 10000 / 1000 == adminPasswordInMemory[2] &&
  74. password % 1000 / 100 == adminPasswordInMemory[3] &&
  75. password % 100 / 10 == adminPasswordInMemory[4] &&
  76. password % 10 == adminPasswordInMemory[5])
  77. {
  78. //管理员密码正确
  79. keyboardMode = 1;
  80. password = 0;
  81. lcdShowMenu_Main();
  82. }

12864显示模块

步进电机模块以及蜂鸣器

FRID射频模块

AT24C02模块

功能实现及其源代码

完整文件

 

有需要的可以联系,以前的课程作业,现在不会了,请先看清楚,20!!

 需要的东西

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/772110
推荐阅读
相关标签
  

闽ICP备14008679号