基于51单片机的智能门禁系统.docx
- 文档编号:8471420
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:35
- 大小:331.76KB
基于51单片机的智能门禁系统.docx
《基于51单片机的智能门禁系统.docx》由会员分享,可在线阅读,更多相关《基于51单片机的智能门禁系统.docx(35页珍藏版)》请在冰豆网上搜索。
基于51单片机的智能门禁系统
智能门禁系统
1.设计原理
1.1背景和意义
随着社会科学技术和社会经济的快速发展,如今信息技术早己经深入人们生活的各个领域特别是住宅小区的需要。
伴随人们对财物的安全与防盗意识的不断提高,于是对高级住宅区的安全性能和门禁的系统人性化要求越来越高。
智能门禁系统是现在被广泛的使用在各种建筑和楼房中,它是一种的安全性较高的控制管理系统。
现如今,经济社会不断进步,人们对自己生活的要求也越来越高,现在为了保证各方面的安全,开发商一般会建筑物内的主要管理区、楼房的电梯口、数据管理中心、机要库房等重要出入口设置一些保证安全的防护措施,为了解决这些日益显现的安全问题,一种新型智能的门禁系统就诞生了,可以根据不同的时间开启不同的模式,白天自动开关门,晚上需要考虑更多的安全问题,因此需要输入密码开门。
1.2设计原理
本次课设使用IAP15F2K61S2为主控元件,通过时间模块,判断当前系统所处模式(白天模式和黑夜模式)。
开关门通过驱动模块实现。
在白天模式,该状态下门的开和关是通过测距模块测量的距离来控制,当测到的距离小于30cm时门就开,门开5秒后自动关闭通。
在黑夜模式,门的开是通过输入正确的密码来起动,门开启后5秒后自动关闭,密码输入错误达到3次时则通过报警模块来报警。
总的系统框图如图1-1所示。
图1-1系统框图
2.工作原理
2.1电路实现的功能
1)时间显示单元
通过DS1302获得时间,时间初始值为06:
59:
00,通过CT107D上的8位数码管显示出来
2)矩形键盘功能
4*4键盘功能如表2-1所示
表2-1按键功能表
其中设置键用于修改密码,按下设置键,首先输入原密码,原密码正确后,再输入新
密码;退出键用于在修改密码完成之前退出密码的修改回到密码门等待输入密码状态。
(3)门的开关控制
当超声波测距小于30cm或正确输入密码后继电器闭合表示门已打开,5秒后继电器断开表示门已关闭。
(4)报警单元
在输入密码的状态下若连续3次输入错误的密码时,蜂鸣器报警3秒,在修改密码输入旧密码3次输错后蜂鸣器报警3秒并退出密码修改功能。
(5)EEPRO单M元用于存储新密码,当确认输入密码后从EEPROM中取出当前密码与已输入的密码进行
对比,判断密码是否正确
2.2电路原理图及其分析
总的电路原理图见附录A。
DS130使用SPI通信时序读取时间;超声波模块测量距离;AT24C02保存密码,通过I2C总线与单片机进行通信;矩阵按键接到P3口,用于设置和输入密码、蜂鸣器模块用于报警。
通过IAP15F2K61S2协调控制各个部分,原理图中使用了74LS138译码器,控制各个模块,可以有效的节约单片机端口资源,使系统更加简洁、高效。
2.3各模块电路工作原理
(1)最小系统模块
最小系统使用12M晶振,接5V电压,电源部分设有电容以防止干扰,最小系统电路如图2-1所示。
图2-2蜂鸣器电路
(3)显示模块动态数码管采用八个共阴数码管进行动态显示,利用人眼的视觉暂留,用74LS138译码器进行片选,选中M74HC573M1R,通过P2口输出相应的数据,一个输出位选数据,一个输出段码数据。
其中M74HC573M1R具有锁存和驱动的功能,可以有效节约单片机资源。
通过输出相应的段码后进行延时,就可以观察到八位数码管同时点亮。
电路如图2-3所示。
图2-3动态数码管电路
按键模块
16个按键,采用扫描的方法检测按键,占用8个I/O口。
使用矩阵按键时,需
(4)一共要将按键功能选择(J5)的1、2短接。
电路图如图2-4所示。
图2-4矩阵按键电路
5)测距模块
通过超声波进行测距,通过P10发出信号,P11接收信号来测量距离。
电路图如图2-5
所示。
图2-5超声波电路
2.3主要器件介绍
(1)主控元器件选择主控元器件是系统的核心,协调控制系统的各个模块,以下给出两种方案。
方案一:
STC89C516是一种灵活性高且廉价的芯片,所以本次课设选择此芯片。
并且其抗干扰能力强,保密性好,难以被破解,单片机时钟有防外部电磁辐射功能。
使用12M晶振,系统时钟十二分频,速度较慢。
方案二:
采用宏晶公司最新STC15系列IAP15F2K61S2芯片。
ISP/IAP,在系统可编程/在应用可编程,不需要仿真器;属于增强型8051CPU,1T,单时钟/机器周期,速度比普通8051快将近12倍。
由于本系统需要动态数码管显示还有按键扫描,对速度的要求较高,因此本系统选用IAP15F2K61S2芯片。
其引脚图如图2-6所示。
图2-6引脚图
(2)测距模块器件选择
测距模块是用来判断门的前方是否有人进门,对于测距传感器的选择有以下几个方
方案一:
采用激光传感器检测距离,利用光的反射原理进行距离的测量。
激光具有方向性强、亮度高、单色性好、传输速度快(C=3×108m/s)等优点,因此激光传感器具有抗干扰性强,测量精度高,反应速度快等特点。
但由于激光是以光速传播的,距离与时间的关系满-8足:
2S=C×T1,在本系统中人与门的距离最大不超过2m,所以T1≤4/C=1.3X10-8s,而本次课设使用的IAP15F2K61S2的系统时钟为12M,因此远大于T1,因此需要设计外部的发射电路才能使单片机接收。
于此同时,由于激光传感器的制作过程比较复杂且价格过高。
单片机控制信号在延时后控制激光发射器发射激光束,同时开始计时,当接收器将接收的信号反馈给单片机时停止计时,通过时间差和光速的特点计算路程。
方案二:
采用超声波传感器测距离。
由于超声波的波长短,超声波射线可以和光线一样,能够反射、折射,也能聚焦,而且遵守几何光学上的定律。
即超声波射线从一种物质表面反射时人射角等于反射角。
且超声波方向性好且频率高。
声波在空气中传播的速度约为340m/s,根据公式:
2SVT2S2m,可知T21.16102S,这在单片机的机器周期内,易于进行逻辑判断。
基于以上分析,决定采用方案二。
单片机一个引脚发出40kHz的脉冲信号,通过驱动电路由超声波的发射器发射出去,一共发送十个,与此同时定时器开始计时,如果接收器在发完十个脉冲后未接收到反馈信号,则判断无人,延时一段时间后,单片机再发十个脉冲信号;如果接收器收到反馈信号,则判断有人,并通知单片机停止计时。
通过时间差计算距离。
设超声波在空气中的传播速度为340m/s,则根据计时器记录的时间t,就可以计算出发射点距人的距离(S),即
S340t/2(2-1)在本设计中,采用高灵敏度,高可靠性,高稳定性,耐高、低温度,耐湿度,耐冲击,发
射频率为40kHz的超声波传感器判断门与人的距离。
在本设计中只要检测是否有人经过门前,所以需要一个超声波模块,如果需要判断人进门出门的状态,这时可设置两个超声波模块。
(3)驱动模块器件的选择系统通过驱动模块来实现门的开关,对于驱动模块器件的选择有以下几钟方案。
方案一:
采用继电器对门的开关进行控制,这个方案的优点是电路比较简单,缺点是继电器的响应时间慢,高频率使用的话,容易损坏。
方案二:
采用三级管组成的开关电路,这种方式的过载能力强,能够接受较为频繁的负载冲击,但是需要自己焊接电路,较为复杂。
由于时间有限,而且门不是频繁的开关,对响应时间的要求也不是很高,所以本系统选用方案一。
(4)显示模块器件选择系统需要显示当前时间还有输入的密码。
可以考虑一下两种显示方案。
方案一:
使用液晶显示屏显示距离。
液晶显示屏(LCD)具有轻薄,耗电量较低,没有辐射,显示较稳定且不闪烁、画面效果好、可以显示字符、抗干扰的能力强等特点。
但由于只需显示时间和密码这样的数字,八位数码管就可以满足要求,且由于液晶是以点阵的模式显示各种符号,因此需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。
在使用时不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。
方案二:
使用传统的数码管显示。
数码管具有功耗低、寿命长、稳定性强、抗干扰强的特点;对外界环境要求低,可以轻松维护;同时其精度比较高,精确可靠,编程容易。
数码管采用BCD编码显示数字,资源占用较少。
在本系统中,采用数码管的动态显示,以节省单片机的内部资源。
(5)存储模块器件选择
存储模块选用AT24C02用于存储密码。
AT24C02内部含有256个8位字节,CATALYST公司的先进CMOS技术实质上减少了器件的功耗。
AT24C02有一个8字节页写缓冲器。
该器件通过I2C总线接口进行操作,有一个专门的写保护功能。
在单片机上的应用广泛,可以实现掉电数据不丢失功能。
其引脚图如图2-7所示。
图2-7AT24C02引脚图
3.软件设计
3.1主程序
程序采用模块化编程,首先是按键检测,当有按键按下时,执行相应的功能;没有按
键按下时,根据时间判断所处的模式;白天模式时,判断是否有人接近,有的话自动开门,五秒后自动关门;黑夜模式时,进行输入密码判断,正确的话,开门,如果输入密码错误
3.2密码设置子程序
首先输入旧密码,如果输入密码正确,则进入新密码输入界面,输入新密码后,保存
3-2所示。
即可;如果输入旧密码错误,则进行错误次数检验程序。
程序流程图如图
3.3错误次数检验
当错误次数达到三次的时候,蜂鸣器报警,未到三次前如果输入正确密码,则错误次数清0,程序流程图如图3-3所示。
4.电路调试方法与结果说明
由于系统直接使用的CT107开发板,因此没有硬件仿真调试,主要是软件调试。
软件实现方面,最重要的是按键的调试,不同的按键在不同的界面有不同的功能,在某个界面时,按下不相关的按键,不能干扰程序的运行。
因此使用不同标志位,控制按键。
显示方面,就是调试延时问题,数码管的亮度与延时有关,需要根据主程序的运行时间,更改数码管动态显示延时,使数码管的亮度达到最佳。
Y
Right_flag=1?
错误次数清0
N
错误次数加1
蜂鸣器报警
图3-3错误次数检验流程图
5.实物照片
实物正面照片,如图5-1所示
图5-1实物正面照片
反面照片如图5-2所示
图5-2实物反面照片
输入密码界面,如图5-3所示。
修改密码,输入旧密码界面,如图5-4所示。
图5-4输入旧密码界面
修改密码,输入新密码界面,如图5-5所示。
时间显示界面,如图5-6所示。
图5-6时间显示界面
专业实习工作记录
时间安排
1月2日确定设计课题并讲解相关注意问题,分发实验板;
1月3日查找相关资料,并了解相关模块电路图及工作原理,设计初步流程图;
1月4日根据相关模块的原理,设计总体的流程图,然后查找相关资料进行基本
功能的设计;
开始撰写实验报告,并进一步完善实验设计;
月17日完成课程实验报告并进行验收,递交修改后的实验报告。
出现问题及解决方法
(1)在输入密码界面,密码为六位数字组成,当输入的密码超过六位时,虽然数码管不显示后六位,密码也显示正确,但是按清除键时,不能清除直接第六位,而是从最后输入的一位开始清除。
针对此问题,需要设置当超过位数时,不能输入。
同样,当清除完第一位后,不能继续清除。
(2)在设计数码管显示时,一开始数码管闪烁着显示,于是加快扫描时间,结果不闪烁而变得暗淡,又放慢一些扫描时间,最终调整完成。
(3)在黑夜模式时,输入密码后,门不能打。
首先排除继电器问题,然后分析软件问题;重新设置初始密码,结果可以正常开门,这就说明是在重新设置密码后,保存密码出现错误,即AT24C02存储出现问题。
经过仔细查看程序,分析出原因:
在AT24C02存储数据的过程中,其时序不能被打乱,因此,在写入AT24C02时,将中断关闭。
完成结果说明
经过三周课设,所有功能都已实现。
在输入密码时,为了便于演示观察,直接显示的数字,没有加密处理。
由于硬件资源限制,本系统应采用两个超声波测距模块,一个放在门外,一个放在门内,用于检测是进门还是出门状态。
附录A
附录B
main.c代码如下:
/*
2019年1月4日
*/
#include"STC15F2K60S2.h"//
#include"ds1302.h"
#include"intrins.h"
#include"iic.h"
#defineu8unsignedchar
u8codesmg_du[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00,0x40};//0-9灭横线
u8codesmg_wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8time_display[8];
u8juli_display[8];
u8test_display[8];//测试显示
u8input_display[8];//输入密码显示
u8setting_dis[8];//修改密码显示
unsignedintdistance=0,t=0;
u8mima[6]={6,5,4,3,2,1};//密码
//u8cs_mima[6]={6,5,4,3,2,1};//初始密码
//u8number[6]={10,10,10,10,10,10};//初始状态熄灭
u8xian[2]={0x40,0x40};//显示的前两位
u8biaozhi[2]={0,0x40};
u8error_times=0;
u8mode=0;
u8input_mima[6]={10,10,10,10,10,10};//初始状态熄灭
#definesomenop{_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
sbitTX=P1^0;//发射引脚
sbitRX=P1^1;//接收引脚
sbitrelay=P0^4;//继电器
sbitbuzz=P0^6;//蜂鸣器
#defineKEYP3
#defineNO_KEY0xff//无按键按下
#defineKEY_STATE00//判断按键按下
#defineKEY_STATE11//确认按键按下
#defineKEY_STATE22//释放
unsignedcharKey_Scan()
{
staticunsignedcharkey_state=KEY_STATE0;
u8key_value=0,key_temp;
u8key1,key2;
P30=0;P31=0;P32=0;P33=0;P34=1;P35=1;P42=1;P44=1;
if(P44==0)key1=0x70;
if(P42==0)key1=0xb0;
if(P35==0)key1=0xd0;
if(P34==0)key1=0xe0;
if((P34==1)&&(P35==1)&&(P42==1)&&(P44==1))key1=0xf0;
P30=1;P31=1;P32=1;P33=1;P34=0;P35=0;P42=0;P44=0;if(P30==0)key2=0x0e;
if(P31==0)key2=0x0d;
if(P32==0)key2=0x0b;
if(P33==0)key2=0x07;
if((P30==1)&&(P31==1)&&(P32==1)&&(P33==1))key2=0x0f;key_temp=key1|key2;
switch(key_state)
{
caseKEY_STATE0:
if(key_temp!
=NO_KEY)
{
key_state=KEY_STATE1;
}
break;
caseKEY_STATE1:
if(key_temp==NO_KEY)
{
key_state=KEY_STATE0;
}
else
{
switch(key_temp)
{
case0x77:
key_value=4;break;
case0x7b:
key_value=5;break;
case0x7d:
key_value=6;break;
case0x7e:
key_value=7;break;
case0xb7:
key_value=8;break;
case0xbb:
key_value=9;break;
case0xbd:
key_value=10;break;
case0xbe:
key_value=11;break;
case0xd7:
key_value=12;break;
case0xdb:
key_value=13;break;
case0xdd:
key_value=14;break;
case0xde:
key_value=15;break;
case0xe7:
key_value=16;break;
case0xeb:
key_value=17;break;
case0xed:
key_value=18;break;
case0xee:
key_value=19;break;}key_state=KEY_STATE2;
}
break;
caseKEY_STATE2:
if(key_temp==NO_KEY){key_state=KEY_STATE0;
}
break;
}
returnkey_value;
}
voidTimer0Init(void)//1ms
{
AUXR|=0x80;//1Ttimer
TMOD&=0xF0;//16bit
TL0=0xCD;
TH0=0xD4;
TF0=0;
TR0=1;
ET0=1;
EA=1;
}
//2毫秒@11.0592MHz
//定时器时钟1T模式//设置定时器模式
voidTimer1Init(void){
AUXR|=0x40;
TMOD&=0xFF;
TL1=0;
TH1=0;
//ET1=1;
}
voidsend_wave(void)
{
unsignedchari=8;//发送8个脉冲
do
{
TX=1;
somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;some
nop;
TX=0;
somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;some
nop;
}while(i--);
voidDelay10ms()
{
//@11.0592MHz
unsignedchari,j;
i=108;
j=145;
do
{
while(--j);
}while(--i);
}
u8test_mima(void)
{
u8n=0,m;
for(m=0;m<6;m++)
{
if(input_mima[m]==mima[m])
{
n++;
}
}
if(n==6)
{
return1;
}
//else
//{
refuin2八
一b
bifkeylfωg八
bifSlf-agHO八
bifsωrtllfωgHO0snl⅛2⅛>*M∖⅛S:
斗胃≡l⅛aIbifSωrt2lfωgHOWsnN⅛2鸯爸曲55〉斗®斗胃≡l⅛abifCOnfirmlf-agHO八
bifelτor∙lf-agHO八
bif(5-hflf-agH0八
bifSeI:
lf-agHO八
VOidmain u8keylvaIΓNOIKE5miaoHO⅛ΠHOωhiHO⅛-PWeiHO八P2uoxao八POHOXOO八P2H0X00八二C-OSebuzzerandre-ayP2H0X80八POHOXFF八P2H0X00八 TimerO-nip'Mms TimeIM-PIg Dsl302l-niφ()-if(Af24c02lread(6HHl)u⅛≡⅛⅛⅛w⅛⅛55A¾〉⅛>⅛≡≡s宀 EAHP fogHO-λ6⅛+) 宀 mim⅛HAf24c02lreade De-ayIomso- EAHP AT24cO2⅛妄血 while (1) { EA=0; miao=Read_Ds1302(0x81); fen=Read_Ds1302(0x83); shi=Read_Ds1302(0x85); EA=1; //时间显示部分 time_display[0]=smg_du[shi/16];time_display[1]=smg_du[shi%16];time_display[2]=0x40; time_display[3]=smg_du[fen/16];time_display[4]=smg_du[fen%16];time_display[5]=0x40;time_display[6]=smg_du[miao/16];time_display[7]=smg_du[miao%16]; //测试显示部分test_display[0]=0;test_display[1]=0;test_display[2]=smg_du[mima[5]]; test_display[3]=smg_du[mima[4]];test_display[4]=smg_du[mima[3]];test_display[5]=smg_du[mima[2]]; test_display[6]=smg_du[mima[1]];test_display[7]=smg_du[mima[0]]; if(((shi/16==2)&((shi%16==2)|(shi%16==3)))|((shi/16==0)&(shi%16<7))) { mode=2;//密码门状态 els
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 51 单片机 智能 门禁 系统