单片机课程设计报告.docx

上传人:b****3 文档编号:4233627 上传时间:2022-11-28 格式:DOCX 页数:29 大小:226.79KB
下载 相关 举报
单片机课程设计报告.docx_第1页
第1页 / 共29页
单片机课程设计报告.docx_第2页
第2页 / 共29页
单片机课程设计报告.docx_第3页
第3页 / 共29页
单片机课程设计报告.docx_第4页
第4页 / 共29页
单片机课程设计报告.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

单片机课程设计报告.docx

《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。

单片机课程设计报告.docx

单片机课程设计报告

课程设计报告

设计题目:

单片机门禁系统的设计

摘要:

门禁系统采用89C52单片机作为控制核心,外围加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路等。

采用射频卡完成刷卡进门,按钮出门功能。

本系统设计简单、性能优良,具有一定的实用性。

关键词:

门禁;电控锁;控制

(一)、系统设计

1.系统方案的比较

(1)选题论证

在现今社会,随着人们对门禁系统各方面要求的不断提高,门禁系统的应用范围越来越广泛,因此,门禁系统的研发已成为现代科技领域的一个热门课题。

目前,门禁系统已成为安全防范系统中极其重要的一部分,在一些发达国家,门禁系统正以远远高于其它类安防产品迅猛发展;门禁系统之所以能在众多安防产品中脱颖而出,根本原因是因为其改变了以往安防产品,如:

闭路监控,防盗报警等被动的安防方式,以主动的控制替代了被动监视的方式,通过对主要通道的控制,大大的防止了罪犯从正常通道的侵入,并且可以在罪案发生时通过对通道门的控制限制罪犯的活动范围,制止犯罪或减少损失。

此外,人们对门禁系统的应用已不局限在单一的出入口控制,而且还要求它不仅可应用于智能大厦或智能社区的门禁控制、考勤管理、安防报警、停车场控制、电梯控制、楼宇自控等,还可与其它系统联动控制等多种控制功能。

(2)方案选择

门禁系统有许多种方案:

主要有联网和不联网型。

联网型:

结构图如图示

 

联网型门禁系统的优点:

1实时联网

2刷卡后立即把数据传输到主机上;

3便于查询并能生成报表;

缺点:

1计算机要求24小时开机;

2计算机或管理机万一有故障系统瘫痪;

3有问题影响面大。

不联网型门禁系统的优点:

单台刷卡机就能工作,不用布线,操作简单方便。

缺点:

不便于查询。

根据以上分析,我们的课题选择了不联网型。

因为此设计简单,提交作品方便,易操作。

(3)射频卡的选择

目前市面上的卡有很多种类:

条码、磁卡、接触式IC卡,非接触式IC卡等,条码和磁卡,在超市和银行方面应用的比较多,接触式IC卡,以前在公共电话中用的比较多,但接触式IC卡,芯片外露易坏、易折,而非接触式IC卡既射频卡,它把芯片和线圈封装卡片内,不容易损坏、不怕恶劣的环境,现在社会上很流行,可靠性也高。

根据卡的分析,选择目前流行最广,可靠性高,成本低的只读卡,即采用EM4000型的ID卡。

(二)硬件电路的设计

流程图:

(1)门禁系统主要组成:

由CPU、复位电路、电源指示、工作指示、振荡电路、蜂鸣器电路、出门按钮、读卡模块、电机转动模块组成。

(2)门禁系统的工作原理:

首先,按下开始按键,电源指示灯亮起。

当刷卡时,蜂鸣器响一声,读卡权限获得允许,显示灯点开始闪,同时继电器动作使电机转动,延时5秒时间后继电器再次动作使电机停止运转,显示灯熄灭。

当非法卡刷卡时,显示灯将一直闪,并且蜂鸣器将发出报警声。

(三)主电路原理图:

(四)各部分电路原理

1开门电机电路:

•门控锁电路工作原理:

当P2.7口输出高电平时Q2导通,Q3截止,此时继电器的控制线圈为开路,继电器不动作。

门锁接于继电器常闭端,电机不转,门处于锁死状态。

•当P2.7口输出低电平时Q2截止,Q3导通,此时继电器的控制线圈闭合,继电器动作。

继电器常闭端断开,电机开始转动,门处于打开状态。

2蜂鸣器电路:

•工作原理:

•当P3.5输出高电平时,Q1截止,蜂鸣器回路开路,蜂鸣器不响。

•当P3.5输出低电平时,Q1导通,蜂鸣器回路闭合,蜂鸣器发出响声。

3开门按键电路:

(三)非接触式IC卡性能简介(M1)

一、主要指标

●容量为8K位EEPROM

●分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位

●每个扇区有独立的一组密码及访问控制

●每张卡有唯一序列号,为32位

●具有防冲突机制,支持多卡操作

●无电源,自带天线,内含加密控制逻辑和通讯逻辑电路

●数据保存期为10年,可改写10万次,读无限次

●工作温度:

-20℃~50℃(湿度为90%)

●工作频率:

13.56MHZ

●通信速率:

106KBPS

●读写距离:

10cm以内(与读写器有关)

二、存储结构

1、M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示:

块0

数据块

0

扇区0

块1

数据块

1

块2

数据块

2

块3

密码A存取控制密码B

控制块

3

块0

数据块

4

扇区1

块1

数据块

5

块2

数据块

6

块3

密码A存取控制密码B

控制块

7

      ∶

      ∶

0

数据块

60

扇区15

1

数据块

61

2

数据块

62

3

密码A存取控制密码B

控制块

63

2、第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。

3、每个扇区的块0、块1、块2为数据块,可用于存贮数据。

数据块可作两种应用:

★用作一般的数据保存,可以进行读、写操作。

★用作数据值,可以进行初始化值、加值、减值、读值操作。

4、每个扇区的块3为控制块,包括了密码A、存取控制、密码B。

具体结构如下:

A0A1A2A3A4A5FF078069B0B1B2B3B4B5

密码A(6字节)存取控制(4字节)密码B(6字节)

5、每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。

存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下:

块0:

C10C20C30

块1:

C11C21C31

块2:

C12C22C32

块3:

C13C23C33

三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如

进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。

三个控制

位在存取控制字节中的位置,以块0为例:

对块0的控制:

bit76543210

字节6

C20_b

C10_b

字节7

C10

C30_b

字节8

C30

C20

字节9

(注:

C10_b表示C10取反)

存取控制(4字节,其中字节9为备用字节)结构如下所示:

bit76543210

字节6

C23_b

C22_b

C21_b

C20_b

C13_b

C12_b

C11_b

C10_b

字节7

C13

C12

C11

C10

C33_b

C32_b

C31_b

C30_b

字节8

C33

C32

C31

C30

C23

C22

C21

C20

字节9

(注:

_b表示取反)

6、数据块(块0、块1、块2)的存取控制如下:

控制位(X=0..2)

访问条件(对数据块0、1、2)

C1X

C2X

C3X

Read

Write

Increment

Decrement,transfer,

Restore

0

0

0

KeyA|B

KeyA|B

KeyA|B

KeyA|B

0

1

0

KeyA|B

Never

Never

Never

1

0

0

KeyA|B

KeyB

Never

Never

1

1

0

KeyA|B

KeyB

KeyB

KeyA|B

0

0

1

KeyA|B

Never

Never

KeyA|B

0

1

1

KeyB

KeyB

Never

Never

1

0

1

KeyB

Never

Never

Never

1

1

1

Never

Never

Never

Never

(KeyA|B表示密码A或密码B,Never表示任何条件下不能实现)

例如:

当块0的存取控制位C10C20C30=100时,验证密码A或密码B正确后可读;

验证密码B正确后可写;不能进行加值、减值操作。

7、控制块块3的存取控制与数据块(块0、1、2)不同,它的存取控制如下:

密码A

存取控制

密码B

C13

C23

C33

Read

Write

Read

Write

Read

Write

0

0

0

Never

KeyA|B

KeyA|B

Never

KeyA|B

KeyA|B

0

1

0

Never

Never

KeyA|B

Never

KeyA|B

Never

1

0

0

Never

KeyB

KeyA|B

Never

Never

KeyB

1

1

0

Never

Never

KeyA|B

Never

Never

Never

0

0

1

Never

KeyA|B

KeyA|B

KeyA|B

KeyA|B

KeyA|B

0

1

1

Never

KeyB

KeyA|B

KeyB

Never

KeyB

1

0

1

Never

Never

KeyA|B

KeyB

Never

Never

1

1

1

Never

Never

KeyA|B

Never

Never

Never

例如:

当块3的存取控制位C13C23C33=100时,表示:

密码A:

不可读,验证KEYA或KEYB正确后,可写(更改)。

存取控制:

验证KEYA或KEYB正确后,可读、可写。

密码B:

验证KEYA或KEYB正确后,可读、可写。

三、工作原理

卡片的电气部分只由一个天线和ASIC组成。

天线:

卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。

ASIC:

卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个

8K位EEPROM组成。

工作原理:

读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。

四、M1射频卡与读写器的通讯

 

复位应答

Request

防冲突机制

AnticollisionLoop

选择卡片

SelectTag

改变扇区

三次相互验证

Authentication

中止

Halt

减值

decrement

加值

increment

写块

Writeblock

读块

Read

不改变扇区

复位应答(Answertorequest)

M1射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。

防冲突机制(AnticollisionLoop)

当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。

选择卡片(SelectTag)

选择被选中的卡的序列号,并同时返回卡的容量代码。

三次互相确认(3PassAuthentication)

选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。

(在选择另一扇区时,则必须进行另一扇区密码校验。

对数据块的操作

读(Read):

读一个块;

写(Write):

写一个块;

加(Increment):

对数值块进行加值;

减(Decrement):

对数值块进行减值;

存储(Restore):

将块中的内容存到数据寄存器中;

传输(Transfer):

将数据寄存器中的内容写入块中;

中止(Halt):

将卡置于暂停工作状态;

(四)程序:

#include"reg52.h"

#include

#include"lcd.h"

#include"main.h"

#include"mfrc522.h"

typedefstructRecord{

unsignedcharName[16];

unsignedcharNo[16];

unsignedlongCardID;

}RECORD;

codeRECORDstudent[3]={

"Name:

LingLong","No.:

3080432021",0x501909e0,

"Name:

ZhangSan","No.:

3080432022",0xacebd854,

"Name:

LiSi","No.:

3080432023",0x87654321

};

chargetData(void)

{

charc;

while(!

RI);

c=SBUF;

RI=0;

return(c);

}

//-------------------------------------------------

charsendData(charc)

{

while(!

TI);

TI=0;

return(SBUF=c);

}

//蜂鸣器函数

voidbeep()

{

unsignedchari=0;

EA=0;

for(i=0;i<200;i++)

{

sond=0;

delayuS(20);

sond=1;

delayuS(20);

}

EA=1;

}

unsignedcharidataRevBuffer[1];//调试用

unsignedchardataSerBuffer[1];//调试用

bitCmdValid;//调试用

/////////////////////////////////////////////////////////////////////

//系统初始化

/////////////////////////////////////////////////////////////////////

voidInitializeSystem()

{

TMOD=0x20;//mode2autoreload

TL1=0xfd;

TH1=0xfd;//baudRate:

9600

SCON=0x52;//sm0,sm1,sm2,ren,tb,rb8,ti,ri

PCON&=0x7f;//smod=0;

TR1=1;//timer1reset

PcdReset();

PcdAntennaOff();

PcdAntennaOn();

M500PcdConfigISOType('A');

}

#defineIDLE(0)

#defineCARDOK

(1)

#defineIDOK0

(2)

#defineIDOK1(3)

#defineIDOK2(4)

#defineIDERROR0(5)

#defineIDERROR1(6)

#defineIDERROR2(7)

#defineUNLOCK(8)

unsignedcharstate=IDLE;

unsignedcharbuf[4];

//主函数

voidmain()

{

unsignedcharbaud,i,Debug,result,updated;

unsignedlongltmp;

Debug=0;

//打开电源指示灯

Power=0;

//初始化单片机

InitializeSystem();

CARD_LED=0;

beep();

delayms0(200);

CARD_LED=0;

delayms0(200);

CARD_LED=1;

while

(1)

{

switch(state)

{

caseIDLE:

//刷新显示

PcdRequest(0x26,buf);

sendData(buf[0]);

sendData(buf[1]);

delayms0(100);

if(buf[0]!

=0x04)

{

PcdRequest(0x52,buf);

}

delayms0(100);

sendData(buf[0]);

sendData(buf[1]);

if(buf[0]==0x04)

{

delayms0(200);

state=CARDOK;

}

break;

caseCARDOK:

PcdAnticoll(buf);

sendData(0x55);

sendData(buf[0]);

sendData(buf[1]);

sendData(buf[2]);

sendData(buf[3]);

//查找学生记录

ltmp=(((unsignedlong)buf[0])<<24)|(((unsignedlong)buf[1])<<16)|(((unsignedlong)buf[2])<<8)|(((unsignedlong)buf[3]));

result=0;

for(i=0;i<3;i++)

if(student[i].CardID==ltmp)

{

result=1;

break;

}

if(result==1)

{

state=IDOK0;

}

else

{

state=IDERROR0;

}

break;

caseIDOK0:

delayms0(50);

PcdRequest(0x26,buf);

delayms0(50);

if(buf[0]!

=0x04)

{

PcdRequest(0x52,buf);

}

if(buf[0]==0x04)

{

PcdAnticoll(buf);

//查找学生记录

ltmp=(((unsignedlong)buf[0])<<24)|(((unsignedlong)buf[1])<<16)|(((unsignedlong)buf[2])<<8)|(((unsignedlong)buf[3]));

result=0;

for(i=0;i<3;i++)

if(student[i].CardID==ltmp)

{

result=1;

break;

}

if(result==1)

{

beep();

state=IDOK1;

}

else

state=IDLE;

}

break;

caseIDOK1:

state=IDOK2;

break;

caseIDOK2:

CARD_LED=!

CARD_LED;

for(i=0;i<10;i++)

{

delayms0(10);

if((key1==0)||(key2==0))

{

state=UNLOCK;

}

}

break;

caseIDERROR0:

delayms0(50);

PcdRequest(0x26,buf);

delayms0(50);

if(buf[0]!

=0x04)

{

PcdRequest(0x52,buf);

}

if(buf[0]==0x04)

{

PcdAnticoll(buf);

//查找学生记录

ltmp=(((unsignedlong)buf[0])<<24)|(((unsignedlong)buf[1])<<16)|(((unsignedlong)buf[2])<<8)|(((unsignedlong)buf[3]));

result=0;

for(i=0;i<3;i++)

if(student[i].CardID==ltmp)

{

result=1;

break;

}

if(result==1)

{

updated=1;

state=IDLE;

}

else

state=IDERROR1;

}

break;

caseIDERROR1:

state=IDERROR2;

break;

caseIDERROR2:

beep();

CARD_LED=!

CARD_LED;

if((key1==0)||(key2==0))

{

state=IDLE;

updated=1;

CARD_LED=1;

}

break;

caseUNLOCK:

Relay=0;

CARD_LED=0;

delayms0(1500);

CARD_LED=1;

Relay=1;

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1