基于单片机的门禁系统(C语言代码+Proteus仿真电路)

这篇具有很好参考价值的文章主要介绍了基于单片机的门禁系统(C语言代码+Proteus仿真电路)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

1. 背景与意义

   随着人们生活水平和安全意识的提高,对锁的要求也越来越高,既要安全可靠,又要便捷方便。随着智能化时代的到来,传统锁已不能满足人们的生活需求,于是电子密码锁由此产生。当前密码锁已经盛行,但在电路设计上的成本高昂,因此,我们价格便宜的芯片设计了一个密码锁控制系统。

2. 系统功能

   本系统设计是基于AT89C52单片机开发平台实现的门禁系统。AT89C52具有价格便宜,低电压、高性能 CMOS 8 位微处理器等优势,采用 AT89C52 单片机为控制核心,在相应的软件控制下可以完成要求的功能,主要实现功能包括矩阵按键控制实现密码输入、密码设置和密码初始化功能,8位数码管显示密码输入界面。具体而言,初始界面为密码输入界面,当输入密码正确, LED亮模拟开门,密码错误超过三次,蜂鸣器报警;通过按键将界面调整为密码设置界面,首先,需要输入初始密码,密码正确,界面跳转到输入新密码界面,反之,密码错误三次则蜂鸣器报警,持续3s,密码输入过程可以通过退出键退出,返回密码输入界面;其次,设置完成新密码,通过确认键保存密码,返回密码输入界面。本项目使用Keil5软件来实现程序的编写,编译之后生成hex文件。另外,我们通过Protues软件来模拟仿真我们的设计的系统,将生成的hex文件加载到AT89C52单片机中运行。
   系统主要由六个部分组成,即AT89C52主控芯片、显示模块、蜂鸣器报警模块、LED提示模块、AT24C02存储模块和矩阵按键模块组成。

3. 元件清单

 1)  7SEG-CA (8位共阳数码管)
 2)  AT89C52
 3)  RESPACK-8 (10k)
 4)  有源蜂鸣器
 5)  LED
 6)  CRYSTAL (12MHz)
 7)  电阻 *11(300欧、10k、1k)
 8)  电容 *2(20pf)
 9)  独立按键 *16
 10)  74HC138
 11)  74HC02
 12)  74HC573
 13)  AT24C02

4. 系统设计

   主要由主程序和密码存储模块、按键控制模块、显示模块、报警提示模块等子程序组成,其中主程序的功能是初始化系统的工作参数和循环调用各个功能模块子程序。软件设计构图如下:
proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

 4.1 密码输入及更改功能

   如图4.1为4×4矩阵键盘的功能界面,正如图中所示,0~9为密码输入值,有密码设置、密码复位、退出和确认按键。图4.2为密码设置流程图,程序执行过程如下:当按下设置密码按键,进入到密码输入界面,密码验证标识符为C。此时,需要验证原始密码,当密码验证成功,进入新密码输入界面,新密码标识符为E,成功输入六位新密码后,按下确认键保存新密码,随即切换到初始密码输入界面,模拟界面如图4.3所示。

proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计
图4.1 矩阵键盘功能界面          图4.2 密码设置流程图

proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

图4.3 密码设置仿真图

 4.2 报警及提示功能

   如图4.4为报警流程图,报警功能存在两个阶段。第一阶段,当在初始密码输入界面,输入密码错误三次,则启动报警,报警持续3秒,报警结束后退回到初始密码输入界面。第二阶段,进入设置界面,需要验证原始密码,输入密码错误三次同第一阶段出错情况一致,报警结束退回到密码验证界面。通过图4.5模拟启动报警。另外,在初始密码输入界面,当输入密码正确,则开门,通过如图4.6的LED变亮模拟。
proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

图4.4 报警提示流程图


proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

图4.5 报警模拟图


proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

图4.6 LED模拟开门图

 4.3 密码保存及复位功能

  图4.7为密码保存流程图,进入密码设置界面,密码验证成功后,输入新密码,按下确认按键,则切换到初始密码输入界面,保存当前输入密码。将密码写入到AT24C02中保存,在下一次启动密码锁时自动读取上次存取密码,如图4.8为AT24C02模拟电路;当忘记设置密码时,可以通过矩阵键盘上的复位键将密码初始化。
proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

图4.7 密码保存流程图

proteus门禁系统,毕业设计,单片机,proteus,嵌入式硬件,c语言,visualstudio,毕业设计

图4.8 存储模拟电路

5. 部分主代码

//基于AT89C52门禁系统
#include "include.h"
#include "common.h"
int menu_change=0;
void menu(int change)
 {
	switch(change)
	{
		case 0:dat[0]=dat[1]=11;break;
		case 1:dat[0]=13;dat[1]=10;break;
		case 2:dat[0]=10;dat[1]=12;break;
		default:break;
	}
	Key_disp();
 }
//********显示程序**********//
#include "display.h"
u8 table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf,0xc6,0x86};
u8 dat[]={10,10,10,10,10,10,10,10};
void Display()
{
 static u8 disps;
	P2=P2&0x1f|0xe0;
	P0=0xff;
	P2&=0x1f;
	P2=P2&0x1f|0xc0;
	P0=1<<disps;
	P2&=0x1f;
	P2=P2&0x1f|0xe0;
	P0=table[dat[disps]];;
	P2&=0x1f;
	if(++disps==8)
		disps=0;	 
}

void menu(int change)
{
switch(change)
{
	case 0:dat[0]=dat[1]=11;break;
	case 1:dat[0]=13;dat[1]=10;break;
	case 2:dat[0]=10;dat[1]=12;break;
	default:break;
}
Key_disp();
}

//********按键功能程序**********//
#include "key.h"
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
u8 key_press,key_re,key_van;
u8 MiMa_init[]={6,5,4,3,2,1};
u8 i,Key,key_bit;
bit Key_R,QR_flag,SZ_flag,init_flag=0;
u8 Keydats[6];
u8 K;
extern int menu_change;
u8 Read_Key()
{
 P1=0xf0;
 if((P14==0)|(P15==0)|(P16==0)|(P17==0))	key_press++;
		 else          key_press=0;
 if(key_press==5)
 {
	 key_press=0;
	 key_re=1;
	 for(i=0;i<4;i++)
	 {
		 P1=0xff;
		 P1&=~(0x01<<i);
		 if(P14==0)         key_van=4*i+4;
		 else if(P15==0)    key_van=4*i+3;
		 else if(P16==0)    key_van=4*i+2;
		 else if(P17==0)    key_van=4*i+1;
	 }				 
 }				 
 P1=0xf0;
 if((key_re==1)&&(P14==1)&&(P15==1)&&(P16==1)&&(P17==1))
  {
	 key_re=0;
	 Key_R=1;
	 return key_van;
  }
 return 0xff;
}
void Key_Deal()
{
 if(Key_flag)
 {
	 Key_flag=0;
	 K=Read_Key();
 }
 switch(K)
 {
	 case 1:Key=0;key_bit++;break;
	 case 2:Key=1;key_bit++;break;
	 case 3:Key=2;key_bit++;break;
	 case 4:Key=3;key_bit++;break;
	 case 5:Key=4;key_bit++;break;
	 case 6:Key=5;key_bit++;break;
	 case 7:Key=6;key_bit++;break;
	 case 8:Key=7;key_bit++;break;
	 case 9:Key=8;key_bit++;break;
	 case 10:Key=9;key_bit++;break;
	 case 11:Key=10;key_bit+=0;break;
	 case 12:Key=11;key_bit+=0;break;
	 case 13:Key=12;key_bit+=0;break;
	 case 14:Key=13;key_bit+=0;break;
	 case 15:Key=14;key_bit+=0;break;
	 case 16:Key=15;key_bit+=0;break;		 
 }
 K=0xff;
}

void Key_Stor()
{
 if((Key_R)&&(Key<10))
 {
		Keydats[key_bit-1]=Key;
 }
 if(key_bit>=6) key_bit=6;
 if(key_bit<0)  key_bit=0;
}

void Key_temp()
{
 if(Key_R)
 {
	 Key_R=0;
	 if((Key==14)&&(key_bit==6)) //确认
	 {
			 QR_flag=1;
	 }
	 if((Key==10)&&(key_bit==0)) // 设置
	 {
			 SZ_flag=1;menu_change=2;
	 }
	 if((Key==15)&&(SZ_flag))  //退出
	 {
			SZ_flag=0;key_bit=0;
			menu_change=0; 
	 }
	 if((Key==11)&&(key_bit==0))//复位
	 {
		 for(i=0;i<6;i++)
			{
			 Write_At24c02(i,MiMa_init[i]);
			 Delay10ms();
			} 
	 }
 }
}

 void main()
 {
	 u8 i;
	 Timer0_init();
	 Buzz=0;LED=0;
	 for(i=0;i<6;i++)
		{
			Write_At24c02(i,MiMa_init[i]);
			Delay10ms();
		}
	 while(1)
	 {			
		Key_Deal();
		Key_Stor();
		Key_temp();		 
		SZ_disp();
		MiMa_Deal();
		NEW_MiMa();
		menu(menu_change);
		Display();
	 }
 }

6. 基于单片机门禁系统C语言程序和仿真自取

  代码自取:完整C语言代码文件
  仿真:Proteus仿真

7. 相关作品

  请关注专栏:毕业设计作品

🤞🤞🤞文章来源地址https://www.toymoban.com/news/detail-810205.html

创作不易,请伸出您发财的小手,打赏下博主,谢谢。

🤞🤞🤞

到了这里,关于基于单片机的门禁系统(C语言代码+Proteus仿真电路)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【基于Arduino RFID门禁系统】

    介绍 射频识别或RFID(Radio-Frequency Identification)是一种通过无线电信号进行自动识别,通过RFID标签检索和存储数据的方法。 这些 RFID 标签可以贴在动物、物体上。因此,这些标签具有许多应用,例如贴在车辆上的不停车标签、动物识别。有 3 种类型的 RFID 标签:无源标签是对

    2024年02月12日
    浏览(45)
  • 基于STM32的智能门禁系统

    stm32F407主控芯片 RFID模块 矩阵按键模块 AS608指纹模块 SG90舵机模块 OLED显示屏模块 寻卡 读取卡序列号 匹配卡号 保存卡 删除卡 按行按列读取,获取按键值 检测是否有手指按下图像 刷指纹 录入指纹 删除指纹

    2024年02月13日
    浏览(41)
  • 基于树莓派的人脸识别门禁系统

    1、概述:本次在树莓派上安装Opencv及其扩展模块,考虑到树莓派的SD卡容量和内存的限制,不采用直接pip安装方法,而采用编译Opencv源码的方式进行安装。 2、遇到的问题及解决方法 遇到的问题 解决方法 缺少”cuda.hpp” 将/home/pi/opencv_contrib3.4.1/modules/xfeatures2d/include/opencv2下的

    2023年04月19日
    浏览(45)
  • 物联网毕业设计 基于RFID的门禁系统

    Hi,大家好,学长今天向大家介绍一个 如何使用RFID技术构建一个单片机门禁系统 基于RFID的门禁系统 大家可用于 课程设计 或 毕业设计 选题指导,项目分享: https://gitee.com/yaa-dc/warehouse-1/blob/master/iot/README.md 本篇博客,学长先向大家介绍射频识别技术的概念、 分类及工作原。

    2024年02月08日
    浏览(45)
  • 元宇宙场景下基于区块链人脸识别门禁系统-摘自宣科智能

    如今随着社会经济发展水平的提升,市场对于人脸识别技术的需求扩大。如刷脸门禁、上下班打卡、访客来访等都可能扫一扫脸。基于人脸识别的技术迭代更新,人脸识别技术在安防领域也有了更加开阔的发展空间,现有技术的人脸识别门禁系统存在诸多问题,例如:信息的

    2024年02月11日
    浏览(42)
  • 基于STM32的智能门锁/智能门禁多功能系统

    本次设计是基于STM32F103C8T6(以下C8T6等同)开发的智能锁,支持多种方式对系统进行操作:蓝牙、指纹、RFID刷卡、4x4键盘输入,拥有友好的蓝牙收发界面和LCD交互界面。 蓝牙:作为总系统的管理员,有主管理和次管理,主管理只能有一个,副管理员可以有多个。主管理员拥有

    2024年02月08日
    浏览(54)
  • 基于树莓派4B与STM32的智能门禁系统项目(代码开源)

    前言: 本文为手把手教学 嵌入式经典项目 —— 智能门禁项目 ,本次项目采用  树莓派4B  与  STM32F103C8T6  进行联合开发。项目充分发挥各自 CPU 的优势与长处,将人脸识别的大计算量任务给 树莓派4B ,将门禁系统的控制部分交给 STM32 进行处理。该项目算是嵌入式人工智能

    2024年02月16日
    浏览(44)
  • FreeRTOS小项目实战------基于FreeRTOS和stm32的门禁系统

    目录 收获 系统总体框架 程序框架 具体程序实现 工程文件网盘链接 收获 学习 freertos的移植与裁剪 ,对任务间通信的认识更加深刻,加深了实时操作系统的理解,学习了as608指纹模块,rc522刷卡模块等模块的简单使用。 系统总体框架 该系统采用STM32F407ZGT6为主控芯片,在Fre

    2024年02月02日
    浏览(45)
  • 【深度学习】基于Qt的人脸识别系统,门禁人脸识别系统,Python人脸识别流程,树莓派

    在深度学习领域做人脸识别的识别准确率已经高到超出人类识别,但综合考虑模型复杂度(推理速度)和模型的识别效果,这个地方还是有做一些工作的需求的。 人脸识别的过程基本由下面的流程组成。 yolov5-face、yolov7-face等github项目都可以做到这一点,在公开数据集上训练

    2024年02月09日
    浏览(46)
  • 详细!基于ESP32的智能门禁系统(华为云iot+微信小程序)

    git地址:智能门禁(云IOT+微信小程序) 开关门效果 创建产品 创建产品 , 协议类型选择MQTT,数据格式选择JSON ,其他参数自定 设备注册 找到所属产品,认证类型选择密钥,单击确定后注册成功 注册成功后出现如下页面,点击保存并关闭,会自动下载好\\\"device_id\\\"和\\\"secret\\\",保

    2023年04月26日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包