基于单片机的电子门禁系统设计论文(C语言程序)

更新时间:2024-05-21 10:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

洛阳理工学院毕业设计(论文)

基于单片机的门禁系统的设计

摘 要

门禁系统设计上采用单片机作为控制核心,它相当于计算机的CPU,它负责整个系统输入、输出信息的处理和储存、控制等等。单片机外围加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路以及LCD液晶显示电路等。

常见的门禁系统有:密码门禁系统,非接触卡门禁系统,指纹、虹膜及掌型等生物识别门禁系统。门禁系统近几年发展很快,被广泛应用于管理控制系统中。本次设计采用密码与非接触相结合,构成一个完整系统。门禁系统主要由CPU、工作指示电路、振荡电路、蜂鸣器电路、门控锁电路、矩阵键盘、读卡模块、显示模块等组成。该门禁系统采用射频卡完成刷卡进门,按刷卡出门等功能。其工作原理为:当刷卡时,蜂鸣器响一下,如卡权限获得允许,显示模块显示卡号,同时继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭。当按下出门按钮时,继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭,指示灯熄灭。当输入初始密码时,若输入正确,继电器动作将门锁打开,指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭。若输入错误,则蜂鸣器报警,几秒自动停止,也可手动关闭蜂鸣器。此外,程序中还增加了射频卡权限判断的功能,当遇到合法卡时显示卡号,门锁打开,延时10s自动关闭,当遇到非法卡时不显示卡号门锁不开。本系统设计简单、性能优良,具有一定的实用性。

关键词:门禁,射频卡,电控锁,液晶显示,单片机控制

I

洛阳理工学院毕业设计(论文)

Access Control System Design

ABSTRACT

Entrance guard system uses 89C52 single chip microcomputer as control core and periphery add a buzzer control circuit, open the door indicator light circuit, control circuit and control lock LCD display circuit, etc. Entrance guard system mainly by the CPU and reset circuit, the power indicative circuit, work instructions circuit, oscillating circuit, a buzzer circuit, door control circuit, go out and lock button reading card module, display module. The entrance guard system uses rf card complete charge take the door, according to credit to go out, and other functions. Its working principle is: when credit, a buzzer rang, such as card to be allowed to access, display module display card number, and at the same time relay action will open the door lock, indicator light, delay after period of time relay action will again only door lock, lights go out. When the press out button, the relay action will open the door lock, indicator light, delay after period of time relay action will again only door lock, lights go out. When the input password, if you input the correct, relay action will open the door lock, indicator light, delay after period of time relay action will lock door lock again. In addition, the program will also increase the rf card authority judgment function, when facing legal card showed the card number, door open, delay 10 s automatically shut off, when meeting the illegal CARDS don't show the card number locks don't open. The system is simple in design, good performance, and has practical value!

KEY WORDS: Access Control, Radio Frequency Card, Electronically Controlled Lock, LCD,MCU

II

洛阳理工学院毕业设计(论文)

目 录

前 言 .................................................................................................. 1 第1章 概述 ...................................................................................... 2

1.1 系统方案论证 ....................................................................... 2

1.1.1 选题论证 ..................................................................... 2 1.1.2 方案选择 ..................................................................... 2 1.1.3 CPU的选择 ................................................................. 3 1.1.4 射频卡的选择 ............................................................. 5 1.1.5 液晶显示的选择 ......................................................... 7

第2章 系统硬件电路设计 ............................................................. 11

2.1 系统电路原理 ..................................................................... 11

2.1.1 门禁系统主要模块 ................................................... 11 2.1.2 门禁系统工作原理 ................................................... 11 2.2 单片机资源分配 ................................................................. 12 2.3 最小系统的设计 ................................................................. 12 第3章 系统软件设计 ..................................................................... 14

3.1 Keil简介 .............................................................................. 14

3.1.1 KeilC51系统概述 ...................................................... 14 3.1.2 Keil软件的使用 ........................................................ 14 3.2 主程序分析 ......................................................................... 19 3.3 子程序分析 ......................................................................... 20

3.3.1 显示模块程序分析 ................................................... 21 3.3.2 键盘程序 ................................................................... 27 3.2.3 读卡程序 ................................................................... 33

结 论 ................................................................................................ 35 谢 辞 ................................................................................................ 36 参考文献 .......................................................................................... 37 附录 .................................................................................................. 38 外文资料翻译 .................................................................................. 46

III

洛阳理工学院毕业设计(论文)

前 言

随着科学技术的发展和企业管理模式的日趋成熟,高度科学化的企业管理已成为企业生存的有力保障。出入口门禁安全管理系统是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,光学,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施。适用各种机要部门,如银行、宾馆、机房、军械库、机要室、办公间,智能化小区,工厂等。 在数字技术网络技术飞速发展的今天,门禁技术得到了迅猛的发展。门禁系统早已超越了单纯的门道及钥匙管理,它已经逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用。

因此,将实现门禁考勤管理系统,充分的体现其优点,对人员进出、授权、查询、统计和防盗报警保安等多种功能,避免了早退,迟到,矿工等现象,使公司规律有序的进行,对考勤管理起到很大作用,减少了很大的麻烦。

也正是由于门禁系统实用性强,市场需求大,应用广泛,我们便选此作为研究设计的课题。

1

洛阳理工学院毕业设计(论文)

第1章 概述

1.1 系统方案论证

1.1.1 选题论证

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

目前,门禁系统已成为安全防范系统中极其重要的一部分,在一些发达国家,门禁系统正以远远高于其它类安防产品的进度迅猛发展;门禁系统之所以能在众多安防产品中脱颖而出,根本原因是因为其改变了以往安防产品,如:闭路监控,防盗报警等被动的安防方式,以主动的控制替代了被动监视的方式,通过对主要通道的控制,大大的防止了罪犯从正常通道的侵入,并且可以在罪案发生时通过对通道门的控制限制罪犯的活动范围,制止犯罪或减少损失。此外,人们对门禁系统的应用已不局限在单一的出入口控制,而且还要求它不仅可应用于智能大厦或智能社区的门禁控制、考勤管理、安防报警、停车场控制、电梯控制、楼宇自控等,还可与其它系统联动控制等多种控制功能。安装有门禁系统的建筑具有以下优点:

(1)具有对门户出入控制,保安防盗,报警等多种功能。

(2)方便内部员工或住户出入,同时杜绝外来人员随意进出,既方便了内部管理,又增强了内部的保安。

(3)门禁管理系统作为智能建筑中不可缺少的安保自动化的一部分,为用户提供一个高效的工作环境,从而提高管理的层次。

也正是由于门禁系统实用性强,市场需求大,应用广泛,我们便选此作为研究设计的课题。

1.1.2 方案选择

门禁系统有许多种方案:主要有联网和不联网型。 联网型:结构图如图1-1示:

2

洛阳理工学院毕业设计(论文)

图1-1 联网型结构图

联网型门禁系统的优点:

(1) 实时联网;

(2) 刷卡后立即把数据传输到主机上; (3) 便于查询并能生成报表。 缺点:

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

(2) 计算机或管理机万一有故障系统瘫痪; (3) 有问题影响面大。 不联网型门禁系统的优点:

(1) 单台刷卡机就能工作; (2) 不用布线; (3) 操作简单方便。 缺点:不便于查询。

根据以上分析,我们的课题选择了不联网型。因为此设计简单,提交作品方便,易操作。

1.1.3 CPU的选择

我们在这个课题的设计上采用了51单片机系统,之所以采用单片机系

3

洛阳理工学院毕业设计(论文)

统是由于成本较低,功能完全可以满足,发展也比较成熟且完善。而DSP、ARM系统虽然科技含量高于51单片机系统,但是其价格昂贵并且发展尚未成熟。因此,根据我们学的知识和市面上的应用,经过比较我们选择了技术成熟、价格便宜、设计简单、使用方便的单片机平台。

89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司可靠的CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品。它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统,属于89C51增强型单片机版本,集成了时钟输出和向上或向下计数器等更多的功能,适合于类似马达控制等应用场合。89C52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。89C52有PDIP(40pin)和PLCC(44pin)两种封装形式。

89C52引脚图如图2-2示:

图2-2 89C52的引脚图

4

洛阳理工学院毕业设计(论文)

89C52 单片机外部有32个端口可供用户使用,其功能如表2-3示:

表2-3 89C52外部端口功能表

端口 P0 P1 P2 引脚位置 39~32 1~8 21~28 10 11 12 P3 13 14 15 16 17 第一功能区 符号 功能 符号 AD0AD7 第二功能区 功能 地址/数据总线(低位) A8A15 RXD TX0 INT0 通用I/O口 INT1 T0 T1 WR RD 地址总线(高位) 串行通信发送口 串行通信接收口 外部中断0 外部中断1 计数器0输入端口 计数器1输入端口 外部储存器写使能 外部储存器读使能 P0.0~P0.7 通用I/O口 P1.0P1.7 P2.0P2.7 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 通用I/O口 通用I/O口

门禁系统数控部分采用89C52 单片机作为控制核心,其内部组成包括:一个8位的微处理器CPU及片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接;片内数据存储器8KB RAM低128字节,存放读/写数据;高128字节被特殊功能寄存器占用;片内程序存储器 ROM;四个8位并行I/O(输入/输出)接口P3 -P0,每个口可以用作输入,也可以用作输出;两个定时/计数器,每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制;五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口。

在89C52 单片机的基础上,外围增加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路以及1602显示电路等,构成了门禁系统的控制电路。

1.1.4 射频卡的选择

目前市面上的卡有很多种类:条码、磁卡、接触式IC卡,非接触式IC卡等,条码和磁卡,在超市和银行方面应用的比较多,接触式IC卡,以前在公共电话中用的比较多,但接触式IC卡,芯片外露易坏、易折,而

5

洛阳理工学院毕业设计(论文)

非接触式IC卡既射频卡,它把芯片和线圈封装卡片内,不容易损坏、不怕恶劣的环境,现在社会上很流行,可靠性也高。

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

设计上我们采用ID射频卡读卡器。EM9913BF 125KHz感应式读卡模组是针对125KHz非接触式RFID晶片而设计的读卡模组,它能针对目前市面上125KHz非接触式RFID晶片如凌航科技GK4001晶片或其它规格现相近产品进行资料读取与资料判断,使用者可以一次开发感应式读卡及相关应用系统,该模块主要范围为互动式玩具、门禁管制系统、人员考勤管理、动物或物品辨识及产品管理,此读卡模组主要优缺点叙述如下:

优点:

(1)独立性高;

(2)二次开发容易,安装简单资料读取稳定性高; (3)统安全性高,RFID资料不重复且难以复制; (4)可选择数据输出格式。 缺点:

电脑必须24小时开机,便于数据传送。 125KHz感应式读卡机系统如图1-2示:

感应线圈 读卡器模组 RS232outpu接CPU3.0

图1-2 读卡机系统示意图

6

洛阳理工学院毕业设计(论文)

1.1.5 液晶显示的选择

1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5×7或者5×11等点阵字符位组成,每个点阵字符位都可以显示一个字符。

目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。因此,选择LCD1602能够满足门禁系统设计的需要。

(1) LCD1602 主要技术参数 显示容量:16×2 个字符。 芯片工作电压:4.5—5.5V。 工作电流:2.0mA(5.0V)。 模块最佳工作电压:5.0V。 字符尺寸:2.95×4.35(W×H)mm。 (2) 引脚功能说明 1602引脚如图1-3示:

图1-3 1602引脚示意图

1602引脚功能如表1-1示。 (3)1602指令集

1602 液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的(说明1为高电平,0为低电平)。如表1-2示:

指令1:清显示,指令码01H,光标复位到地址 00H 位置。 指令2:光标复位,光标返回到地址00H。

7

洛阳理工学院毕业设计(论文)

表1-1 1602引脚功能表

编号 1 2 3 4 5 6 7 8 符号 VSS VDD VL RS R/M E D0 D1 引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 数据 编号 9 10 11 12 13 14 15 16 符号 D2 D3 D4 D5 D6 D9 BLA BLK 引脚说明 数据 数据 数据 数据 数据 数据 背光源正极 背光源负极

指令3:光3标和显示位置设置I/D,光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或右移,高电平表示有效,低电平表示无效。

指令 4:显示开关控制。D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令 5:光标或显示移位 S/C :高电平时显示移动的文字,低电平时移动光标。

指令 6:功能设置命令 DL:高电平时为 4 位总线,低电平时为 8 位总线 N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示 5X7 的点阵字符,高电平时显示 5X10 的显示字符。

指令 7:字符发生器RAM地址设置。 指令 8:DDRAM 地址设置。

指令 9:读忙信号和光标地址 BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙。

8

洛阳理工学院毕业设计(论文)

表1-2 1602指令集

序号 1 2 3 4 5 6 7 8 9 10 11 指令 清显示屏 光标返回 置输入模式 显示开/关控制 光标或字符移位 置功能 置位符发生存储器地址 置数据存储器地址 读标志位地址 写数据到CGRAM或DDRAM 从CGRAM或DDRAM读数据 RS 0 0 0 0 0 0 0 0 0 1 1 R/W D7 D6 D5 D4 D3 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 BF 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 D2 0 0 1 D D1 D0 0 1 I/D C * * 1 * B * * 1 S/C R/L N F 1 DL 字符发生存储器地址 显示数据储存器地址 计数器地址 要写入数据内容 要读出数据内容

(4) 与HD44780相兼容的芯片时序表。基本操作时序表如表1-4示:

表1-3 基本操作时序表

读状态 输入 写指令 输入 RS=L,R/W=H,E=H 输出 D0-D7=状态字 无 RS=L,R/W=H,D0-D7=指令码,输出 E=高脉冲 读数据 输入 写数据 输入 RS=H,R/W=H,E=H 输出 D0-D7=数据 无 RS=H,R/W=L,D0-D7=数据, 输出 E=高脉冲

读操作时序如图1-5示:

9

洛阳理工学院毕业设计(论文)

图1-5 读操作时序图

写操作时序如图1-6示:

图1-6 写操作时序图

10

洛阳理工学院毕业设计(论文)

第2章 系统硬件电路设计

2.1 系统电路原理

2.1.1 门禁系统主要模块

由单片机、电源指示、工作指示、振荡电路、蜂鸣器电路、门控锁电路、矩阵键盘、读卡模块、显示模块组成。如图2-1示:

图2-1 电路原理图

2.1.2 门禁系统工作原理

1、当刷卡时,蜂鸣器响一下,如卡权限获得允许,显示模块显示卡号,同时继电器动作将门锁打开指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭指示灯熄灭;当非法卡刷卡时,没有任何动作。

2、当按下出门按钮时,继电器动作将门锁打开指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭指示灯熄灭。

3、当进门输入密码时,密码正确则继电器动作将门锁打开指示灯点亮,延时一段时间后继电器再次动作将门锁锁闭指示灯熄灭;密码错误则

11

洛阳理工学院毕业设计(论文)

蜂鸣器报警,延时一段时间后蜂鸣器自动停止报警,若再按“确认\\返回键”则可以手动停止报警。

2.2 单片机资源分配

软、硬件设计是设计中不可缺少的,为了满足功能和指标的要求,资源分配如下:

1.晶振采用11.0592MHZ;

2.单片机资源分配如表2-1、2-1示:

表2-1单片机资源分配表(1)

P0.0-P0.7 LCD显示

表2-2单片机资源分配表(2)

P2.3 锁 0开 1不开 P2.4 蜂鸣器 0响 1不响 P2.5 LED 0亮 1不亮 P3.0 读卡 P3.2 按键中断 P1.0-P1.7 矩阵键盘 P2.0 RS P2.1 RW P2.2 E

3、计算:因为射频卡的读卡头选用EM4000型,读卡频率是11.0592MHZ,所以最小系统晶振,必须用11.0592MHZ才能读卡。

(1)定时控制字确定:选用定时器T1,方式2,所以 TMOD是20H。 (2)计算初值

X = 256 -(foxc*(SMOD+1))/384*波特率

= 256 -(11.0592 *106 *(0+1))/384*9600 = 253

TH1= 0FDH TL1= 0FDH

2.3 最小系统的设计

12

洛阳理工学院毕业设计(论文)

门禁系统数控部分采用89C52 单片机作为控制核心,其内部组成包括:一个8位的微处理器CPU及片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接;片内数据存储器8KB RAM低128字节,存放读/写数据;高128字节被特殊功能寄存器占用;片内程序存储器 ROM;四个8位并行I/O(输入/输出)接口P3—P0,每个口可以用作输入,也可以用作输出;两个定时/计数器,每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制;五个中断源的中断控制系统;一个全双工UART(通用异步接收发送器)的串行I/O口。

在89C52 单片机的基础上,外围增加蜂鸣器控制电路、开门指示灯电路、电控锁控制电路以及1602显示电路等,构成了门禁系统的控制电路。其原理图如图2-3示:

图2-3 门禁系统控制原理图

13

洛阳理工学院毕业设计(论文)

第3章 系统软件设计

3.1 Keil简介

3.1.1 KeilC51系统概述

单片机开发中除必要的硬件外,同样离不开软件,汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统[9],与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC51开发系统各部分功能和使用。

C51工具包的整体结构,其中uVision是C51forWindows的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。

3.1.2 Keil软件的使用

使用Keil的软件工具时,项目的开发流程基本上与使用其他软件开发项目一样。

(1) 打开Keil软件,如图3-1示:

14

洛阳理工学院毕业设计(论文)

图3-1 初始界面

(2) 创建一个项目。点击Project菜单,选择弹出的下拉式菜单中

的New Project,如图3-2示:

图3-2 新建工程

(3) 在“文件名”中输入C程序项目名称“电子门禁”, “保存”

后的文件扩展名为uvproj,这是KEIL uVision4项目文件扩展名。

(4) 从器件数据库中选择目标芯片,这里选择要用的Ateml 公司

的 AT89C52。如图3-3示:

15

洛阳理工学院毕业设计(论文)

图3-3 选择芯片

(5) 配置工具软件的设置,如图3-4

图3-4 软件设置

(6) 完成上面步骤后,可以进行程序的编写了。

(7) 点击新建文件的快捷按钮,在开发环境下出现一个新的文字编

辑窗口。用C创建源程序。

(8) 编辑完成后,保存新建的程序,也可以用菜单File-Save或快

捷键 Ctrl+S 进行保存。

(9) 在屏幕左边的Source Group1文件夹图标上右击弹出菜单,在

16

洛阳理工学院毕业设计(论文)

这里可以做在项目中增加减少文件等操作。点击\File to Group 'Source Group 1'\弹出文件窗口,选择刚刚保存的文件,按ADD按钮,关闭文件窗,程序文件已加到项目中了。这时在 Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。如图3-5示:

图3-5 添加文件

(10) C程序文件已加到了项目中,下面开始编译运行。图中第1、

2、3 都是编译按钮,1是用于编译单个文件;2 是编译当前项目,如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的;3 是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。如图3-6示:

17

洛阳理工学院毕业设计(论文)

图3-6 编译运行

下图中有一个小放大镜的按钮,这就是开启\\ 关闭调试模式的按钮,它也存在于菜单 Debug-Start\\Stop Debug Session,快捷键为Ctrl+F5。进入调试模式,软件窗口样式大致如图3-7示:

图3-7 调试按钮

(11) 进入调试模式,软件窗口样式如图3-8示:

图3-8调试

(12) 图中按钮1 为运行,当程序处于停止状态时才有效。2为

停止,程序处于运行状态时才有效。3 是复位,模拟芯片的复

18

洛阳理工学院毕业设计(论文)

位,程序回到最开头处执行。如图3-9示:

图3-9 运行按钮

3.2 主程序分析

1.主程序流程图

主程序流程图如图3-10示:

图3-10 主程序流程图

2.主程序清单: #include #include #include

19

洛阳理工学院毕业设计(论文)

#include #include #include #include #include #include

/***********************主程序*************************/ void main() {

LED = 0; //LED 亮

BUZZER = 0; //蜂鸣器响

EA = 1; //开所有中断

INT0_init();

T1_init(); lcd_init();

P1 = 0x0f; //键盘初始化 delay(100);

LED = 1; //熄灭LED

BUZZER=1; //关 蜂鸣器

while(1) { }

display(); delay(50);

}

3.3 子程序分析

20

洛阳理工学院毕业设计(论文)

3.3.1 显示模块程序分析

1. 显示程序流程图如图3-11示:

图3-11 显示程序流程图

2.显示程序清单:

/*************************************************************** 函数功能:与最近一次lcd显示界面比较,以此作是否清屏处理 入口参数: 出口参数:

***************************************************************/ void judge_clear_lcd() {

if( N_DISPLAY != N_DISPLAY_HISTORY ) {

lcd_wcmd(0x01); //清屏

21

洛阳理工学院毕业设计(论文)

}

}

/*************************************************************** 函数功能:lcd显示第0幕 入口参数: 出口参数:

***************************************************************/ void display0() { }

/*************************************************************** 函数功能:lcd显示第1幕 入口参数: 出口参数:

***************************************************************/ void display1() {

uchar i;

judge_clear_lcd();

//是否清屏处理

uchar i;

judge_clear_lcd(); //是否清屏处理 lcd_pos(0x00); //设置显示位置 delay1(1);

for(i=0; wel[i]!='\\0'; i++) { }

N_DISPLAY_HISTORY=0; //记录 历史显示界面编号

lcd_wdat(wel[i]);

lcd_pos(0x00); //设置显示位置 delay1(1);

22

洛阳理工学院毕业设计(论文)

}

for(i=0; com_in[i] !='\\0'; i++) //显示\{ }

lcd_pos(0x40); //设置显示位置 delay1(1);

for(i=0; push[i] !='\\0'; i++) { }

N_DISPLAY_HISTORY=1;

//记录 历史显示界面编号

lcd_wdat(push[i]);

//显示\

lcd_wdat(com_in[i]);

/*************************************************************** 函数功能:lcd显示第2幕 入口参数: 出口参数:

***************************************************************/ void display2() { }

/***************************************************************

23

uchar i;

judge_clear_lcd();

//是否清屏处理

lcd_pos(0x00); //设置显示位置 delay1(1);

for(i=0; pull[i]!='\\0'; i++) //显示\ { }

N_DISPLAY_HISTORY=2; //记录 历史显示界面编号

lcd_wdat(pull[i]);

洛阳理工学院毕业设计(论文)

函数功能:lcd显示第3幕 入口参数: 出口参数:

***************************************************************/ void display3() {

uchar i; bit j = 0;

// 已显示‘*’ 标志

//是否清屏处理

judge_clear_lcd();

lcd_pos(0x00); //设置显示位置 delay1(1);

for(i=0; input[i]!='\\0'; i++) //显示\{ }

lcd_wcmd(0x0d); //显示闪烁光标 delay1(1);

lcd_pos(0x43); //设置显示位置 delay1(1); do {

lcd_wdat(input[i]);

if( (V_KEY>=13) && (V_KEY<=15) ) { }

if( F_PASSW == 1 ) //是否有密码输入

lcd_wcmd(0x0c); //不显示闪烁光标 delay1(1); return;

//跳出本界面

{

lcd_wdat('*');

24

洛阳理工学院毕业设计(论文)

}

F_PASSW = 0;

j = 1; //置位 已显示‘*’ 标志

if( (V_KEY == 12) && (j == 1) ) //是否在 已显示‘*’下情况下

按“输入密码”键 }

/*************************************************************** 函数功能:lcd显示第4幕 入口参数: 出口参数:

***************************************************************/ void display4() {

uchar i;

judge_clear_lcd();

//是否清屏处理

{ //清除之前显示的字符'*' }

j = 0; //清除 已显示‘*’标志 lcd_pos(0x43); //设置显示位置 for(i=0; i<6; i++) { }

lcd_pos(0x43); //设置显示位置

lcd_wdat(0x0a);

//显示空格

}while( F_PASSW_O != 1 );

lcd_wcmd(0x0c); //不显示闪烁光标 delay1(2);

N_DISPLAY_HISTORY = 3; //记录 历史显示界面编号

lcd_pos(0x00); //设置显示位置 delay1(1);

25

洛阳理工学院毕业设计(论文)

}

for(i=0; passw_err[i]!='\\0'; i++) //显示\{ }

N_DISPLAY_HISTORY=4;

//记录 历史显示界面编号

lcd_wdat(passw_err[i]);

/*************************************************************** 函数功能:lcd显示第5幕 入口参数: 出口参数:

***************************************************************/ void display5() { }

/*************************************************************** 函数功能:lcd显示幕判别 入口参数: 出口参数:

***************************************************************/ void display() {

26

uchar i;

judge_clear_lcd(); //是否清屏处理 lcd_pos(0x42); //设置显示位置 delay1(1);

for(i=0; passw_err[i]!='\\0'; i++) //显示\{ }

N_DISPLAY_HISTORY=5; //记录 历史显示界面编号

lcd_wdat(test[i]);

洛阳理工学院毕业设计(论文)

switch( N_DISPLAY ) //根据当前界面编号N_DISPLAY进行显示 {

case 0 : display0();break; case 1 : display1();break; case 2 : display2();break; case 3 : display3();break; case 4 : display4();break; case 5 : display5();break; } }

3.3.2 键盘程序

1. 键盘程序流程图如图3-12示:

图3-12 键盘程序流程图

27

洛阳理工学院毕业设计(论文)

2.键盘程序清单:

/*************************************************************** 函数功能:键值计算程序,返回键值0~15 入口参数:i 出口参数:v

***************************************************************/ uchar key_calcu(uchar i, uchar m) { }

/*************************************************************** 函数功能:键盘扫描程序,返回键值0~15 入口参数:

出口参数: (键值)

***************************************************************/ uchar key_scan(void) //使用行列逐级扫描法 {

uchar i, temp=0, m, v_key;

P1 = 0x0f;//高四位低电平,低四位高电平 if(P1 != 0x0f) {

28

uchar v; switch(m) { } return v;

case 0x0e: v=(i*4)+0;break; //第i行第1列 case 0x0d: v=(i*4)+1;break; //第i行第2列 case 0x0b: v=(i*4)+2;break; //第i行第3列 case 0x07: v=(i*4)+3;break; //第i行第4列 default : v=0xff;

//确认是否有键按下

洛阳理工学院毕业设计(论文)

delay(5);

//去抖动,延时0.01s

if(P1 != 0x0f) { //有键按下

for(i=0; i<4; i++) //逐行扫描 {

temp = ~ ( 1<<(4+i) ); //P1.4~P1.7逐次给低电平,P1口其

他引脚为高 }

/*************************************************************** 函数功能:密码验证程序 入口参数: 出口参数:

29

}

}

P1 = temp;

if(P1 != temp) //确认第i行是否有键按下 { }

m = P1 & 0x0f; //取P1.0~P1.3的状态,用于计算键值 while( P1 != temp ) ; delay(5);

//等待按键松开

//去抖动,延时0.01s

//等待按键松开

while( P1 != temp ) ;

v_key = key_calcu( i, m ); //计算键值 if(v_key != 0xff) { }

return v_key; //返回有效键值

}

return 0xff; //无键按下或扫描异常时,返回0xff作为键值

洛阳理工学院毕业设计(论文)

***************************************************************/ void passw_check() {

uchar i, j = 0;

rec_passw[N_PASSW] = V_KEY; //暂存输入密码

F_PASSW = 1; //置位新密码输入标志 N_PASSW++; //密码存放位加1

if(N_PASSW == 6) //6位密码是否输入完毕 {

F_INPUT = 0; //清零 进入输入密码程序标志 F_PASSW_O = 1; //置位 密码输入完毕标志 for(i=0; i<6; i++) { }

if(j == 6) { //密码正确

N_DISPLAY = 1; //显示请进提示界面 } else

{ //密码错误 }

30

if( rec_passw[i] == pass_word[i] ) {

j++;

//记录正确密码个数

}

else break; //若有一位密码错误,则跳出、不再比较

go_out_OR_enter(); //开锁等处理

BUZZER = 0; //蜂鸣器响

N_DISPLAY = 4; //显示密码错误提示界面 set_origscr(); //置位返回初始界面标志

洛阳理工学院毕业设计(论文)

}

}

/*************************************************************** 函数功能:键值处理程序 入口参数: 出口参数:

***************************************************************/ void key_dispose() {

if( (F_INPUT == 1) && (V_KEY >= 0) && (V_KEY <= 9) ) //是否输入密码为

0~9有效且进入输入密码程序标志为1

{ } else {

switch(V_KEY) {

case 12 : //输入密码 键

{ }

N_DISPLAY=3;

//改变显示界面

passw_check(); //密码验证处理

F_INPUT = 1; //置位进入输入密码程序标志 F_PASSW_O = 0; //清零密码输入完毕标志 N_PASSW = 0; //密码比较位置零 break;

case 13 : //出门按钮 键

{

N_DISPLAY=2;

//改变显示界面

//开锁等处理

go_out_OR_enter();

31

洛阳理工学院毕业设计(论文)

F_INPUT = 0; //清除 进入输入密码程序标志 break;

}

case 14 :

{ }

//模拟刷卡 键

N_DISPLAY=1; //改变显示界面 go_out_OR_enter();

//开锁等处理

F_INPUT = 0; //清除 进入输入密码程序标志 break;

case 15 :

{

//确认/返回 键

N_DISPLAY=0; if(F_INPUT == 1) { } else {

//改变显示界面

BUZZER = 0; //蜂鸣器 响 N_DISPLAY = 4; //改变显示界面 set_origscr(); //置位返回初始界面标志

BUZZER = 1; //在密码错误使蜂鸣器响的情况

下,按“确认/返回”键可关蜂鸣器 }

32

}

}

}

F_INPUT = 0; //清除 进入输入密码程序标志 break;

}

洛阳理工学院毕业设计(论文)

/*************************************************************** 函数功能:INTO初始化 入口参数: 出口参数:

***************************************************************/ void INT0_init(void) { }

/*************************************************************** 函数功能:INT0中断服务程序 入口参数: 出口参数:

***************************************************************/ void INT0_irq(void) interrupt 0 { }

3.2.3 读卡程序

1. 读卡程序流程图如图3-13示: V_KEY = key_scan(); //取键值 if(V_KEY != 0xff) { } P1 = 0x0f;

key_dispose(); //键值处理 IT0 = 0; EX0 = 1;

//低电平触发 IT0=1; //边沿触发方式 //允许外部中断0中断

33

洛阳理工学院毕业设计(论文)

图3-13 读卡程序流程图

2.读卡程序清单(见附录一)

34

洛阳理工学院毕业设计(论文)

结 论

经过全组人员的多次探讨研究,翻阅大量文献资料,最终确定各个模块的实现方案,使得系统初步具备一定的稳定性与创新性。

系统的可靠性体现在控制开锁设计上:当读卡器检索到合法IC卡时,由CPU的P2.3引脚提供一个低电平信号,因为,89C52 单片机复位状态是高电平,而一般实用电路必须有看门狗电路,一旦出现故障,也需要复位,也是高电平。在设计上如果采用高电平开门,是不可以的。所以,我们在设计电路时,通过论证,选用低电平作为信号,控制门的开启,此时门锁自动打开。从消防安全考虑,如果发生意外或危险,只要断开电源,门锁同样可以被打开。

系统的创新性体现在采用非接触的IC卡。采用了更为先进的非接触式IC卡。我们之所以使用非接触式IC卡,是由于非接触式IC卡相对于以往传统的接触式系统,具有更多的优点。非接触式IC卡,是感应卡家族中的一员,除具有接触式IC卡的优点,更有存储容量大,安全性强,无机械磨损等优点。而且它还克服了接触式IC卡所无法避免的缺点,如读写故障率高,由于触点外露而导致的污染、损伤、磨损、静电以及插卡不便、易受恶意攻击等。

由于时间、精力以及学识等方面的不足,以至于本次设计存在一些问题,下面就个人看法,提出一些改善建议:

(1)硬件部分,采用液晶模块显示,增强了系统的交互性,但液晶显示模块寿命有限而且容易损坏,使得维护成本提高。建议用其他显示模块代替。

(2)为了加强系统的实时性,软件部分采用中断程序处理密码验证及刷卡,但程序过长,处理时可能会占用较多的资源。建议下一步稍作调整,将相关程序放入主程序中进行处理。

35

洛阳理工学院毕业设计(论文)

谢 辞

时光飞逝,来不及感叹,三年的大学生活已近尾声,期间我不断得到各位老师、同学的关心与帮助,感受到了友谊的温暖与纯真,最重要的是一种精神上的激励,让我非常感动。

经过不懈的努力,我的毕业论文《基于单片机的门禁系统的设计》在张娟梅老师的悉心指导下已经完成初稿。论文的写作是枯燥艰辛而又富有挑战的。老师的谆谆诱导、同学的出谋划策及家长的支持鼓励,是我坚持完成论文的动力源泉。在此,我特别要感谢我的导师张娟梅老师。从论文的选题、文献的采集、框架的设计、结构的布局到最终的论文定稿,从内容到格式,从标题到标点,她都费尽心血。老师温和的性格,朴素的作风,深深地感动着我。

同时,我还要感谢帮助我的各位同学,在论文的写作的这段时间里,给我提出了很多宝贵的意见和建议,与他们的交流使我受益颇多。感谢大学里的每一位老师的支持和帮助,真诚地感谢他们三年来的辛勤栽培。最后要感谢我的家人以及我的朋友们对我的理解、支持、鼓励和帮助,正是因为有了他们,我所做的一切才更有意义;也正是因为有了他们,我才有了追求进步的勇气和信心。

最后感谢答辩组老师们的评阅,辛苦了,谢谢!

36

洛阳理工学院毕业设计(论文)

参考文献

[1] 李忠国.单片机应用技能训练.北京:人民邮电出版社,2006

[2] 李朝青.单片微机原理及接口技术.北京:北京航空航天大学出版社,1998

[3] 刘守义.智能卡技术.西安:西安电子科技大学出版社,2004.(220~222) [4] 林全新.单片机原理与接口技术.北京:人民邮电出版社,2002(184~186)

[5] 王汝琳.智能门禁控制系统.北京:电子工业出版社,2004

[6] 潘新民,王燕芳.微型计算机控制技术.北京:电子工业出版社,2011 [7] 杨素行.模拟电子技术基础简明教程.北京:高等教育出版社,2006 [8] 何立民.嵌入式系统可靠性设计得探讨.浙江:浙江大学学报,1998(增刊)

[9] 谭浩强.C程序设计.北京:清华大学出版社,2005 [10]

王开满,江平,李洁.门禁系统在地铁综合监控系统中的研究与应用.

都市快轨交通,2007 [11]

沈红卫.单片机应用系统设计实例与分析.北京航空航天大学出版

社,1999 [12] [13]

周遐.安防系统工程.北京:机械工业出版社,2004

韩志军,沈晋源,王振波.单片机应用系统设计.机械工业出版

社,2005 [14] [15]

钱逸秋.单片机原理与应用.北京:电子工业出版社,2002 于孟尝.数字电子技术基础简明教程.北京:高等教育出版社,

2006.7 [16]

苗健.大型智能IC卡网络门禁管理系统在广州地铁三号线中的实

际应用.智能建筑与城市信息,2007

37

本文来源:https://www.bwwdw.com/article/vlf7.html

Top