基于单片机的楼宇门禁系统的设计与实现-毕业设计

收藏和点赞,您的关注是我创作的动力

概要

  随着中国经济的高速发展,人们的生活水平也在逐步进步,对更高品质的生活的追求也逐渐强烈,其中就包括拥有更安全舒适的生活环境。而门禁系统是控制私有区域人员出入的设施,对保护区域人员财产安全有着重要作用。因此,人们对安全方便的智能化门禁系统的需求也越来越大。
现在智能门禁系统已经成为楼宇安防系统的重要一环,市面上已经有各种各样的门禁系统,在实际场景中也是非常常见。在各种公司大楼的出入门禁,小区门禁,校园出入门禁等地方,都可以看到安保人员加上智能化的门禁系统和监控系统来实现对人员出入的管理控制。通过少量的成本,就可以对很多区域的人员出入进行管理控制,不仅安全方便,还提供了很多传统的门禁系统很难做到的功能,如出入的日志记录,人员打卡签到,外来访客记录等功能。
通过调查发现,市面上的门禁系统产品很多,门禁系统的功能越来越丰富,也越来越安全便利。但是还是有很多地方使用落后的门禁系统技术,使用的很不方便,也存在很大的安全性隐患,这跟门禁系统的购买成本和管理成本有关。市场上最廉价的IC卡识别门禁系统,没有人机交互界面,只有一种验证方式,使用起来非常不方便,最低也需要一百五十元人民币。而普通的功能完善、有多种验证方式、有人机交互界面的门禁系统大概需要四五百元人民币,百度的离线版人脸识别闸机需要大概三千元人民币,而一些安全性更高的门禁系统则需要上万元人民币。总体来说,门禁系统的价格是偏高的。因此研究出更加廉价、安全方便、易于管理维护的门禁系统就变得很重要了。本设计选择性价比高的硬件节省成本,解决门禁系统价格昂贵的问题;包含了多种验证方式,让门禁系统更加安全方便;提供人机交互界面方便人们使用,使门禁系统更加智能化。

一、系统总体设计

1硬件的总体设计

为了使门禁系统智能化,需要一个主控芯片对整个门禁系统进行管理控制。接着还需要对应的模块完成包括数字密码验证和IC卡识别验证的功能。当出现非法闯入、验证失败等情况时还需要对操作人员进行警告。最后需要一个人机交互界面方便管理人员对门禁系统进行管理控制。硬件总体设计框图如图2.1所示。
本设计采用STM32F103为主控芯片,控制其他模块,对信息进行处理运算。STM32相比于51单片机性能更快,引出的GPIO口更多,功能更加丰富,相比起其他高性能的嵌入式设备具有功耗低,成本低的特点,更加适用于低成本的智能化门禁系统。
MRC522射频识别模块与主控芯片STM32F103通过SPI接口连接,MRC522接收主控芯片发送的命令,进行相应的操作,并将内部发送数据给主控芯片。同时与搜索的IC卡进行通信,识别IC卡的信息。MRC522采用的是NFC原理与IC卡通信,有三轮认证机制,通信过程安全快速,同时拥有防冲突机制,可以在多张卡的情况下选择卡片进行识别。同时IC卡相比对ID卡有密码验证方式,不容易被复制,更加的安全。
触摸屏通过8080接口与STM32F103连接,触摸屏包含液晶显示屏和电阻屏。液晶显示屏内带有控制芯片和显存,主控芯片只要向显存写入数据就可以在液晶显示屏上显示内容,使用起来方便,电阻屏也自带有控制芯片,处理触摸数据,可以降低对主控芯片性能的需求。管理人员可以通过按压电阻屏进行操作,并看到液晶显示屏的显示信息,方便管理人员对门禁系统进行管理。触摸屏还可以用于数字密码验证,解决用户忘记携带IC卡的情况,同时数字密码可以作为管理人员的验证方式。为了更好地反馈操作结果,提供错误警告,使用RGB等和蜂鸣器作为报警系统。
在这里插入图片描述

图2.1 硬件总体框图

2软件的总体设计

软件的总体逻辑结构根据不同的功能分成不同的部分,各个部分实现独立的功能,通过主函数调用不同的模块,来完成整体的功能。软件总体框图如图2.2所示。
本次设计采用的是ST公司的标准库开发,很多函数直接调用标准库里已经写好的函数,这样可以加快开发周期,同时使产品的兼容性更好。上电复位后,首先进行系统的初始化,包括芯片的初始化和外设的初始化。芯片初始化一部分是在标准库的启动文件中完成,这也是使用标准库开发的好处,一些底层的东西可以不需要我们去配置,标准库已经写好了。
外设的初始化包括触摸屏模块、射频识别模块、RGB灯、蜂鸣器等外设的初始化。这些是部分可以自己编写,也可以使用STM32CUBEMAX软件可以进行简单的可视化配置后,自动帮我们生成这些配置程序。外设初始化主要工作有主控芯片与射频识别模块连接的SPI接口的配置和主控芯片通过8080接口连接触摸屏模块的配置,配置对应的GPIO口和数据传输方式,还有蜂鸣器和RGB等外设引脚的初始化配置。
系统的初始化完成之后,进入主循环,循环判断各个功能是否被激活,当满足条件时执行一个分支程序,执行完之后回到主函数。首先打印菜单界面,在液晶屏上显示功能的图标。当有卡进入时,即射频识别模块搜索到IC卡,发送IC卡的信息给主控芯片进行识别,当信息和主控芯片保存的用户信息相同时,则验证成功,打印卡片ID和用户信息。如果识别到错误的IC卡信息,则RGB灯闪烁蜂鸣器报警。
当没有接收到卡的信息时,进行循环的下一步,判断触摸屏是否按下。触摸屏被按下则进入对应的模块进行处理。当按键一被按下,意味着通过输入数字密码验证,用户需要手动输入密码,密码正确则验证成功,密码错误将会触发蜂鸣器和RGB灯的警告。当按键二被按下,意味着进行修改密码操作,修改密码前也是需要确认原始密码,验证成功以后,可以输入新的密码。当按键三被按下时,意味着修改IC卡信息,可以增加或者删除IC卡。修改IC卡前也是需要验证数字密码,当密码正确后会进行提示放入IC卡,当IC卡存在,将删除此卡,如果IC卡不存在,将增加此卡。
在这里插入图片描述

                      图2.2软件总体设计框图

二、基本内容

主要内容:本系统将设计一个完整的基于单片机的办公楼门禁系统。本系统包括门禁锁、信息采集、信息管理三个模块。门禁锁有三种解锁方式:密码(安保人员使用)、射频识别、指纹识别。信息采集用来收集使用者通过门禁锁产生的出入信息和生物信息。信息管理复制对于信息的统筹兼顾其中包括员工信息(基本信息,在职状态等)和门禁出入信息(使用者的出入信息和生物信息)及访客可视讲系统。
目标:为毕业设计报告以及系统演示,其中毕业设计报告包括系统的设计思想、来源、目标、技术路线等,系统演示用来实现系统的基本功能。
课题资料整理详细。
用所学知识完成系统的设计与开发。
系统功能全部实现,程序正常运行。
论文结构合理,符合毕业论文书写规范。;
实习内容为C/C++相关技术,便于学生具备职场所需要的技能。调研内容为当今社会主流的楼宇门禁系统,便于了解其特点和优势。对于自己所要设计的系统的功能模块进行细致的分析和具体实现,查阅资料了解STM32单片机的相关知识,各个模块的使用方法,为毕业设计做好相应的准备。

三、 内容截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、 主要代码

主程序:
int main ( void ){
//*******************初始化************************
//刷新标志位,当触摸屏被改下,界面被改变时进行刷新液晶屏的显示内容
u8 flash=1;
/*滴答时钟初始化*/
SysTick_Init ();   
/*USART1 配置模式为 115200 8-N-1,中断接收*/
USART1_Config ();   
/*RC522模块所需外设的初始化配置*/
RC522_Init ();     
/*LCD 初始化*/
LCD_Init ();   
LED_GPIO_Config();//RGB灯初始化
BEEP_GPIO_Config();//蜂鸣器初始化
/*清屏操作*/	
ILI9341_Clear ( 0,   0, 240, 320);	
ILI9341_Clear ( 0, 272, 240,   2);
PcdReset ();//RC522复位
/*设置工作方式*/
M500PcdConfigISOType ( 'A' );
//*******************初始化************************	
menu_1();//显示主界面	
while ( 1 ){

/*IC卡检测,当识别IC卡成功,会进入显示持有者信息5秒,
否则会快速的进行轮询检测触摸屏是否被按下*/
flash = IC_test (); 
/*触摸屏检测程序*/
if(XPT2046_TouchDetect() == TOUCH_PRESSED && states==0){
states=1;
BEEP(OFF);//开启
XPT2046_Get_TouchedPoint(&cinfo,strXPT2046_TouchPara);
Delay_us(1*500);
BEEP(ON);//关闭
if(cinfo.x>24 && cinfo.y>24 && cinfo.x<96 && cinfo.y<96)//pwd{
flash=1;
mune=2;}
....(其余类似的判断省略)
if(XPT2046_TouchDetect() ==TOUCH_NOT_PRESSED){
//按键释放时,坐标清零,标志位清零
states=0;
cinfo.x=-1;
cinfo.y=-1;}
//****************************************
/*定义菜单标志位
1:菜单界面
2:密码输入界面
3:密码修改界面
4:增加IC卡界面
5:删除IC卡界面
*/
if(flash==1){
switch(mune){
case 1:flash=0;//主界面
menu_1();
break;
case 2:flash=0;//输入密码进入
if(!Key(0))//密码正确,开锁{
LED1_ON;
BEEP(OFF);
ILI9341_Clear ( 0, 0, 240, 360);//	清屏
ILI9341_DispString_EN ( 0, 32,"psw is error !" );
Delay_us(2*1000*1000);
LED1_OFF;
BEEP(ON);}
else {
ILI9341_Clear ( 0, 0, 240, 360);//	清屏
ILI9341_DispString_EN ( 0, 32,"psw is true !" );
Delay_us(2*1000*1000);	}
//开锁函数
///
//执行开门操作,然后重新回到主界面
mune=1;
menu_1();
break;}
...(类似菜单判断省略)

四、 文章目录

目 录

1 绪论………………………………………………………………………………1
1.1 研究背景…………………………………………………………………Y
1.2 国内外研究现状………………………………………………………………Y
1.3选题背景和研究内容……………………………………………………………Y
1.4本章小结………………………………………………………………Y
2 方案论证……………………………………………………………………Y
2.1 功能需求分析…………………………………………………………………Y
2.2技术应用概况…………………………………………………………………Y
2.3本章小结…………………………………………………………………Y
3 硬件设计………………………………………………………………………Y
3.1 芯片选型及系统框架……………………………………………………………Y
3.2原理图设计…………………………………………………………………Y
4 软件开发………………………………………………………………………Y
4.1 开发软件应用……………………………………………………………Y
4.2程序流程图…………………………………………………………………Y
5 综合测试………………………………………………………………………Y
5.1硬件测试……………………………………………………………Y
5.2功能测试…………………………………………………………………Y
6总结与展望………………………………………………………………………Y
致谢 …………………………………………………………………………………Y
参考文献……………………………………………………………………………Y
附录…………………………………………………………………………………Y

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值