基于51单片机的仓库管理系统设计

目 录

摘 要 I
Abstract II
引 言 1
1 系统总体方案设计 3
1.1 主要研究内容 3
1.2 设计总方案比较 3
1.3 系统最终总体设计方案 3
2 系统硬件设计 5
2.1 系统单片机的选型及设计 5
2.1.1 单片机的选择方案 5
2.1.2 STC89C51单片机概述 5
2.1.3 单片机最小系统 7
2.2 RFID的模块的选型及概述 8
2.2.1 RFID的选择方案 8
2.2.2 RFID模块电路设计 9
2.3电源电路设计 9
2.4蜂鸣器模块概述及设计 10
2.5 按键模块设计 11
2.6 显示器的选择方案 11
2.7 硬件总体结构分析 12
3系统软件设计 14
3.1 系统主程序流程设计 14
3.2 单片机程序编写 14
3.3 单片机程序导入 16
3.4上位机远程控制 17
4 系统调试 19
4.1 硬件调试过程 19
4.2 软件调试过程 20
4.3 调试小结 20
结 论 21
参考文献 22
附录1系统电路总图 24
附录2 源程序 25
致 谢 32

摘 要

物资管理筹措计划,原料均衡,库存和进货等活动对大量资料和信息业务的准确性,及时性和质量要求相当高的,任何信息的漏掉,错误或失误会影响到企业,采用了纯人工的方法管理是有一定难度的。随着电子商务的发展,仓储规模不断扩大,货量和信息量成倍增长,大型仓储关系系统功能强大而复杂的操作降低了仓储的工作效率,几十年前的手工操作方式落后于近代企业的发展,因此本项目意在解决仓库管理给手工操作带来的烦恼,具有一定的实用价值。
本设计主要是采用51单片机作为核心处理器,射频识别模块对卡片进行识别信息,识别信息之后通过LCD16824液晶屏显示检测出来货物的信息,并在屏幕下方显示出具体的信息,通过语音提示模块提示出货物刷卡的信息,在C环境下进行程序编写,通过曼彻斯特解码方法构成的软件系统不但移植性强和系统升级简单,而且读卡稳定成功率高,最终完成了仓库管理系统的基础功能,使仓库管理控制系统的研发具有重大的意义。
结果表明,以单片机为基础的仓储管理系统是可行的,整个系统是良好的稳定性的。其特点是节省人力和时间,更加方便,成本低廉。

关键词:仓库管理;射频识别;单片机

Abstract

Material management financing plan, raw material balance, inventory and stocking activities on a large number of materials and information business accuracy, timeliness and quality requirements are quite high, any information missing, error or error will affect the enterprise, the use of a purely manual method of management is difficult. With the development of e-commerce, storage scale expands unceasingly, a doubling of cargo and the amount of information, large storage system is powerful and complex operations to reduce the storage efficiency, a few decades ago the manual operation way behind the development of the modern enterprise, this project aims to solve the annoyance warehouse management for manual operation, has a certain practical value.
This design mainly adopt 51 single chip microcomputer as the core processor, radio frequency identification module to identifying information card, after identifying information detected by LCD16824 LCD shows the information of the goods and at the bottom of the screen shows the specific information, through the voice prompt module hint goods credit card information, under the environment of C programming, through the Manchester decoding method of software system not only strong portability and simple system upgrades, stable and high success rate and read card, finally complete the function of warehouse management system, make the warehouse management control system research and development is of great significance.
The results show that the storage management system based on single chip microcomputer is feasible and the whole system has good stability. Its characteristic is to save manpower and time, more convenient, the cost is low.

Keywords:warehouse management; rfid; single chip microcomputer

引 言

在经济飞速发展的时代,企业工厂需要的物料较多,随之而来的物料管理问题也成为生产中的一大难题。在这种情况下,仓库管理系统就慢慢的成为人们迫切需要的一种对仓库信息有效管理的工具,仓库作为一种物质资源的分配中心在整个单位的运作中起着重要的作用。各种物料都要从仓库进出,有许多的相关数据需要进行管理,仓库管理者科学合理的管理仓库是一种工作能力强的表现,同时也能促进公司的生产运作,目前有许多仓库管理的方式是由人力操作的,费时费力,基本还没有使用计算机进行信息管理。
据调查,企业和工厂所采用的信息管理方式主要是利用文本、表格等对相关的数据信息进行管理。物料进入仓库的各种信息(如到货时间、商品名称、商品数量等)的统计和核查,往往是由仓库管理员编写登记的,出库的商品以及出库的名称是用人工计算或者手写编号等,仓库管理都是采用手工方式对仓库的操作进行手工管理。由于大量的信息,让仓储信息管理混乱和复杂,这时储存条件通常是记录在登记表中,对于货物的具体出入库情况,在当时比较容易掌握,但一段时间后,如果你重新找出来,你需要看或读很多材料,造成查询费时费力的情况,如果想对很长一段时间以前出入库表单进行更改就会更加困难。
目前,对高科技的代表计算机技术[1] 深入研究并应用到各个领域,在国际经济上已经涉及了多个方面。经济和计算机技术不断发展,兴起了各类管理,仓库管理在生产中被人们开始重视起来。大型仓库管理中需要处理的事情比较多,最主要的是货物进出库的管理,但各种物料订货渠道众多,品种规格都各不相同,并且从供应商到仓库和货运系统各种相关的信息更新频繁,管理起来十分复杂,运用人工管理成本较高且效率非常低,信息管理中数据统计分析的速度得不到保证而且容易出现纰漏,要实现整个仓库管理需要花费大量的人力资源和时间资源。
根据课题设计要求,论文主体框架将通过以下的5个章节进行介绍,详细的安排结构如下:第一章为系统总体方案设计,主要根据产品所需的功能要求进行总体的方案设计,确定设计的大致框架。第二章为系统的硬件选型与设计。本节根据设计的功能需求,来选择合适的传感器,单片机等模块,选择合适相匹配的元器件以满足要求。当对各个适合的元器件的型号进行选择完成之后,对电路中的各个硬件进行电路设计,利用单片机与各个元器件的相互联系来完成使用功能,对涉及到的电路图进行分析。第三章为产品的软件设计,介绍了该系统的整体流程图,对该系统进行编写和编译单片机程序,用单片机来实现各模块之间的通信与联系,并介绍编程软件keil4。第四章为系统的调试,在产品设计结束之后,进行多次的调试实验来验证是否达成设计要求以及参数是否准确,如出现误差并找出误差的原因。文章最后一部分是结论,对整个毕设的过程进行总结,总结过程中学习的知识以及对毕设的评价在对产品在合适的检测环境下,将被测物体进行多次的测量并将测得的数据进行处理总结,得出影响产品误差的原因以及求得最适宜检测被测物体的实验环境。
通过了本文的设计,基本实现了货物入库出库,模仿停车场进出门,IC卡注册删除,查询出入库时间,12864作为终端显示,上位机远程控制,数据存储。
本文研究的意义是进一步节约了人力,并且查出的结果准确可信。用数据进行仓库管理的进步有利于让我们更加方便的解决了大数据管理,将有利于工业生产等方面的智能化、工业化的发展。

1 系统总体方案设计

本节主要是针对系统的总方案进行相应的设计,在控制系统方面进行合理的选择,根据设计的功能和不同方案的优缺点来进行方案论证,确定设计的整体框架。
1.1 主要研究内容
系统开发的主要目的是运用该系统自动规范的管理仓库。实现货品出入统计,停车场进出门,IC卡注册删除,查询出入库时间,12864作为终端显示,上位机远程控制,数据存储等功能。
1.2 设计总方案比较
根据检测物体的要求,系统既能做到精确识别出货物,又能够具有将测得的数据准确显示出来的功能,本文提出两种设计方案。
方案一:采用CPLD控制器。其可进行逻辑编程,具有大型化,高密度,小尺寸,丰富的I/O资源,扩展性强等[2]优点。以并行的输入输出,提高了系统的处理速度,适用于大规模的核心控制。然而,本系统只需要简单的功能,对于速度没有特殊需求。综合众多因素进行考虑,最终放弃了此方案。
方案二:采用单片机+RFID。这种设计是利用单片机控制芯片的寄存器,以达到控制读卡器芯片的目的。单片机发送的命令经过芯片读卡器,其接收到信号后,按照非接触式射频卡协议格式,通过天线和匹配电路发出的调制的信号来寻卡,如果这是一个卡范围,利用谐振电路产生的共振,结合电压泵的作用为卡片电容充电,以得到更多的能量,当达到一定电压值时,能够充当电源的作用,能够提供电压,以确保卡片的其他电路正常工作。可以理解为“阅读器”和“标签”的通讯过程[3],“阅读器”有读卡功能相当于是读卡器,“标签”就是卡。
对上述方案进行比较,方案一逻辑功能太复杂,在实际应用中较为不便,使用成本较高,操作较复杂。方案二性价比较高,传播快且距离远,检测精度更高,有利于检测货物出入库,符合本项目要求。综上所述,本设计采用方案二,采用RFID模块作为识别检测模块最合适。
1.3 系统最终总体设计方案
本设计确定最终的方案,最终选用STC89C51单片机为控制器,单片机通过控制芯片的寄存器,以达到控制读卡器芯片的目的,单片机发送的命令经过芯片读卡器,其接收到信号后,按照非接触式射频卡协议格式,通过天线和匹配电路发出的调制的信号来寻卡,如果这是一个卡范围,利用谐振电路产生的共振,结合电压泵的作用为卡片电容充电,以得到更多的能量,当达到一定电压值时,能够充当电源的作用,能够提供电压,以确保卡片的其他电路正常工作。检测出被测货物出入库具体数值在LCD12864液晶显示屏显示出来,并将识别出的货物进出门的信息在显示屏最下方显示,最终通过蜂鸣器模块播报出来。
此设计的方案框图如图1.1所示。
在这里插入图片描述

图1.1系统整体原理图

2 系统硬件设计

此章节主要是对系统详细的硬件设计所需的单片机型号,射频识别模块,蜂鸣器等模块的具体型号进行对比和讨论,根据设计功能要求,运行的工作环境等条件下选出一个最能符合本设计的器件型号。
2.1 系统单片机的选型及设计
2.1.1 单片机的选择方案
本次系统设计的核心是由单片机作为主要控制模块进行控制的,在全部系统当中起着统一全面策划的作用。本设计需要3k的程序存储容量,工作电压选用5V。由于有许多类型的单片机型号,因此选择单片机芯片是本设计中最重要的问题之一,本小节通过对比两种单片机的运行速度,程序存储和功能等性能参数几个方面来选择一个适合本设计的单片机型号。
方案一:采用STC89C51单片机。STC89C51的参数如下,工作电压:4V5.5V。工作温度范围:0℃75℃/-40℃~+85℃。数据存储方面最大可存256字节 RAM的数据信息,程序存储方面可容4KB ROM的应用程序代码。工作频率能够控制高频率电路,可达到80MHz,其单片机含有4K的储存程序,可以经过1000遍的反复擦写,在兼容的问题上以:MCS-51为基础,80C51型的指令系统以及单片机的型号,内部集成MAX810专门使用的复位电路,并且价格比较便宜。
方案二:选用AVR型单片机作为核心处理器,AVR型单片机设备可以满足RISC打包指令的集成功能,其数据处理效率更高,是一款数据处理能力极高的内嵌型flash单片机设备[5],目前已经普遍应用在计算核心控制领域及工业仪表生产领域,但是,该软件和系统的缺陷也较为明显,软件设计难度较高,且单片机价格昂贵,可参照和复制的材料不多,入门难度较大。
为了使系统的控制方法相对简单、可靠性高和价格较低,各部分功能也可以实现,已经可以满足此次设计的需求,也可适用于设计的控制电路。因此本系统选用STC89C51型单片机作为核心芯片。
2.1.2 STC89C51单片机概述
STC89C51单片机体积小,具有功耗低,高性能的优点,单片机内的存储器内存为4kb字节。此型号单片机采用STC公司的密度大、存储久的技术研发而来。它与STC89C51引脚结构相一致。相对来说,其性价比高,在嵌入式应用中能发挥较大的功能。 STC89C51具体描述:字节选择为:256RAM,32位I/O端口线,以及看门狗的定时器,3个16位定时器/计数器,一个6级中断结构载体,串行口采用全双工口,片内晶振及时钟电路[6]。STC89C51型单片机共由40个引脚,其中有32个I/O端口: P0口(39-32引脚),P1口(1-8引脚),P2口(21-28引脚),P3口(10-17引脚),另外,第9引脚为复位,第18和19引脚为外部晶振输入口,第20和40引脚分别为GND和VCC,第29、30和31引脚与外部存储器有着一定的关联。单片机的引脚如下图2.1所示。

在这里插入图片描述
图2.1 STC89C51单片机引脚图
STC89C51单片机的基本机构框图如图2.2所示。
在这里插入图片描述

图2.2 STC89C51单片机基本机构框图

2.1.3 单片机最小系统
单片机最小的应用系统由电源电路、时钟电路、复位电路构成。这三个要素就可以组成一个最小的单片机应用系统,能够处理一些简单的工作。系统构成如图2.3所示。
在这里插入图片描述

  图2.3单片机最小系统图

STC89C51单片机一般接直流电源4V~5.5V,该系统中单片机工作电压为5V,将单片机的VCC接电源端,GND接地端。
时钟电路产生像时钟一样运动的振荡电路,在单片机的运行中,提供一个运行节拍,以实现单片机的各种操作。当运行的时钟数值为0时,则单片机的工作的工作状态为停止状态,如果时钟的数值超过单片机的操作频率时,时钟也会造成单片机的停止状态,时钟的电路通常是指振荡电路,振荡电路发挥的作用可以用其来确定所述单片机的速度控制。2个震荡周期形成一个状态周期[7],1个机器周期为6个状态周期,即有12个振荡周期,晶体振荡器采用的标准值为:12 MHz,1个振荡周期为1/12μs。时钟电路如图2.4所示,其中C2、C3一般选30pF左右。
在这里插入图片描述

图2.4时钟电路
复位操作是系统进行电路初始化。从某个初始状态开始,RST引脚输入高电平,连续两个或多个机器周期,单片机复位,使用时,通常接一个大约10μF的电解电容,为了可以自己复位[8],本设计采用的是外部手动按键复位电路,需要接上拉电阻来提高输出高电平的值。阻容复位时,电容为10uF,电阻为10KΩ,RC/RD+系列单片机RESET脚内部必须设一个10KΩ的下拉电阻。
复位电路如图2.5所示。
在这里插入图片描述

图2.5复位电路
2.2 RFID的模块的选型及概述
2.2.1 RFID的选择方案
此设计中RFID的工作原理:单片机控制芯片的寄存器,以达到控制读卡器芯片的目的,芯片卡阅读器通过天线接收发送到单片机,通过发射装置向周围一定的距离发射出频率信号,从而对其产生记录,将其保存在LC谐振电路内的卡上[9],在经过电磁波的激发,与之产生共振,使卡内的电压在外力的影响下对一端的电容进行充电行为,以此获得能量的补充,使其达到需求的工作电压。
对于一个RFID系统,当所处理的标签进入到读写器产生的电磁场范围之后,其标签的天线上会产生相同的感应电压[10],这时就达到了对存储电容充电的要求,如标签的芯片开始工作时,需将充电的储存量达到了一定的电荷量后就可以,通常RFID是指读写器发送的频率或系统的工作频率和载波频率。对于所设计的工作达到了高频13.56MHZ的RFID读写器的标准时,其是从所述标签读写器的电磁场在无源标签用途的能量高频进行操作时。基本的工作原理是采用电磁耦合的方式来进行,使得标签从读写器耦合线圈的辐射近场中获得能量,从而达到两者之间产生数据交换的目的,这一过程如图2.6所示。
在这里插入图片描述

图2.6 RFID读写器与标签耦合示意图

2.2.2 RFID模块电路设计
在对系统选择的时候我们选用MFRC522型号标准规格的射频模块[12],来进行刷卡的操作,其采用的频率是13.56MHz非触式高集成度的读写卡芯片,规定的电压是3.3V,通过线式将SPI接口与单片机管脚进行连接,确保可以得到稳定可靠的工作模块并且能够读卡距离足够远。模块接口原理图如图2.7所示
在这里插入图片描述

图2.7 RFID模块电路图
2.3电源电路设计
系统中电源电压为5V,但是射频识别模块的额定电压是3.3V,需要通过FM1117芯片进行降压处理,它的输出的电压为3.3V,适用于高效率的线性开关。其输出电流为1A,系统电路简单,工作稳定[13]。此电源电路是通过FM1117芯片[14]2引脚与射频识别模块1引脚连接,将5V直流电压降为3.3V给系统的射频识别模块电路供电。
其电路的原理图如图2.8所示。图中电解电容的作用是对其进行滤波处理,将电源中的低频参量剔除出去,让电压输出更加平稳。
在这里插入图片描述

图2.8 电源模块电路图

2.4蜂鸣器模块概述及设计
系统利用蜂鸣器模块主要实现了提醒刷卡出入库的情况,此时该指示灯亮。发声卡的设计的时候,对非触式的IC卡读卡器在读写成功是需要给以提示的效果,在选择时应是便宜为主,可以采用蜂鸣器作为提示器,其操作的方式更为简单,蜂鸣器分为两种类别,一种是电磁蜂鸣器和电子蜂鸣器[14],可以使用字母"H"或"HA"来进行蜂鸣器的表示也可以用"FM"、“LB”、"JD"进行表示,采用直流电压供电,属于一体化结构,在电脑、玩具、复印机、电话机、打印机、定时器、安全警报器等电子产品中都安装了发声器件,在这一类发声的电子产品应用较为广泛。其驱动主要依靠单片机的I/O口进行驱动,因此要通过三极管来驱动蜂鸣器。
在本次硬件设计中,蜂鸣器电路由蜂鸣器、三极管和电源组成,正常5V单片机STC89C51无法直接提供驱动蜂鸣器的电流,需要搭配三级管放大电流驱动蜂鸣器正常工作,当单片机的“P0.3”引脚写出逻辑为“1”时,单片机输出5V电压,电流为0A,三极管极的电压于发射极连接的电源相同,其电压数值为5V电压,三极管处于停止状态,蜂鸣器不发出提示音;当单片机的“P0.3”引脚写出逻辑为“0”时,单片机输出0V电压,三极管发射极电压远大于基极电压0.7V,三极管处于导通状态,蜂鸣器发出提示音;蜂鸣器电路图,如图2.9所示。
在这里插入图片描述

图2.9蜂鸣器模块电路图
2.5 按键模块设计
本设计按键模块分为两个按键,主要的功能是设置出入库刷卡提醒。其中按一个按键是入库刷卡,另一个按键是出库刷卡,按键模块中的两个按键分别接入单片机的4号(P04)引脚和5号(P05)引脚。按键模块如下图2.10所示。
在这里插入图片描述

图2.10 按键模块
2.6 显示器的选择方案
此项目中显示器是用来显示欢迎界面的汉字,需要三行字母、数字和汉字来显示刷卡之后货物出入库的信息情况,在建模的时候有一定的要求,需要采用带LCD字库的字模,由于其要求传播速度高,所以在研究时采用液晶屏与单片机结合的方式在进行通信,其设计的过程中,常用到的液晶显示终端型号有以下几种,即:LCD1602和LCD12864几种。能够依照不同类型的显示终端需要,合理选取,文章设计的定时器系统可以选用标准为LCD1602的显示终端[15],也可以选用标准为LCD12864的显示终端,依照设计标准及要求,对两种方式进行横向对比。
方案一:选用LCD12864液晶显示器,其中该终端的显示分辨率为128*64,其功耗低,体积小,重量轻,超薄等优点,所以在选择时通常会用到。12864液晶模块中可以显示代表信号的文字字型及图形,其功能较为强大,具有图画等处理的功能等,有三种接口和微处理接口以及4位微处理接口和串联接口,包含了所有能够连接的接口,这样极大的方便了操作和使用,涉及的连接范围极广,其模块相比1602更加强大,LCD12864液晶屏的通信方式有两种:一种是并行通信,一种是串行通信,其中12864的并行通信传输数据速度更快。
方案二:显示系统选用LCD1602型终端显示设备。其中,LCD1602型根据像素进行命名,可以显示2×16个字符,价格低,并能够实现分栏显示[16],是字符型液晶,但是显示的字体有大小限制,不能显示曲线和图形等等。
同LCD1602相比较而言,LCD12864不仅显示功能好,而且功能强大,为了更好的完成项目,让项目更加美观且能显示更多信息。因此,本课题设计的显示终端选用LCD12864液晶显示器,如图2.11所示。
在这里插入图片描述

图2.11 LCD12864电路图

2.7 硬件总体结构分析
最终此设计的单片机型号选择了STC89C51单片机,此单片机操作易上手,可适用于本设计的功能需求。主要是以STC89C51单片机最小系统作为主控平台,最终采用以单片机为核心,采用RFID模块为识别模块,将被测物体放在传感器上面,检测出被测货物出入库具体数值在显示屏显示出来,并将识别出的货物进出门的信息在LCD12864显示屏最下方显示出来,最终通过蜂鸣器模块播报出来。硬件总体结构图如图2.12所示。
在这里插入图片描述

图 2.12 硬件总体结构图

3系统软件设计

3.1 系统主程序流程设计
在软件设计方面利用Keil4,使用C语言完成程序代码设计。作为国外开发的编程软件,Keil4可以实现单片机 C 语言的有效兼容,使用语言较为广泛,在软件编程时,可按照自身需求确定编程语言,它的功能具有极强的可扩展性,可以进行下载、编译或者编程[17]等操作,系统总流程图如图3.1所示。

在这里插入图片描述

图3.1 系统的主流程图
3.2 单片机程序编写
本设计涉及到的射频识别模块,语音提示模块,显示模块等各种模块相互之间的联系都需要单片机编写相应的程序。本设计编写程序主要以C语言为主要的编写语言[18]。单片机选的型号为STC89C51。图3.2为Keil uVision4的运行图。
在这里插入图片描述

图3.2 keil软件运行图
Keil编写方法:首先,需要根据实际的需求建立“Project”工程,在Keil4界面中选择菜单中“Project”字样,通过“New uVision Projec”,为新建的工程进行重新命名,然后根据自己的爱好进行保存,这样Keil的编写就好了。下一步就是对单片机芯片型号确定,就完成了“Project”的建立。在工程建立完毕之后,可以往里面添加系统文件,点击Add就可以编辑该文件了,也可以把常用的.c文件拷贝到建立的“Project”目录下面,最后一个完成的工程软件就建立完毕了。具体开发流程如图3.3所示。
在这里插入图片描述

图 3.3 Keil uVision4软件开发流程图
3.3 单片机程序导入
用Keil编写好的程序需要使用软件烧写入单片机中,本次使用的软件为STC-ISP,其运行过程图如下图3.4所示。
在这里插入图片描述

图3.4 STC-ISP运行图
这是一款将程序烧录进单片机的软件,更适用于STC系列单片机的使用,两者的相互结合,可以使单片机的工作效率得到最高,其操作方式更为便捷,在其型号的选择时我们根据要求选择需要的单片机型号。之后我们选择之前编译完成的.hex文件,左键点击下载/编程按钮,就可把hex文件内的程序烧写到单片机里,此时,这个单片机如果曾经有一些程序也会被覆盖擦除[19],进行了新程序的下载,单片机在此时烧写完毕。
3.4上位机远程控制
为了方便注册删除和查看出入库等信息,此仓库管理系统还设计了一个上位机,具体使用方法:将项目通电,连接上端口,然后启动电脑中的RFIDQE程序注册账户并且登录,依次完成货物注册里的信息即可开始刷卡。具体演示过程如图3.5、3.6所示,其中也可以显示出实时刷卡信息监控情况,有利于及时查看跟踪。刷卡完成后点击返回,在系统管理可查看到刚刚的出入库信息情况,简单明了,节约大量时间。
在这里插入图片描述

图3.5程序演示图
在这里插入图片描述

图3.6 程序演示图

4 系统调试

4.1 硬件调试过程
第一步是目视检查,检查所有元器件都是否手动焊接到电路板上,因此需要仔细检查每个焊点,每个模块的元器件都必须焊接完全,同时还要检查焊点和毛刺,再根据电路原理图检查是否焊接正确,如有漏焊错焊情况就及时改正。
第二步使用万用表检查电线或触点,将红表笔和黑表笔放在需要检查的元器件两端,检查其开/关状态是否符合设计规格,然后检查各种电线之间的情况。如果电路是通路,则万用表的蜂鸣器响;如果电路是断路,则蜂鸣器不响。
第三步是对电源的检查工作。在系统上电之前要仔细的检查电源是否合格,首先检查所有插座或电源端是否具有所需的电压,是否有接地端口,以及固定电平是否正确,在检测的时候可以用万用表来测电压,若显示为零,则系统有问题。若显示正常,则系统没有问题。
在测试过程中,发现LED指示灯不亮,首先检查焊接情况,没有发现接错或虚焊情况。接着检查程序编写,无错误显示。基本可以断定是器件损坏问题,最后更换LED指示灯后功能得以实现。
在调试LCD12864液晶显示屏时,发现屏幕虽然长亮,但是字符显示不清,检查焊接及程序均无错误后,查阅相关资料,发现其第三引脚连接电位器,可以对液晶显示屏清晰度进行调节。焊接调试过程如图4.1、4.2所示。
在这里插入图片描述

图4.1 焊接调试过程图

在这里插入图片描述

图4.2 焊接调试过程图

4.2 软件调试过程
在编制金属探测仪系统中单片机对应的执行程序过程中,应先详细调试单片机的编程平台,编程可以借助Keil4型单片机作为编程基础和工具,其中,Keil4编程工具中集合了程序的编制、链接及程序编译,编程工具使用便捷,编程效率高,满足程序编写、调试及优化等多种功能,尤其是在编写计时器的延时功能程序时,其优势更加显著,借助Keil4中内置的程序调试工具,可以极大地提升系统的编程效率和进度。程序代码编写最终通过程序编译和链接读取的方式进行,在核对没有发现错误的情况下,将其直接下载至硬件中,继续观察系统的功能性,是否可以正常显示,一旦出现问题和错误,可以再次详细检测系统的硬件和软件编写中潜在的问题。
4.3 调试小结
经过数次实验的验证,更加见证了仓库管理系统的可实现性,通过货物出入库刷卡信息的检测,验证了本设计以及完成了预期的仓库管理功能要求,实现了基础功能。但是还有一些在所难免的误差存在,这也是本系统的不完善之处,此处为以后功能完善,数据精确打下基础,为以后更加高级的计算机仓库管理打下了坚定的根基。

结 论

仓库管理的便捷化不能离开仓库管理控制系统的使用,因此仓库管理控制系统的研发具有十分重大的意义。本文对单片机为核心利用射频识别被测货物的刷卡卡号信息进行显示与语音提示的实现做了仔细的讨论,现将本文的主要论述内容总结如下:
(1)就本设计需要实现的各种功能需求,对系统进行总方案设计,选择设计的核心控制系统,进行方案论证,确定设计的整体框架
(2)就本设计给单片机,RFID识别模块,显示模块等元器件模块进行方案对比论证,以及对各个模块进行电路设计分析。
(3)对系统的软件方面进行设计。
(4)对系统进行实验调试,验证了论文中功能的完整性和数据准确性。
此设计的单片机型号最终选择了STC89C51单片机,此单片机操作易上手,可适用于本设计的功能需求。主要是以STC89C51单片机最小系统作为主控平台,最终采用以单片机为核心,采用RFID模块为识别模块,将被测物体放在传感器上面,检测出被测货物出入库具体数值在LCD12864液晶显示屏显示出来,并将识别出的货物进出门的信息在显示屏最下方显示,最终通过蜂鸣器模块播报出来,并详细说明了需求分析、概念设计和结构设计。
综上所述,本设计是一款51基于单片机的仓库管理系统,经过适当的改善之后,可以适用于小型仓库的实际管理问题,具有一定的可利用性,此设计大大提高了系统对货物出入库的辨识精度,节约了时间和人力,具有成本低,精度高等特点。可以广泛应用于各种对需要大量货物信息进行测量、分析和识别的行业。在设计完成之后,经过多次的实验发现有很多不足之处,希望在日后学习实践中可以弥补这部分空缺。也知道了动手实践才能理解本设计中的原理,制作完成本设计,了解了单片机以及每个模块的原理,在制作过程中我也遇到了很多解决不了的困难,我自行去查阅相关的资料、书籍来解决,如果实在解决不了的再去虚心请教老师和同学。

参考文献

[1]陈小培.小型仓库管理系统分析与设计[J].电脑知识与技术.2019,11:1009-3044
[2]沈红卫.基于单片机的智能系统设计与实现[M].北京: 电子工业出版社,2005.1:30-35
[3]张安媛.智能仓库管理系统优化升级势在必行[J].现代制造.2009,12:1671-9395
[4]梁懿,詹育才.基于RFID的智能文件管理系统分析[J].通讯世界,2020,27(04):221-222.
[5]曾瑞韬.基于RFID智能停车位管理系统开发[D]. 南京:东南大学, 2016
[6]张瑞增.基于智能车位锁的共享停车位管理系统研究与设计[D].济南:山东大学,2017
[7]魏玲燕.基于RFID技术的仓库管理系统优化研究[D].桂林:桂林电子科技大学,2018
[8]王雪.RFID技术在学校图书馆中的应用[D].青岛:齐鲁工业大学,2013
[9]郑艳燕.仓库管理系统的设计与实现[D].内蒙古:内蒙古大学,2016
[10]霍孟友.单片机原理与应用[M].北京:机械工业出版社, 2004.1:25-45
[11]胡学海.单片机原理及应用系统设计[M].北京:电子工业出版社,2007.8:66-156
[12]王锐锐.基于单片机的射频消融系统的设计[D].北京:北京工业大学,2017
[13]史桐桐.基于物联网定位技术的仓储管理系统[C]. 中国通信学会、中国电子学会.物联网与无线通信-2018年全国物联网技术与应用大会论文集.中国通信学会、中国电子学会:中国通信学会,2018:64-65
[14]孙宝元,杨宝清.传感器及其应用手册[M]. 北京: 机械工业出版社, 2004.1:368-375
[15]杨薇,李沅鸿,王浩然.基于SSH技术的物流管理系统的设计与实现[J].信息通信,2019,5(10):142-144
[16]刘明霞,张欢.一种基于RFID的物联网报警系统[J].集成电路应用,2020,37(05):8-9
[17]秦玉华.基于RFID技术智能轮胎的研究与实现[J].计算机产品与流通,2020(05):122
[18]张鑫.仓库管理系统的分析[J].中国科技博览.2015,5:1009-914X
[19]楼然苗,李光飞.51系列单片机设计实例[M].北京:北京航空航天大学出版社,2003:36-40

附录1系统电路总图

在这里插入图片描述

附录2 源程序

#include “include.h”
#include “12864LCD.H”
#include “stdio.h”
#include “string.h”
#define uchar unsigned char
#define uint unsigned int
unsigned int Keyfgin=0;
unsigned int Keyfgout =0;
INT8U CardRevBuf[16] = { 0 };
int Carnum=4;
uchar code tab1[]={
" 欢迎使用 "
"物料管理系统 "
" "
" "

};

uchar code tab2[]={
" 欢迎使用 "
"请先操作按键 "
" "
" "

};
uchar code tab4[]={
" 欢迎使用 "
"不能识别此卡 "
" "
" "

};

sbit ALAM = P0^3; // 报警
sbit keyin =P0^5; //工序1
sbit keyout =P0^6; //工序2

void delay_500us(void)
{
unsigned char a,b;
for(b=71;b>0;b–)
for(a=2;a>0;a–);
}
void DelayM(unsigned int a)
{
unsigned char i;
while( --a != 0)
{
for(i = 0; i < 125; i++);
}
}
//=5ms延时==========
void Delay5ms(void)
{
unsigned int TempCyc = 5552;
while(TempCyc–);
}

//=一声提示音,表示有效输入==
void OneAlam(void)
{
ALAM=0;
Delay5ms();
Delay5ms();
ALAM=1;
}

//二声提示音,表示操作成功
void TwoAlam(void)
{
ALAM=0;
Delay5ms();
ALAM=1;
Delay5ms();

ALAM=0;
	Delay5ms();

ALAM=1;

}
//===刷卡失敗=
void LongAlam(void)
{
ALAM=0;
Delay5ms();
Delay5ms();
Delay5ms();
Delay5ms();

ALAM =1;       

}

void init_port( void )
{

}

void init_all(void)
{
EA = 0;
init_port();
init_rc522();
init_uart();
Keyfgin = 0;
Keyfgout = 0;
EA = 1;
}

//=400ms延时============
void Delay400Ms(void)
{
unsigned char TempCycA = 5;
unsigned int TempCycB;
while(TempCycA–)
{
TempCycB=7269;
while(TempCycB–);
}
}
void display_id( INT8U * SrcBuf )
{
char DisplayBuf[10];
char sedbuf[16];

char *pDisplayChar;
INT8U Tmp, i ,j;

pDisplayChar = DisplayBuf;
for( i = 0; i < 4; i++ )
{
	Tmp = ( ( *SrcBuf ) >> 4 ) & 0x0F;	
	if( ( Tmp >=0 ) && ( Tmp <= 9 )	)
	{
		*pDisplayChar ++ = '0' + Tmp;	
	}
	else
	{
		*pDisplayChar ++ = 'A' + Tmp - 10;
	}

	Tmp = ( *SrcBuf ) & 0x0F;	
	if( ( Tmp >=0 ) && ( Tmp <= 9 )	)
	{
		*pDisplayChar ++ = '0' + Tmp;	
	}
	else
	{
		*pDisplayChar ++ = 'A' + Tmp - 10;
	}

	SrcBuf ++;
}
*pDisplayChar ++ = '\0';
if(Keyfgin ==1)
{ 	
    Keyfgin=0;
	LCM_clr();
	memset(sedbuf,0,16);
	sprintf(sedbuf,"%s#%s#","1",DisplayBuf);
	send_bytes(sedbuf,16);
	memset(sedbuf,0,16);	
	LCM_clr();
	LCM_WriteDatOrCom(0,0x80);	
	LCM_WriteString("卡号:");
	LCM_WriteDatOrCom(0,0x90);	
	LCM_WriteString(DisplayBuf);	
	LCM_WriteDatOrCom(0,0x88);	
	LCM_WriteString("工序操作1");
	DelayM(1000); 
	LCM_clr();				//清屏	     
	chn_disp(tab1);			
}
 else if(Keyfgout ==1)
{ 	    Keyfgout =0;
		LCM_clr();
		memset(sedbuf,0,16);
		sprintf(sedbuf,"%s#%s#","2",DisplayBuf);
		send_bytes(sedbuf,16);
		memset(sedbuf,0,16);	
		LCM_clr();
		LCM_WriteDatOrCom(0,0x80);	
		LCM_WriteString("卡号:");
		LCM_WriteDatOrCom(0,0x90);	
		LCM_WriteString(DisplayBuf);	
		LCM_WriteDatOrCom(0,0x88);	
		LCM_WriteString("工序操作2");
		DelayM(1000); 
		LCM_clr();				//清屏	     
		chn_disp(tab1);		
}
else
{
		LCM_clr();
		memset(sedbuf,0,16);
		sprintf(sedbuf,"%s#%s#","0",DisplayBuf);
		send_bytes(sedbuf,16);
		memset(sedbuf,0,16);	
		LCM_clr();
		LCM_WriteDatOrCom(0,0x80);	
		LCM_WriteString("卡号:");
		LCM_WriteDatOrCom(0,0x90);	
		LCM_WriteString(DisplayBuf);	
		LCM_WriteDatOrCom(0,0x88);	
		LCM_WriteString("");
		DelayM(1000); 
		LCM_clr();				//清屏	     
		chn_disp(tab1);		
}

}

void ctrl( void )
{
if( PcdRequest( PICC_REQIDL, &CardRevBuf[0] ) != MI_OK )//寻天线区内未进入休眠状态的卡,返回卡片类型 2字节
{
if( PcdRequest( PICC_REQIDL, &CardRevBuf[0] ) != MI_OK )//寻天线区内未进入休眠状态的卡,返回卡片类型 2字节
{
// display_no_id();
return;
}
}

if( PcdAnticoll( &CardRevBuf[2] ) != MI_OK ) //防冲撞,返回卡的序列号 4字节 
{
//	display_no_id();
	return;	
}

if( PcdSelect( &CardRevBuf[2] ) != MI_OK )//选卡
{
//	display_no_id();
	return;
}
OneAlam();
display_id( &CardRevBuf[2] );

}

void KeyScan()
{
if (keyin == 0 )
{
DelayM(20);
if(keyin == 0 )
{
OneAlam();
Keyfgin=1;
LCM_clr();
LCM_WriteDatOrCom(0,0x81);
LCM_WriteString(“工序1”);
}
while(keyin == 0); //等待键松开
}
if (keyout == 0 )
{
DelayM(20);
if(keyout == 0 )
{
OneAlam();
Keyfgout =1;
LCM_clr();
LCM_WriteDatOrCom(0,0x81);
LCM_WriteString(“工序2”);
}
while(keyout == 0); //等待键松开
}

}

void main(void)
{
int k =0;
TMOD=0x20;
EA=1;
init_all();
LCM_init(); //初始化液晶显示器
LCM_clr(); //清屏
chn_disp(tab1); //显示欢迎字
DelayM(3000); //显示等留3秒
while(1)
{
ctrl();
KeyScan();
}
}

致 谢

本论文是在导师孟军红老师和张有成老师的悉心指导和亲切关怀下完成的,论文的每一步,从选题构思、收集资料到论文结稿,无不倾注着导师的心血和汗水。这段时间以来,我的点滴进步都离不开导师的栽培与帮助,恩师渊博的知识、扎实的理论基础和严谨的治学态度使学生受益匪浅;恩师对科学精益求精、不断进取的精神和严以律己、宽以待人的崇高品质对我是永远的鞭策;恩师的教诲与关爱给了我莫大的信心和力量;恩师以自身孜孜以求、从容奋进的人生态度,为我在工作、学习以及生活中遇到的许多两难选择提供了无声的指导。在本科毕业论文成稿之际,我由衷地向恩师表示诚挚的谢意。
其次感谢沈阳城市学院智能工程学院的全体老师以及同学们,感谢你们在我撰写论文之际提供宝贵的建议,使得我的论文能顺利完成。四年来,我们朝夕相处,共同进步,同窗之谊,我将终生难忘;感谢大家在生活中给予我的关心和照顾,在学习生活方面给予我的建议和帮助,以及给我带来的欢乐和笑声;感谢班级里的全体成员,那些曾经美好的回忆必将永留心底。
再次要感谢我的父母,这么多年你们在物质上以及精神上对我的支持与鼓励是我能够顺利走完这段路程的最大动力。无论我处于何种境地,一想起你们无私的爱,我都有勇气坚持下去,因为你们的亲情,这一路充满了温暖。
最后,评审论文和答辩委员会的各位老师能在百忙之中抽出宝贵的时间,对我的论文进行评阅审查,在此表示我的感谢。

相关推荐

  1. 基于51单片机万年历系统设计

    2024-03-12 04:42:02       43 阅读
  2. 基于51单片机秒表系统设计

    2024-03-12 04:42:02       37 阅读
  3. 基于51单片机数字时钟系统设计

    2024-03-12 04:42:02       51 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-12 04:42:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-12 04:42:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-12 04:42:02       82 阅读
  4. Python语言-面向对象

    2024-03-12 04:42:02       91 阅读

热门阅读

  1. oracle 19c数据库联机备份与恢复

    2024-03-12 04:42:02       44 阅读
  2. 一些使用 Golang 实现的反沙箱技术 - Anti-Sandbox-Go

    2024-03-12 04:42:02       37 阅读
  3. OpenCV-环境搭建及基本IO接口

    2024-03-12 04:42:02       40 阅读
  4. 96.Go设计优雅的错误处理(带堆栈信息)

    2024-03-12 04:42:02       38 阅读
  5. Vue 双向数据绑定

    2024-03-12 04:42:02       40 阅读
  6. 开发指南002-前后端信息交互规范-返回值定义

    2024-03-12 04:42:02       49 阅读
  7. 常用的推荐算法

    2024-03-12 04:42:02       46 阅读
  8. ARM TrustZone技术介绍

    2024-03-12 04:42:02       40 阅读
  9. linux新一代的RPM软件包管理器dnf

    2024-03-12 04:42:02       50 阅读