毕业设计论文—基于单片机控制的射频ID卡考勤机的设计-精品 - 图(7)

2019-06-11 21:29

//条件判断,SDA=1,则没有应答。如果没有应答则延时:z<50,z++;后返回 while((SDA==1)&&(z<50))

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? Y 调分针 N P2=5? Y 调时针 N P2=3? Y 调日期 N P2=2? Y 调日期 N P2=1? Y 调年份 a) 时间日期调整流程图

开始 退出 N P2=6? Y 查询下一页 N P2=5? Y 查询上一页 N 退出 b) 翻页流程图 图3-12 开关控制模块流程

其程序参见附录2

25

4 系统安装与调试

4.1 系统硬件的安装

在系统原理图[16]出来后,由于电路的连接和芯片的数目并不多,就考虑自己在蜂窝板上搭建焊接电路而不用印制电路板,一来可以节约成本,二来可以锻炼自己的焊接技术。我首先找齐了所需要的芯片、芯片座、电阻、电容、三极管、发光二极管等元器件,然后就用万用表对这些元件进行了相应的测试,保证每个元件的基本功能正常之后就是对照原理图开始搭建电路并进行焊接。自己搭建焊接电路时最好一个模块一个模块的做,这样可以避免漏掉或多添一些线,造成不必要的错误。

在搭建焊接电路板的时候,不仅要对着原理图将每个元件布置好还要特别注意一些元件的极性问题,例如二极管,充电电容等,如果焊接反了会造成严重后果。我在做硬件时特别注意双面焊接时正面横着布线,反面竖着布线,这样可以避免走飞线,使板面更美观。另外,为了方便硬件和软件的调试,我特意将电源线,地线,普通线用红,黑,蓝三种颜色区分 ;将单片机多出来的端口与跳线相连,方便检测软件的中间功能;给每个芯片或集成模块都加上了芯片座和插槽,方便程序的烧录和存储数据的读写以及其他模块单独的调试。

4.2 系统硬件的调试

在完成了系统硬件的安装和部分软件的编写以后,就要开始系统硬件的调试了。因为是手工制作的硬件电路,线路上有问题是不可避免的,再加上是人工焊接,虚焊或者是漏焊的情况也是有可能的发生的。

先从电路的线路开始检查。我用万用表的蜂鸣档测试任意一个芯片的电源和地线是否短路,因为,一旦出现短路的现象,芯片将会被烧坏。在确定了没有短路的现象后我又对照着电路图检查每个元件之间应该连接在一起的点是否联通了[9]。

之后是对其进行上电检测。我将空的单片机放在电路上,上电后发现液晶屏背光灯不亮,蜂鸣器也不响,用电压表测电源端电压发现远不到5V,经过仔细检查,发现是射频识别模块安装的镜像相反,于是这一模块需拆掉重焊。改后的电路上电测试时每个模块都有了相应的反应。

我本以为硬件没有问题了,但是后来在编写好液晶显示的程序后,发现无论软

26

件如何调试,就是没有现象出来,于是开始怀疑是硬件的问题,经过摸排查找,发现问题的症结在于我没有将单片机的第31引脚接电源,改过来后就基本有了显示。

后来在调试预警模块时,发现LED灯的亮度过暗,经老师指点,原因在于我设计的电路(图4-1 a)所示)不合理,LED共阴极的连接并直接用单片机的高电平驱动LED灯会使过大的电流损伤芯片。最好应该为LED共阳极的连接并用低电平驱动

[9]

LED灯(图4-1 b)所示)。

P3.0D1redR10470P3.0D1redR10470+5VP3.1D2greenP3.1D2green 图4-1 LED灯连接

a) LED共阴极连接 b) LED共阳极连接

4.3 系统软件的调试

软件的调试是一项需要耐心和细致的工作。其中最重要的是要保证单片机正常工作,只有在这个前提下才能进行其他模块的调试。因此需要先编写一些简单的程序对单片机的端口进行检测,能正常工作则基本上没有问题。我使用的编程工具是keil,这是基于C语言的51系列单片机开发平台。用C51进行程序编写其优点在于逻辑性强,可移植性高;其缺点是容易产生冗余代码,延时不够精准需要调整,其效率没有汇编高[6,14]。 4.3.1 显示模块的调试

液晶屏的显示与时序有很重要的关系,如果时序不正确屏幕上就不能进行显示。起初液晶没有显示,我认为是时序的问题,于是我对照示波器显示的脉冲宽度对时序进行了精准的调试,但还是没显示只是偶尔会出现乱码。在测试液晶的数据线,有数据传输但极不稳定,于是怀疑是硬件出现了问题,最后终于找到了问题所在,确实是硬件问题,修改后显示就正常了。 4.3.2 时钟模块的调试

时钟模块涉及到单片机的定时计数中断。在调试的时候,我为了确定中断是否正常工作现在中断里设置了一个小程序,即每定时1S就在测试引脚P1.0处输出一

27

个反向电平,然后通过示波器查看结果。开始时,我将时钟程序放在主程序里,但是在显示时发现时钟的秒针的跳动不规律,其原因在于主程序的循环周期会错过中断产生的信号,于是我将时钟程序的调用放进中断里,问题就得到了解决[10,11]。另外,有段时间,时钟在走一段时间后会突然自动复位,软件上我检查了没有任何问题,可能是系统在编译的时候误修改了相关的寄存器,后来这个问题得到了自动解决。 4.3.3 射频识别模块的调试

射频识别模块在调试的时候我采用将刷卡信息显示在液晶屏上的方法确定每张卡的对应码,但出现了同一张卡每次刷卡信息不一致的现象,究其原因是预设数组与卡码不兼容,设定标志位检验后问题就得到了解决。同时,为了使程序运行效率更高,我对卡号对比程序进行了优化,先用算法将卡号计算出来再进行比较,之后再对计算出的卡号进行字符化,这样程序能够运行得更快。 4.3.4 数据存储模块的调试

我在设计的时候是将外部数据存储器分为3个部分,0x00-0x4f、0x50-0x9f、0xa0-0xff分别用于记录三张本地卡的刷卡信息,但在调试时发现AT24C16中记录的最后一张卡的信息写地址总是不正确,仔细分析程序后发现是有条赋值语句没写,导致后续地址错误,改正后就对了。 4.3.5 开关控制模块的调试

由于只有四个按键,要完成时间校准和信息查询,不可能只用单独按键,使用组合键就比较好。调试过程中出现了按键反应不灵敏的现象,主要是按键防抖动时间过长,将程序稍加修改就可以了。

28

结 论

本设计由六个单元组成,分别是电源模块、射频识别模块、预警模块、数据存储模块、开关控制模块和LCD显示模块。每个模块各自完成相应的功能。其中射频识别模块是输入部分,开关控制模块是转换部分,LCD显示模块是输出部分,数据存储模块是存储部分。这几个模块都是围绕单片机运行的,是整个系统的核心。

本设计的特点是将硬件优化后可以与上位机数据库相连实现更多卡的记录,可以用于公司人员的考勤管理。

本设计的优点是设计较为简单,成本低,方便使用且功耗低。不足之处是时钟是软件编写不能进行掉电走时,若采用电子钟芯片会更完善。

通过本次毕业设计,我对电路的分析能力、检测能力和用C语言编程的能力都进一步得到了提升。在硬件制作的前期准备阶段,为了获得一个最优的硬件方案,我查找了大量的书籍和网络资料,在老师的帮助下,通过对不同的电路原理的对比分析,最终选定了这个应用最广的方案。绘制电路图阶段的工作使我对Protel99SE软件的使用更加熟练。对硬件电路的焊接使我的焊接技术得到了提升。通过对硬件电路的调试,我掌握了硬件电路一般的检测和排错方法。在编写和调试软件程序的过程中,我掌握了示波器和仿真器的使用方法,并且更深刻地体会到软件的编写和对硬件电路的分析是分不开的。

虽然本次毕业设计已经圆满的结束了,但是,我知道要学习的东西还有很多,因此,在今后的学习和工作中,我一定会更加努力,不断提升自己的价值。

29


毕业设计论文—基于单片机控制的射频ID卡考勤机的设计-精品 - 图(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:课程概论论述题参考模版

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: