门禁控制系统设计.docx
《门禁控制系统设计.docx》由会员分享,可在线阅读,更多相关《门禁控制系统设计.docx(21页珍藏版)》请在冰豆网上搜索。
![门禁控制系统设计.docx](https://file1.bdocx.com/fileroot1/2023-1/28/a449fd10-5307-49ba-8502-307fe883325c/a449fd10-5307-49ba-8502-307fe883325c1.gif)
门禁控制系统设计
门禁控制系统课程设计
姓名:
周炜燚
班级:
自动化101
学号:
73
门禁控制系统设计
第1章门禁系统的概括
4
门禁系统观点4
门禁系统的特色4
第2章门禁系统的设计要求4
设计要求
4
第3章门禁系统的方案论证
4
门禁系统的整体方案
4
门禁系统的各个方案论证
5
单片机控制芯片模块
5
键盘控制块5
第4章门禁系统的硬件部分
6
主控芯片部分
6
键盘控制部分
7
蜂鸣器控制部分
8
工业读卡模块
8
第5章门禁系统的软件部分
9
第6章门禁系统的软、硬件调试
12
硬件调试
12
软件调试
12
软、硬件设计注意事项
12
结
论
13
致
谢
13
参照文件
14
ABSTRACT15
附录1:
系统程序。
16
第1章门禁系统的概括
门禁系统观点
进出口门禁控制系统采纳以感觉卡来代替用钥匙开门的方式。
使用者用一张卡能够翻开
多把门锁,对门锁的开启也能够有必定的时间限制。
假如卡丢掉了,不用改换门锁,只
需将其从控制主机中注销。
进出口门禁控制系统是经过对进出口的准入状况进行控制、
管理和记录的设施,对何人何时在何地进行详尽追踪,以实现中心对进出口的24小时
控制、监督及管理。
门禁系统的特色
系统将ID卡技术、计算机控制技术与电子门锁有机联合,用ID卡代替钥匙,配共计算
机实现智能化门禁控制和管理,有效的解决了传统门锁的使用繁琐和没法信息记录等不足,利用数据控制器收集的数据实现数字化管理可为内部人力资源的有效管理等带来意想不到的成效。
电子钥匙:
受权后的ID卡即可看作电子钥匙,将此电子钥匙感觉器前一晃,控制器对该卡进行身份考证,考证合法后即控制电子门锁自动翻开。
开门权限:
按门设置:
能够依据持卡人身份权限设定有效开门地区(控制器号码)。
系统可设有最高权限卡,该卡能够翻开系统辖区内全部电子门锁。
自动报警:
非法使用卡或强行翻开门锁等非正常状况下系统会将自动发出报警信号,系统将自动记录特别状况的时间、门号、状态等详尽信息,保证门锁安全和过后查证。
第2章门禁系统的设计要求
设计要求
(1)读卡功能
(2)增添管理卡功能
(3)增添、删除用户卡功能
(4)改正管理卡
(5)消除所实用户卡
(6)键盘控制管理卡操作
(7)蜂鸣器实现刷卡、按键提示
第3章门禁系统的方案论证
门禁系统的整体方案
本系统由51系列单片机AT89S52、按键、蜂鸣器、T7122M-I读卡等模块组成。
实现了储存一张管理卡和多张用户卡的功能;同时管理人员还能够经过按键改正管理卡,增添用户卡,删除用户卡,清空所实用户卡等。
由于门禁刷卡控制刷卡距离跟着补尝电容的
改变而改变(补尝电容大概300PF),因此最大的刷卡距离约为5—12CM;关于非管理卡或用户卡,本门禁控制器不与响应;每个按键控制器都有相应的提示音进行提示操作。
正常使用时,用户持卡凑近读卡天线,门禁控制器读入卡号,并与储存在内部的卡号比
较,假如有同样的卡号,说明此卡合法,门禁机响一长音,提示成功,假如读卡失败,而不响应。
总系统统构造图如图3-1
读
门
禁
蜂鸣器
卡
控
模
块
制
接
口
下
位
电
PC
路
机
图3-1门禁系统整体构造框图
3.2门禁系统的各个方案论证
3.2.1单片机控制芯片模块
方案一:
PIC16C84单片机芯片。
它是8位CMOSEEPROM微控制器。
它有高性能的近似
于RISC的指令,共有35条单字节的指令,全部的指令除程序分支指令需要两个指令周
期外,都只要要一个指令周期。
程序指令的宽度为14位,在芯片内有1K×14的EEPROM
程序储存器。
方案二:
At89s52芯片。
它是一种低功耗、高性能CMOS8位微控制器,拥有8K在系
统可编程Flash储存器。
易失性储存与工业80C51产品指令和引脚完全兼容。
在单芯片上,拥有灵便的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵巧、超有效的解决方案。
鉴于以上所述,依据系统需要及所学知识我选方案二。
3.2.2键盘控制模块
方案一:
独立式键盘,如图3-2。
它是利用单片机I/O口读取口的电平高低来判断能否有键按下,这类方式的弊端是占用的I/O口数许多。
且对键盘办理的时候波及到了一个重要的过程,那就是键盘的颤动问题[1]。
图3-2
方案二:
鉴于串并变换电路的键盘形式,如图3-3。
7SLS164是串并转变芯片,它把SDA(P10)上的串行数据转变为8为的并行数据,S1/S2/S3/S4/S5/S6/S7/S8作为键盘扫描线,P11为键盘数据回送线。
键盘扫描时,从S1~S7一次输出低电平,而后检测P11(回送线),假如P11(回送线)为高电平则表示无键闭合,假如P11(回送线)等于0,将S1~S7上的数据经过简单办理获得对应的键值。
[5]
如图
3-3
方案三:
队列扫描的键盘形式,如图3-4。
列线经过电阻接正电源,并将行线所接的单片机I/O口作为输出端,而列线所接的I/O口则作为输入。
当按键没有按下时,全部列的输出端都是高电平,代表没有键按下。
行线输出时低电平,一旦有键按下时,则输入
线就会被拉低,这样经过读入输入线的状态就能够得悉能否有键按下了[6]。
图3-4
鉴于以上所述,依据系统需要我选方案二。
第4章门禁系统的硬件部分
4.1主控芯片部分
1、原理图
图4-1
键盘控制部分
采纳串并变换电路的键盘形式
(1)原理图
图4-2串并变换电路的键盘形式
(2)工作原理
7SLS164是串并转变芯片,它把SDA(P27)上的串行数据转变为8为的并行数据,
S1/S2/S3/S4/S5/S6/S7/S8作为键盘扫描线,P26为键盘数据回送线。
键盘扫描时,从S1~S7一次输出低电平,而后检测P26(回送线),假如P26(回送线)为高电平则表示无键闭合,假如P26(回送线)等于0,将S1~S7上的数据经过简单办理获得对应的键值。
(3)功能说明
KEY1:
增添用户卡
KEY2:
删除用户卡
KEY3:
删除管理卡
KEY4:
消除所实用户卡
蜂鸣器控制部分
1、蜂鸣器原理图以下所示:
图4-3蜂鸣器原理图
2、工作原理
单片机经过P37来控制蜂鸣器的工作与封闭。
当=1时,PNP三极管封闭,蜂鸣器停止工作[4]。
当=0时,PNP三级管导通,蜂鸣器开始工作[4]。
进而单片机只要要输出0或许1开控制鉴识鸣器即可。
3、功能说明
(1)刷卡时蜂鸣器响一声,说明读到用户卡。
(2)刷卡时蜂鸣器响两块,说明读到管理卡。
(3)相应的按键时给于相应的提示音。
(4)蜂鸣器没有响应,说明没有读到卡。
工业级读卡模块
1、应用电路简图
图4-4
2、数据输出格式
共输出48Bits,即6个字节。
第一字节为ID卡辨别码,第二至第五字节为卡号,最后一
个字节为前五个字节的校验和。
校验和运算变量种类为BYTE种类,运算过程进位被丢
弃。
选择同步串行输出方式时,每个字节中高位先输出;选择异步串行输出时,每个字节中低位先输出。
输出波特率均为9600Bits/S。
3、数据输出波形
0.5ms
0.5ms
CP
SCK
SO
bit7
bit6
bit5
bit4
bit3
同步串行输出波形(Tsck=104us)
图4-5
4、功能说明
(1)经过读卡天线,刷卡时读取ID卡卡号。
(2)经过SO脚把卡号传到单片机芯片管脚上。
(3)经过CP脚传递低电平说明有卡刷到。
第5章门禁系统的软件部分
程序循环中主要工作为判断能否有刷卡,如有刷卡则断判是什么卡,而后进行相应的办理。
门禁系统的总流程图5-1:
开始
定义货仓区
AT89S52、准时器0、
中止初始化
增添该卡为管理
卡,蜂鸣器响两
声
能否有刷卡
能否有管理卡
是不是管理卡
蜂鸣器响三声
是不是用户卡
管理卡功能子程序蜂鸣器响一声
图5-1
管理卡功能子程序流程图如图5-2
能否有卡刷
蜂鸣器响一声,定
时器T0起动
能否有按键
蜂鸣器响
蜂鸣器响
蜂鸣器响
蜂鸣器响四
一声,添
二声,删
三声,删
声,清空全部
加用户卡
除用户卡
除管理卡
用户卡
准时5秒能否到
返回
图5-2
第6章门禁系统的软、硬件调试
达成了硬件的设计、制作和软件编程以后,要使系统能够按设计正常运转,一定进行硬件调试和软件调试。
硬件调试
硬件调试的主要任务是清除硬件故障,此中包含设计错误和工艺性故障。
(1)脱机检查。
依据电路原理图用万用表逐渐检测电路板中全部器件的各引脚,特别是
电源的连结能否正确;检查各开关按键能否能正常工作;为了保护芯片,应先对各IC
座(特别是电源端)电位进行检查,确立其无误后再插入芯片检查[3]。
(2)联机调试。
临时拔掉AT89S52芯片,将仿真器的40芯仿真插头插入AT89S52的芯片插座进行调试,查验键盘电路能否知足设计要求。
能够经过一些简单的测试软件来查察
接口工作能否正常。
比如,我们能够设计一个能过按键控制蜂鸣器声响检测键盘电路的利害。
假如运转测试结果与预期不符,很简单依据故障现象判断故障原由并采纳针对性
举措清除故障。
6.2.软件调试
软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发
现硬件故障。
程序的调试应一个模块一个模块地进行,第一独自调试各功能子程序,查验程序能否能够实现预期的功能,接口电路的控制能否正常等;最后逐渐将各子程序连结起来总调。
联调需要注意的是,各程序模块间可否正确传达参数,特别要注意各子程序的现场保护与恢复。
调试的基本步骤以下:
(1)编写蜂鸣程序程序,调试是蜂鸣器能否会响。
(2)编写简单程序调试刷卡时是读卡模块能否有读入。
(3)编写键盘控制程序,调试能否有键按下及其按键值。
(4)编写增添、删除用户卡程序,调试能否能实现。
(5)编写改正管理卡,消除所实用户卡程序,调试能否能实现。
(6)整体调试,看可否实现储存一张管理卡,多张用户卡。
经过按键可否实现增添、删除用户卡,改正管理卡,消除所实用户卡等设计要求。
6.3软、硬件设计注意事项
(1)读卡模块T7122M-I外面电源接触不良或许严重的电磁扰乱,则有可能有时使读卡模块内部软件跑飞。
(2)天线四周假如有金属存在,则工作频次将受影响,读卡距离也受影响,严重时读卡反响愚钝,甚至不可以读卡。
防止的方法是全部的金属资料尽量走开天线线圈,特别是
天线前面不可以有金属封板。
金属封板会障蔽电磁波,以致读卡完整无效。
天线后边假如有金属封板,则应当走开天线线圈起码3厘米以上。
(3)读卡模块与模板注意能否有共地。
(4)假如使用的电源性能不良,将惹起电压不稳,涟漪太大,对读卡距离产生影响。
(5)外界的电磁杂波也会对读卡产生扰乱。
结论
本门禁控制器用于鉴识刷卡人员,管理人员进出。
功能可实现储存一张管理卡、多张用户卡。
经过按键开关能够进行各样卡管理操作,如改正管理卡、增添单个用户卡、删除单个用户卡、清空所实用户卡等。
附录一:
系统程序
#include<>
#include<>
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
cp=P1^0;
sck=P1^1;
so=P1^2;
beep=P3^7;
led5=P0^5;
KD_KEY=P2^6;
KEY_SDA=P2^7;
KEY_CLK=P2^5;
unsignedcharchcardno[10][5]={0};
unsignedcharcardok;
unsignedcharj=0;
unsignedcharcount;
unsignedchara;
unsignedcharcardno[5]={0};
unsignedcharkey_value;
unsignedcharb=1;
//---------毫秒延时子程序----------
voiddelay2(unsignedcharms)
{unsignedchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
//---------蜂鸣器--------------
unsignedcharfeib(void)
{
beep=0;
led5=0;
delay2(250);
beep=1;
led5=1;
delay2(250);
}
voidsend(unsignedchara)
//判断是不是有键按下
{
unsignedchari;for(i=0;i<8;i++)
{
if(_crol_(a,i)&0x80)
KEY_SDA=1;
else
KEY_SDA=0;
KEY_CLK=0;
KEY_CLK=1;
}
}
unsignedcharkey(void)
//判断是第几键按下
{
unsignedcharbuffer,display_bit,i;
buffer=0xff;//赋初值为0xff
delay2(250);//延时去颤动
display_bit=0xfe;//扫描键盘
for(i=0;i<8;i++)
{
send(display_bit);
if(!
KD_KEY)//是此键按下吗
{
buffer=display_bit;//是,则保留其键值
return(i);
break;//退出
}
display_bit=_crol_(display_bit,1);
//检测下一键
}
}
//------同步串行口接收一字节-------
unsignedcharrx1byte()
{
chari;
charrxdata;
for(i=9;--i;)
{
rxdata<<=1;
while(sck==0)
//等候一直上涨沿
continue;
if(so==1)
//读数据
++rxdata;
while(sck==1)
continue;
}
returnrxdata;
}
//--------同步串行口接收-------
unsignedcharrx(void)
{
chari;
if(cp==1)
//检测
CP脚能否出现低电平
return;
EA=0;for(i=25;--i;)
//保证
//障蔽中止
CP的宽度大于时钟宽度
{
if(sck==0)
{EA=1;
return;
}
}
while(sck==1)//等候时钟线出现低电平
continue;
cardno[0]=rx1byte();//读第一个字节
cardno[1]=rx1byte();//读第二个字节
cardno[2]=rx1byte();
cardno[3]=rx1byte();
cardno[4]=rx1byte();
cardno[5]=rx1byte();//读第六个字节
while(cp==0)//等候CP脚恢复高电平
continue;
EA=1;
//读卡结束,校验卡号i=cardno[0]+cardno[1]+cardno[2]+cardno[3]+cardno[4];if(i=cardno[5])
{
cardok=1;
}
}
//---------------管理卡程序unsignedcharzjz(void){
-----------
chari=0;
while
(1)
{
rx();
P0=0XFF;
if(cardok==1)//判断能否有刷卡
{
cardok=0;
if(chcardno[0][5]==0)//判断能否有管理卡
{
feib();
feib();
chcardno[0][5]=cardno[5];//设计为管理卡
}
else
{
if(chcardno[0][5]==cardno[5])//判断是不是管理卡
{
feib();
feib();
feib();
delay2(250);
while
(1)
{
rx();
if(cardok==1)//判断能否有刷卡
{
feib();
cardok=0;
TR0=1;//起动准时器0
count=0;
break;
}
}
}
else
{
for(a=1;a<=b;a++)
{
if(chcardno[a][5]==cardno[5])//判断是不是用户卡
{
feib();
break;
}
}
}
}
}
}
}
//----------准时器子程序---------
voidtimer1(void)interrupt3
{
TH0=(65536-50000)/256;
TL0=(65526-50000)%256;
count++;
key_value=key();
switch(key_value)
{
case0:
//按键
feib();
chcardno[b][5]=cardno[5];//
cardno[5]=0;
b++;
break;
1
增添用户卡
case1:
//按键
2
feib();
feib();
for(a=1;a<=b;a++)
{
if(chcardno[a][5]==cardno[5])
{
chcardno[a][5]=chcardno[b][5];//删除用户卡
}
}
break;
case2:
//按键3
feib();
feib();
feib();
chcardno[0][5]=0;//删除管理卡
break;
case3:
//按键4
feib();
feib();
feib();
feib();
for(a=1;a<=b;a++)
{
chcardno[a][5]=0;//清空所实用户卡
}
break;
}
if(count==50)//准时5S能否到
{
TR0=0;
EA=0;
}
}
//--------------------主程序--------------
voidmain(void)
{
TMOD=0x01;//准时器0
TH0=(65536-50000)/256;//准时器0初始华
TL0=(65526-50000)%256;
EA=1;
ET0=1;
P0=0XFF;
zjz();
}