基于单片机的IC卡门禁系统_第1页
基于单片机的IC卡门禁系统_第2页
基于单片机的IC卡门禁系统_第3页
基于单片机的IC卡门禁系统_第4页
基于单片机的IC卡门禁系统_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上专心-专注-专业 20132013 届本科生毕业设计届本科生毕业设计题 目: 基于单片机 IC 卡门禁系统的设计与实现 院院 ( ( 系系 ) ): : 机械与电子信息工程学院机械与电子信息工程学院 专业年级专业年级: : 20132013 级电信专升本级电信专升本 姓姓 名名: : 陈陈 诚诚 学学 号号: : 指导教师指导教师: : 唐永刚唐永刚 教授教授 20152015 年年 0303 月月 2020 日日精选优质文档-倾情为你奉上专心-专注-专业Title: microcontroller-based temperature control system f

2、ountainsDepartment: College of the system of energy saving and safetyMajor: Electronic and Information Engineering Author: Chen cheng Student ID: Instructor: Tang Yonggang Professor March 20th,2015精选优质文档-倾情为你奉上专心-专注-专业摘要 随着科学技术的进步,IC 卡门禁系统在日常生活中的应用越来越普及。比如公司、写字楼出入口门禁制系统采取以感应卡来取代用钥匙开门的方式。使用者用一张卡可以打开多

3、把门锁, 对门锁的开启也可以有一定的时间限制。如果卡丢失了,不必更换门锁,只需将其从控制主机中注销。出入口门禁控制系统是通过对出入口的准入情况进行控制、管理和记录的设备,对何人何时在何地进行详细跟踪,以实现中心对出入口的 24 小时控制、监视及管理等。 本系统以 89C51 系列单片机 STC89C52 为控制核心,利用非接触式高频 Mifare IC 卡模块读取用户手中的 IC 卡信息,识别成功后与系统存储的 IC 卡库数据进行比对校验,如果 IC 卡数据库中有 IC 卡则证明 IC 卡合法,单片机通过控制继电器控制电子锁门禁开启和关闭。同时系统采用 4X4 矩阵键盘作为输入,LCD1602

4、液晶作为人机交互显示,让系统具备更大的实用价值。关键词:关键词:STC89C52;4X4键盘;IC卡;LCD1602;Mifare精选优质文档-倾情为你奉上专心-专注-专业Abstract With the progress of science and technology, access control systems used in daily life is more and more popular. The gate entrance control system to replace open a door with a key way to induction card. A

5、user with a card can open the lock on the door lock, the opening can also have a certain time limit. If the card is lost, do not have to change the locks, the cancellation of its control from the host. The gate entrance control system through control, equipment management and records of the admittan

6、ce of entrance to whom, when and where to detailed tracking, to achieve the center on the entrance 24 hours control, monitoring and management. This system uses 89C51 Series MCU STC89C52 as the control core, the use of contactless IC card information of high frequency Mifare IC card module to read t

7、he users hands, ratio of IC are checking data recognition after successful and storage system, if there is evidence that the IC card IC card IC card database legal, chip by controlling the relay control electronic lock opening and closing. At the same time the system uses the 4X4 matrix keyboard as

8、input, LCD1602 liquid crystal display as human-computer interaction, can complete the IC card information through the keyboard to add, delete and other tasks, to make the system more practical value.Key words: STC89C52;4X4 keybord;IC card;LCD1602;Mifare精选优质文档-倾情为你奉上专心-专注-专业目 录 精选优质文档-倾情为你奉上专心-专注-专业精

9、选优质文档-倾情为你奉上专心-专注-专业1 系统总体方案设计1.1 系统设计原理 本系统是基于 STC89C52 单片机设计的 IC 卡门禁系统。系统由两个部分构成:硬件电路部分和软件部分。硬件部分主要是电路板的设计与制作,软件部分主要是各个模块的驱动及总程序调试与实现。 硬件电路主要由:51 单片机最小系统、射频 IC 卡模块、LCD1602 液晶显示模块、报警提示模块、4X4 键盘模块、电子锁继电器模块、电源模块等构成。设计硬件电路结构如下图所示。图 1.1 系统总体框图1.2 硬件方案的选择 1.2.1 主控制芯片的选择 方案一:采用 ARM9 微处理器作为控制器。 ARM9 引系列处理

10、器是英国 ARM 公司设计的主流处理器 ARM9 是 0.9/MHz 的三级流水线和冯诺伊曼结构; ARM9 内核是 5 级流水线,提供 1.1MIPS/MHz 的。 ARM7 没有,ARM720T 是 MMU 的 ,主要包括 ARM9 和 ARM9E-S 等系列 ARM9 是有MMU 的,ARM940T 只有 Memory protection unit.不是一个完整的 MMU。ARM7 是典型的微处理器,体积小、处理能力强、功耗低,但价格昂贵,会照成产品成本增加。单片机STC89C52电源模块时钟电路LCD1602 液晶显示模块4X4 键盘模块IC 卡读卡模块蜂鸣器/LED 报警提示模块电

11、子锁门禁继电器驱动模块精选优质文档-倾情为你奉上专心-专注-专业 方案二:采用 STC89C52 单片机作为为控制 STC89C52 单片机是对目前所有兼容 Intel 8031 的单片机的统称。该系列单片机的始祖是 Intel 的 8031 单片机,后来随着 Flash 技术的发展,8031 单片机取得了长足的进展,成为目前应用最广泛的 8 位单片机之一,其代表型号是的 AT89 系列,它广泛应用于工业测控系统之中。目前很多公司都有 51 系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51 单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是 52 系列的单片

12、机一般不具备自编程能力。51 成本低廉,使用方便,适合与本系统的温度检测与控制。 综上分析,我们采用了第二个方案,即采用 STC89C52 单片机作为主控制芯片。1.2.2 显示模块的选择 方案一:采用数码管显示。 数码管显示具有亮度高、显示简单简洁、成本低廉,可靠性高、响应速度快等有点。但如果采用想要显示要想让能见度较远并且醒目的同时又要显示汉字、图片等丰富的信息,则需要的液晶屏就要足够大成本也就很高。电路复杂需器件也高。 方案二:采用 LCD1602 液晶显示. LCD128X64 是一种具有 4 位/8 位并行、2 线或 3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点阵

13、图形液晶显示模块;其显示分辨率为 12864, 内置 8192 个 16*16 点汉字,和 128 个 16*8 点 ASCII 字符 集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。 LCD1602 液晶器件与数码管显示模块相比,在硬件电路结构或显示程序都要简洁得多,且该器件的价格始终,批量价格更低。而且显示平稳、省电、美观,更容易实现题目要求,对后续的功能兼容性高。软件操作简单,可操作性强。 综上分析,我们采用了第二个方案。1.2.3 电源电路的比较与选择 方案一:采用 USB 供电 电脑的电源是通过电脑适配器将 220V AC 转换成了 12V DC 直

14、流,电脑 USB精选优质文档-倾情为你奉上专心-专注-专业接口可以提供稳定的 5V 直流电压。完全能够满足 5V 单片机系统的供电需要,并且电源稳定、即插即用,功耗低使用非常方便。 方案二:自制直流稳压电源模块。将插线板电源经过变压、整流、滤波、稳压后输出。为系统提供稳定可靠的电源。自制电源会增加硬件成本,同时高压转抵押也带来不稳定等因素,因此不采用此方法。 由于 USB 供电具有即插即用的特点,方便实用,因此我们选择第一个方案。1.2.4 键盘输入电路的选泽 方案一:采用独立按键电路输入 独立按键结构简单使用它方便,只需要单片机 IO 口和地跨接即可,当按下按键时候单片机 IO 口电压被拉低

15、,单片机就可以检测到此电压的变化,一次来判断是否有按键按下。但缺点是占用较多的 IO 口资源。本系统需要按键数目较多,因此此方法不可行。 方案二:采用 4*4 矩阵键盘模块。 在中按键数量较多时,为了减少 I/O 口的占用,通常将按键排列成形式,如图 1 所示。在式中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如 P1 口)就可以构成 4*4=16 个按键,比之直接将端口线用于多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成 20 键的,而直接用端口线则只能多出一键(9 键)。由此可见,在需要的键数比较多时,采用法来做键盘是不合理的。 综上

16、,本系统设计的门禁系统,需要输入密码至少需要 0-9 确认、退出等功能按键,因此举证键盘是最好的选择,故选择方案 2。1.2.5 电子锁门禁驱动电路的选择 方案一:采用 S8550 三极管、继电器驱动。 S8550 是一种常用的普通。 它是一种低电压,大电流,小信号的 PNP 型硅三极管。三极管驱动具有电路结构简单,成本低廉等特点。 继电器是一种电控制,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故

17、在电路中起着自动调节、安全保护、转换电路等作用。精选优质文档-倾情为你奉上专心-专注-专业 本系统采用 S8850 三极管增大驱动电流以驱动继电器开关,进而来控制电子锁部件。 方案二:采用 L298N 驱动芯片。 L298N 是一种双 H 桥电机驱动芯片,其中每个 H 桥可以提供 2A 的电流,功率部分的供电电压范围是 2.5-48v,逻辑部分 5v 供电,接受 5vTTL 电平。LN298内部继承大功率 H 桥路。具有稳定性高、使用简单,驱动力大等特点。 亦称光电隔离器或光电耦合器,简称光耦。它是以光为媒介来传输电的,通常把发光器(红外线 LED)与受光器(光敏半导体管)封装在同一管壳内。当

18、输入端加电时发光器发出光线,受光器接受光线之后就产生,从输出端流出,从而实现了“电光电”转换 由于 L298N 芯片器件成本较高,会大大加大开发成本,同时光耦元件适用于高速低电压的开关场合,因此本方案不可取。 综上分析,我们采用了第二个方案。1.2.6 数据存储芯片的选泽 方案一:采用单片机自带的 EEPROM 存储数据。 STC89C52 单片机片内自带了 2K 的 EEPROM 闪存。改闪存可以反复擦除和读写很多次,使用起来方便快捷、而且不增加成本。 方案二:采用 AT24C02 存储芯片。 AT24C02 是 TI 公司退出的典型的基于 IIC 总线协议的 DIP8 封装的偏外存储芯片。

19、其内部是一个 2K 位串行 CMOS E2PROM, 内部含有 256 个 8 位字节。AT24C02 支持 I2C,总线协议 I2C,总线协议规定任何将数据传送到总线的器件作为发送器。任何从接收数据的器件为接收器。是由产生串行时钟和所有起始停止信号的主器件控制的。通过器件地址输入端 A0、A1 和 A2 可以实现将最多8 个 AT24C02 器件连接到总线上。但此芯片价格昂贵,需要增加外部电路和硬件成本,因此不可取。 综上分析,我们采用了第一个方案。精选优质文档-倾情为你奉上专心-专注-专业2 系统的硬件设计 整个系统硬件电路由:单片机最小系统、4X4 键盘模块、LCD1602 液晶显示模块

20、、IC 卡读卡模块、电子锁门禁继电器驱动模块、数据存储模块等组成。系统硬件电路设计如下:2.1 单片机最小系统设计2.1.1 STC89C52 单片机介绍 STC89C52 是公司生产的一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。STC89C52 使用经典的 MCS-51 内核,但做了很多的改进使得芯片具有传统 51 单片机不具备的功能。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 STC89C52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k 字节 Flash,512 字节 RAM,

21、 32 位 I/O 口线,内置 4KB EEPROM,MAX810 复位电路,3 个 16 位/计数器,4 个外部中断,一个 7向量 4 级中断结构(兼容传统 51 的 5 向量 2 级中断结构),全双工。另外 STC89C52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下,CPU 停止工作,允许 RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率 35MHz,6T/12T 可选。2.1.2 52 最小系统电路设计 52 单片机最小系统一般有:52 单片机、电源

22、模块、复位电路、时钟电路构成。 (1)复位电路设计 单片机的复位分为上电自动复位和按钮手动复位两种。 上电复位电路:由 22uf 电解电容和 10K 电阻构成。原理是上电瞬间,电容充电电流最大,电容相当于短路,RST 端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST 端为低电平,程序正常运行。 按键手动复位电路:电路由按键、10K 电阻、1K 电阻、22uf 构成。原理是首先经过上电复位,当按下按键时,RST 直接与 VCC 相连,为高电平形成复位,精选优质文档-倾情为你奉上专心-专注-专业同时电解电容被短路放电;按键松开时,VCC 对电容充电,充电

23、电流在电阻上,RST 依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST 为低电平,正常工作。 这里我们采用按键复位来实现,电路图如下。图 2.1 复位电路(2)时钟电路设计 时钟电路用于产生单片机所需要的时钟信号,单片机在时钟信号的控制下各部件之间同步协调工作。根据产生的方式不同,分为内部和外部两种时钟电路。 在 51 芯片内部有一个用于构成振荡器的高增益反相放大器,其输入端为芯片引脚 XTAL1,其输出端为引脚 XTAL2。而在芯片的外部,XTAL1 和 XTAL2 之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,在引脚 XTAL1 和XTAL2 上输出 3V 左右的

24、正弦波,这就是单片机的振荡电路,如图 3.5 所示。精选优质文档-倾情为你奉上专心-专注-专业图 2.2 系统时钟电路 通常,电容 C1 和 C2 取 30pf 左右,主要作用是帮助振荡器起振,晶体的振荡频率范围是 1.212MHz。晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。在通常应用情况下,STC89C52 使用振荡频率为 6MHz 或 12MHz。在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲。这是,外部的脉冲信号时经过 XTAL2 引脚注入,其连接如图 3.5 所示,由于 XTAL2 端逻辑电平不是 TT

25、L的,故需要外接一个上拉电阻,外接信号应为时钟频率低于 12MHz 的方波信号。2.2 IC 卡原理及驱动电路设计2.2.1 Mifare 射频卡技术参数 (1)容量为 8K 位(bits)=1K 字节(bytes)EEPROM (2)分为 16 个扇区,每个扇区为 4 块,每块 16 个字节,以块为存取单位 (3)每个扇区有独立的一组密码及访问控制 (4)每张卡有唯一序列号,为 32 位 (5)具有防冲突机制,支持多卡操作 (6)无电源,自带天线,内含加密控制逻辑和通讯逻辑电路 (7)数据保存期为 10 年,可改写 10 万次,读无限次 (8)工作温度:-2050(湿度为 90%) (9)工

26、作频率:13.56MHZ (10)通信速率:106 KBPS (11)读写距离:10 cm 以内(与读写器有关)2.2.2 IC 卡内部结构介绍 M1 卡分为 16 个扇区,每个扇区由 4 块(块 0、块 1、块 2、块 3)组成,(我们也将 16 个扇区的 64 个块按绝对地址编号为 063,存贮结构如下图所示:精选优质文档-倾情为你奉上专心-专注-专业图 2.3 IC 卡存储结构图 (2)第 0 扇区的块 0(即绝对地址 0 块),它用于存放厂商代码,已经固化,不可更改。 (3)每个扇区的块 0、块 1、块 2 为数据块,可用于存贮数据。 数据块可作两种应用: 用作一般的数据保存,可以进行

27、读、写操作。 用作数据值,可以进行初始化值、加值、减值、读值操作。 (4)每个扇区的块 3 为控制块,包括了密码 A、存取控制、密码 B。具体结构如下: 密码 A(6 字节) 存取控制(4 字节) 密码 B(6 字节) (5)每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的 块 0 数据块0块 1数据块1块 2数据块2扇区 0 块 3密码 A 存取控制 密码 B控制块3块 0数据块4块 1数据块5块 2数据块6 扇区 1块 3密码 A 存取控制 密码 B控制块7 0数据块60 1数据块61 2数据块62 扇区 15 3密码 A 存取控制 密码 B控制块63A0 A1 A2 A3

28、A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5精选优质文档-倾情为你奉上专心-专注-专业密码及存取控制。存取控制为 4 个字节,共 32 位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下: 块 0: C10 C20 C30 块 1: C11 C21 C31 块 2: C12 C22 C32 块 3: C13 C23 C33 三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如 进行减值操作必须验证 KEY A,进行加值操作必须验证 KEY B,等等)。三个控制位在存取控制

29、字节中的位置,以块 0 为例: 对块 0 的控制: bit 7 6 5 4 3 2 1 0字节 6C20_bC10_b字节 7C10C30_b字节 8C30C20字节 9 存取控制(4 字节,其中字节 9 为备用字节)结构如下所示: bit 7 6 5 4 3 2 1 0字节 6C23_bC22_bC21_bC20_bC13_bC12_bC11_bC10_b字节 7C13C12C11C10C33_bC32_bC31_bC30_b字节 8C33C32C31C30C23C22C21C20字节 9 2.2.3 IC 卡读写过程 非接触式 IC 卡的读写过程:通常由非接触式 IC 卡与读写器之间通过无

30、线电波来完成读写操作。非接触型 IC 卡本身是无源体, 当读写器对卡进行读写操作时, 读写器发出的信号由两部分叠加组成:一部分是电源信号,该信号由卡接收后, 与其本身的 L/C 产生谐振, 产生一个瞬间能量来供给芯片工作。另一部分则是结合数据信号,指挥芯片完成数据、修改、存储等, 并返回给读写器。由非接触式 IC 卡所形成的读写系统, 无论是硬件结构, 还是操作过程都得到了很大的简化,同时借助于先进的管理软件,可脱机的操作方式, 都使数精选优质文档-倾情为你奉上专心-专注-专业据读写过程更为简单。2.2.4 单片机与 IC 卡读卡模块接口电路设计 本系统单片机和 IC 卡读卡器模块通过 5 个

31、 IO 口相连,驱动程序通过 SPI 总线模式实现 IC 卡的读写操作。IC 卡读卡器与单片机接口电路如下图, 图 2.4IC 卡底座接口图图中编号 1-8 为射频刷卡模块的引脚图,分别是 RST、CS SI SCK SO 接口,模块插接到这个底座上,就会对应和单片机的 P10、P11 P12 P13 P14 相接。2.3 键盘电路设计2.3.1 键盘识别原理 在中按键数量较多时,为了减少 I/O 口的占用,通常将按键排列成形式,如图 1 所示。在式中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如 P1 口)就可以构成 4*4=16 个按键,比之直接将端口

32、线用于多出了一倍,而且线数越多,区别越明显。 矩阵键盘的扫描通常采用:行扫描法。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。 (1)判断中有无键按下 将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示中有键被按下,而且闭合的键位于低电平线与 4 根行线相交叉的 4 个按键之中。若所有列线均为高电平,则中无键按下。 (2)判断闭合键所在的位置 在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与

33、置为低电平的行线交叉处的按键就是闭合的按键。精选优质文档-倾情为你奉上专心-专注-专业2.3.2 键盘电路及键盘按键设计 本系统中 4X4 矩阵键盘通过 8 个 IO 口与单片机相接,电路中我们用到了 P1口。每个按键通过程序识别唯一的编号,然后在程序中对按键的键值进行在定义,让按键具备新的功能。矩阵键盘电路及按键定义表如下:图 2.5 键盘电路图 I/O 口作为输出端,而列线所接的 I/O 口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。2.4 电子锁门禁继电器驱

34、动电路设计2.4.1 继电器介绍 继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、通讯、自动控制、及电力电子设备中,是最重要的之一。 继电器一般都有能反映一定输入变量(如、电压、功率、频率、温度、压力、速度、光等)的感应机构(输入部分);有能对被控电路实现“通”、“断”控制的执行机构(输出部分);在继电器的输入部分和输出部分之间,0123456789确认退出设置+-密码清除精选优质文档-倾情为你奉上专心-专注-专业还有对输入量进行耦合隔离,功能处理和对输出部分进行驱动的中间机构。2.4.2 继电器驱动电路设计 本系统设计的电子锁门禁系统,采用了一只 PNP 三极管 S8550 来驱动

35、电路,其目的是增大驱动电流,因为继电器线圈驱动需要较大的电流才能启动,而单片机 IO 输出的电流非常微弱,达不到驱动的要求。 当单片机 IO 口输出低电平时 S8550 三极管导通,继电器线圈产生电磁感应将开关吸合,就接通了电子锁电源,电子锁就可以开了。当 IO 口给高电平时,线圈没有电流,继电器断开。图 2.6 继电器驱动电路图2.5 LCD1602 液晶显示电路设计2.5.1 LCD1602 液晶介绍 字符型液晶显示是一种专门用于显示字母、数字、符号等点阵式 LCD,本设计采用的是 LCD1602 型液晶显示器,其外形尺寸为 803614,单 5V 供电,由左到右共 16 个引脚,其实物如

36、图 602 液晶模块内部的字符发生存储器(CGROM)已经存储了 160 个不同的点阵字符图形,如图 3.13 所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 B(41H),显示时模块把地址 41H 中的点阵字符图形显示出来,我们就能看到字母“A” 。2.5.2 单片机与 LCD1602 液晶接口电路介绍 LCD1602 液晶显示模块可以和单片机 STC89C52 直接接口,DB0DB7与单片精选优质文档-倾情为你奉上专心-专注-专业机的 P0.0P0.7 连接以便数据的传送与接收,4 管脚、5 管脚、6

37、 管脚分别与STC89C51 单片机的 P2.7 口、P2.6 口、P2.5 口连接,电路如下图所示:图 2.7 液晶接口电路图精选优质文档-倾情为你奉上专心-专注-专业3 系统的软件设计3.1 系统总程序设计 系统上电后首先进行初始化,完成液晶、键盘等初始化任务。然后进入死循环,单片机控制 IC 卡模块时时扫描判断是否有 IC 靠近,当靠近时,启动 IC 卡读取程序,识别 IC 卡卡片信息后,与 AT24C02 芯片内存储的 IC 卡数据库信息进行比对,如果校验成功则控制门禁开,反之则不开门禁。整个过程 LCD1602液晶显示操作过程及数据信息。 系统主流程图如下。 图 3.1 系统主程序流

38、程图3.2 IC 卡读写子程序设计 IC 卡读写卡的过程一般包含如下几个步骤: (1)复位应答(Answer to request) 射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为 M1 射频卡,即验证精选优质文档-倾情为你奉上专心-专注-专业卡片的卡型。 (2)防冲突机制 (Anticollision Loop) 当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。 (3)选择卡片(Select Tag) 选择被选中的卡的序列号,并同时返回

39、卡的容量代码。 (4)三次互相确认(3 Pass Authentication) 选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。) IC 卡读写流程图如下图:3.2 IC 卡读写操作流程图3.3 键盘扫描程序的设计 每个按键有它的行值和列值口,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和 CPU 通信。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按

40、键逐行动态接地,另精选优质文档-倾情为你奉上专心-专注-专业一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。图 3.3 矩阵键盘子程序流程图精选优质文档-倾情为你奉上专心-专注-专业3.3.4 4 LCD1602LCD1602 液晶显示子程序液晶显示子程序 1602 液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同时每行可以写 40 个字符。液晶显示程序流程图如下图所示: LCD1602 液晶显示程序流程图如图下所示图 3.4 LCD1602 液晶显示子程序流程图 从此流程图我们得出:LCD 液晶显示屏在写显示程序的时候,我们要先

41、写命令,再设定字符显示和汉字的位置,最后写数据,在每写一次命令或数据都需开始LCD 初始化LCD 写命令LCD 判忙设置显示位置写数据判忙结束P0.7=0 ?P0.7=0 ?写完成了?写完成了?是否否否否是是是精选优质文档-倾情为你奉上专心-专注-专业要判断液晶是否忙。打开液晶显示屏进入初始化状态,开始写命令,首先判断LCD 是否忙,如果是 P0.7=0,那么进入下一步写命令,如果不是 P0.7=0,返回LCD 是否忙。3.53.5 电子锁门禁开关子程序设计电子锁门禁开关子程序设计 本系统的电子锁门禁开关,单片机只需要输出高低电平即可。当输出高电平时门禁关、低电平门禁开。程序流程如下:图 3.

42、5 门禁系统开关子程序流程图3.63.6 报警子程序设计报警子程序设计 本系统的报警提示是通过蜂鸣器和 LED 来实现的,根据报警电路原理,报警是通过一个 IO 口来实现的,当 IO 口输出低电平,蜂鸣叫叫且 LED 亮;当 I/O口输出高电平,蜂鸣器不叫且 LED 灭。报警提示子程序流程如下:精选优质文档-倾情为你奉上专心-专注-专业图 3.6 蜂鸣器/LED 报警子程序流程图4 系统的焊接与调试4.14.1 系统硬件焊接与调试系统硬件焊接与调试 根据系统设计方案,本系统的调试可分为两大部分:模拟部分和纯 MCU 部分。由于在系统设计中采用模块化设计,所以方便了对各电路功能模块的逐级测试。断

43、开两部分的连接点,先调试 MCU 部分。试着输入一系列脉冲(用适当的电阻接正极,间断性地输入),观察 MCU 部分能是否能显示;模拟借助示波器观察波形效果如何。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。最后将各模块组合后进行整体测试,使系统的功能得以实现。1.12864 液晶不显示或有乱码 确保程序与硬件接法都没有错;这时候你应该检查一下单片机是否工作,看看它是否在工作电压的范围(我当时的问题就出在这里,Vcc 接入单片机时经过了一个 10K 电阻和发光二极管,导致输入单片机的电压很少,单片机没工作,所以不显示);看看端口设置有没有错(12864 的驱动等)。 128

44、64 液晶乱码问题是由于 KEIL 没有打补丁照成的。需要打补丁后重新编译程序即可解决。 2. 时钟的调试 根据晶体振荡频率计算出内部定时器的基本参数,通过运行一段时间可通过秒表来校正后,看时间误差的量,以这个量为依据改变程序中的内部定时器基本参数,就可使时钟调准确。3. IC 卡识别率较低 IC 卡识别率低问题可能有:(1)电源部分没有做滤波处理;(2)IO 口没有加上拉电阻导致驱动力减弱。4.键盘反应迟钝。 键盘反应迟钝问题一般是去抖动时间太长照成的,应根据测试,看去抖的最佳时间,适当可以结合示波器观察。4.24.2 系统软件调试系统软件调试 系统软件调试采用 KeilC51 编译器进行源

45、程序编译及仿真调试,同时进行硬件电路板的设计制作。将设计的程序通过编程器下载到单片机 STC89C52 单片机精选优质文档-倾情为你奉上专心-专注-专业中,再将单片机插入插座里,给制作的实物连通电源。即可完成程序下载。 下载过程中,若出现现在失败,是以因为单片机需要断电上电才能下载。关闭电源从即可。前提是串口要找正确,单片机型号选择要正确。精选优质文档-倾情为你奉上专心-专注-专业结 语 通过这次课设让我更深一步的了解的 stc89C52 的实际用处,也让我感受到单片机在实际中的重要性。本课题的主要任务是开发一个以 89C51 单片机为核心的 IC 卡门禁系统。 此课设的过程主要包括了硬件电路

46、设计和软件程序的编写两个部分。从确定毕设题目,到查阅质料确定总体方案设计,总体方案论证,硬件电路的设计,硬件电路的优化,软件的设计,软件的优化,焊制硬件电路板,检验硬件电路,调试软件程序,到最后的软硬件联调,其中的每一个过程都是精心设计、仔细完成的。在项目即将完成之际,也意味着是我们大学即将圆满完成,此时此刻,我的心情无法平静,从开始进入课题到项目的顺利完成,有多少可敬的老师、亲爱的同学和朋友给了我们无尽的帮助,在这里请接受我诚挚的谢意! 首先,我要感谢我的指导老师刘老师治学严谨,学识渊博,待人热情,平易近人,使我们在毕业设计的过程中遇到难题时,能够大胆的向老师提出问题,老师也总是及时而又耐心

47、的帮我解答。项目选题后,在项目资料查询、调研、开题、研究设计和论文撰写的每一个环节,都得到了刘老师的悉心指导和帮助。在此我向刘老师表示衷心的感谢! 同时,我还要感谢所有任课老师和系部领导,感谢他们对我们学习上和上活上的关心与支持,他们不仅传授了我丰富的知识,还教会了为人处事的原则,这些都让我在设计的过程中有一个良好的心态,并能让我终身受益。 最后,我再次对所有帮助我们、关心我们和支持我们的老师、家人、同学、朋友致以最崇高的敬意!谢谢大家精选优质文档-倾情为你奉上专心-专注-专业参考文献参考文献1 常斗南. 可编程序控制器原理应用实验M. 北京:机械工业出版社,1998.72 吕汀,石红梅. 变

48、频器技术原理与应用M. 北京:机械工业出版社,2003,263-2683 Xue Shilong Chen Yihui. The Marine Anchor And winchs Frequency-conversion And Speed-modification System Based on PLC Control.IMECE.2003.4何立民单片机技术的现状与未来J中国计算机报19955曹明扬单片机发展动向及市场预测J计算机世界19966宋浩,田丰单片机原理及应用M清华大学出版社7张洪润,易涛单片机应用技术教程M清华大学出版社8刘洋音乐喷泉与变频调速技术J考试周刊2007 年第 29

49、 期9王宗和,童一帆单片机实验与综合训练M高等教育出版社2005.1210蒋燕君基于 AT89C2051 的步进电机精确控制系统的实现J浙江树人大学学报2006.611Intel Corporation MCS-51 MICROCONTROLLER FAMILY USERS MANULMUSA1994.212 Atmel AT89C51 MICROCONTROLLER FAMILY USERS MANULMUSA1995.4精选优质文档-倾情为你奉上专心-专注-专业附录一附录一 电路图电路图精选优质文档-倾情为你奉上专心-专注-专业附录二、程序源代码附录二、程序源代码#include incl

50、ude.h#include key.h#include stc89c5x_eerom.hsbit JDQ=P16;sbit LED=P17;uchar flag1=0;INT8U CardRevBuf16 = 0 ;void init_all(void)EA = 0;init_rc522();init_lcd();EA = 1;void display_no_id( void )DisplayListChar( 0, 0, ID: );DisplayListChar( 0, 1, OFF );void display_id( INT8U * SrcBuf )char DisplayBuf10;

51、char *pDisplayChar;INT8U Tmp, i;pDisplayChar = DisplayBuf;for( i = 0; i 4 ) & 0 x0F;if( ( Tmp =0 ) & ( Tmp =0 ) & ( Tmp 59) SS=0; MM+; if(MM59) MM=0;HH+;if(HH23) HH=0; DA+; if(DA30) DA=1; MO+; if(MO12) MO=1; YE+; if(YE99) YE=0; /* - 函数名称:dis_timer() - 隶属模块:time.h - 函数属性:内部 - 参数说明:无返回值,无带

52、入参数 - 返回说明:无 - 功能描述:系统时钟显示界面、设置时钟显示界面 */void dis_timer()/时钟日期显示函数uchar m;/定义一个变量用于闪烁临时计数精选优质文档-倾情为你奉上专心-专注-专业 m=SS&0 x01;/通过 m 变量的取值来实现变量闪烁 DisplayListChar(0,0,20);/显示固定字符 20/*-“年份”显示代码部分-*/ if(counter11=7)/年变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将年显示出来 lcd_goto_xy(2,0);lcd_number(YE/10);lcd_number(Y

53、E%10); else /则显示空格字符。 lcd_goto_xy(2,0);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示年 lcd_goto_xy(2,0);lcd_number(YE/10);lcd_number(YE%10); /*-“间隔符”显示代码部分-*/ lcd_putc(/);/间隔符显示/*-“月份”显示代码部分-*/ if(counter11=6)/月变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将月显示出来 lcd_goto_xy(5,0);lcd_number(MO/10);lcd_number(

54、MO%10); else /则显示空格字符。 lcd_goto_xy(5,0);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(5,0);lcd_number(MO/10);lcd_number(MO%10); /*-“间隔符”显示代码部分-*/ lcd_putc(/);/间隔符显示/*-“日”显示代码部分-*/ if(counter11=5)/日变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将日显示出来 lcd_goto_xy(8,0);lcd_number(DA/10);lcd_number(

55、DA%10); else /则显示空格字符。 lcd_goto_xy(8,0);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(8,0);lcd_number(DA/10);lcd_number(DA%10); /*-“间隔字符”显示代码部分-*/ lcd_puts( WEEK);/字符显示/*-“星期”显示代码部分-*/精选优质文档-倾情为你奉上专心-专注-专业 if(counter11=4)/星期变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将日显示出来 lcd_goto_xy(15,0);l

56、cd_number(XQ%10); else /则显示空格字符。 lcd_goto_xy(15,0);lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(15,0);lcd_number(XQ%10); /*-“小时”显示代码部分-*/ if(counter11=3)/小时变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将小时显示出来 lcd_goto_xy(4,1);lcd_number(HH/10);lcd_number(HH%10); else /则显示空格字符。 lcd_goto_xy(4,1);lcd_putc( )

57、;lcd_putc( ); else /否则年变量不处于修改状态,直接显示月 lcd_goto_xy(4,1);lcd_number(HH/10);lcd_number(HH%10); /*-“冒号”显示代码部分-*/ if(counter11=0)/如果不处于设置状态冒号才交替闪烁 if(m=0)lcd_putc(:); else lcd_putc( ); else lcd_putc(:);/否则处于设置状态下,直接显示不闪烁提示/*-“分钟”显示代码部分-*/ if(counter11=2)/分钟变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将分钟显示出来 lcd_g

58、oto_xy(7,1);lcd_number(MM/10);lcd_number(MM%10); else /则显示空格字符。 lcd_goto_xy(7,1);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示分钟 lcd_goto_xy(7,1);lcd_number(MM/10);lcd_number(MM%10); /*-“冒号”显示代码部分-*/ if(counter11=0)/如果不处于设置状态冒号才交替闪烁 if(m=0)lcd_putc(:); else lcd_putc( ); else lcd_putc(:);/否则处于设置状态

59、下,直接显示不闪烁提示/*-“秒钟”显示代码部分-*/ if(counter11=1)/秒钟变量处于设置状态,1 秒钟闪烁一次 if(m=0)/如果 m=0,就将秒钟显示出来 lcd_goto_xy(10,1);lcd_number(SS/10);lcd_number(SS%10); else /则显示空格字符。精选优质文档-倾情为你奉上专心-专注-专业 lcd_goto_xy(10,1);lcd_putc( );lcd_putc( ); else /否则年变量不处于修改状态,直接显示分钟 lcd_goto_xy(10,1);lcd_number(SS/10);lcd_number(SS%10

60、); /* - 函数名称:set_time - 隶属模块:sys_app.h - 函数属性:内部 - 参数说明:无返回值,无带入参数无 - 返回说明:无 - 功能描述:系统时间设置函数,通过此函数设置时钟、日期功能。 */void set_time(void)/系统菜单设置时间函数 /*时钟设置界面显示*/ dis_timer(); /*键盘扫描获取键值*/ num=keyscan();/反复扫描 4*4 键盘获得按键参数 /*判断是否是一次有效的按键按下*/*-被设置变量选择代码部分-*/ if(num=12)/如果 key_value=0 代表“选择设置参数键按下” num=255; counter11+;/让记录设置的参数的变量值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论