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

2023-05-16

目录

门禁系统

需要的器件

设计思路

流程图实现

技术实现

实物接线图

实物接线图

 函数设计

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

12864显示模块

步进电机模块以及蜂鸣器

FRID射频模块

AT24C02模块

功能实现及其源代码

完整文件


门禁系统

需要的器件

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

设计思路

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

流程图实现

        

技术实现

仿真接线与器件

        需要请私信或者Q1990571096,数字电路与逻辑及设计课设大作业完整文件。

实物接线图

 函数设计

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

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

while(1)
	{
		PcdReset();//扫描完矩阵键盘后复位RC522
		detectCard();//探测NFC卡
		key = keyScan();
		if(key != 16)
		{
			if(keyboardMode == 0 || keyboardMode == 2 || keyboardMode == 3)//输入开门密码  输入新键盘密码  输入管理员密码
			{
				if(key >=0 && key <= 9)
				{
					//输入密码【0~9】,显示在第二行
					if(password <= (999999 - key) / 10)//最大可设置为9位密码,这里设置为6位密码, 请勿改动
					{
						password = password * 10 + key;
						if(password != 0)
						{
							lcdWriteDate(key + '0');
						}
					}
				}
				else
				{
					//【重输】【主页】【返回】【确定】
					switch(key)
					{
						
						//case 10:
							//打印数据
							//showAt24c02All();
							//break;

						case 12:
							//重输
							password = 0;
							lcdCleanLine(3);
							gotoRowCol(3, 1);
							break;
						case 13:
							//返回主页
							keyboardMode = 0;
							detectMode = 0;
							lcdShow_Welcome();
							gotoRowCol(3, 1);
							break;
						case 14:
							//显示菜单
							password = 0;
							detectMode = 0;
							keyboardMode = 1;
							lcdShowMenu_Main();
							break;
						case 15:
							//确定
							if(keyboardMode == 0)
							{
								readPassword();
								if(password / 100000 == passwordInMemory[0] &&
								   password % 100000 / 10000 == passwordInMemory[1] &&
								   password % 10000 / 1000 == passwordInMemory[2] &&
								   password % 1000 / 100 == passwordInMemory[3] &&
								   password % 100 / 10 == passwordInMemory[4] &&
								   password % 10 == passwordInMemory[5])
								{
									//开门密码正确
									beep(1);//蜂鸣器响一下
									lcdCleanLine(3);
									gotoRowCol(3, 1);
									password = 0;
									passwordWrongCount = 0;//错误次数清零
									openDoor();//电机开门3s后恢复
								}
								else if(password / 100000 == adminPasswordInMemory[0] &&
								   password % 100000 / 10000 == adminPasswordInMemory[1] &&
								   password % 10000 / 1000 == adminPasswordInMemory[2] &&
								   password % 1000 / 100 == adminPasswordInMemory[3] &&
								   password % 100 / 10 == adminPasswordInMemory[4] &&
								   password % 10 == adminPasswordInMemory[5])
								{
									//管理员密码正确
									keyboardMode = 1;
									password = 0;
									lcdShowMenu_Main();
								}

12864显示模块

步进电机模块以及蜂鸣器

FRID射频模块

AT24C02模块

功能实现及其源代码

完整文件

 

有需要的可以联系,不免费哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • Java实现AI机器人聊天

    文章目录 前言一 账号注册申请密钥二 参数详情三 Java集成1 调用接口2 响应数据 四 效果总结 前言 OpenAI API 几乎可以应用于任何涉及理解或生成自然语言或实现代码等场景 提供一系列具有不同学习训练的模型 xff0c 适用于
  • 使用全局阈值进行灰度图像二值化

    1 原理 选取阈值的一种方法就是图像直方图的视觉检测 选择 T 的另一个方法是反复实验 xff0c 选取不同的阈值 xff0c 直到观测者觉得产生了较好的结果为止 xff0c 这在交互环境下特别有效 例如 xff0c 这种方法允许 使用者通
  • Linux动静态库

    文章目录 Linux动静态库认识动静态库动态库静态库 静态库的打包与使用静态库的打包静态库的使用 动态库的打包与使用动态库的打包动态库的使用 Linux动静态库 认识动静态库 我们先来看一段代码 xff1a span class token
  • GPS启动方式、定位速度、定位精度介绍

    前面文章介绍了GPS定位基础知识 GPS定位知识介绍 qq com 本文主要介绍GPS启动方式 定位过程中最重要的辅助信息是时间 星历 位置 根据辅助信息不同
  • window11上Linux环境搭建

    以下的大部分图片来自网上 xff0c 本人在操作过程中忘记截图记录了 xff0c 但是发出来的这些和我做的是一模一样的 xff01 xff01 一 点击下载centOS7镜像 centos 7 9 2009 isos x86 64安装包下载
  • SQLyog连接MySQL出现错误,提示Client does not support authentication protocol requested by server的解决方法

    问题 xff1a 自己电脑安装了MySQL8 0 26版本 xff0c 但从网上找到破解版的SQLyog软件 xff0c 在装好SQLyog后连接不上 xff0c 会弹出 Client does not support authentica
  • C++的基础知识学习笔记

    C 43 43 的基础知识学习 1 3变量 作用 xff1a 给一段指定的内存空间起名 xff0c 方便操作这段内存 语法 xff1a 数据类型 变量名 61 初始值 xff1b int a 61 1 xff1b 变量存在的意义 xff1a
  • zsh 配置指南

    zsh 配置指南 前言 在Linux系统中 xff0c 我们厂用终端输入命令与系统进行交互 xff0c 大多Linux系统使用的shell为bash 但bash中的功能和色调非常简单和单调 xff0c 往往想达到一个趁手的命令行工具 xff
  • linux/swupd基础命令讲解---基础篇

    一 原生linux ubuntu unix系统安装基础命令 root 64 ubuntu clrtrust generate root 64 ubuntu s wupd bundle add network basic root 64 ub
  • Ros_Canopen:ROS与底盘的can通讯使用

    ROS CANOPEN ROS与底盘的can通讯使用 这篇文章记录了ros canopen的安装和使用过程 xff0c 系统版本为ubuntu16 04 并且已经安装了ROS xff08 kienect 安装过程可能会出现错误 xff0c
  • casbin的详细理解过程(附图片理解)(rbac模型)

    一 casbin模型 casbin模型又叫PERM模型 xff1a subject sub 访问实体 xff0c object xff08 obj访问的资源 xff09 和action xff08 act访问方法 xff09 eft xff
  • EKF(拓展卡尔曼滤波)学习笔记:

    一些参考 xff1a xff08 三十九 xff09 通俗易懂理解 卡尔曼滤波与扩展卡尔曼滤波 知乎 zhihu com 50 封私信 42 条消息 如何通俗并尽可能详细地解释卡尔曼滤波 xff1f 知乎 zhihu com 视觉slam1
  • MSCKF学习笔记

    1 IMU简介 xff1a 测量物体三轴姿态角及加速度的装置 一般IMU包括三轴陀螺仪及三轴加速度计 IMU通常包含陀螺仪 Gyroscope 加速度计 Accelermeters 现代的陀螺仪 MEMS 输出的是旋转变化率 Rotatio
  • 树莓派串口编程c语言

    一 xff1a 初次使用树莓派串口编程 xff0c 需要配置 1 进入 cmdline txt 文档 指令 xff1a cd boot sudo vim cmdline txt 2 删除 之间的部分 dwc otg lpm enable s
  • 数据结构与算法

    为什么要学习数据结构与算法 1 数据结构 43 算法 61 程序 2 代码化繁为简 3 提高代码性能 4 提高面试通过率 栈 栈的概念 栈是一种遵从后进先出原则的有序集合添加新元素的一端称为栈顶 xff0c 另一端称为栈底操作栈的元素时 x
  • python爬虫的常用库

    1 requests 这个库是爬虫最常用的一个库 2 Selenium Selenium 这是一个自动化测试工具 xff0c 利用它我们可以驱动浏览器执行特定的动作 xff0c 如点击 下拉等操作 对于一些用JS做谊染的页面来说 xff0c
  • 【Mecanum wheel】初理解

    文章目录 Mecanum wheel1 定义2 受力分析3 轮子布局布局特点分析 4 底盘设计1 麦克纳姆轮尺寸2 电机连接参考 xff08 较通用 xff09 3 底盘设计参考 xff08 悬挂 避震器 xff09 5 缺点 Refere
  • STM32cubemx教程及STM32入门(一)

    STM32cubemx教程 xff08 一 xff09 2021 10 17 简介 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具 xff0c 目的就是为了方便开发者 xff0c 允许用户使用图
  • 2020-11-05

    私有云的优缺点是什么 xff1f 与公有云的区别 毋庸置疑 xff0c 企业选择私有云的重要原因之一是数据安全性 与传统的 IT 架构相比 xff0c 云算力的高可用性 xff0c 让 IT 解决方案更经济高效地运行 优点 xff1a 可定
  • git 解决每次更新代码都要输入用户名密码的解决方案--1

    使用git pull或者git push每次都需要输入用户名和密码很繁琐 xff0c 耽误时间 xff0c 现在教大家一条命令实现保存用户名和密码不用再输入 git config global credential span class h

随机推荐

  • 浏览器相关知识总结~

    浏览器知识总结 前言一 浏览器的存储CookiesessionstorageindexedDB 二 浏览器的缓存浏览器缓存其它缓存 三 浏览器同源策略和跨域同源策略跨域 四 浏览器的渲染五 进程与线程1 进程与线程概念2 进程和线程之间的关
  • Samba服务

    目录 配置yum源安装samba服务配置samba服务Windows环境使用Samba服务Linux环境使用Samba服务 xff08 1 xff09 方法一使用smbclient命令 xff08 2 xff09 方法二使用挂载的方式 Sa
  • 基于STM32的二轮自平衡小车

    前言 近年来 xff0c 移动机器人是目前科学领域比较活跃的领域之一 xff0c 其应用范围越来越广泛 xff0c 面临的环境也越来越复杂 xff0c 这就要求机器人能够适应一些复杂的环境和任务 二轮自平衡机器人正是在这一背景下提出来的 x
  • 学习STM32单片机之结构体思想

    学习目标 xff1a 掌握 STM32 基础知识 学习STM32单片机之 结构体思想 学习内容 xff1a 1 我们在操作寄存器的时候 xff0c 操作的是寄存器的绝对地址 xff0c 如果每个寄存器都这样操作 xff0c 那将非常麻烦 2
  • Matlab中的mex文件

    文章目录 前言一 MEX的介绍二 MEX的编写总结 前言 MEX文件是一种可在matlab环境中调用的C语言 xff08 或fortran xff09 衍生程序 xff0c mex的编译结果实际上就是一个带输出函数mexFunction 的
  • 【转载】机器视觉-相机标定后,移动相机需要重新标定相机吗?

    毕业论文和机器视觉相关 xff0c 最近又在做标定的相关东西 xff0c 及在笔记本上太麻烦 xff0c 索兴就建个博客写点学习中遇到的问题 相机标定之后 xff0c 移动相机需要重新进行标定吗 xff1f xff08 我主要做的是单目视觉
  • 浅谈逻辑地址和物理地址

    在程序运行时由中央处理单元生成的内容的地址称为逻辑地址 该地址也称为虚拟地址 当我们谈论逻辑地址时 xff0c 我们指的是CPU分配给每个进程的地址 xff0c 一个进程在内存中所处的实际地址与进程认为它所处的地址是不一样的 每当 CPU
  • [CUDA] 快速入门CUDA(2) 以任务为导向的实践-解决最小二乘法问题

    快速入门CUDA 2 以任务为导向的实践 解决最小二乘法问题 文章目录 快速入门CUDA 2 以任务为导向的实践 解决最小二乘法问题1 问题介绍2 MATLAB解法实现3 CUDA解法实现3 1 总览3 2 第一步 xff0c 读取矩阵3
  • 常见的Linux版本

    常见的Linux版本 Linux 系统的吉祥物名为 Tux xff0c 是一只呆萌的小企鹅 相传 Linus Torvalds 在童年时期去澳大利亚的动物园游玩时 xff0c 不幸被一只企鹅咬伤 xff0c 所以为了 报复 就选择了这个物种
  • 【深度学习&NLP】数据预处理的详细说明(含数据清洗、分词、过滤停用词、实体识别、词性标注、向量化、划分数据集等详细的处理步骤以及一些常用的方法)

    目录 一 数据预处理简介 二 进行数据预处理的原因 1 文本中含有不必要的信息和噪声 2 数据可能不一致或者不太规范 3 文本需要标记和分词 4 可能需要词形还原和词干提取 词性标注 5 需要将文本向量化处理 三 数据预处理方法介绍及使用样
  • Linux命令速查手册--超详细Linux命令教程

    一 常用命令速查 lscdpwdcatmorelesstailheadcpscpmvmkdirrmdirtouchrmpskilltopfreecleartreewcstat 以上是常用命令速查表 xff0c 以下是命令详解 二 Linux
  • jQuery 获取与设置 元素属性【一篇文章轻松拿下】

    hello大家好呀 xff01 此篇文章带领大家熟练掌握 jQuery 的属性方面的操作 xff0c 包括固有属性的获取与设置 xff0c 自定义属性的获取与设置等等 xff0c 走进 jQuery 的更深层次阶段 文章目录 xff1a 一
  • can的总结——笑笑

    一 什么是can can就是车用主线 xff0c 贯穿整个车的存在 can的分类2 默认是高速can 低速容错can 单线can 用两种can会减少can网络语言的负载率 xff0c 就是原本一个小屋做核酸 xff0c 现在是两个速度翻倍
  • VDO虚拟数据优化

    1 xff0c VDO xff08 Virtual Data Optimize xff09 虚拟数据优化 2 xff0c 使用VDO压缩存储设备上的数据并进行重复删除 xff0c 以此来优化存储空间的使用 3 xff0c 描述虚拟数据优化器
  • 无人机组装调试步骤(保姆级别教程)

    门店 xff1a YH远航科技模型 xff08 Pixhawk飞控 xff09 新动模型 xff08 电机 xff0c 电调 xff09 相应的电机 xff0c 电调 xff0c 机臂的连接 https m tb cn h UcqJUyV
  • redis无法连接

    配置 错误信息 xff1a 2022 06 15 11 43 52 INFO com atguigu srb core RedisTemplateTests Started RedisTemplateTests in 16 781 seco
  • 关于路径规划问题的详细总结(千字长文)

    1 路径规划和轨迹优化的方法概括 1 1 1 路径规划的方法概括 1 1 2 轨迹优化的方法概括
  • Java后端开发功能模块思路

    文章目录 前言一 查找接口及参数信息1 1 找访问路径1 2 参数及返回结果信息1 3 编写功能模块函数 二 代码设计思路三 总结 前言 对于正在学习Java后端开发的同学来说 xff0c 对于Java后端功能模块的开发过程及思路要有一个整
  • 《Linux内核设计与实现》

    文章目录 前言第1章 xff1a Linux内核简介第3章 xff1a 进程管理进程进程描述符及任务结构分配进程描述符进程描述符的存放进程状态设置当前进程的状态进程上下文切换进程家族树 进程创建写时拷贝fork 线程在linux中的实现创建
  • 基于51单片机的FRID智能门禁系统(RFID,12864,AT24C02,步进电机......)

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