找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4716|回复: 9
收起左侧

51单片机实战-rfid门禁-自己写代码实现

  [复制链接]
ID:730135 发表于 2021-8-16 09:15 | 显示全部楼层 |阅读模式
前段时间,家里正好需要换个rfid+密码的门禁。
淘了一个
90437.png

在搜索的过程中发现是51单片机(STC8f2k64s2)实现的,回来就倒腾倒腾了一下。

1353.png

1328.png

现在已经实现了基本功能:
1.密码开锁
2.刷卡开锁
3.增加管理密码
4.增加开锁密码
5.增加开锁ic卡

其他可能也实现了一些,但是还没有来得及测试,后续还会继续完善。先分享给大家玩玩。有兴趣的可以一起来讨论哈。

单片机源程序如下:

  1. #include <includes.H>

  2. /*
  3.         1.完成基本功能,刷卡,密码
  4.         2.esp8266 连接(串口透传),能用电脑增加,删除ic
  5.         3.esp8266远程升级?? 可能实现不了。
  6.         4.最好能有个显示屏,显示状态。
  7.         5.增加临时密码的功能,有效时间10分钟



  8.         单片机64k
  9.         30k 分给 程序
  10.         34k 分给eeprom   0-511 第一个扇区 存储
  11.                                         系统密码(6个字节) 和 通用PIN(6个字节) 和管理员卡号(4个字节) 以及 用户总数(2个字节)
  12.                                          
  13.                                          第二扇区 512字节,每个用户需要10个字节,大约存放51个用户

  14. */
  15. unsigned char idle_times = 0;   //空闲计时,没有刷卡,没有按键时开始计时。

  16. void GPIO_CONFIG_INIT(void);




  17. /////////////////////////////////////////////////////////////////////
  18. //系统初始化
  19. /////////////////////////////////////////////////////////////////////
  20. void InitializeSystem()
  21. {
  22.         GPIO_CONFIG_INIT();

  23. //        blockData_init();   //数据初始化
  24.         key_init();
  25.        
  26.           led_init();

  27.         init_uart();     //串口0初始化
  28.        
  29.         RFID_SPI_init();   //spi控制器-rfid
  30.        
  31.         init_timer0();    //按键扫描,led灯闪,蜂鸣器响控制,RFID扫描
  32.        
  33.         beep_init();

  34.         PN512_Init(0);
  35.        
  36.         user_init();
  37.        
  38.         lock_ctrl_init();
  39.        
  40.         printf("Init ok! 20210814\n");
  41.                     
  42. }


  43. void main()
  44. {
  45. //        INT8U i = 0;       
  46.        
  47.         InitializeSystem();
  48.        
  49.         while(1)
  50.         {
  51.                 handle_key_function();   //状态机切换
  52.                
  53.                 led_change_state();                  //根据状态改变led的闪烁情况       
  54.                                
  55.                 scan_card();

  56.         //        printf("xxxx----");
  57.         }       
  58. }



  59. void GPIO_CONFIG_INIT(void)
  60. {
  61.     P0M0 = 0x00;
  62.     P0M1 = 0x00;
  63.     P1M0 = 0x00;
  64.     P1M1 = 0x00;
  65.     P2M0 = 0x00;
  66.     P2M1 = 0x00;
  67.     P3M0 = 0x00;
  68.     P3M1 = 0x00;
  69.     P4M0 = 0x00;
  70.     P4M1 = 0x00;
  71.     P5M0 = 0x00;
  72.     P5M1 = 0x00;
  73.     P6M0 = 0x00;
  74.     P6M1 = 0x00;
  75.     P7M0 = 0x00;
  76.     P7M1 = 0x00;       
  77. }
复制代码

讲解视频分享在b站了,基本功能的实现都稍微讲了一下。
使用状态机,定时器扫描等实现的。
https://www.bilibili.com/video/BV1Aw411d76F/
51hei.png
全部代码51hei附件下载:
stc8f2k64s2-door-lock(2021-08-14).7z (108.15 KB, 下载次数: 136)

评分

参与人数 1黑币 +90 收起 理由
admin + 90 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:309049 发表于 2021-8-21 10:08 | 显示全部楼层
代码写的非常好,下载到我的开发板效果很好
回复

使用道具 举报

ID:23303 发表于 2021-8-25 10:22 | 显示全部楼层
谢谢楼主分享!下载学习一下
回复

使用道具 举报

ID:870662 发表于 2021-8-26 14:30 | 显示全部楼层
89C52RC可以用么
回复

使用道具 举报

ID:637643 发表于 2022-1-24 17:03 | 显示全部楼层
dao767 发表于 2021-8-21 10:08
代码写的非常好,下载到我的开发板效果很好

是指南者的板子吗
回复

使用道具 举报

ID:1035024 发表于 2022-7-23 22:56 | 显示全部楼层
写的实在是太好了
回复

使用道具 举报

ID:1042173 发表于 2022-8-18 13:09 | 显示全部楼层
非常不错的,值得我们学习,
回复

使用道具 举报

ID:87631 发表于 2022-8-29 09:20 | 显示全部楼层
教程级视频
回复

使用道具 举报

ID:987219 发表于 2022-8-31 10:04 | 显示全部楼层
标记一下,以后有时间自己制作
回复

使用道具 举报

ID:507641 发表于 2022-9-17 16:50 | 显示全部楼层
按键是触摸带灯的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表