已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于单片机控制的射频ID卡考勤机的设计毕业论文目 录摘要IAbstractII绪论11整体方案设计21.1系统总体基本构成21.1.1系统实现方法21.1.2系统结构21.2系统工作原理32硬件电路设计42.1系统硬件主要构成42.1.1单片机AT89C5242.1.2稳压芯片L780562.1.3射频识别集成模块RF01D62.1.4片外数据存储器AT24C1682.1.5点阵液晶屏TS1286492.2系统硬件电路模块102.2.1MCU小系统102.2.2电源模块122.2.3射频识别模块122.2.4预警模块132.2.5数据存储模块132.2.6开关控制模块132.2.7液晶显示模块143软件设计153.1主程序流程图153.2各个模块的设计163.2.1显示模块163.2.2时钟模块183.2.3射频识别模块203.2.4数据存储模块223.2.5开关控制模块254系统安装与调试264.1系统硬件的安装264.2系统硬件的调试264.3系统软件的调试274.3.1显示模块的调试274.3.2时钟模块的调试274.3.3射频识别模块的调试284.3.4数据存储模块的调试284.3.5开关控制模块的调试28结论29致谢30参考文献31附录1系统原理图32附录2硬件实物图33附录3系统软件总程序3445绪论单片机正以低廉的成本、强大的功能、较高的可靠性广泛应用于家电设备、仪器仪表、工业控制及城市建设各个领域中。纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机1,3。随着技术进步,无线通讯和无线网络也迅速在我们日常生活中的各个方面扩展。而近年来,RFID无线射频识别技术的研究与应用也正飞速发展。射频识别技术具有很多优势:通过射频信号自动识别目标对象,无需可见光源;具有穿透性,可以透过外部材料直接读取数据,保护外部包装,节省开箱时间;射频产品可以在恶劣环境下工作,对环境要求低;读取距离远,无需与目标接触就可以得到数据;支持写入数据,无需重新制作新的标签;使用防冲突技术,能够同时处理多个射频标签,适用于批量识别场合;可以对RFID标签所附着的物体进行追踪定位,提供位置信息。由于RFID芯片的小型化和高性能芯片的实用化,射频识别标签不仅帮助不同领域的管理者追踪物品的位置和搬运情况,还可以实时报告标签上附带的其他信息,比如温度和压力等。射频标签是通过连接到数据网络上的读写器来提供此类信息的,迄今为止射频识别标签主要作为条码的延伸而应用于工厂自动化或者库存管理等领域。但最终说来,尺寸更小的射频识别标签将应用于更先进的领域内17,18。本课题的核心在于射频识别,同时也包括数据存储和显示,通过对射频信号的编码和识别记录相关信息并进行数据存储和输出显示,这使我们能够进一步掌握射频识别的原理和设计方法,对其有深入的了解和认识。并且通过实践,我们对所学过的理论知识有了更深刻的理解。另外,设计该课题使我掌握了51单片机的软硬件开发工具的使用方法,为今后从事相关行业的工作积累了经验。目前我国的信息行业发展迅速,无线通信更是在发展的前沿,但同时应该清楚的认识到我国的信息技术虽然发展迅速但和世界先进水平还有一定的差距。因此本课题不论是对自己的就业还是对我国射频识别技术的发展都有非常现实与积极的意义。1整体方案设计1.1系统总体基本构成本系统以单片机AT89C52为控制核心,由电源模块、射频识别模块、预警模块、数据存储模块、开关控制模块和LCD液晶显示模块组成,它们共同完成射频信号识别,信息读取、记录、查询,报警以及显示输出的任务。其中电源模块用于稳压;射频识别模块由RF01D与单片机相连接,射频信号通过触发外部中断与单片机进行通信;预警模块由蜂鸣器和LED灯构成,用于区分本地卡与对外来卡,并对外来卡进行报警;数据存储模块是由AT24C16芯片构成,进行刷卡信息的记录和存储;开关控制模块由4个按键组成,控制刷卡和时间调整;显示模块由TS12864液晶构成,用来进行刷卡信息的显示5,7。1.1.1系统实现方法电源模块以稳压芯片为核心,稳定电压的输出;射频识别模块由天线接收和射频信号解码电路集成用以采集拾取ID卡信息并编码输出;预警模块是在单片机控制下进行本地卡和外来卡的区分和报警;数据存储模块可实现对刷卡信息的记录和存储;开关控制模块主要是用来控制卡片信息的显示、查询和时间的调整;LCD液晶显示模块可根据单片机的控制显示刷卡的不同信息。1.1.2系统结构MCU小系统射频识别模块开关控制模块电源模块液晶显示模块数据存储模块图1-1 系统框图我所设计的电路基本思想是这样的,天线将刷卡的信息传送到射频识别模块,在单片机控制下经过密码对比区分该卡是本地卡还是外来卡,若为外来卡则预警模块启动报警;若为本地卡则预警模块报安全并记录刷卡时间存储在数据存储模块中,同时将结果显示输出在LCD液晶屏上。通过开关控制模块来查询刷卡记录并进行翻页查询以及时间的校准8。本系统的总体结构如图1-1所示。1.2系统工作原理天线将刷卡信息传送给射频识别模块后输出解码信息给单片机,单片机经密码对比区分卡的类别并将刷卡信息进行存储记录最后送至LCD液晶屏显示。另外,开关控制模块控制考勤信息的查询和时间的校准。由于刷卡时需要记录相关信息,而单片机不支持程序操作片内ROM区,因此需要对数据进行片外存储,鉴于89C52单片机的外部接口资源有限,可以采用AT24C16芯片进行串行数据传输12。用开关控制系统进入查询模式或时间校准模式13。在查询模式下,通过按键进行上下翻屏,并从外部数据存储其中调用数据,查询不同卡的多次刷卡信息。在时间校准模式下,通过按键的组合来调整当时的年份、月份、日期、小时以及分钟以完成时间的调整与校正。2硬件电路设计2.1系统硬件主要构成整个系统硬件主要由MCU小系统、电源模块、射频识别模块、预警模块、开关控制模块、数据存储模块及显示模块组成。主要的芯片和集成模块有单片机AT89C52,稳压芯片L7805,射频感应读卡机RF01D,数据存储芯片AT24C16,ST12864点阵液晶屏。2.1.1单片机AT89C52(1)概述AT89C52是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含8K bytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系列及8052产品引脚兼容,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机适用于许多较为复杂的控制应用场合。单片机89C52引脚图如图2-1所示。图2-1 单片机AT89C52引脚图(2)硬件结构AT89C52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。AT89C52的内部结构如图2-2所示。图2-2 AT98C51内部结构图(3)引脚功能:表2-1 P3口第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时/计数器0)P3.5T1(定时/计数器1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)Vcc:电源线接入。GND:电源地线接入。P0口:8位双向I/O口,即地址/数据总线复用口。P1口:8位双向I/O口,内置上拉电阻。P2口:8位双向I/O口,内置上拉电阻。P3口:8位双向I/O口,内置上拉电阻。P3口除了作为一般的I/O口外,还有第二功能,如表2-1所示。RST:复位输入。ALE/PROG:地址锁存允许端,用于锁存地址的低8位字节。PSEN:程序储存允许输出是外部程序存储器的读选通信号。EA/VPP:外部访问允许。EA=0访问外部程序存储器;EA=1访问内部程序存储器中的指令。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.1.2稳压芯片L7805L7805(其封装如图2-3所示)为L7800系列产品。在L7800系列三端阳性调节器可以采用TO-220和TO-220FP,TO-220FM,TO-3和D2PAK的封装,几个固定的输出电压,使其具有了广泛的应用。这些调节器可以提供本地片上调节,消除单点调节相关的分图2-3 L7805引脚图配问题。每种类型采用内部电流限流,热停机和安全区保护,使基本上坚不可摧。如果提供足够的散热,就可以提供超过1A输出电流。虽然设计主要是作为稳定电压的稳压器,这些器件可用于外部元件取得可调电压和电流。2.1.3射频识别集成模块RF01D(1)概述RF01D感应式读卡机模块是针对125KHz非接触式RFID 晶片而设计的读卡机模块,它能针对目前市面上125KHz非接触式RFID晶片如瑞士EM 公司H4001、4102;台科TK4001、4102以及凌航科技GK4001晶片或其它规格相近产品进行资料读取与资料判断,使用者可以发展此感应式读卡机建立相关应用系统,产品主要应用范围为人员考勤管理、门禁管制系统、玩具、动物或物品辩识及产品管理,此读卡机模块主要优点有:独立性高,后段控制规划容易,安装简单;资料读取稳定性高;系统安全性高,RFID资料不重复且难以复制可以安全使用;可规划输出控制标准介面格式(跳线设置)。(2)硬件结构感应式读卡机模块硬件结构如图2-4所示。RF变换处理电路为125KHz解码电路,即用来解码的比较器电路。当由H4001系列芯片制作的非接触式卡片进入天线(感应线圈)电磁场工作范围内,引起电场振幅变化时,RF变换处理电路将这种振幅变化处理成脉冲图2-4 感应式读卡机模块硬件结构波型变化,并送至存储器等候CPU单片机的调用15。由4.000MHz晶体振荡器产生的基频信号,经32分频、放大后,送至天线(感应线圈),用以产生具有一定功率的、频率稳定的125KHz射频信号,处在该射频信号的场强范围内的非接触式卡片,便可以在该场强中获得能量,再利用非接触式卡片内IC电路自带的电源转换处理模块,将电磁场能量转换为直流电源,以提供整个非接触式卡片电路用电。(3)读卡机模块电器特性读卡机模块引出脚功能说明(表2-2所示):表2-2 读卡机模块引出脚功能引脚号名称功能描述15VDC5V直流输入2CLKWiegand26=D1;ABA=Clock;Rs232=NC3DATWiegand26=D0;ABA=DATA;Rs232=TXD4CPABA5SW1模式选择16SW2输出模式选择27SW3输出模式选择38SW4模式选择49LEDLED信号输出10GND地线输入A1ANT天线线圈连接A2ANT天线线圈连接编码脉冲由SW2-SW3的输入决定输出格式如下表所示:表2-3 SW2-SW3控制的脉冲输出格式SW2SW3输出格式01RS23210Wiegand262.1.4片外数据存储器AT24C16(1)概述AT24C16是电可擦除可编程ROM,采用2048x8bit的组织结构以及两线串行接口。电压可允许低至1.8V,待机电流和工作电流分别为1uA和1mA。AT24C16具有页写能力,每页为16字节。AT24C16具有8-pin PDIP和8-pin SOP两种封装形式。(2)硬件结构AT24C16的硬件结构如图2-5所示。图2-5 AT24C16硬件结构(3)AT24C16电气特性AT24C16的引脚功能如表2-4所示。表2-4 AT24C16引脚功能引脚号名称功能描述1A0A2、A1、A0是器件地址输入引脚。24C16未使用器件地址引脚,总线上最多可以连接一个16K器件,A2、A1、A0为空脚,可接地。2A13A24SDA串行地址和数据输入/输出。SDA是双向串行数据传输引脚,漏极开路,需外接上拉电阻到VCC。5SCL串行时钟输入。SCL同步数据传输,上升沿数据写入,下降沿数据读出。6WP写保护。该引脚提供硬件数据保护。接地时允许数据正常读写操作;接VCC时写保护,只读。7GND地线接入8VCC正电源线接入2.1.5点阵液晶屏TS12864(1)概述液晶显示模块是12864点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8192个中文汉字(1616点阵)、128个字符(816点阵)及64256点阵显示RAM(GDRAM)。可与CPU直接接口,提供两种界面来连接微处理机:8-位并行及串行两种连接方式。具有多种功能:光标显示、画面移位、睡眠模式等。(2)硬件结构TS12864硬件结构如图2-6所示。图2-6 TS12864硬件结构图(3)点阵液晶屏TS12864电气特性TS12864引脚功能如表2-5所示。表2-5 TS12864引脚功能引脚号名称功能描述1VSS接电源地线2VDD接电源正极3VO提供LCD驱动电压4RSH:显示数据;L:显示指令5R/WH:读信号;L:写信号6E使能信号端7-14DB0-DB7数据总线15PSB模式选择。H:并行数据;L:串行数据16NC悬空17/RES复位信号端18NC悬空19LED(+)LED背光灯正极20LED(-)LDE背光灯负极2.2系统硬件电路模块整个系统硬件主要由MCU小系统、电源模块、射频识别模块、预警模块、开关控制模块、数据存储模块及显示模块组成2,4。其中MCU小系统以AT89C52为核心配以复位电路和振荡电路构成;电源模块以L7805为核心构成整个系统的稳压电源部分;射频识别模块包含天线部分和射频识别集成电路部分;预警模块由LED灯和蜂鸣器组成;开关控制模块由4个独立按键组成;数据存储模块以AT24C16芯片为核心,对数据进行片外存储;显示模块为ST12864点阵液晶屏。2.2.1MCU小系统(1)单片机AT89C52AT89C52作为主芯片对整个系统进行控制。(2)复位电路在上电或复位过程中,控制CPU的复位状态:这段时间内让CPU保持复位状态,而不是一上电或刚复位完毕就工作,防止CPU发出错误的指令、执行错误操作,也可以提高电磁兼容性能。单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。51系列单片机的复位信号是从RST引脚输入到芯片内的施密特触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。手动按钮复位手动按钮复位需要人为在复位输入端RST上加入高电平(图2-7所示)。一般采用的办法是在RST端和正电源VCC之间接一个按钮。当人为按下按钮时,则VCC的+5V电平就会直接加到RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。 图2-7 手动复位电路上电复位上电复位电路(如图2-8所示),只要在RST复位输入引脚上接一电容至VCC端,下接一个电阻到地即可。对于CMOS型单片机,由于在RST端内部有一个下拉电阻,故可将外部电阻去掉,而将外接电容减至1F。上电复位的工作过程是在加电时,复位电路通过电容加给RST端一个短暂的高电平信号,此高电平信号随着VCC对电容的充电过程而逐渐回落,即RST端的高电平图2-8 上电复位电路持续时间取决于电容的充电时间。为了保证系统能够可靠地复位,RST端的高电平信号必须维持足够长的时间。上电时,VCC的上升时间约为10ms,而振荡器的起振时间取决于振荡频率,如晶振频率为10MHz,起振时间为1ms;晶振频率为1MHz,起振时间则为10ms。在图2的复位电路中,当Vcc掉电时,必然会使RST端电压迅速下降到0V以下,但是,由于内部电路的限制作用,这个负电压将不会对器件产生损害。另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全“l”态。如果系统在上电时得不到有效的复位,则程序计数器PC将得不到一个合适的初值,因此,CPU可能会从一个未被定义的位置开始执行程序1,4,7。(3)振荡电路每个单片机系统里都有晶振,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。振荡电路(如图2-9所示)的作用是为系统提供基本的时钟信号。通常一个系统共用 图2-9 振荡电路一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。2.2.2电源模块电源模块以L7805芯片为核心,辅以相关电路构成,其主要作用就是对外部电压进行转换,输出稳定的+5V电压对系统进行供电16(其电路如图2-10所示)。2.2.3射频识别模块 图2-10 电源模块电路图射频识别模块是将从天线部分拾取的刷卡信息进行编码变换,即非接触式卡片进入天线(感应线圈)电磁场工作围内,引起电场振幅变化时,RF变换处理电路将这种振幅变化处理成脉冲波型变化,并送至存储器等候单片机微控制器的调用。其编码方式选用的是韦根编码。其硬件连 图2-11 射频识别电路连接图接如图2-11所示。将SW2设为高电平,SW3设为低电平,在这种模式下,射频识别模块编码输出方式为Wiegand 26;将CLK和DAT分别接单片机的外部中断引脚P3.2和P3.3采用中断触发单片机记录信息,可避免查询方式造成的信息丢失。2.2.4预警模块预警模块是由2个LED灯(1个红色的,1个绿色的)和1个蜂鸣器以及相关的电路组成的。其作用是对刷卡的卡片进行卡类识别后的报警9。其具体响应是:当识别为本地卡时,绿色LED灯闪亮提示安全通过;当识别为外来卡时,红色LED灯闪亮,同时蜂鸣器发出声音提示报警。整个模块的电路如图2-12所示。对于LED灯的电路设计我原先的设计是用单片机的高电平驱动点亮,但实际上电运行时发现灯的亮图2-12 预警电路度较暗,经研究发现是由于电路设计不够合理,导致电流较大,如此设计很有可能会对单片机的内部电路造成损伤,改正设计方案后问题就得到了解决。2.2.5数据存储模块该模块的核心部分是AT24C16芯片,完成对数据的片外存储。因为单片机要对刷卡信息进行实时记录,因此数据不能存储于单片机内部,只能进行片外存储,考虑到51系列单片机的资源不是足够丰富,因此不能进行并行数据存储,选择串行数据传输更为合理。串行数据存储只占用单片机的2个引脚,其缺点在于时序有些复杂,对软件编写要求比较高。2.2.6开关控制模块开关模块由4个独立的按键组成,分别分配给单片机的P2.5-P2.7以及P1.0端口。开关模块的作用是控制屏幕的内容显示和时间的校准,其电路图如图2-13所示。当按键按下时,对应的单片机引脚高电平会被拉低,当检测到某引脚为低电平时就执行图2-13 开关控制模块电路图相应的功能。开关控制模块的具体功能是:当S5偶数次按下时进入查询模式,即对刷卡信息进行查询,S2是向下翻屏,S3是向上翻屏;当S5奇数次被按下时就进入时间校准功能,即用按键S2-S4进行时间调节,其时间校准时的真值表如表2-6所示。表2-6 开关控制模块时间校准真值表S4S3S2功能描述000无001调整年份010调整月份011调整日期100无101调整时针110调整分针111无另外,由于键盘在执行的时候是有抖动延时的,在电子设计之中都会在硬件设置一个大约10毫秒的延时来解决键盘防抖动的问题。这部分我采用软件延时的方法解决。2.2.7液晶显示模块TS12864是尺寸为128x64的点阵液晶屏,可以显示4行,每行8个中文字(16个英文字母或字符)。由于刷卡后要查询信息,此液晶屏比多位数码管显示更为直观。TS12864液晶显示模块是采用控制芯片ST7920来控制显示的。该显示器能够使用串口和并口两种接线方式。并口可以选择4线和8线两种。为了方图2-14 液晶模块电路图便软件部分的处理,我选择并口8线的连接方式,其电路如图2-14所示。3软件设计本设计的软件部分主要由显示模块、时钟模块、射频识别模块、外部数据存储模块和开关控制模块组成。整个系统的硬件需要软件的驱动,才能实现相应的功能。软件控制着硬件,让其按照指定的要求,执行相应的功能。3.1主程序流程图主程序的流程图如图3-1所示。由该流程图可以看出,在主程序中,对各模块先进行初始化,通过对开关控制模块的查询以及各标志位的查询进入相应功能模块,完成相关功能后将结果在液晶屏上进行显示。其中,时钟模块和射频识别模块涉及中断服务。图3-1 主程序流程图中断服务包括定时中断和外部中断2种:定时中断使用的是定时计数器0,用于时钟模块的秒针的走时,其流程如图3-2 a)所示;外部中断使用了外部中断0和外部中断1,用于拾取射频识别信号,之后利用射频识别子程序进行密码对比,其流程如图3-2 b)所示。a) 定时中断b) 外部中断图3-2 中断服务程序流程中断服务程序段如下:/*定时中断*/定时计数器0定时为1svoid timer(void) interrupt 1 TH0=0x3c; TL0=0xb0;/定时满1S后就调用时钟子程序 if(count+=20) count=0; clock();/*外部中断*/外部中断0(记录数据0线上负脉冲)void int0(void) interrupt 0if(cnt26&flag=0) tempcnt+=0; elsecnt=0;flag=1;/产生识别标志/外部中断1(记录数据1线上负脉冲)void int1(void) interrupt 2if(cnt26&flag=0) tempcnt+=1; elsecnt=0;flag=1;/产生识别标志3.2各个模块的设计3.2.1显示模块液晶显示模块工作时显示一个字符的主要流程是先设定工作模式,再检测忙信号,最后传送数据。其流程如图3-3所示。N检查忙碌初始化送命令写数据写完否?显示Y图3-3 显示模块流程图图3-4 显示模块写数据时序图液晶TS12864在并行8为数据线写数据时的时序如图3-4所示。显示模块的核心程序片段如下:/*按指定位置显示一串字符*/void DisplayListChar(unsigned char X, unsigned char Y, unsigned char data *DData) /X、Y分别为行列坐标,DData为待写入字符串unsigned char ListLength,X2; /定义相关变量ListLength = 0;X2=X;if(Y4)Y=4;X &= 0x0F; /限制X不大于16,Y不大于4switch(Y) /根据行数Y来选择相应地址case 1:X2|=0X80;break; case 2:X2|=0X90;break;case 3:X2|=0X88;break;case 4:X2|=0X98;break;WriteCommandLCD(X2, 1); /发送地址码 while (DDataListLength=0x20) /若到达字串尾则退出if (X =60) /当秒针达到60,分针进位,秒针清0time.min+; time.sec=0; if(time.min=60) /当分针达到60,时针进位,分针清0time.hour+; time.min=0; if(time.hour=24)/当时针达到24,日期进位,时针清0 time.day+; time.hour=0; switch(flag1) /不同的月份选择不同的天数case 0 : mon=30;break;/小月30天 case 1 : mon=31;break;/大月30天 case 2 : mon=28;break;/二月30天 default: mon=30;break;/其他默认30天 if(time.day=mon)/当日期达到相应天数,月进位,日期置1 time.month+; time.day=1; if(time.month=12)/当月份达到12,年份进位,月份置1 time.year+; time.month=1; 3.2.3射频识别模块图3-6 Wiegand 26位数据输出时序图射频识别模块的软件核心是Wiegand协议。Wiegand协议是国际上统一的标准,有很多格式,标准的26bit应该是最常用的格式。它适用于涉及门禁控制系统的读开始计算卡号并对比本地卡?报警鸣笛记录信息NY退出卡器和卡片的许多特性;其协议并没有定义通讯的波特率、也没有定义数据长度韦根格式主要定义是数据传输方式:Data0和Data1两根数据线分别传输0和1。现在应用最多的是26bit,34bit,36bit,44bit等等。Wiegand数据输出由二根线组成,分别是DATA0和 DATA1;二根线分别将0或1输出:输出0时,DATA0线上出现负脉冲;输出1时,DATA1 图3-7 射频识别模块程序流程图线上出现负脉冲。其中负脉冲宽度为100mS,周期为1600mS。Wiegand 26位数据输出时序如图3-6所示。Wiegand 26位输出格式如下表所示:表3-1 Wiegand 26位输出格式EXXXX XXXX XXXXXXXX XXXX XXXXO前12bit偶校验位前12位后12位后12bit奇校验位以上数据从左至右顺序发送。高位在前。电子卡的Wiegand 26码的接收对时间的实时性要求比较高,如果用查询的方法接收会出现丢帧的现象:假设查询到DATA0为0时主程序正在指向其他任务,等主程序执行完该任务时DATA0已经变为1了,那么这样就导致了一个0bit丢了,这样读出的卡号肯定奇偶校验通不过,所以表现出CPU接收不到ID模块发送的卡号了。唯一的办法是在外部中断里接收每个bit11,15。射频识别模块的子程序流程如图3-7所示。其中关于卡号对比的部分涉及到外部中断服务产生的卡号信息。射频识别模块的程序片段如下:/*射频识别模块*/void recognition(void) uint cardcd=0; for(i=0;i16;i+)/计算刷卡传递的卡号信息 cardcd+=temp9+i(15-i);if(cardcd=57099)/本地卡号1对比 GREEN=0;eeprom_wt(0,num0-1);/安全通过,绿灯亮并记录刷卡信息 else if(cardcd=55318)/本地卡号2对比 GREEN=0;eeprom_wt(1,num1-1);/安全通过,绿灯亮并记录刷卡信息 else if(cardcd=58529)/本地卡号3对比 GREEN=0;eeprom_wt(2,num2-1);/安全通过,绿灯亮并记录刷卡信息else/外来卡 BEEP=1;/报警:蜂鸣器响,红灯亮 RED=0; P3&=0xdf;P3|=0x03;/将LED灯和蜂鸣器熄灭flag=0;/识别完成将标志位清03.2.4数据存储模块AT24C16的总线时序如图3-8所示。图3-8 AT24C16总线时序图(1)数据存储的起始和终止条件数据线和时钟线都为高则称总线处于空闲状态,当SCL为高,SDA的下降沿叫做起始条件,开始进行数据的读或写;当SCL为高,SDA的上升沿叫做终止条件,终止数据的读或写,如图3-9所示。其相应程序如下:图3-9 数据存储的起始和终止条件/*起始条件*/void star(void)/时钟线为高的条件下数据线的下降沿SDA=1;SCL=1;SDA=0;/*终止条件*/void stop(void)/时钟线为高的条件下数据线的上升沿SDA=0;SCL=1;SDA=1;(2)数据传送每个时钟脉冲传送一位数据。SCL为高时,SDA必须保持稳定,因为此时SDA的改变会被认为是控制信号。其时序见图3-10,以下代码是送一个字节(8位)的程序片段。图3-10 位传送时序图/*送一个字节(8位)的数据*/for(i=0;i8;i+)/一个字节8位,循环8次SCL=0;temp1=temp&0x80;/提出一个字节的最高位if(temp1=0x80)/判断最高位为1则将数据线置1否则清0SDA=1; elseSDA=0; SCL=1;/按时序设时钟线使器件为允许数据改变SCL=0;temp=temp1;/向左移出1位,进行下一位的传送(3)应答总线上的接收器每接收到一个字节就会产生一个应答,主器件必须产生一个对应的额外的时钟脉冲。其时序如图3-11所示。接收器拉低SDA线表示应答,并在应答脉冲期间保持稳定的低电平。当主器件做接收器时,必须发出数据传输结束的信号给发送器,即发送器件必须释放SDA线为高,以便主器件产生停止条件。其程序如下:图3-11 应答时序图/*进行应答*/void ack(void)uchar z=0;/条件判断,SDA=1,则没有应答。如果没有应答则延时:z50,z+;后返回while(SDA=1)&(z50)z+;SCL=0;3.2.5开关控制模块开关控制模块有2方面的作用:1)调整日期和时间;2)查询刷卡信息时翻页。其流程如图3-12 a)、3-12 b)所示。其中P2表示的是单片机的P2端口。S2、S3、S4分别与P2.5、P2.6、P2.7引脚相连。P2=6是S2按下;P2=5是S3按下;P2=3是S4按下;P2=2是S2和S4按下;P2=2是S3和S4按下。开始P2=6?调分针P2=5?调时针P2=3?调日期P2=2?调日期P2=1?调年份YYYYYNNNN退出Na) 时间日期调整流程图开始P2=6?查询下一页YP2=5?查询上一页YN退出Nb) 翻页流程图图3-12 开关控制模块流程其程序参见附录24系统安装与调试4.1系统硬件的安装在系统原理图16出来后,由于电路的连接和芯片的数目并不多,就考虑自己在蜂窝板上搭建焊接电路而不用印制电路板,一来可以节约成本,二来可以锻炼自己的焊接技术。我首先找齐了所需要的芯片、芯片座、电阻、电容、三极管、发光二极管等元器件,然后就用万用表对这些元件进行了相应的测试,保证每个元件的基本功能正常之后就是对照原理图开始搭建电路并进行焊接。自己搭建焊接电路时最好一个模块一个模块的做,这样可以避免漏掉或多添一些线,造成不必要的错误。在搭建焊接电路板的时候,不仅要对着原理图将每个元件布置好还要特别注意一些元件的极性问题,例如二极管,充电电容等,如果焊接反了会造成严重后果。我在做硬件时特别注意双面焊接时正面横着布线,反面竖着布线,这样可以避免走飞线,使板面更美观。另外,为了方便硬件和软件的调试,我特意将电源线,地线,普通线用红,黑,蓝三种颜色区分 ;将单片机多出来的端口与跳线相连,方便检测软件的中间功能;给每个芯片或集成模块都加上了芯片座和插槽,方便程序的烧录和存储数据的读写以及其他模块单独的调试。4.2系统硬件的调试在完成了系统硬件的安装和部分软件的编写以后,就要开始系统硬件的调试了。因为是手工制作的硬件电路,线路上有问题是不可避免的,再加上是人工焊接,虚焊或者是漏焊的情况也是有可能的发生的。先从电路的线路开始检查。我用万用表的蜂鸣档测试任意一个芯片的电源和地线是否短路,因为,一旦出现短路的现象,芯片将会被烧坏。在确定了没有短路的现象后我又对照着电路图检查每个元件之间应该连接在一起的点是否联通了9。之后是对其进行上电检测。我将空的单片机放在电路上,上电后发现液晶屏背光灯不亮,蜂鸣器也不响,用电压表测电源端电压发现远不到5V,经过仔细检查,发现是射频识别模块安装的镜像相反,于是这一模块需拆掉重焊。改后的电路上电测试时每个模块都有了相应的反应。我本以为硬件没有问题了,但是后来在编写好液晶显示的程序后,发现无论软件如何调试,就是没有现象出来,于是开始怀疑是硬件的问题,经过摸排查找,发现问题的症结在于我没有将单片机的第31引脚接电源,改过来后就基本有了显示。后来在调试预警模块时,发现LED灯的亮度过暗,经老师指点,原因在于我设计的电路(图4-1 a)所示)不合理,LED共阴极的连接并直接用单片机的高电平驱动LED灯会使过大的电流损伤芯片9。最好应该为LED共阳极的连接并用低电平驱动LED灯(图4-1 b)所示)。a) LED共阴极连接b) LED共阳极连接图4-1 LED灯连接4.3系统软件的调试软件的调试是一项需要耐心和细致的工作。其中最重要的是要保证单片机正常工作,只有在这个前提下才能进行其他模块的调试。因此需要先编写一些简单的程序对单片机的端口进行检测,能正常工作则基本上没有问题。我使用的编程工具是keil,这是基于C语言的51系列单片机开发平台。用C51进行程序编写其优点在于逻辑性强,可移植性高;其缺点是容易产生冗余代码,延时不够精准需要调整,其效率没有汇编高6,14。4.3.1显示模块的调试液晶屏的显示与时序有很重要的关系,如果时序不正确屏幕上就不能进行显示。起初液晶没有显示,我认为是时序的问题,于是我对照示波器显示的脉冲宽度对时序进行了精准的调试,但还是没显示只是偶尔会出现乱码。在测试液晶的数据线,有数据传输但极不稳定,于是怀疑是硬件出现了问题,最后终于找到了问题所在,确实是硬件问题,修改后显示就正常了。4.3.2时钟模块的调试时钟模块涉及到单片机的定时计数中断。在调试的时候,我为了确定中断是否正常工作现在中断里设置了一个小程序,即每定时1S就在测试引脚P1.0处输出一个反向电平,然后通过示波器查看结果。开始时,我将时钟程序放在主程序里,但是在显示时发现时钟的秒针的跳动不规律,其原因在于主程序的循环周期会错过中断产生的信号,于是我将时钟程序的调用放进中断里,问题就得到了解决10,11。另外,有段时间,时钟在走一段时间后会突然自动复位,软件上我检查了没有任何问题,可能是系统在编译的时候误修改了相关的寄存器,后来这个问题得到了自动解决。4.3.3射频识别模块的调试射频识别模块在调试的时候我采用将刷卡信息显示在液晶屏上的方法确定每张卡的对应码,但出现了同一张卡每次刷卡信息不一致的现象,究其原因是预设数组与卡码不兼容,设定标志位检验后问题就得到了解决。同时,为了使程序运行效率更高,我对卡号对比程序进行了优化,先用算法将卡号计算出来再进行比较,之后再对计算出的卡号进行字符化,这样程序能够运行得更快。4.3.4数据存储模块的调试我在设计的时候是将外部数据存储器分为3个部分,0x00-0x4f、0x50-0x9f、0xa0-0xff分别用于记录三张本地卡的刷卡信息,但在调试时发现AT24C16中记录的最后一张卡的信息写地址总是不正确,仔细分析程序后发现是有条赋值语句没写,导致后续地址错误,改正后就对了。4.3.5开关控制模块的调试由于只有四个按键,要完成时间校准和信息查询,不可能只用单独按键,使用组合键就比较好。调试过程中出现了按键反应不灵敏的现象,主要是按键防抖动时间过长,将程序稍加修改就可以了。结论本设计由六个单元组成,分别是电源模块、射频识别模块、预警模块、数据存储模块、开关控制模块和LCD显示模块。每个模块各自完成相应的功能。其中射频识别模块是输入部分,开关控制模块是转换部分,LCD显示模块是输出部分,数据存储模块是存储部分。这几个模块都是围绕单片机运行的,是整个系统的核心。本设计的特点是将硬件优化后可以与上位机数据库相连实现更多卡的记录,可以用于公司人员的考勤管理。本设计的优点是设计较为简单,成本低,方便使用且功耗低。不足之处是时钟是软件编写不能进行掉电走时,若采用电子钟芯片会更完善。通过本次毕业设计,我对电路的分析能力、检测能力和用C语言编程的能力都进一步得到了提升。在硬件制作的前期准备阶段,为了获得一个最优的硬件方案,我查找了大量的书籍和网络资料,在老师的帮助下,通过对不同的电路原理的对比分析,最终选定了这个应用最广的方案。绘制电路图阶段的工作使我对Protel99SE软件的使用更加熟练。对硬件电路的焊接使我的焊接技术得到了提升。通过对硬
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 幼儿情绪管理惊讶情绪心理分析课件
- 2026一年级上《20以内进位加法》易错题解析
- 2026年入党积极分子培训考试卷(十五)及答案
- 2026七年级道德与法治下册 青春精彩演绎追求
- 幼儿园营销方案
- 2026年11月30日开州事业单位联考C类《综合应用能力》试题(考生回忆版)
- 监控设备售后服务承诺书
- 游泳馆检测方案
- 中毒窒息应急预案评审意见
- 2026年六一教案幼儿园
- 2026及未来5年中国射箭行业市场竞争格局及未来趋势研判报告
- 2025 七年级数学下册实数大小比较的特殊值代入法课件
- 《思想道德与法治》课件-4.7争做改革创新生力军
- 2025年卫校招生老师面试题库及答案
- 2025年AP考试物理C真题
- 2025课堂惩罚 主题班会:马达加斯加企鹅课堂惩罚 课件
- Maya 2024三维设计基础教程(全彩微课版) 课件全套 来阳 第1-10章 初识Maya 2024 -综合实例
- 售后服务部主管述职报告
- GB/T 6109.5-2025漆包圆绕组线第5部分:180级聚酯亚胺漆包铜圆线
- 2025年中国地质调查局招聘面试题预测与备考指南
- 钟山区南开风电场环境影响报告表
评论
0/150
提交评论