基于rfid与单片机ic卡和上位机的智能图书馆系统设计

摘要

根据RFID和单片机设计、IC卡和PC的智能图书馆系统开发,关键由单片机芯片、12864液晶显示器、
单独功能键、微波射频磁感应模块、蜂鸣器警报模块、串口通信模块和PC模块构成。STC89C52单片机作为主控制
器,三个按键分别设置为菜单按键、注册按键、撤销按键,同时把有效的IC卡片上的卡号经过通信方式传输到PC端
的自制软件,PC端的自制软件就将获取到的数据存入到ACCESS数据库当中,然后把相关的数据显示到PC端的自制软
件当中。PC端的自制软件对登录人员进行区分,管理员可以对图书信息进行添加、删掉、查询和改动等管理,同时
也可以对用户信息进行添加、删掉、改动、借书查询、借还图书、余额充值管理。在12864液晶显示屏上实现对用户
信息的显示,比如:id号、卡的型号、无效卡、注册和撤销等信息,并且有效的IC卡卡号通过串口与PC端的自制软
件进行通讯,PC端的自制软件将读取数据库信息,并将图书信息显示到PC端的自制软件。此设计成本低,易制作,
并且容易控制,在学校里易实施,有很大的发展的前景和市场。
关键词:STC89C52单片机;RC522射频模块;IC卡;液晶显示屏

第一章概述

1.1引言
  随着现代高科技的发展,任何物质都需要控制器的处理来提高生活的质量。在生活中,我们对自动化机器随处
可见,能够让一台机器自动工作要有单片机的支持,于是单片机,也称微控制器,在各个邻域中迅速发展与推广。
由于单片机的低成本、功耗小、控制性能强和容易扩展的优点,它在工业邻域中也得到了很大的用处,可以利用单
片机制作各种报警系统,也可以与计算机网络构成二级控制系统等。单片机作为主控制器,主要是将周围的硬件设
备集成在一起,外部硬件设备将收集到的信息通过各种通信方式传输到单片机。单片机根据所收集到的数据进行分
析并处理,然后下发到各个硬件设备,实现各个硬件模块的功能,使整个系统可以操作起来,保证整个系统的完整
性和可靠性。
1.2研究背景
  追溯到传统的图书馆管理系统,由于科技发展比较缓慢,图书馆管理系统主要是采用人力资源进行管理,一方
面图书馆管理员要对图书信息进行管理和分类整合;另一方面还要对用户进行登记和注册。在这种情况下,既浪费
了大量的时间,又会出现一些不可必要的错误。而随着生活水平的提高,大家对于知识的追求愈发的热烈,这也就
促使着科技研究水平的不断进步,智能图书馆也就应运而生。图书馆的作用不但是提供大众阅读的地方,更是一种
智能管理的表现。如今,智能图书馆在每所学校是必不可少,随着时间的推移,工厂、公司等场所也会逐渐开始推
广智能图书馆。图书馆在生活中随处可见,智能图书馆的应用也就呈现出必然的趋势。
1.3研究意义
  相对于传统的图书馆,智能图书馆在低成本、体积小的基础上,还通过计算机进行操作,提高了信息管理的技
术,降低了图书管理员的工作难度。充分体现了现代科技的优势,本系统设计功能简单,成本较低,电路易懂,性
价比高,控制稳定,整体的设计运行稳定,市场开发的实用性和参考价值高。整体体现出很大的社会价值。
1.4 国外研究现状
  智能图书馆的概念最先是由一些欧美国家提出的。当时由于传统的图书馆还不能达到像如今的智能图书馆随时
都可以借阅图书和空间不受限的功能,所以早在2003年,芬兰的学者就开始针对空间不受限、可被感知移动的智能
图书馆做出了研究。智能图书馆作为20世纪互联网的重要产物,一经提出就得到了各国科学家的研究。不同的国家
对于智能图书馆抱有不同的态度,美国学者认为智能图书馆就好像一个有学识人的身份的一种存在,是为了解决问
题来提供知识来源的。俄罗斯的学者却认为智能图书馆的发展是必然的,因为在互联网的时代,图书馆应该是移动
感知的,是可以相互分享的,并且它不是受限于纸面上的。虽然到现在,智能图书馆的分布是非常的广泛的,尤其
时在美国,智能图书馆已经时非常的普遍的了。但是想要把它推广到世界的每一个角落,仍然是一个很漫长的过
程。
1.5 国内研究现状
  在如今的中国技术中,虽然在人工智能方面还不是处于一个熟悉的程度上,但是对于智能图书馆的研究却是发
展迅速。不同于传统的图书馆,智能图书馆在此基础上添加了一些硬件,使它可以与计算机端进行连接。而计算机
端只需要通过操作软件便可以对图书馆进行管理,这样不仅减少了对于工作人员的过度依赖,也使得图书馆在管理
的过程中变得更加的快速,以提高效率。
1.6 研究方法
  对于本课题的研究,主要采用调查研究的方法,对智能图书馆管理系统的资料进行收集和查找,然后对资料进
行比较、分析、归纳从而总结出系统的整体的设计方案。首先确定研究对象,基于RFID与单片机、IC卡和上位机的
智能图书馆管理系统设计。其次确定研究思路,主要是实现智能图书馆管理系统的功能,对每个模块需要作什么,
怎么设计,如何将它们连接集成在一起,并且可以在软件的控制下可以高效的工作,对此展开思路,设计方案。
单片机在串口的工作模式下负责将IC卡信息转换成数字信号传输到上位机。LED灯通过亮灭对IC卡的状态进行
判断。蜂鸣器报警模块通过声音进行提示。LCD12864液晶显示屏显示用户的信息,图书信息,并且把信息保存都数
据库当中。电源供电需要用常用的电压,一般是5V。
  软件设计包括射频感应模块、LCD12864液晶显示屏、上位机。射频感应模块负责根据碰撞、防冲突、选卡等程
序流程,最后取得成功的IC卡将IC卡卡号表明在LCD上。LCD12864负责显示“欢迎您使用图书馆管理系统”等字,根
据按键功能,对IC卡进行操作,在界面中,当IC卡的类型是正确的,说明操作成功。但是刷卡失败,也会有相应的
提示,告诉你操作失败,并且会显示是无效卡。PC端的自制软件对登录人员进行区分,管理员可以对图书信息进行
添加、删掉、查询和改动等管理,同时也可以对用户信息进行添加、删掉、改动、借书查询、借还图书、余额充值
管理。用户登入只能显示自己信息,并且可以通过刷卡来借还图书。
最后是对系统进行调试,分别对硬件进行调试,软件调试,软硬件联机调试。

第二章系统方案与选择论证

2.1系统需求分析
  本系统的设计需求:单片机需要设置菜单按键、注册按键、撤销按键,并且只有注册过IC卡刷卡才有效,但是
当IC卡的卡型与原来指定的卡型不符合时,就可以按下注册按键,把这张卡注册成一张有效的卡片。这时,PC端的
自制软件就可以对这张卡进行各种操作。如果用户想要对这张IC卡进行销毁的操作时,就可以按下注销按键。这
样,PC端的自制软件中就不会存储这张卡的任何信息了。液晶显示屏也不会显示无效卡的卡号和信息。
  用户登入系统的作用只能查看自己的个人信息,同时可以通过刷卡来借书或者还书,设置借书时长,超出时长
计费等功能。用户可以对自己借书情况进行查询,并且将所有数据保存到数据库,方便管理员管理。
2.2系统可行性分析
  技术可行性:RFID标签以触碰方式搜集信息,简单化网络资源程序处理,加快每日任务解决,使流通更加快
速、简易、精确,解决过程采用高度自动化技术。RFID阅读器件可以载入好几个RFID标签。这代表着加快了项目的
流通服务过程。换句话说,在借书过程中,系统可以一起解决几本。阅读者还书或者对多媒体系统材料的租用更为
便捷。
   社会可行性分析:现阶段在我国图书馆管理系统关键选用磁条和条码系统。磁条管理系统的首要问题:自动化
技术水平低、图书查找、仓储货架难度系数大、服务项目时间限制。因而,RFID技术应用的出现大大的促进了数据
采集的速率,简单化了图书借还的全过程,提高了商品流通率,大大减少了图书的搜索工作,提高了图书馆工作人
员的工作效率。
2.3系统设计方案
  系统开发设计由单片机设计、按键设计、12864显示屏设计、RC522微波射频模块、无源蜂鸣器警报模块、串行
通信模块、PC端自制软件模块等构成。
1、单片机设计根据STC89C51/52单片机设计。
2、3个独立的键分别是菜单键、申请注册键、撤销键,仅有在使用IC卡申请注册的情形下能合理。不然便是失效
卡。
3、LCD12864显示IC卡卡号、卡种类、失效卡、申请注册和注销等信息,根据串行通信端口将合理IC卡号发给计算
机,计算机全自动载入数据库查询信息,并将图书信息表明给计算机。
4.计算机是用Visal Basic语言开发的,区别管理员和用户登陆,管理员可以添加、改动、查看、删掉图书信息,还
能够增加、改动用户信息、查看、管理账户余额、在线充值和偿还图书。
5.用户登陆只有表明自身的信息,可以用卡清算还书。基本上借款周期时间为10天。用户借阅的周期时间超出10
天,系统软件也会超出,扣除相应的费用。初始值为每日1元,限制为10元。
6、用户可以查看自身的余额状况,并将全部数据信息保存在数据库ACCESS中,便捷管理员进行管理。
2.4系统模块选择
2.4.1 单片机选择方案
对于系统主控制器的选择,主要有设计两个方案可以考虑:STC89C52芯片、STM32芯片。
  选择方案一:STC89C52芯片具备速率高、低功耗、抗干扰能力强等优点,同时它也具备着用串口烧录的便捷,
容易上手。内部配备着高速缓冲器,RAM寄存器、32位的I/O口,看门狗定时器与3个16位的定时器/计数器,4个外部
中断源这样的功能。在空闲模式下,CPU虽然停止工作了,但是居然还允许RAM、定时器、串口、中断继续工作。在
掉电情况下,RAM可以保证数据不丢失。主要还是它价格也比较亲民。

选择方案二:STM32芯片,也是现在主流的MCU芯片,是ARM Cotex-M系列产品根据超低功耗的解决关键。它具备
很多的I/O端口号、大储存空间、强劲的时钟系统、睡眠质量、终止和关机三种低功耗方式、三个12位AD转换器和2
个12位DA转换器、高达11个计时器和13个通信接口及其别的性能出色的外部设备。在集成度和功耗方面也有不错的
表现。同时,还有丰富的软件包,丰富的技术文档,芯片型号种类多等优点。但是在价钱方面,不便宜。
  对于制作一个功能不是很复杂的智能图书馆系统,需要做到尽可能的减少成本的同时能够完成系统的功能应
用,所以采用方案一是一个明知的选择。
2.4.2 数据库选择方案
对于数据库的选择,这里提出两种选择:SQL数据管理、ACCESS数据管理。
  选择方案一:SQL数据库是一种用于数据管理的存储方法,用户可以访问,改动数据,包括数据的增加、删除、
更新和插入。SQL适合用于决策支持的数据库仓库功能、与其他的服务器软件有何紧密的联系。但是它也存在着操作
难度大的问题,更适合应用到大型的数据库数据当中。
  选择方案二:ACCESS数据库在一些公司中经常发挥着作用,可以利用Access构建中小型企业的数据库管理系
统,以及用它建立公司的某个“部门”及的应用。在数据处理自动化方面,Access可以利用宏定义的功能用鼠标拖
拽的方式把基础的操作按照自定义的顺序排列起来,形成有逻辑,有顺序的数据,对于很多个人的小型数据库的建
立提供了很便捷的帮助。同时还存在着操作简单,容易上手。
  对于基于单片机设计的数据库,其实用不到太大的数据库,所以说使用Access数据库既操作简单,又实现了数
据存放的功能,主要还是从能实现功能的同时还易于操作的角度出发,SQL数据库没必要用到这种数据量不是很大的
应用上,同时SQL操作起来也不简单。所以采用方案二是一个不错的选择。
2.4.3 射频模块方案
  对于射频模块的选择,智能图书馆系统提出了两种选择方案:MF-RC522射频模块、MD810R超高频射频模块。
  选择方案一:RC522是一种不需要接触的,发射频率比较高,读写容易,方便携带式的读写卡芯片。通常是应用
13.56hz的低频信号,充分掌握调制解调的原理,将13.56hz下的大部分非接触的通信协议都宝海与其中。在对卡片
进行读取数据时,反应速率高,抗干扰能力弱,所以要在6cm的范围内进行通信,否则无法检测到卡片的存在,不能
对其进行操作。它与主机通信采用SPI模式,有利于减少连线。
  选择方案二:MD810R是一种模块基于内部配置优良,不需要自己配置串口模块,能直接与PC机进行通信,在高
频之上的超高频芯片,但是在对卡片的读取和检测时,需要配置天线的长度来控制MD810R的检测范围,缺点就是价
格方面,价格不便宜,适合用在远距离的检测卡片的情况下。
  根据这两种选择方案来看,在成本可控的范围内,既可以检测出卡片的信息,又可以使检测的结果是我们所需
要的,是可靠的,所以选择方案是我们设计作品所需要的。
2.5系统设计
  本设计主要是以STC89C52为主导控器,将采集到的IC卡信息和单独按键信息发送至控制处理芯片展开解决。主
处理芯片将IC卡信息和单独按键变换为数字格式,并根据串行通信端口,将控制模块的信息传送到计算机。PC端自
制软件分辨IC卡信息和数据库查询。如果IC卡合乎信息后,向下位设备推送命令,开启LED灯,让PC端自制软件在数
据库系统存储本人信息。不然,PC端自制的软件会通知下位设备进行报警提示。

第三章硬件设计

3.1硬件总体设计
  系统是以STC89C52单片机为最小系统,采用射频感应模块采集IC卡的信息,集成的按钮可以进行切换功能的操
作,12864液晶显示屏会根据IC卡的类型,显示相应的卡片信息,用户信息等器件组成智能图书馆管理系统。
  硬件中射频感应模块负责将读取到的IC卡的种类的卡号发送到单片机。单片机在串口的工作方式下负责将IC卡
信息转换成数字信号传输到上位机。LED灯通过亮灭对IC卡的状态进行判断。蜂鸣器报警模块通过声音进行提示。
LCD12864液晶显示屏显示用户的信息,图书信息,并且把信息保存都数据库当中。图3-1为最小系统设计。
图3-1 最小系统设计
在这里插入图片描述

图3-2 整体电路设计
3.2 STC89C52单片机主控模块
  该设计方案选用的是根据STC89C52单片机操纵的芯片,STC89C52芯片拥有52位芯片应用8位CPU、多路记时器和
计数器、串行通信端口、功能损耗低、价格便宜、简易的编写程序等作用,可以适用多次写实际操作。52单片机有
40个针角,在其中P0和P1、P2,52最小系统由晶体电源电路和延时电路构成。
  晶振电路是单片机的主要器件,只有晶振运行的单片机才可以工作,晶振电路的容积尺寸确定了晶振电路是不
是能正常的振动。电力电容器规格一般在22uf到30uf中间,在电焊焊接晶振中,应留意晶振距单片机芯片不要很
远。太远的电焊焊接路线会生存摩擦,于是阻力越大,振动的工作电流就越小,使晶体不可以正常的振动。
  电源电路设计主要是为了避免单片机进入死路,使单片机修复到刚启动的情况。在延时电路中,电力电容器应
用10UF,单片机RST为校准针角,初始值为低电频,按复位开关后,单片机RES联接到VDD上,可以重新启动全部系统
软件。10K电阻器关键避免重设按键根据按VDD和GND短路故障,进而使操作系统不能正常的工作中。
  该元件选用ATMEL密度高的非易失性存储器生产技术生产制造,兼容行业标准MCS-51指令系统和导出标准。
STC89C52的最小系统有40个管脚,一个组成震荡器的功率放大反相放大器。晶体振荡器的频率通常是11.0592Mhz,
片内时钟产生器将震荡频率两分频,造成两相时钟P1和P2,提供给单片机设计。晶振电路的频率设定得越大,周期
时间越快。MCU的校准和复位电路主要是避免程序执行进入到无限循环。当复位电路被启用时,就可以停止不断循环
实际操作,而且可以从头开始程序执行。
在这里插入图片描述

图3-3 STC89C52的引脚在这里插入图片描述

图3-4 STC89C52电路图
3.3 LCD12864液晶显示屏模块
  本设计方案采用LCD12864表明客户情况,为4位/8位并行或2线/3线串行通信模式。由于并行比串行通信快许
多,因此采用并行模式,屏幕分辨率128X64,电源电压低。内嵌汉字库给予8192个16X6点阵中国汉字,还包括128个
16X8点阵ASCII字段名。利用该控制模块灵便的页面模式和简易的使用命令,可以在工业触摸屏产生一个字符串。它
可以表示4行81列,即32个中国汉字。已经界定了12864的详细地址(开始详细地址:80)。与同种类的LCD控制模块对
比,不论是硬件开发或是程序代码都需要简易和划算得多。
在这里插入图片描述

RC522作为一种高度集成的非接触式读写卡芯片。主要是通过天线发送无线波信号,将传输的波信号进行转换、
整流和滤波进行进一步的处理,最后输出到IC卡的电路中。IC卡将收到的载波信号经过一系列的调制,解调的方
法,把处理后的数据发送到IC卡的控制器进行控制和管理。IC卡对数据进行处理和识别,在将波信号通过天线发送
会读卡器芯片,读卡器芯片也会进行调整和解调来处理这些信息,构成了一个通信回路。采集IC卡信息。在靠近IC
卡时,IC卡本来就是一个无源的芯片,RC522射频与IC卡会通过产生共振获取卡内信息,在内部的磁波的激励下不断
能对内部电容放电,当电容接收到2V左右的电压时,就会将电压传输给到单片机,另外对IC卡里的信息进行读取。

3.5 蜂鸣器报警模块
  在图书馆智能管理系统中,蜂鸣器是用于警报的。IC卡在运作时,假如正常的工作中,刷卡后会有声音。假如
不成功,会进行提醒。硬件配置,IO端口P1.0与MCU通讯。当IO接受到脉冲信号时,蜂鸣器没法正常工作,因而没法
提醒。假如它接受到低电平,它将正常的提醒。高低电平实际操作由三极管操纵。为了更好地限定三极管的电流,
电焊焊接100欧的电阻。蜂鸣器一般分成积极蜂鸣器和处于被动蜂鸣器。一般大家用的是无源的被动蜂鸣器,根据在
蜂鸣器两边增加波形来出现响声。
  蜂鸣器主要运用于提示客户刷卡的实际效果,避免客户用失效卡刷卡。因而,在这个设计中必须一个蜂鸣器。
单片机设计I/O口的推动电流远远地不能达到蜂鸣器的常规推动电流。此刻就要一个三极管来放大电流。普遍的三极
管分成NPN和PNP,不一样的三极管有不同的管脚推动脉冲信号。本设计选用NPN三极管S8550。当51单片机的P1.1端
口处在低电平时,三极管关断。这时电流根据蜂鸣器,系统软件警报。相反,假如处在脉冲信号,三极管便会关
闭,电流不流,蜂鸣器也不会响。因此根据系统控制引脚的脉冲信号,蜂鸣器就可以发音和关掉。
3.6 电源供电模块
  在智能化图书管理系统中,电源模块的功能是为收集与操纵主控芯片模块、数据采集与显示模块等模块给予电
源。为了确保电源的稳定度和考虑高压的影响,我们在电源上联接了2个10UF的电容器。电源的平稳确保了输出电压
的稳定性和系统的平稳运作。正负要联接恰当,不然电源正级和系统正极无法连接,系统没法工作中。
  电源模块为全部系统配电。智能图书馆系统应用5V工作电压。当电源电源开关合闭时,电源的正级与全部电源

电路的正级相接,系统处在工作状态。还为主板芯片、功能键模块、串口通信模块、微波射频模块、液晶显示屏等
模块配电。当电源开关关掉时,系统处在非工作状态。除此之外,在电源的正负安装了一个10uF的电容器,主要运
用于过滤,避免电源工作电压的细微起伏危害的功能性运用。
3.7 独立按键模块
  在智能图书馆系统软件中,有三个独立的作用按钮:菜单、申请注册和撤销,及其一个重设按钮。独立按钮的
一端连接到单片机的I/O引脚,另一端连接到开关电源和GND。默认设置状况下,连接到单片机I/O引脚的一端为脉冲
信号。当独立键被启动时,与单片机的连接端将与GND端连接,单片机的I/O变成低电频并被降低,系统软件将实行
该键的有关命令。
图3-12按键电路图
在这里插入图片描述

第四章软件设计

4.1软件主程序流程框
  系统是以STC89C52单片机为主控芯片,RFID射频模块读取卡片的信息,独立按键操作控制切换功能,LCD12864
液晶显示屏显示IC卡卡号和用户信息等部分组成智能图书馆管理系统。
  软件的LCD12864显示屏依据按键显示不一样的菜单页面。图书管理系统通电时,系统会对每个组件完成复位,
随后主板芯片会一直查验功能键是不是按下。当“菜单”按钮被按下时,MCU将实行对应的命令和程序流程。当按下
注册按钮或撤销按钮时,LCD显示屏将表明注册取得成功和撤销取得成功等信息内容。随后按“菜单”按钮,系统将
回到刷信用卡页面。仅有注册的IC卡才可以在智能图书馆系统中应用。假如IC卡未注册,LCD将表明失效卡。RC522
射频控制模块检验置放在射频磁感应区的IC卡的情况。当按下注册按钮或销户按钮时,系统将注册并注销IC卡,并
根据无源蜂鸣器和led灯提醒。图4-1为软件主流程图,图4-1为软件组成模块图。
图4-1 软件主流程图
在这里插入图片描述

4.2 LCD12864液晶显示屏流程框
  在当系统软件通电时,LCD组件的程序流程被相对地初始化。假如液晶屏上显示“欢迎您使用图书馆管理系
统”,则液晶屏初始化成功。设定单独按钮操纵液晶屏的页面栏。依据三个按钮的作用,挑选实际操作IC卡的页
面。进到运行状态后,假如操作成功,会显示相对应的IC卡种类和卡号提醒,但假如刷卡不成功,也会在LCD上显示
卡号和种类。

4.2.1 LCD12864液晶显示屏代码实现
#include <reg52.h>
#include <intrins.h>
#include "delay.h"
sbit RS = P1^7; //控制端口 
sbit RW = P1^6;
sbit E = P1^5;
sbit PSB = P3^2;
sbit PAUSE = P0^3;
sbit RES = P0^2;
#define DataPort P2 
/*------------------------------------------------
检测忙位
12
------------------------------------------------*/
void Check_Busy()
{
RS=0;
RW=1;
E=1;
DataPort=0xff;
while((DataPort&0x80)==0x80);//忙则等待
E=0;
}
/*------------------------------------------------
写命令
------------------------------------------------*/
void Write_Cmd(unsigned char Cmd)
{
Check_Busy();
RS=0;
RW=0;
E=1;
DataPort=Cmd;
DelayUs2x(5);
E=0;
DelayUs2x(5);
}
/*------------------------------------------------
写数据
------------------------------------------------*/
void Write_Data(unsigned char Data)
{
Check_Busy();
RS=1;
RW=0;
E=1;
DataPort=Data;
DelayUs2x(5);
E=0;
DelayUs2x(5);
}
/*------------------------------------------------
液晶屏初始化
------------------------------------------------*/
void Init_ST7920()
{
DelayMs(40);
PSB=1;
DelayMs(1);
RES=0;
13
DelayMs(1);
RES=1;
DelayMs(10);
Write_Cmd(0x30);
DelayUs2x(50);
Write_Cmd(0x30);
DelayUs2x(20);
Write_Cmd(0x0c);
DelayUs2x(50);
Write_Cmd(0x01);
DelayMs(15);
Write_Cmd(0x06);
DelayUs2x(50); 
}
/*------------------------------------------------
显示字符串
x:横坐标值,范围0~8
y:纵坐标值,范围1~4
------------------------------------------------*/
void LCD_PutString(unsigned char x,unsigned char y,unsigned char *a)
{
switch(y)
{
case 1: Write_Cmd(0x80+x);break;
case 2: Write_Cmd(0x90+x);break;
case 3: Write_Cmd(0x88+x);break;
case 4: Write_Cmd(0x98+x);break;
default:break;
}
while(*s>0)
{
Write_Data(*s);
s++;
DelayUs2x(50);
}
}
/*------------------------------------------------
清屏
------------------------------------------------*/
void ClrScreen()
{
Write_Cmd(0x01);
DelayMs(15);
}




4.3 RC522射频模块流程框
  在射频模块全部通电全过程中,程序流程校准,射频模块从头至尾查验是不是有IC卡读入。依据碰撞、防碰
撞、选卡等程序流程。取得成功的IC卡的IC卡号表明在LCD上。整个过程中,RC522内部结构的发射装置推动无线天
线,与IC卡和SD读卡器开展通讯,不用别的电源电路。仿真模拟插口用于解决脉冲信号的调制解调,非接触式UART
串口通信用于解决与服务器通讯的协议书规范,FIFO缓冲区域可以完成服务器与UART的通讯。
4.3.1 RC522射频模块代码实现
#include <intrins.h>
#include "reg52.h"
#include "main.h"
#include "mfrc522.h"
#include <string.h> 
#define MAXRLEN 18 
  char PcdRequest(unsigned char req_code,unsigned char *pTagType)
{
char status;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg,0x08);
WriteRawRC(BitFramingReg,0x07);
SetBitMask(TxControlReg,0x03);
ucComMF522Buf[0] = req_code;
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,1,ucComMF522Buf,&unLen);
   if ((status == MI_OK) && (unLen == 0x10))
15
{
*pTagType = ucComMF522Buf[0];
*(pTagType+1) = ucComMF522Buf[1];
}
else
{ status = MI_ERR; }
return status;
}
char PcdAnticoll(unsigned char *pSnr)
{
char status;
unsigned char i,snr_check=0;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ClearBitMask(Status2Reg,0x08);
WriteRawRC(BitFramingReg,0x00);
ClearBitMask(CollReg,0x80);
ucComMF522Buf[0] = PICC_ANTICOLL1;
ucComMF522Buf[1] = 0x20;
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,2,ucComMF522Buf,&unLen);
if (status == MI_OK)
{
for (i=0; i<4; i++)
{
*(pSnr+i) = ucComMF522Buf[i];
snr_check ^= ucComMF522Buf[i];
}
if (snr_check != ucComMF522Buf[i])
{ status = MI_ERR; }
}
SetBitMask(CollReg,0x80);
return status;
}
char PcdSelect(unsigned char *pSnr)
{
char status;
unsigned char i;
unsigned int unLen;
unsigned char ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_ANTICOLL1;
ucComMF522Buf[1] = 0x70;
ucComMF522Buf[6] = 0;
for (i=0; i<4; i++)
{
ucComMF522Buf[i+2] = *(pSnr+i);
ucComMF522Buf[6] ^= *(pSnr+i);
}
16
   CalulateCRC(ucComMF522Buf,7,&ucComMF522Buf[7]);
ClearBitMask(Status2Reg,0x08);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,9,ucComMF522Buf,&unLen);
if ((status == MI_OK) && (unLen == 0x18))
{ status = MI_OK; }
else
{ status = MI_ERR; }
return status;
}
char PcdRead(unsigned char addr,unsigned char *pData)
{
char status;
unsigned int unLen;
unsigned char i,ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_READ;
ucComMF522Buf[1] = addr;
   CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);
   if ((status == MI_OK) && (unLen == 0x90))
// { memcpy(pData, ucComMF522Buf, 16); }
{
for (i=0; i<16; i++)
{ *(pData+i) = ucComMF522Buf[i]; }
}
else
{ status = MI_ERR; }
return status;
} 
char PcdWrite(unsigned char addr,unsigned char *pData)
{
char status;
unsigned int unLen;
unsigned char i,ucComMF522Buf[MAXRLEN];
ucComMF522Buf[0] = PICC_WRITE;
ucComMF522Buf[1] = addr;
   CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf[2]);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,4,ucComMF522Buf,&unLen);
  if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] & 0x0F) != 0x0A))
{ status = MI_ERR; }
if (status == MI_OK)
{
//memcpy(ucComMF522Buf, pData, 16);
for (i=0; i<16; i++)
{ ucComMF522Buf[i] = *(pData+i); }
   CalulateCRC(ucComMF522Buf,16,&ucComMF522Buf[16]);
status = PcdComMF522(PCD_TRANSCEIVE,ucComMF522Buf,18,ucComMF522Buf,&unLen);
   if ((status != MI_OK) || (unLen != 4) || ((ucComMF522Buf[0] & 0x0F) != 0x0A))
17
{ status = MI_ERR; }
}
return status;
}
void PcdAntennaOn()
{
unsigned char i;
i = ReadRawRC(TxControlReg);
if (!(i & 0x03))
{
SetBitMask(TxControlReg, 0x03);
}
}
  /
//关闭天线
  /
void PcdAntennaOff()
{
ClearBitMask(TxControlReg, 0x03);
}

4.3.2 RC522射频模块成果展示
  在射频模块通电全过程中,程序流程复位,射频模块自始至终检验是不是有IC卡读入。根据碰撞、防碰撞、选
卡等程序流程,最后取得成功的IC卡将IC卡卡号表明在LCD上。图4-6为RC522射频模块成果展示图。在这里插入图片描述

图4-6 RC522射频模块成果展示图
4.4上位机
4.4.1 主界面
  智能图书馆管理系统上位机的制作采用微软公司下的一种基于面向对象的Visal Basic语言。数据库采用的是基
于小型化的Access数据库。首先在Visal Basic软件中进行上位机GUI界面设计。打开Visal Basic软件,新建一个标
准EXE文件,首先制作用户界面,拖动标签控件,输入名称。拖动文本框,什么都不写。设置标签控件,文本框的大
小。设置字体,设置长、宽、高,然后按照这样的步骤,进行操作。接着制作菜单栏,单击VB软件工具按钮,点开
菜单编辑器,然后对标题、名称进行命名,它是主菜单。然后通过上下按钮进行多个主菜单栏的设置。最后制作菜
单栏下的选项,其实就是子菜单栏,一个新的菜单栏,点击向左按钮,表示它是二级菜单,然后对标题、名称进行命名。界面模式制作完成,然后对控件进行代码编写,当对菜单栏发生点击事件是,进行函数处理。
4.4.2 图书信息管理
  在图书管理方法页面,图书名字、书架、出版时长、出版社、信用卡卡号等信息主要是显示,有图书改动、图
书删掉、图书增加、更新、确定等按键操纵。因为VB软件要与数据库进行连接,要对数据库的资源进行访问和操
作,所以在制作图书管理界面时使用ADO控件。因为ADO控件不是软件中的内部所拥有的控件,所以在使用时,必须
先将该控件加载到软件的工具箱当中,这样你才能在软件中看到并使用它,选择“工程”->“部件”命令,打开
“部件”对话框这样的方法和步骤。选择Microsoft ADO Date Control 6.0控件,点击确定按钮,加载ADO控件到工
具箱中。ADO控件就是用来连接数据库的,对ADO控件的属性进行设置。点击ConnectionString,选择“使用连接字符
串”对数据库进行选择,点击Microsoft Jet 4.0 OLE DB Provider选项,单击“下一页”按钮,选择已经创建号的
数据库。进行测试连接,单击确定。然后单击RecordSoure,因为数据库是一张表,所以选择“2-adCmdTable”信
息,点击确定。接下来,进行数据库绑定,使用DateGrid控件与ADO控件配合使用。DateGrid控件属于ActiveX控
件,在使用前需要加载到工具箱中。选择“工程”->“部件”命令,打开“部件”对话框。选择Microsoft
DateGrid Control 6.0(OLEDB)控件,点击确定按钮,加载DateGrid控件到工具箱中。在它的属性中设置数据源
DateSource为ADO控件的名称。点一下【图书添加】按键,系统提升一行信息,并在对应的行中入录数据信息。点一
下确认后,PC端将获得的信息储存到ACCESS数据库查询中,以确保信息不容易遗失。在修改操作流程中,可以在随
意一行图书信息中进行修改实际操作。点击“确定”按键,确保系统软件将修改后的图书信息储存到ACCESS数据库
查询中;
4.4.3 图书查询
  在图书管理方法页面,表明图书名字、图书情况、图书出版发行时间、图书储放日期、借阅客户信用卡卡号、
刷信用卡时间等信息。在Visal Basic设计中,采用控件来显示图书的信息,用ADO控件与DateGrid控件配合使用来
连接数据库,通过使用按钮,标签,文本等控件将查询到的信息显示到界面中。同时还可以选择输入关键字进行查
询,比如查询图书编号、入库时间、图书的借阅状态等。当你点击“确定查询”按钮时,图书馆系统就会从Access
数据库当中查询数据和内容,然后再显示到控件上进行查看。制作步骤与图书信息管理界面一致的方法。

第五章系统调试

系统软件调试包括硬件调试、软件调试和整体调试,包括表明功能、功能键实际操作、硬件电焊焊接、配电、
编码编辑和下载,及其系统软件整体功能的完成。
5.1硬件调试
5.1.1 单片机调试
  在STC89C52的最小系统中,要留意的是晶振电路,它是最小系统的关键电路。电路中的电容器对晶振的高低起
着关键性的功效,决策了所有系统软件是否正常的运作。通常应用22uf到30uf中间的电容器。此外,晶振的安装部
位不可以离单片机很远,间距要适合。电路越大,功能损耗越大。因此要防止寄生电阻器震动过大造成电流量过小
的状况,使晶体振荡。因此在设计过程中,必须事先设定有效的部位,用万能表检验电路是不是有通路或短路故障
或短路,避免无效。留意单片机不必按反。假如按反,处理芯片会毁坏,成本费高。调节结果显示,单片机可以正
常的工作中,没有处理芯片烧毁或时有工作电流穿过。
5.1.2 RC522射频模块调试
  智能化图书管理系统RC522射频模块的调试必须与射频模块和单片机设计相互之间的通讯联接相应的IO口。给予
的工作电流应合乎射频模块的正常的工作电流。假如电流过小,射频模块将不能正常的工作。因此连接的情况下
RFID要外接电源正级,确保电流。此外,RFID射频模块的工作工作频率是高频,检测IC卡时必须将其放置射频模块
的检测范畴内。假如IC卡检测部位不正确,调试数据显示RC522射频模块工作电源电路和次数正常的,可以检测到IC
卡,不会有没法工作的问题。
5.1.3 蜂鸣器模块调试
  应用蜂鸣器时,检查三极管的引脚连接是不是恰当,检查NPN和PNP,留意三极管不必接反,不然会烧毁。依据
网站的材料,寻找三极管的正负极。三极管电焊焊接有误,蜂鸣器就无法正常的工作,由于电源电路中经过的电流
量过小。此外,检查蜂鸣器的正负是不是接反。假如三极管和蜂鸣器连接取得成功且正常的,检查基级的连接IO口
是不是与编码的IO口相匹配。根据高低电频操纵推动三极管工作,使蜂鸣器正常的工作。还可以用滑动变阻器来调
整蜂鸣器的响声。调节結果是蜂鸣器能正常的发音。
5.1.4 LCD12864液晶显示屏调试
  用万用表检测下12864液晶连接的IO口是否和应用的主控芯片的IO口是否一致,同时检测连接好的电路是否有短
路的现象,在检测完电路无误时,在检测程序中应用的IO 口是否和硬件上的一致。调试结果为:LCD12864可以正常
显示图像界面。
5.1.5 电源调试
  该系统应用5V电压为全部构件配电。需要一个数字示波器来观察电压稳定性。在电压不稳定的情形下,可以在
交流稳压器和电力电容器中调整电压稳定性,为每个控制模块供应平稳的电压,确保全部系统的稳定工作。是驱动
力系统的关键。假如开关电源不可以给予系统需要的电压,全部系统就没法工作中。电压过高就会造成程序模块损
坏毁坏,而电流量过低则会造成控制模块因电量不足而没法正常的应用。与此同时必须用数字万用表来明确电压稳
定性。不稳定的情况下加个电源芯片。调节结果显示,导出电压平稳,符合要求,系统可以平稳运作。
5.2 软件调试
5.2.1 LCD12864液晶显示屏调试
  在调试全过程中,程序下载后,液晶屏上面有错码,可以用液晶屏上显示的地址码解决困难。要在LCD12864上
显示所需的内容,必须把握程序中显示的时钟频率。您可以依据先后顺序调节64字符的显示,以得到所需的结果。
调试结果:根据将程序烧入单片机设计,LCD12864可以依据程序显示不一样的界面。
5.2.2 RC522射频模块调试
  通过将代码烧入到单片机中,RC522射频模块是否可以正常工作,在检测IC卡时放在射频模块检测的范围内,是
否会检测IC卡到位置,是否会根据IC卡的位置让蜂鸣器发出失败或者无效卡的提示。调试结果:将程序烧入到单片
机中,RC522可以正常工作并且可以检测出IC卡,会根据IC卡的位置让蜂鸣器发出失败或者无效卡的提示。
5.3 整体调试
系统的整体调试首先给下位机进行上电。LED小灯处于一个灭的状态,液晶显示屏上显示“欢迎您使用图书馆管理系
统”等字说明液晶显示屏的初始化完成。打开上位机
  ,进入登录界面,输入账户和密码进行登录。登入进去,下位机进行刷卡的操作,RC522将收集到的信号传输到
单片机,单片机进行数据的处理,这时,上位机就会与数据库里存放的信息进行比对,如果匹配,则显示用户的用
户名和借阅的图书的信息,以及IC卡的卡号。同时,LED小灯会发出亮光。如果不匹配,则蜂鸣器则会发出响声。
LCD12864液晶显示屏就会显示无效卡,对于第一次对IC卡进行初始化时,可以按下“注册”按键对IC进行注册,注
册操作,上位机就要连接数据库,进行用户信息的添加,然后进行一系列的充值、借阅图书等操作。同时要撤销一
张IC卡时,要对下位机进行操作,按下“撤销”按键,此时的上位机会将IC卡的信息从数据库当中进行删除。一张
被撤销了的IC卡,如果进行第二次刷卡,则会被视为无效卡。

第六章总结

对于基于RRFID与单片机、IC卡和上位机的智能图书馆系统设计,我是从两个方面进行考虑的,分别是硬件设计
和软件设计。首先对硬件进行设计,第一步是先购买所需要的硬件。硬件有:STC89C52单片机芯片、LCD12864液晶
显示屏、40插槽、11.059M晶振、30pf电容、10uf电容、DC电源头、按键、电源开关 、USB供电源、5V有源蜂鸣器、
RC522射频、串口线、RS232、IC卡、杜邦线、绿色LED灯、1N4007二极管、插针等电器元件。然后将硬件集成到PCB
板上。进行硬件开发,编写代码,对于编码的编写,可以借鉴普中的STC89C52板子的资料。比如通过一个实验教程
LED流水灯的工程进行修改。 打开工程,进行芯片选型,配置ADK环境。对代码的一些GPIO管脚进行修改。删除掉不
需要的文件。接着对外围设备进行驱动移植。对LCD12864、RC522进行驱动移植。对蜂鸣器,LED灯进行GPIO操作。
对LCD12864进行数据显示,首先可以显示一个基本的字符串,说明代码没有问题,暂时先完成这样。然后对RC522进
行代码的编写,添加头文件,添加.c文件,修改代码。在串口助手的调试下,RC522可以正常工作,可以显示IC卡卡
号。接着将RC522所显示的卡号显示到LCD12864液晶显示屏上。添加一个定时器延时函数。将RC522、LCD12864进行
初始化,进行使用。然后实现蜂鸣器和LED小灯的工作。硬件设计基本完成,开始软件设计,软件设计主要是上位机
和数据库的制作。首先开始数据库的制作,数据库用ACCESS数据库,建立一张表,对表的属性进行填写,填写表的
字段名称,设置数据类型。依次类推,共建了四张表,分别为综合表,刷卡时间表,图书信息表和用户信息表。接
着对上位机进行制作,上位机的制作采用VB进行制作。首先制作界面首页,通过标签控件,容器控件,文本框等,
对控件的属性进行修改。依次类推,一共制作了5个界面,分别为:登录后主界面,信息管理界面,信息查找界面,
信息管理界面,查找界面。注意都要和数据库进行连接。软件数据基本完成。最后是软件和硬件的综合,通过串口
进行连接和通信,主要用UART协议,使用RS232转TTL的串口。经过多次的测试,系统可以运行起来。优点是整个系
统功能简单,成本较低,电路易懂,整体的设计运行稳定。缺点是串口通信速率相对比较缓慢,没有用到联网功
能,比如WIFI模块,用WiFi进行数据的传输。改进方法是可以添加WIFI模块使整体的设计功能更强大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值