IC卡门禁控制系统设计基于51单片机.docx

上传人:b****4 文档编号:5316581 上传时间:2023-05-08 格式:DOCX 页数:23 大小:148.66KB
下载 相关 举报
IC卡门禁控制系统设计基于51单片机.docx_第1页
第1页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第2页
第2页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第3页
第3页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第4页
第4页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第5页
第5页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第6页
第6页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第7页
第7页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第8页
第8页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第9页
第9页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第10页
第10页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第11页
第11页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第12页
第12页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第13页
第13页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第14页
第14页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第15页
第15页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第16页
第16页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第17页
第17页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第18页
第18页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第19页
第19页 / 共23页
IC卡门禁控制系统设计基于51单片机.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

IC卡门禁控制系统设计基于51单片机.docx

《IC卡门禁控制系统设计基于51单片机.docx》由会员分享,可在线阅读,更多相关《IC卡门禁控制系统设计基于51单片机.docx(23页珍藏版)》请在冰点文库上搜索。

IC卡门禁控制系统设计基于51单片机.docx

IC卡门禁控制系统设计基于51单片机

门禁控制系统设计

 

学院名称:

郑州轻工业学院轻工职业学院

专业:

机电工程系

学号:

*****

******

指导教师:

张亚琼(高级讲师)

 

【摘要】本设计是利用T7122M-I工业级ID读卡模块实现的门禁控制器,具有存储一张管理卡和多张用户卡的功能,同时管理人员还可以通过按键更改管理卡,增加、删除用户卡等操作,门禁刷卡控制刷卡距离约为5—12CM。

关键词:

门禁系统、T7122M-I工业级读卡模块。

 

第1章门禁系统的概述

1.1门禁系统概念

出入口门禁控制系统采取以感应卡来取代用钥匙开门的方式。

使用者用一张卡可以打开多把门锁,对门锁的开启也可以有一定的时间限制。

如果卡丢失了,不必更换门锁,只需将其从控制主机中注销。

出入口门禁控制系统是通过对出入口的准入情况进行控制、管理和记录的设备,对何人何时在何地进行详细跟踪,以实现中心对出入口的24小时控制、监视及管理。

1.2门禁系统的特点

系统将ID卡技术、计算机控制技术与电子门锁有机结合,用ID卡替代钥匙,配合计算机实现智能化门禁控制和管理,有效的解决了传统门锁的使用繁琐和无法信息记录等不足,利用数据控制器采集的数据实现数字化管理可为内部人力资源的有效管理等带来意想不到的效果。

电子钥匙:

授权后的ID卡即可当作电子钥匙,将此电子钥匙感应器前一晃,控制器对该卡进行身份验证,验证合法后即控制电子门锁自动打开。

开门权限:

按门设置:

可以根据持卡人身份权限设定有效开门区域(控制器号码)。

系统可设有最高权限卡,该卡可以打开系统辖区内所有电子门锁。

自动报警:

非法使用卡或强行打开门锁等非正常情况下系统会将自动发出报警信号,系统将自动记录非常状况的时间、门号、状态等详细信息,确保门锁安全和事后查证。

第2章门禁系统的设计要求

2.1设计要求

(1)读卡功能

(2)添加管理卡功能

(3)增加、删除用户卡功能

(4)更改管理卡

(5)清除所有用户卡

(6)键盘控制管理卡操作

(7)蜂鸣器实现刷卡、按键提示

第3章门禁系统的方案论证

3.1门禁系统的总体方案

本系统由51系列单片机AT89S52、按键、蜂鸣器、T7122M-I读卡等模块构成。

实现了存储一张管理卡和多张用户卡的功能;同时管理人员还可以通过按键更改管理卡,增加用户卡,删除用户卡,清空所有用户卡等。

因为门禁刷卡控制刷卡距离随着补尝电容的改变而改变(补尝电容大约300PF),所以最大的刷卡距离约为5—12CM;对于非管理卡或用户卡,本门禁控制器不与响应;每个按键控制器都有相应的提示音进行提示操作。

正常使用时,用户持卡靠近读卡天线,门禁控制器读入卡号,并与存储在内部的卡号比较,如果有相同的卡号,说明此卡合法,门禁机响一长音,提示成功,如果读卡失败,而不响应。

总体系统结构图如图3-1

 

 

图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

4.2键盘控制部分

采用串并转换电路的键盘形式

(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:

清除所有用户卡

4.3蜂鸣器控制部分

1、蜂鸣器原理图如下所示:

图4-3蜂鸣器原理图

2、工作原理

单片机通过P37来控制蜂鸣器的工作与关闭。

当P3.7=1时,PNP三极管关闭,蜂鸣器停止工作[4]。

当P3.7=0时,PNP三级管导通,蜂鸣器开始工作[4]。

从而单片机只需要P3.7输出0或者1开控制鉴别鸣器即可。

3、功能说明

(1)刷卡时蜂鸣器响一声,说明读到用户卡。

(2)刷卡时蜂鸣器响两块,说明读到管理卡。

(3)相应的按键时给于相应的提示音。

(4)蜂鸣器没有响应,说明没有读到卡。

4.4T7122M-I工业级读卡模块

1、应用电路简图

图4-4

2、数据输出格式

共输出48Bits,即6个字节。

第一字节为ID卡识别码,第二至第五字节为卡号,最后一个字节为前五个字节的校验和。

校验和运算变量类型为BYTE类型,运算过程进位被丢弃。

选择同步串行输出方式时,每个字节中高位先输出;选择异步串行输出时,每个字节中低位先输出。

输出波特率均为9600Bits/S。

3、数据输出波形

图4-5

4、功能说明

(1)通过读卡天线,刷卡时读取ID卡卡号。

(2)通过SO脚把卡号传到单片机芯片管脚上。

(3)通过CP脚传送低电平说明有卡刷到。

第5章门禁系统的软件部分

程序循环中主要工作为判断是否有刷卡,若有刷卡则断判是什么卡,然后进行相应的处理。

门禁系统的总流程图5-1:

 

图5-1

管理卡功能子程序流程图如图5-2

图5-2

第6章门禁系统的软、硬件调试

完成了硬件的设计、制作和软件编程之后,要使系统能够按设计正常运行,必须进行硬件调试和软件调试。

6.1硬件调试

硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。

(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)外界的电磁杂波也会对读卡产生干扰。

 

结论

本门禁控制器用于鉴别刷卡人员,管理人员出入。

功能可实现存储一张管理卡、多张用户卡。

通过按键开关可以进行各种卡管理操作,如更改管理卡、增加单个用户卡、删除单个用户卡、清空所有用户卡等。

 

致谢

本次的毕业设计,从开题报告开始到现在已经三个多月了,这是大学期间一次比较完整的学习过程。

通过本次毕设,不但学习了单片机技术与嵌入式系统、C51程序编写等学科,掌握了KEIL8、protelDXP等软件工具。

更重要的是学会了分析问题、运用所学知识解决现实问题的方法。

在本科毕业论文完成之际,我要对所有帮助过我的人们表示诚挚的谢意!

首先,对我的导师涂二生致以衷心的感谢!

从上个学期联系做毕设之初开始至今,从论文的选题、开题报告和中期报告的书写,到论文的组织、撰写、修改和完善,涂老师都给了我非常多的关心、理解、指导和帮助。

其次要特别感谢院的辅导员卢老师和其他老师。

特别是在我中途离开学校前往公司实习期间,卢老师们仍然用邮件、电话等方式来通知我们,指导毕设论文的开展。

卢老师严谨的治学态度和高尚的个人修养将永远值得我学习和敬仰。

最后,非常感谢我的舍友刘何平、庄阳江、钟俊、曹振华、张霖,感谢他们在生活上和毕设过程中曾给过我的启迪与帮助。

最后真诚感谢于百忙中审阅论文、参与答辩并给予我指导的各位老师。

谢谢大家!

 

参考文献

[1]谢振辉,《改进式MCS-51单片机实验》,北京,科学出版社,2006,76-99

[2]赵建领《51系列单片机开发宝典》北京,电子工业出版社,2007,78-108

[3]杨恢先,黄辉先《单片机应用系统设计与仿真调试》北京,北京航空航天大学出版社,2005,75-103

[4]王为青,程国钢,《单片机KEILCX51应用开发技术》北京,人民邮电出版社,2007,51-76,98-120

[5]李玉梅《基于MCS-51系列单片机原理的应用设计》北京,国防工业出版社,2006,39-76

谭浩强《C程序设计》北京,清华大学出版社,1998,85-124。

[6]李群芳,黄建《单片机微型计算机与接口技术》北京,电子工业出版社,2001,54-94。

[7]陈龙三,《8051单片机C语言控制与应用》北京,清华大学出版社,2002,59-86。

[8]张大波《嵌入式系统原理设计与应用》北京,机械工业出版社,2004-11,36-78。

[9]沙占友,孟志永,王彦明《单片机外围电路设计》北京,电子工业出版社,2006,44-85。

 

AccessControlSystem

 

College:

PhysicsandElectricalandMechanicalEngineeringCollege

Professional:

ElectronicandInformationEngineering:

Xue:

200402204

Name:

LiuLongrui

Instructor:

TuErsheng(SeniorEngineer)

 

【ABSTRACT】ThedesignistouseT7122M-I-classindustrialIDcardreadertoachievetheaccesscontrolmodulecontroller,amemorycardandamanagementcardusersmorethanthefunction,managementcanalsochangethemanagementofkeycards,toadd,deleteusercardsOperation,accesscontrolcardreaderdistanceofabout5-12CM.

 

Keywords:

AccessControlSystem、T7122M-industrialgradereadermodule,

 

附录一:

系统程序

#include

#include

sbitcp=P1^0;

sbitsck=P1^1;

sbitso=P1^2;

sbitbeep=P3^7;

sbitled5=P0^5;

sbitKD_KEY=P2^6;

sbitKEY_SDA=P2^7;

sbitKEY_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:

//按键1

feib();

chcardno[b][5]=cardno[5];//添加用户卡

cardno[5]=0;

b++;

break;

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();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2