基于单片机的ic卡门禁系统 毕业设计_第1页
基于单片机的ic卡门禁系统 毕业设计_第2页
基于单片机的ic卡门禁系统 毕业设计_第3页
基于单片机的ic卡门禁系统 毕业设计_第4页
基于单片机的ic卡门禁系统 毕业设计_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

2013届本科生毕业设计题目基于单片机IC卡门禁系统的设计与实现院系机械与电子信息工程学院专业年级2013级电信专升本姓名陈诚学号2013080102指导教师唐永刚教授2015年03月20日TITLEMICROCONTROLLERBASEDTEMPERATURECONTROLSYSTEMFOUNTAINSDEPARTMENTCOLLEGEOFTHESYSTEMOFENERGYSAVINGANDSAFETYMAJORELECTRONICANDINFORMATIONENGINEERINGAUTHORCHENCHENGSTUDENTID2013080102INSTRUCTORTANGYONGGANGPROFESSORMARCH20TH,2015摘要随着科学技术的进步,IC卡门禁系统在日常生活中的应用越来越普及。比如公司、写字楼出入口门禁制系统采取以感应卡来取代用钥匙开门的方式。使用者用一张卡可以打开多把门锁,对门锁的开启也可以有一定的时间限制。如果卡丢失了,不必更换门锁,只需将其从控制主机中注销。出入口门禁控制系统是通过对出入口的准入情况进行控制、管理和记录的设备,对何人何时在何地进行详细跟踪,以实现中心对出入口的24小时控制、监视及管理等。本系统以89C51系列单片机STC89C52为控制核心,利用非接触式高频MIFAREIC卡模块读取用户手中的IC卡信息,识别成功后与系统存储的IC卡库数据进行比对校验,如果IC卡数据库中有IC卡则证明IC卡合法,单片机通过控制继电器控制电子锁门禁开启和关闭。同时系统采用4X4矩阵键盘作为输入,LCD1602液晶作为人机交互显示,让系统具备更大的实用价值。关键词STC89C52;4X4键盘;IC卡;LCD1602;MIFAREABSTRACTWITHTHEPROGRESSOFSCIENCEANDTECHNOLOGY,ACCESSCONTROLSYSTEMSUSEDINDAILYLIFEISMOREANDMOREPOPULARTHEGATEENTRANCECONTROLSYSTEMTOREPLACEOPENADOORWITHAKEYWAYTOINDUCTIONCARDAUSERWITHACARDCANOPENTHELOCKONTHEDOORLOCK,THEOPENINGCANALSOHAVEACERTAINTIMELIMITIFTHECARDISLOST,DONOTHAVETOCHANGETHELOCKS,THECANCELLATIONOFITSCONTROLFROMTHEHOSTTHEGATEENTRANCECONTROLSYSTEMTHROUGHCONTROL,EQUIPMENTMANAGEMENTANDRECORDSOFTHEADMITTANCEOFENTRANCETOWHOM,WHENANDWHERETODETAILEDTRACKING,TOACHIEVETHECENTERONTHEENTRANCE24HOURSCONTROL,MONITORINGANDMANAGEMENTTHISSYSTEMUSES89C51SERIESMCUSTC89C52ASTHECONTROLCORE,THEUSEOFCONTACTLESSICCARDINFORMATIONOFHIGHFREQUENCYMIFAREICCARDMODULETOREADTHEUSERSHANDS,RATIOOFICARECHECKINGDATARECOGNITIONAFTERSUCCESSFULANDSTORAGESYSTEM,IFTHEREISEVIDENCETHATTHEICCARDICCARDICCARDDATABASELEGAL,CHIPBYCONTROLLINGTHERELAYCONTROLELECTRONICLOCKOPENINGANDCLOSINGATTHESAMETIMETHESYSTEMUSESTHE4X4MATRIXKEYBOARDASINPUT,LCD1602LIQUIDCRYSTALDISPLAYASHUMANCOMPUTERINTERACTION,CANCOMPLETETHEICCARDINFORMATIONTHROUGHTHEKEYBOARDTOADD,DELETEANDOTHERTASKS,TOMAKETHESYSTEMMOREPRACTICALVALUEKEYWORDSSTC89C524X4KEYBORDICCARDLCD1602MIFARE目录1系统总体方案设计311系统设计原理312硬件方案的选择3121主控制芯片的选择3122显示模块的选择4123电源电路的比较与选择4124键盘输入电路的选泽5125电子锁门禁驱动电路的选择5126数据存储芯片的选泽62系统的硬件设计721单片机最小系统设计7211STC89C52单片机介绍722IC卡原理及驱动电路设计9221MIFARE射频卡技术参数9222IC卡内部结构介绍9223IC卡读写过程11224单片机与IC卡读卡模块接口电路设计1123键盘电路设计11231键盘识别原理11232键盘电路及键盘按键定义1224电子锁门禁继电器驱动电路设计12241继电器介绍12242继电器驱动电路设计1325LCD1602液晶显示电路设计13251LCD1602液晶介绍13252单片机与LCD1602液晶接口介绍143系统的软件设计1531系统总程序设计1532IC卡读写子程序设计1633键盘扫描程序的设计1734LCD1602液晶显示子程序1835电子锁门禁开关子程序设计1936报警子程序设计204系统的焊接与调试2141系统硬件焊接与调试2142系统软件调试21结语23参考文献25附录一电路图26附录二、程序源代码261系统总体方案设计11系统设计原理本系统是基于STC89C52单片机设计的IC卡门禁系统。系统由两个部分构成硬件电路部分和软件部分。硬件部分主要是电路板的设计与制作,软件部分主要是各个模块的驱动及总程序调试与实现。硬件电路主要由51单片机最小系统、射频IC卡模块、LCD1602液晶显示模块、报警提示模块、4X4键盘模块、电子锁继电器模块、电源模块等构成。设计硬件电路结构如下图所示。图11系统总体框图12硬件方案的选择121主控制芯片的选择方案一采用ARM9微处理器作为控制器。ARM9引系列处理器是英国ARM公司设计的主流嵌入式处理器ARM9内核是09MIPS/MHZ的三级流水线和冯诺伊曼结构;ARM9内核是5级流水线,提供11MIPS/MHZ的哈佛结构。ARM7没有MMU,ARM720T是MMU的,ARM9主要包括ARM9TDMI和ARM9ES等系列ARM9是有MMU的,ARM940T只有MEMORYPROTECTIONUNIT不是一个完整的MMU。ARM7是典型的微处理器,体积小、处理能力强、功耗低,但价格昂贵,会照成产品成本增加。单片机STC89C52电源模块时钟电路LCD1602液晶显示模块4X4键盘模块IC卡读卡模块蜂鸣器/LED报警提示模块电子锁门禁继电器驱动模块方案二采用STC89C52单片机作为为控制STC89C52单片机是对目前所有兼容INTEL8031指令系统的单片机的统称。该系列单片机的始祖是INTEL的8031单片机,后来随着FLASH技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是52系列的单片机一般不具备自编程能力。51成本低廉,使用方便,适合与本系统的温度检测与控制。综上分析,我们采用了第二个方案,即采用STC89C52单片机作为主控制芯片。122显示模块的选择方案一采用数码管显示。数码管显示具有亮度高、显示简单简洁、成本低廉,可靠性高、响应速度快等有点。但如果采用想要显示要想让能见度较远并且醒目的同时又要显示汉字、图片等丰富的信息,则需要的液晶屏就要足够大成本也就很高。电路复杂需器件也高。方案二采用LCD1602液晶显示LCD128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864,内置8192个1616点汉字,和128个168点ASCII字符集利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。LCD1602液晶器件与数码管显示模块相比,在硬件电路结构或显示程序都要简洁得多,且该器件的价格始终,批量价格更低。而且显示平稳、省电、美观,更容易实现题目要求,对后续的功能兼容性高。软件操作简单,可操作性强。综上分析,我们采用了第二个方案。123电源电路的比较与选择方案一采用USB供电电脑的电源是通过电脑适配器将220VAC转换成了12VDC直流,电脑USB接口可以提供稳定的5V直流电压。完全能够满足5V单片机系统的供电需要,并且电源稳定、即插即用,功耗低使用非常方便。方案二自制直流稳压电源模块。将插线板电源经过变压、整流、滤波、稳压后输出。为系统提供稳定可靠的电源。自制电源会增加硬件成本,同时高压转抵押也带来不稳定等因素,因此不采用此方法。由于USB供电具有即插即用的特点,方便实用,因此我们选择第一个方案。124键盘输入电路的选泽方案一采用独立按键电路输入独立按键结构简单使用它方便,只需要单片机IO口和地跨接即可,当按下按键时候单片机IO口电压被拉低,单片机就可以检测到此电压的变化,一次来判断是否有按键按下。但缺点是占用较多的IO口资源。本系统需要按键数目较多,因此此方法不可行。方案二采用44矩阵键盘模块。在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4416个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是不合理的。综上,本系统设计的门禁系统,需要输入密码至少需要09确认、退出等功能按键,因此举证键盘是最好的选择,故选择方案2。125电子锁门禁驱动电路的选择方案一采用S8550三极管、继电器驱动。S8550是一种常用的普通三极管。它是一种低电压,大电流,小信号的PNP型硅三极管。三极管驱动具有电路结构简单,成本低廉等特点。继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。本系统采用S8850三极管增大驱动电流以驱动继电器开关,进而来控制电子锁部件。方案二采用L298N驱动芯片。L298N是一种双H桥电机驱动芯片,其中每个H桥可以提供2A的电流,功率部分的供电电压范围是2548V,逻辑部分5V供电,接受5VTTL电平。LN298内部继承大功率H桥路。具有稳定性高、使用简单,驱动力大等特点。光耦合器亦称光电隔离器或光电耦合器,简称光耦。它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管)封装在同一管壳内。当输入端加电信号时发光器发出光线,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电光电”转换由于L298N芯片器件成本较高,会大大加大开发成本,同时光耦元件适用于高速低电压的开关场合,因此本方案不可取。综上分析,我们采用了第二个方案。126数据存储芯片的选泽方案一采用单片机自带的EEPROM存储数据。STC89C52单片机片内自带了2K的EEPROM闪存。改闪存可以反复擦除和读写很多次,使用起来方便快捷、而且不增加成本。方案二采用AT24C02存储芯片。AT24C02是TI公司退出的典型的基于IIC总线协议的DIP8封装的偏外存储芯片。其内部是一个2K位串行CMOSE2PROM,内部含有256个8位字节。AT24C02支持I2C,总线数据传送协议I2C,总线协议规定任何将数据传送到总线的器件作为发送器。任何从总线接收数据的器件为接收器。数据传送是由产生串行时钟和所有起始停止信号的主器件控制的。通过器件地址输入端A0、A1和A2可以实现将最多8个AT24C02器件连接到总线上。但此芯片价格昂贵,需要增加外部电路和硬件成本,因此不可取。综上分析,我们采用了第一个方案。2系统的硬件设计整个系统硬件电路由单片机最小系统、4X4键盘模块、LCD1602液晶显示模块、IC卡读卡模块、电子锁门禁继电器驱动模块、数据存储模块等组成。系统硬件电路设计如下21单片机最小系统设计211STC89C52单片机介绍STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程FLASH存储器。STC89C52使用经典的MCS51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能8K字节FLASH,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0HZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHZ,6T/12T可选。21252最小系统电路设计52单片机最小系统一般有52单片机、电源模块、复位电路、时钟电路构成。(1)复位电路设计单片机的复位分为上电自动复位和按钮手动复位两种。上电复位电路由22UF电解电容和10K电阻构成。原理是上电瞬间,电容充电电流最大,电容相当于短路,RST端为高电平,自动复位;电容两端的电压达到电源电压时,电容充电电流为零,电容相当于开路,RST端为低电平,程序正常运行。按键手动复位电路电路由按键、10K电阻、1K电阻、22UF构成。原理是首先经过上电复位,当按下按键时,RST直接与VCC相连,为高电平形成复位,同时电解电容被短路放电;按键松开时,VCC对电容充电,充电电流在电阻上,RST依然为高电平,仍然是复位,充电完成后,电容相当于开路,RST为低电平,正常工作。这里我们采用按键复位来实现,电路图如下。图21复位电路(2)时钟电路设计时钟电路用于产生单片机所需要的时钟信号,单片机在时钟信号的控制下各部件之间同步协调工作。根据产生的方式不同,分为内部和外部两种时钟电路。在51芯片内部有一个用于构成振荡器的高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,在引脚XTAL1和XTAL2上输出3V左右的正弦波,这就是单片机的振荡电路,如图35所示。图22系统时钟电路通常,电容C1和C2取30PF左右,主要作用是帮助振荡器起振,晶体的振荡频率范围是1212MHZ。晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。在通常应用情况下,STC89C52使用振荡频率为6MHZ或12MHZ。在由多片单片机组成的系统中,为了各单片机之间时钟信号的同步,应当引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲。这是,外部的脉冲信号时经过XTAL2引脚注入,其连接如图35所示,由于XTAL2端逻辑电平不是TTL的,故需要外接一个上拉电阻,外接信号应为时钟频率低于12MHZ的方波信号。22IC卡原理及驱动电路设计221MIFARE射频卡技术参数(1)容量为8K位(BITS)1K字节(BYTES)EEPROM(2)分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位(3)每个扇区有独立的一组密码及访问控制(4)每张卡有唯一序列号,为32位(5)具有防冲突机制,支持多卡操作(6)无电源,自带天线,内含加密控制逻辑和通讯逻辑电路(7)数据保存期为10年,可改写10万次,读无限次(8)工作温度2050湿度为90(9)工作频率1356MHZ(10)通信速率106KBPS(11)读写距离10CM以内(与读写器有关)222IC卡内部结构介绍M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为063,存贮结构如下图所示图23IC卡存储结构图(2)第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。块0数据块0块1数据块1块2数据块2扇区0块3密码A存取控制密码B控制块3块0数据块4块1数据块5块2数据块6扇区1块3密码A存取控制密码B控制块70数据块601数据块612数据块62扇区153密码A存取控制密码B控制块63(3)每个扇区的块0、块1、块2为数据块,可用于存贮数据。数据块可作两种应用用作一般的数据保存,可以进行读、写操作。用作数据值,可以进行初始化值、加值、减值、读值操作。(4)每个扇区的块3为控制块,包括了密码A、存取控制、密码B。具体结构如下密码A(6字节)存取控制(4字节)密码B(6字节)(5)每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,定义如下块0C10C20C30块1C11C21C31块2C12C22C32块3C13C23C33三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。三个控制位在存取控制字节中的位置,以块0为例对块0的控制BIT76543210字节6C20_BC10_B字节7C10C30_B字节8C30C20字节9存取控制(4字节,其中字节9为备用字节)结构如下所示BIT76543210字节6C23_BC22_BC21_BC20_BC13_BC12_BC11_BC10_B字节7C13C12C11C10C33_BC32_BC31_BC30_B字节8C33C32C31C30C23C22C21C20字节9A0A1A2A3A4A5FF078069B0B1B2B3B4B5223IC卡读写过程非接触式IC卡的读写过程通常由非接触式IC卡与读写器之间通过无线电波来完成读写操作。非接触型IC卡本身是无源体,当读写器对卡进行读写操作时,读写器发出的信号由两部分叠加组成一部分是电源信号,该信号由卡接收后,与其本身的L/C产生谐振,产生一个瞬间能量来供给芯片工作。另一部分则是结合数据信号,指挥芯片完成数据、修改、存储等,并返回给读写器。由非接触式IC卡所形成的读写系统,无论是硬件结构,还是操作过程都得到了很大的简化,同时借助于先进的管理软件,可脱机的操作方式,都使数据读写过程更为简单。224单片机与IC卡读卡模块接口电路设计本系统单片机和IC卡读卡器模块通过5个IO口相连,驱动程序通过SPI总线模式实现IC卡的读写操作。IC卡读卡器与单片机接口电路如下图,图24IC卡底座接口图图中编号18为射频刷卡模块的引脚图,分别是RST、CSSISCKSO接口,模块插接到这个底座上,就会对应和单片机的P10、P11P12P13P14相接。23键盘电路设计231键盘识别原理在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式,如图1所示。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4416个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。矩阵键盘的扫描通常采用行扫描法。行扫描法又称为逐行(或列)扫描查询法,是一种最常用的按键识别方法,介绍过程如下。(1)判断键盘中有无键按下将全部行线置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。(2)判断闭合键所在的位置在确认有键按下后,即可进入确定具体闭合键的过程。其方法是依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。232键盘电路及键盘按键设计本系统中4X4矩阵键盘通过8个IO口与单片机相接,电路中我们用到了P1口。每个按键通过程序识别唯一的编号,然后在程序中对按键的键值进行在定义,让按键具备新的功能。矩阵键盘电路及按键定义表如下图25键盘电路图0123456789确认退出设置密码清除I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输入端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。24电子锁门禁继电器驱动电路设计241继电器介绍继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、通讯、自动控制、机电一体化及电力电子设备中,是最重要的控制元件之一。继电器一般都有能反映一定输入变量(如电流、电压、功率、阻抗、频率、温度、压力、速度、光等)的感应机构(输入部分);有能对被控电路实现“通”、“断”控制的执行机构(输出部分);在继电器的输入部分和输出部分之间,还有对输入量进行耦合隔离,功能处理和对输出部分进行驱动的中间机构。242继电器驱动电路设计本系统设计的电子锁门禁系统,采用了一只PNP三极管S8550来驱动电路,其目的是增大驱动电流,因为继电器线圈驱动需要较大的电流才能启动,而单片机IO输出的电流非常微弱,达不到驱动的要求。当单片机IO口输出低电平时S8550三极管导通,继电器线圈产生电磁感应将开关吸合,就接通了电子锁电源,电子锁就可以开了。当IO口给高电平时,线圈没有电流,继电器断开。图26继电器驱动电路图25LCD1602液晶显示电路设计251LCD1602液晶介绍字符型液晶显示是一种专门用于显示字母、数字、符号等点阵式LCD,本设计采用的是LCD1602型液晶显示器,其外形尺寸为803614,单5V供电,由左到右共16个引脚,其实物如图602液晶模块内部的字符发生存储器(CGROM已经存储了160个不同的点阵字符图形,如图313所示,这些字符有阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。252单片机与LCD1602液晶接口电路介绍LCD1602液晶显示模块可以和单片机STC89C52直接接口,DB0DB7与单片机的P00P07连接以便数据的传送与接收,4管脚、5管脚、6管脚分别与STC89C51单片机的P27口、P26口、P25口连接,电路如下图所示图27液晶接口电路图3系统的软件设计31系统总程序设计系统上电后首先进行初始化,完成液晶、键盘等初始化任务。然后进入死循环,单片机控制IC卡模块时时扫描判断是否有IC靠近,当靠近时,启动IC卡读取程序,识别IC卡卡片信息后,与AT24C02芯片内存储的IC卡数据库信息进行比对,如果校验成功则控制门禁开,反之则不开门禁。整个过程LCD1602液晶显示操作过程及数据信息。系统主流程图如下。图31系统主程序流程图32IC卡读写子程序设计IC卡读写卡的过程一般包含如下几个步骤(1)复位应答(ANSWERTOREQUEST)射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型。(2)防冲突机制ANTICOLLISIONLOOP当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。(3)选择卡片SELECTTAG选择被选中的卡的序列号,并同时返回卡的容量代码。(4)三次互相确认3PASSAUTHENTICATION选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)IC卡读写流程图如下图32IC卡读写操作流程图33键盘扫描程序的设计每个按键有它的行值和列值口,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘处理程序的任务是确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。图33矩阵键盘子程序流程图34LCD1602液晶显示子程序1602液晶是字符型液晶,它的内部自带字符库,它可以写两行的字符,同时每行可以写40个字符。液晶显示程序流程图如下图所示LCD1602液晶显示程序流程图如图下所示图34LCD1602液晶显示子程序流程图从此流程图我们得出LCD液晶显示屏在写显示程序的时候,我们要先写命令,再设定字符显示和汉字的位置,最后写数据,在每写一次命令或数据都需要判断液晶是否忙。打开液晶显示屏进入初始化状态,开始写命令,首先判断LCD是否忙,如果是P070,那么进入下一步写命令,如果不是P070,返回LCD是否忙。开始LCD初始化LCD写命令LCD判忙设置显示位置写数据判忙结束P070P070写完成了写完成了是否否否否是是是35电子锁门禁开关子程序设计本系统的电子锁门禁开关,单片机只需要输出高低电平即可。当输出高电平时门禁关、低电平门禁开。程序流程如下图35门禁系统开关子程序流程图36报警子程序设计本系统的报警提示是通过蜂鸣器和LED来实现的,根据报警电路原理,报警是通过一个IO口来实现的,当IO口输出低电平,蜂鸣叫叫且LED亮;当I/O口输出高电平,蜂鸣器不叫且LED灭。报警提示子程序流程如下图36蜂鸣器/LED报警子程序流程图4系统的焊接与调试41系统硬件焊接与调试根据系统设计方案,本系统的调试可分为两大部分模拟部分和纯MCU部分。由于在系统设计中采用模块化设计,所以方便了对各电路功能模块的逐级测试。断开两部分的连接点,先调试MCU部分。试着输入一系列脉冲(用适当的电阻接正极,间断性地输入),观察MCU部分能是否能显示;模拟借助示波器观察波形效果如何。单片机软件先在最小系统板上调试,确保工作正常之后,再与硬件系统联调。最后将各模块组合后进行整体测试,使系统的功能得以实现。112864液晶不显示或有乱码确保程序与硬件接法都没有错;这时候你应该检查一下单片机是否工作,看看它是否在工作电压的范围(我当时的问题就出在这里,VCC接入单片机时经过了一个10K电阻和发光二极管,导致输入单片机的电压很少,单片机没工作,所以不显示);看看端口设置有没有错(12864的驱动等)。12864液晶乱码问题是由于KEIL没有打补丁照成的。需要打补丁后重新编译程序即可解决。2时钟的调试根据晶体振荡频率计算出内部定时器的基本参数,通过运行一段时间可通过秒表来校正后,看时间误差的量,以这个量为依据改变程序中的内部定时器基本参数,就可使时钟调准确。3IC卡识别率较低IC卡识别率低问题可能有(1)电源部分没有做滤波处理;(2)IO口没有加上拉电阻导致驱动力减弱。4键盘反应迟钝。键盘反应迟钝问题一般是去抖动时间太长照成的,应根据测试,看去抖的最佳时间,适当可以结合示波器观察。42系统软件调试系统软件调试采用KEILC51编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作。将设计的程序通过编程器下载到单片机STC89C52单片机中,再将单片机插入插座里,给制作的实物连通电源。即可完成程序下载。下载过程中,若出现现在失败,是以因为单片机需要断电上电才能下载。关闭电源从即可。前提是串口要找正确,单片机型号选择要正确。结语通过这次课设让我更深一步的了解的STC89C52的实际用处,也让我感受到单片机在实际中的重要性。本课题的主要任务是开发一个以89C51单片机为核心的IC卡门禁系统。此课设的过程主要包括了硬件电路设计和软件程序的编写两个部分。从确定毕设题目,到查阅质料确定总体方案设计,总体方案论证,硬件电路的设计,硬件电路的优化,软件的设计,软件的优化,焊制硬件电路板,检验硬件电路,调试软件程序,到最后的软硬件联调,其中的每一个过程都是精心设计、仔细完成的。在项目即将完成之际,也意味着是我们大学即将圆满完成,此时此刻,我的心情无法平静,从开始进入课题到项目的顺利完成,有多少可敬的老师、亲爱的同学和朋友给了我们无尽的帮助,在这里请接受我诚挚的谢意首先,我要感谢我的指导老师刘老师治学严谨,学识渊博,待人热情,平易近人,使我们在毕业设计的过程中遇到难题时,能够大胆的向老师提出问题,老师也总是及时而又耐心的帮我解答。项目选题后,在项目资料查询、调研、开题、研究设计和论文撰写的每一个环节,都得到了刘老师的悉心指导和帮助。在此我向刘老师表示衷心的感谢同时,我还要感谢所有任课老师和系部领导,感谢他们对我们学习上和上活上的关心与支持,他们不仅传授了我丰富的知识,还教会了为人处事的原则,这些都让我在设计的过程中有一个良好的心态,并能让我终身受益。最后,我再次对所有帮助我们、关心我们和支持我们的老师、家人、同学、朋友致以最崇高的敬意谢谢大家参考文献1常斗南可编程序控制器原理应用实验M北京机械工业出版社,199872吕汀,石红梅变频器技术原理与应用M北京机械工业出版社,2003,2632683XUESHILONGCHENYIHUITHEMARINEANCHORANDWINCHSFREQUENCYCONVERSIONANDSPEEDMODIFICATIONSYSTEMBASEDONPLCCONTROLIMECE20034何立民单片机技术的现状与未来J中国计算机报19955曹明扬单片机发展动向及市场预测J计算机世界19966宋浩,田丰单片机原理及应用M清华大学出版社7张洪润,易涛单片机应用技术教程M清华大学出版社8刘洋音乐喷泉与变频调速技术J考试周刊2007年第29期9王宗和,童一帆单片机实验与综合训练M高等教育出版社20051210蒋燕君基于AT89C2051的步进电机精确控制系统的实现J浙江树人大学学报2006611INTELCORPORATIONMCS51MICROCONTROLLERFAMILYUSERSMANULMUSA1994212ATMELAT89C51MICROCONTROLLERFAMILYUSERSMANULMUSA19954附录一电路图附录二、程序源代码INCLUDE“INCLUDEH“INCLUDE“KEYH“INCLUDE“STC89C5X_EEROMH“SBITJDQP16SBITLEDP17UCHARFLAG10INT8UCARDREVBUF160VOIDINIT_ALLVOIDEA0INIT_RC522INIT_LCDEA1VOIDDISPLAY_NO_IDVOIDDISPLAYLISTCHAR0,0,“ID“DISPLAYLISTCHAR0,1,“OFF“VOIDDISPLAY_IDINT8USRCBUFCHARDISPLAYBUF10CHARPDISPLAYCHARINT8UTMP,IPDISPLAYCHARDISPLAYBUFFORI0I4IFTMP0MMIFMM59MM0HHIFHH23HH0DAIFDA30DA1MOIFMO12MO1YEIFYE99YE0/函数名称DIS_TIMER隶属模块TIMEH函数属性内部参数说明无返回值,无带入参数返回说明无功能描述系统时钟显示界面、设置时钟显示界面/VOIDDIS_TIMER/时钟日期显示函数UCHARM/定义一个变量用于闪烁临时计数MSS/通过M变量的取值来实现变量闪烁DISPLAYLISTCHAR0,0,“20“/显示固定字符20/“年份”显示代码部分/IFCOUNTER117/年变量处于设置状态,1秒钟闪烁一次IFM0/如果M0,就将年显示出来LCD_GOTO_XY2,0LCD_NUMBERYE/10LCD_NUMBERYE10ELSE/则显示空格字符。LCD_GOTO_XY2,0LCD_PUTCLCD_PUTCELSE/否则年变量不处于修改状态,直接显示年LCD_GOTO_XY2,0LCD_NUMBERYE/10LCD_NUMBERYE10/“间隔符”显示代码部分/LCD_PUTC/间隔符显示/“月份”显示代码部分/IFCOUNTER116/月变量处于设置状态,1秒钟闪烁一次IFM0/如果M0,就将月显示出来LCD_GOTO_XY5,0LCD_NUMBERMO/10LCD_NUMBERMO10ELSE/则显示空格字符。LCD_GOTO_XY5,0LCD_PUTCLCD_PUTCELSE/否则年变量不处于修改状态,直接显示月LCD_GOTO_XY5,0LCD_NUMBERMO/10LCD_NUMBERMO10/“间隔符”显示代码部分/LCD_PUTC/间隔符显示/“日”显示代码部分/IFCOUNTER115/日变量处于设置状态,1秒钟闪烁一次IFM0/如果M0,就将日显示出来LCD_GOTO_XY8,0LCD_NUMBERDA/10LCD_NUMBERDA10ELSE/则显示空格字符。LCD_GOTO_XY8,0LCD_PUTCLCD_PUTCELSE/否则年变量不处于修改状态,直接显示月LCD_GOTO_XY8,0LCD_NUMBERDA/10LCD_NUMBERDA10/“间隔字符”显示代码部分/LCD_PUTS“WEEK“/字符显示/“星期”显示代码部分/IFCOUNTER114/星期变量处于设置状态,1秒钟闪烁一次IFM0/如果M0,就将日显示出来LCD_GOTO_XY15,0LCD_NUMBERXQ10ELSE/则显示空格字符。LCD_GOTO_XY15,0LCD_PUTCELSE/否则年变量不处于修改状态,直接显示月LCD_GOTO_XY15,0LCD_NUMBERXQ10/“小时”显示代码部分/IFCOUNTER113/小时变量处于设置状态,1秒钟闪烁一次IFM0/如果M0,就将小时显示出来LCD_GOTO_XY4,1LCD_NUMBERHH/10LCD_NUMBERHH10ELSE/则显示空格字符。LCD_GOTO_XY4,1LCD_PUTCLCD_PUTCELSE/否则年变量不处于修改状态,直接显示月LCD_GOTO_XY4,1LCD_NUMBERHH/10LCD_NUMBERHH10/“冒号”显示代码部分/IFCOUNTER110/如果不处于设置状态冒号才交替闪烁IFM0LCD_PUTCELSELCD_PUTCELSELCD_PUTC/否则处于设置状态下,直接显示不闪烁提示/“分钟”显示代码部分/IFCOUNTER112/分钟变量处于设置状态,1秒钟闪烁一次IFM0/如果M0,就将分钟显示出来LCD_GOTO_XY7,1LCD_NUMBERMM/10LCD_NUMBERMM10ELSE/则显示空格字符。LCD_GOTO_XY7,1LCD_PUTCLCD_PUTCELSE/否则年变量不处于修改状态,直接显示分钟LCD_GOTO_XY7,1LCD_NUMBERMM/10LCD_NUMBERMM10/“冒号”显示代码部分/IFCOUNTER110/如果不处于设置状态冒号才交替闪烁IFM0LCD_PUTCELSELCD_PUTCELSELCD_PUTC/否则处于设置状态下,直接显示不闪烁提示/“秒钟”显示代码部分/IFCOUNTER111/秒钟变量处于设置状态,1秒钟闪烁一次IFM0/如果M0,就将秒钟显示出来LCD_GOTO_XY10,1LCD_NUMBERSS/10LCD_NUMBERSS10ELSE/则显示空格字符。LCD_GOTO_XY10,1LCD_PUTCLCD_PUTCELSE/否则年变量不处于修改状态,直接显示分钟LCD_GOTO_XY10,1LCD_NUMBERSS/10LCD_NUMBERSS10/函数名称SET_TIME隶属模块SYS_APPH函数属性内部参数说明无返回值,无带入参数无返回说明无功能描述系统时间设置函数,通过此函数设置时钟、日期功能。/VOIDSET_TIMEVOID/系统菜单设置时间函数/时钟设置界面显示/DIS_TIMER/键盘扫描获取键值/NUMKEYSCAN/反复扫描44键盘获得按键参数/判断是否是一次有效的按键按下/被设置变量选择代码部分/IFNUM12/如果KEY_VALUE0代表“选择设置参数键按下”NUM255COUNTER11/让记录设置的参数的变量值IFCOUNTER117COUNTER110/因为只有7个参数需要修改/秒钟设置程序部分代码部分/IFCOUNTER111IFNUM13/SSIFSS59SS59NUM255IFNUM14/SSIFSS59MM59NUM255IFNUM14/MMIFMM23HH23NUM255IFNUM14/HHIFHH7XQ7NUM255IFNUM14/XQIFXQ31HH31NUM255IFNUM14/_DAIFDA12MO12NUM255IFNUM14/MOIFMO99YE99NUM255IFNUM14/YEIFYE0IFORJ50J0JFORK5K0KVOIDSHIZHONG1RR0WHILE1NUMKEYSCANLCD_GOTO_XY0,0LCD_PUTS“LOCKSCREEN“LCD_GOTO_XY7,1LCD_NUMBERBB/10LCD_NUMBERBB10FLAG0IFBB30BEEP_KEYBBRR0INIT_LCDTABLE10TABLE11TABLE12TABLE13TABLE14TABLE150LED1AXCOUNTER10NUM255BREAKIFNUM15BEEP_KEYINIT_LCDMMHHSS0TABLE10TABLE11TABLE12TABLE13TABLE14TABLE150LED1AXCOUNTER10NUM255BREAKRRIFRR1000RR0BBVOIDCHANGE_WORDIFNUM11NUM255INIT_LCDTABLE10TABLE11TABLE12TABLE13TABLE14TABLE150AGGXCOUNTER10BEEP_KEYLCD_GOTO_XY0,0LCD_PUTS“SETPASSWORD“GG0BEEP1WHILE1NUMKEYSCAN/反复扫描44键盘获得按键参数IFNUMMAXRLENNMAXRLENFORI0INIPOUTDATAIREADRAWRCFIFODATAREGELSESTATUSMI_ERRSETBITMASKCONTROLREG,0X80/STOPTIMERNOWWRITERAWRCCOMMANDREG,PCD_IDLERETURNSTATUS/功能寻卡/参数说明REQ_CODEIN寻卡方式/0X52寻感应区内所有符合14443A标准的卡/0X26寻未进入休眠状态的卡/PTAGTYPEOUT卡片类型代码/0X4400MIFARE_ULTRALIGHT/0X0400MIFARE_ONES50/0X0200MIFARE_ONES70/0X0800MIFARE_PROX/0X4403MIFARE_DESFIRE/返回成功返回MI_OK/CHARPCDREQUESTUNSIGNEDCHARREQ_CODE,UNSIGNEDCHARPTAGTYPECHARSTATUSUNSIGNEDINTUNLENUNSIGNEDCHARUCCOMMF522BUFMAXRLENCLEARBITMASKSTATUS2REG,0X08WRITERAWRCBITFRAMINGREG,0X07SETBITMASKTXCONTROLREG,0X03UCCOMMF

温馨提示

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

评论

0/150

提交评论