实训项目11基于51单片机的门禁监测系统设计

00 要求

基于51单片机和RFID模块实现门禁的设计。使之具有以下功能:

  1. 能够正常的读卡信息;
  2. 在正常刷卡通过后,可以控制电子锁动作;
  3. 在刷卡失败后,可以产生报警信号;

01 功能分析

读卡后会RFID会自动通过TXD(串口)发送一段数据,调用串口接收即可

02 效果演示

03 硬件部分

LCD硬件电路部分

RFID刷卡器部分


步进电机部分

04 软件部分(核心代码)

  完整工程代码部分,待实训结束后公开

 如果需要技术支持可以加我的QQ交流:

27969203789

RFID刷卡器部分

void shuakaji(long idcard)
{int a = 0;int j=0;if(flag == 1) //读完了数据就处理{for(a=1;a<11;a++){recv_buf_play[a]=recv_buf[a];if( recv_buf[a] >= '0' && recv_buf[a] <= '9'){recv_buf[a] = recv_buf[a] - '0';}else if(recv_buf[a] >= 'A' && recv_buf[a] <= 'F'){recv_buf[a] = recv_buf[a] - 'A' + 10;} //计算出对应的字符的整型数据id = id << 4 | recv_buf[a];}if( id == idcard ){start=1;}else {BUZZ = 0;Delay_ms(500);BUZZ = 1;for(	j=0;j<=12;j++){recv_buf_play[j]=0;}}flag = 0;//清除标志位}
}

步进电机部分

void MotorPlay()
{if(start)//电机驱动{if(speed<10+speed_set)//速度speed++;else{speed=0;if((step<step_set)){step++;if(fang)//方向{switch(cixu){case 0:L2=1;break;case 1:L1=0;break;case 2:L3=1;break;case 3:L2=0;break;case 4:L4=1;break;case 5:L3=0;break;case 6:L1=1;break;case 7:L4=0;}}else{switch(cixu){case 0:L4=1;break;case 1:L1=0;break;case 2:L3=1;break;case 3:L4=0;break;case 4:L2=1;break;case 5:L3=0;break;case 6:L1=1;break;case 7:L2=0;}}if(cixu<7)cixu++;elsecixu=0;}else{step=0;	//停止start=0;}}}
}

LCD部分

#include "lcd1602.h"/* 等待液晶准备好 */
void LcdWaitReady()
{unsigned char sta;LCD1602_DB = 0xFF;LCD1602_RS = 0;LCD1602_RW = 1;do {LCD1602_E = 1;sta = LCD1602_DB; //读取状态字LCD1602_E = 0;}while (sta & 0x80); //bit7等于1表示液晶正忙,重复检测直到其等于0为止
}
/* 向LCD1602液晶写入一字节命令,cmd-待写入命令值 */
void LcdWriteCmd(unsigned char cmd)
{LcdWaitReady();LCD1602_RS = 0;LCD1602_RW = 0;LCD1602_DB = cmd;LCD1602_E  = 1;LCD1602_E  = 0;
}
/* 向LCD1602液晶写入一字节数据,dat-待写入数据值 */
void LcdWriteDat(unsigned char dat)
{LcdWaitReady();LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DB = dat;LCD1602_E  = 1;LCD1602_E  = 0;
}
/* 设置显示RAM起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标 */
void LcdSetCursor(unsigned char x, unsigned char y)
{unsigned char addr;if (y == 0)  //由输入的屏幕坐标计算显示RAM的地址addr = 0x00 + x;  //第一行字符地址从0x00起始elseaddr = 0x40 + x;  //第二行字符地址从0x40起始LcdWriteCmd(addr | 0x80);  //设置RAM地址
}
/* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针,len-需显示的字符长度 */
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str, unsigned char len)
{LcdSetCursor(x, y);   //设置起始地址while (len--)         //连续写入len个字符数据{LcdWriteDat(*str++);}
}
/* 初始化1602液晶 */
void InitLcd1602()
{LcdWriteCmd(0x38);  //16*2显示,5*7点阵,8位数据接口LcdWriteCmd(0x0C);  //显示器开,光标关闭LcdWriteCmd(0x06);  //文字不动,地址自动+1LcdWriteCmd(0x01);  //清屏
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491556.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv——识别图片颜色并绘制轮廓

图像边缘检测 本实验要用到Canny算法&#xff0c;Canny边缘检测方法常被誉为边缘检测的最优方法。 首先&#xff0c;Canny算法的输入端应为图像的二值化结果&#xff0c;接收到二值化图像后&#xff0c;需要按照如下步骤进行&#xff1a; 高斯滤波。计算图像的梯度和方向。非极…

源码安装PHP-7.2.19

源码安装PHP-7.2.19 1.解压 tar -xjvf php-7.2.19.tar.bz2.编译 -prefix安装路径 cd php-7.2.19 ./configure --prefix/home/work/study 成功输出 3.make(构建) makemake testmake installlinux对php操作的一些命令 # 进入到php [rootvdb1 study]# cd php/ [rootvdb1 st…

数据库管理-第271期 Oracle 23ai:用MongoDB的方式来操作JSON二元性(20241214)

数据库管理271期 2024-12-14 数据库管理-第271期 Oracle 23ai&#xff1a;用MongoDB的方式来操作JSON二元性&#xff08;20241214&#xff09;1 初始化数据1.1 创建用户1.2 导入数据1.3 创建JSON关系二元性视图 2 创建ORDS服务2.1 下载JDK172.2 安装ORDS2.3 启用MongoDB API2.4…

2024 年的科技趋势

2024 年在科技领域有着诸多重大进展与突破。从人工智能、量子计算到基因组医学、可再生能源以及新兴技术重塑了众多行业。随着元宇宙等趋势的兴起以及太空探索取得的进步&#xff0c;未来在接下来的岁月里有望继续取得进展与突破。让我们来探讨一下定义 2024 年的一些关键趋势&…

WPF+MVVM案例实战与特效(三十八)- 封装一个自定义的数字滚动显示控件

文章目录 1、运行效果2、案例实现1、功能设计2、页面布局3、控件使用4、运行效果3、拓展:多数字自定义控件1、控件应用4、总结1、运行效果 在Windows Presentation Foundation (WPF)应用程序中,自定义控件允许开发者创建具有特定功能和外观的独特UI元素。本博客将介绍一个名…

ElasticSearch的自动补全功能(拼音分词器、自定义分词器、DSL实现自动补全查询、RestAPI实现自动补全查询)

文章目录 1. 什么是自动补全2. 拼音分词器2.1 初识拼音分词器2.2 下载拼音分词器2.3 安装拼音分词器2.4 测试拼音分词器 3. 自定义分词器3.1 拼音分词器存在的问题3.2 分词器&#xff08;analyzer&#xff09;的组成3.3 如何自定义分词器3.4 拼音分词器的可选参数3.5 配置自定义…

八股—Java基础(二)

目录 一. 面向对象 1. 面向对象和面向过程的区别&#xff1f; 2. 面向对象三大特性 3. Java语言是如何实现多态的&#xff1f; 4. 重载&#xff08;Overload&#xff09;和重写&#xff08;Override&#xff09;的区别是什么&#xff1f; 5. 重载的方法能否根据返回值类…

Java-08

类的抽象是将类的实现和使用分离, 而类的封装是将实现的细节封装起来并且对用户隐藏,用户只需会用就行。 类的合约指的是从类外可以访问的方法和数据域的集合以及与其这些成员如何行为的描述 isAlive()方法的返回值类型为布尔型&#xff08;Boolean&#xff09;。这个方法用于…

【MATLAB第109期】基于MATLAB的带置信区间的RSA区域敏感性分析方法,无目标函数

【MATLAB第108期】基于MATLAB的带置信区间的RSA区域敏感性分析方法&#xff0c;无目标函数 参考第64期文章【MATLAB第64期】【保姆级教程】基于MATLAB的SOBOL全局敏感性分析模型运用&#xff08;含无目标函数&#xff0c;考虑代理模型&#xff09; 创新点&#xff1a; 1、采…

机器视觉与OpenCV--01篇

计算机眼中的图像 像素 像素是图像的基本单位&#xff0c;每个像素存储着图像的颜色、亮度或者其他特征&#xff0c;一张图片就是由若干个像素组成的。 RGB 在计算机中&#xff0c;RGB三种颜色被称为RGB三通道&#xff0c;且每个通道的取值都是0到255之间。 计算机中图像的…

[数据结构#2] 图(1) | 概念 | 邻接矩阵 | 邻接表 | 模拟

图是由顶点集合及顶点间的关系&#xff08;边&#xff09;组成的数据结构&#xff0c;可用 G ( V , E ) G(V,E) G(V,E)表示&#xff0c;其中&#xff1a; 顶点集合 V V V: V { x ∣ x ∈ 某数据对象集 } V\{x|x\in\text{某数据对象集}\} V{x∣x∈某数据对象集}&#xff0c;…

自动驾驶---小米汽车智驾进展

1 背景 小米汽车的进度&#xff0c;可能出乎很多人的意料&#xff0c;其它新势力车企花了5---10年的时间&#xff0c;小米汽车三年就成功造出了第一辆车&#xff0c;在小米su7月销2万的同时&#xff0c;获得了非常不错的口碑。笔者在之前的博客《微自传系列---雷军》中已经阐述…

IOTIQS100芯片, TCP 发送数据+NSOSD,data要是hex16进制转换方法

命令&#xff1a;data以十六进制字符串格式发送的数据。 方法 代码 sprintf(temp, "%02X", data[i]);&#xff1a;将当前字节转换为两位宽的大写十六进制字符&#xff0c;并存储在 temp 中。如果需要小写字母&#xff0c;可以将格式说明符改为 "%02x"。 …

3.metagpt中的软件公司智能体 (Architect 角色)

目录 基础流程1. WriteDesign 动作类2. Architect 角色类3. 流程说明&#xff1a;4. Mermaid图&#xff1a;总结&#xff1a; 代码1. WriteDesign类2. Architect角色3. 上下文&#xff0c;即数据结构4. 数据准备4. 初次编写5. 重写 基础流程 用于管理软件开发任务的系统的一部…

虚幻引擎NPR角色渲染

VRM4U导入 VRM4U插件 安装插件后需在项目设置勾选settings&#xff0c;就可以把VRM格式导入拖拽进UE 专业模型创作分享社区_模之屋_PlayBox 重定向 导入的骨骼和小白人Mannequin的骨骼会显示incompatible,需要用IK_Mannequin跟小白人的IK_Mannequin做retarget。 这边注意如果…

LabVIEW汽车综合参数测量

系统基于LabVIEW虚拟仪器技术&#xff0c;专为汽车带轮生产中的质量控制而设计&#xff0c;自动化测量和检测带轮的关键参数。系统采用PCIe-6320数据采集卡与精密传感器结合&#xff0c;能够对带轮的直径、厚度等多个参数进行高精度测量&#xff0c;并通过比较测量法判定产品合…

基于matlab的单目相机标定

链接&#xff1a; 单目相机标定&#xff08;使用Matlab&#xff09; 用Matlab对单目相机参数的标定步骤&#xff08;保姆级教程&#xff09; 1.准备代码 调用摄像头代码&#xff08;用于测试摄像头是否可用&#xff09;&#xff1a; #https://blog.csdn.net/qq_37759113/art…

景联文科技入选中国信通院发布的“人工智能数据标注产业图谱”

近日&#xff0c;由中国信息通信研究院、中国人工智能产业发展联盟牵头&#xff0c;联合中国电信集团、沈阳市数据局、保定高新区等70多家单位编制完成并发布《人工智能数据标注产业图谱》。景联文科技作为人工智能产业关键环节的代表企业&#xff0c;入选图谱中技术服务板块。…

实景视频与模型叠加融合?

[视频GIS系列]无人机视频与与实景模型进行实时融合_无人机视频融合-CSDN博客文章浏览阅读1.5k次&#xff0c;点赞28次&#xff0c;收藏14次。将无人机视频与实景模型进行实时融合是一个涉及多个技术领域的复杂过程&#xff0c;主要包括无人机视频采集、实景模型构建、视频与模型…

[SAP ABAP] 将内表数据转换为HTML格式

从sflight数据库表中检索航班信息&#xff0c;并将这些信息转换成HTML格式&#xff0c;然后下载或显示在前端 开发步骤 ① 自定义一个数据类型 ty_sflight 来存储航班信息 ② 声明内表和工作区变量&#xff0c;用于存储表头、字段、HTML内容和航班详细信息以及创建字段目录lt…