2022年无线仓库管理解决方案.doc
无线仓库治理处理方案1. 需求分析1.1仓库治理现状随着计算机技术的普及,越来越多的中小企业已经开场使用计算机(数据库)开进展仓库治理。经调查,大多数的小型企业仍然采纳用笔记账,再统一录入数据库的方式。如此,办公室并不能获得最新的库存情况从而不能做出正确的决策。另外,有些公司仓库离办公室(数据库效劳器)较远,一来一回也耽搁了时间。因此,用高效的方案来处理仓库库存与数据库同步的咨询题是迫在眉睫的事情。1.2无线仓库治理的优点无线仓库治理最大的亮点在于实时性。仓库治理人员在入库的时候,只需要在手持设备上输入相应的产品以及数量,即能够实时地更新数据库,为办公室人员获得最新的库存信息提供了保证。相关于有线传输,无线传输省去了布线的烦恼。这也是目前流行的方案。1.3开发限制由于经济根底等条件制约,采纳的硬件并不能实现长间隔通讯。但要声明的是,这只是个处理方案,只提供思路。假如要应用到实际,将结合实际情况对硬件做出相应的更改。2. 概要设计2.1部署图2.2进程视图3. 详细设计3.1硬件说明(1)开发板:SPCE061A EMU BOARD61板是SPCE061A EMU BOARD的简称,是以凌阳16位单片机SPCE061A为核心的精简开发仿真实验板,大小相当于一张扑克牌,是“凌阳科技大学计划”专为大学生、电子爱好者等进展电子实习、课程设计、毕业设计、电子制造及电子竞赛所设计的,也可作为单片机工程初期研发使用。61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采纳电池供电。板上自带两个16位输入/输出接口。无线射频芯片自带的驱动程序使用IOB的低8位,MzL02-12864 LCD模组自带的驱动程序使用IOA。而61板上的三个按键KEY1、KEY2、KEY3是直截了当和IOA的最低3位相连的(参考61板的电路原理图1),造成按键对显示模组干扰的咨询题。因此,处理方案将使用IOA的高8位作为无线射频nRF2401芯片的接口,IOB作为MzL02-12864 LCD模组的接口。详细驱动的改动下面会有说明。图 1 PCB图(2)nRF2401无线射频芯片发送端(配套61板)nRF2401A 及其外围电路如图2,包括nRF2401A 芯片部分、稳压部分、晶振部分、天线部分。电压VDD 经电容C1、C2、C3 处理后为芯片提供工作电压;晶振部分包括Y1、C9、C10,晶振Y1同意值为:4MHz、8MHz、12 MHz、16 MHz,假如需要1Mbps 的通讯速率,则必须选择16MHz晶振。天线部分包括电感L1、L2,用来将nRF2401A 芯片ANT1、ANT2 管脚产生的2.4G 电平信号转换为电磁波信号,或者将电磁波信号转换为电平信号输入芯片的ANT1、ANT2 管脚。为方便与61 板的连接,模组提供了两个接口J1、J2,其中J1 为nRF2401A 的操纵端口和通道1 的收发通道,J2 为预留端口,是通道2 的接收通道。J1 接口为10Pin 的插孔,其规划和61 板的I/O 端口规划一致,能够直截了当插接到61 板的I/O 端口使用。J2 预留,假如需要采纳双通道接收时,能够将J2 对应的3 根信号线引出,接到单片机的I/O 上即可。图 2 nRF2401电路原理图 图 3 接口电路图对应的I/O 连接和功能描绘如表所示。接收端(NewMsgUSB2401)NewMsg-NetUSB3模块是NewMsg公司自行研发的PC端无线数据收发模块,其并装备CYPRESS公司的USB SLAVE芯片EZUSB_FX2LP68013和射频芯片NRF2401,以2.4G的无线频段进展无线数据传输,并通过USB2.0协议同PC进展高速通讯,保证了高速通讯质量,同时在无线通讯协议上实现了严格的数据校验机制,保证了数据的可靠通讯。NewMsg-NetUSB3模块可进展本机地址和发送地址的配置,实现多点PC和PC,PC和电子系统的数据传输。(3)MzL02-12864 LCD模组MzL02-12864 为一块128X64 点阵的LCD 显示模组,模组上的 LCM 采纳COG 技术将操纵(包括显存)、驱动器集成在LCM 的玻璃上,接口简单、操作方便;为方便用户的使用,铭正同创在LCM 的根底上设计了MzL02-12864 模组,将模组所必需的外围电容电阻集成到模组上,并引出多种方式的引线接口方便用户使用。MzL02-12864 模组与各种MCU 均可进展方便简单的接口操作。3.2编码实现3.2.1存放器设置以及驱动更改前面提到由于LCD模组使用16位IOA作为接口,而IOA0/1/2与KEY1/2/3直截了当相连(详细翻阅PCB图),这导致的结果是,按键按下时会对LCD模组进展干扰。因此便选择IOB作为LCD模组的接口,IOA高8位作为无线射频的接口。详细驱动更改如下:查看SPCE061A中文编程手册,找到IOA和IOB的读写存放器地址分别为7000H和7005H,每个存放器16位。如图:LCD模组接口说明,如下表:打开LCD模组的接口头文件LCD_PortConfig.h,宏定义LCD模组在IOB读写存放的偏移量:#defineLCD_EP0x1000#defineLCD_RW0x0800#defineLCD_A00x0400#defineLCD_RE0x0200#defineLCD_CS0x0100然后把驱动宏定义的IOA全部改成IOB,同时添加IOB相应存放器的地址的宏定义:#defineP_IOB_DATA(volatile unsigned int *)0x7005#defineP_IOB_BUFFER(volatile unsigned int *)0x7006#defineP_IOB_DIR(volatile unsigned int *)0x7007#defineP_IOB_ATTRIB(volatile unsigned int *)0x7008无线射频模组的驱动更改相应比拟简单,参照数据手册,把原来的偏移地址(低8位)0x00100x0020改成(高8位)0x01000x2000,然后把所有指向IOB地址的地点重新指向IOA的地址即可。3.2.2主菜单介面制造介绍:由于开发板:SPCE061A EMU BOARD只有个,一个用于,剩下只有三个,为了能够实现多个介面之间的转换,我们用键代表向下转换,键代表向上转换,键代表确定。键和键都有循环切换菜单的功能。我们设计的菜单是用一个个图片组成。每切换一个菜单我们就换一张图片。图片之间的切换并没有减慢我们系统的速度。我们的菜单主要由以下列图片组成:这些图片通过的制造就能够变为一个个数组。在显示时只要调用这些数组就能够了。菜单的制造主要是调用函数void LCD501_Bitmap(int x,int y,unsigned int *p),这个函数主要是用来显示图片的。用来显示我们的菜单。在一开机时,就显示第一第图片,然后就处于等待状态,当接收到的信息时,就开场换下一张图片。当接收到信息时就开场选项上一张图形,并把它们显示出来。当接收到时就进了另一个介面,用于输入订单的数量。这个下面有中有详细的介绍。下列图为它的流程图:3.2.3数量选择界面功能介绍:通过61板上的3个按键(key1,key2,key3)实现数字的输入。输入数字为3位,即 输入范围是从0至999。输入范围能够依照实际应用需要进展修正。进入本功能菜单后,屏幕的上方会显示“add hundry”,表示初始状态下每按一次key1,该数字将增加100。下方显示“000”,表示初始数量为0。假如如今5次key1,则屏幕上的值为“500”,即如今输入数量值是500。key2用于决定每次输入的大小,如按下key2后,上方显示“add ten”表示每按一次key1数字增加10,假如显示“add one”表示每按一下key1增加1。当某一位上的数为9时,再增加1后则重新置为0。在进入“add one”之后想对百位或十位数字进展修正,能够按key2进入其他方式进展输入。当输入完毕后,按key3退出数量输入功能,进入发送功能。流程图:开场Add hundry加100Key1Key3按键Key2Add ten加10Key1Key3按键Key2Add one加1Key3Key1按键完毕Key2变量说明:unsigned data3用于存放百位,十位和个位数的值,方便关于各位数的操作和输出显示。每一位的初始值为0,最大值是9,假如到达9之后再发出1恳求(按下key1),则该位的值重新置为0。char show4 前三位分别存放data中的三个数字对应的字符,即0-9,第四位存放的是0,由于数量值是以字符串的方式输出到显示屏,而字符串的需要以0为完毕标志。char display315 用于存放输入方式的提示信息,包括“add hundry”,“add ten”,“add one”。int i 用于计算当前所处的输入方式,当i=0,处于“add hundry”方式,当i=1,处于“add ten”,当i=2,处于“add one”方式。i的初始值为0,当key2被按下,假如i值为2,则将i置为0,否则将i值加1。函数说明:delay() 延时函数,由于按下按键后会产生抖动,即按下一次会产生多个按键信号,程序也会相应的做出屡次处理,如此就无法得到预期的效果。为了获取稳定的按键信息,需要避开这段抖动期。这时就要使用这个延时函数。intputdata()实现数量的输入和数据发送。初始方式为“add hundry”,数量的初始值为“000”。按下key2键选择输入方式,key1键决定每一位数的大小。由于按键的数量限制,本功能只能单向递增,因此函数循环输入的方式,即在到达极限值的时候再增加就会回到初始值。如在到达“add one”方式后,再按下key2键就会回到“add hundry”方式;在按下key1键后假如该位数已经为9,则会被重新置为0。数据输入完毕后,按下key3键退出,程序会将输入的各位数字分别发到计算机端,由计算机端完成对数据的处理。之因此将数字分位发送,是由于发送模块最大只能发送8位二进制数,分开发送能够消除对输入数据极限值的限制。发送完毕后退出本函数。3.3.3发送功能发送前首先配置接收端(PC)的地址Address5=0x00, 0x00, 0x00, 0x00, 0x01;调用驱动的nRF2401_Intial()、nRF2401_Mode(1)、nRF2401_SetAddress(Address,5)进展无线初始化。在数量选择菜单按下key4后,触发发送函数nRF2401_SendByte(),把商品编号和数量一起发送(用Delay函数进展延时)。为了演示,商定商品编号为0106,分别对应6种不同的教材。函数nRF2401_SendByte():void nRF2401_SendByte(unsigned int TxData)unsigned int i;/*P_IOA_Dir |= DATA;*P_IOA_Buffer |= CE;Delay_Us(10);/for(i=0; i<AddrByteCnt; i+)nRF2401_WriteByte(AddrBufferi);nRF2401_WriteByte(TxData);*P_IOA_Buffer = CE;*P_IOA_Buffer = DATA;Delay_Us(200);参数TxData为传进来的数据(字节)。CE宏定义为无线射频的使能端,偏移地址为0x0200,对应IOA9接口。调用函数nRF2401_WriteByte(),先把接收端地址写入缓冲,然后再把数据TxData写入缓冲(nRF2401数据报格式)。最后实现发送的功能。3.3.4 接收端PC由于PC端不涉及嵌入式的开发,此处只做简单说明。接收端采纳NewMsg公司的无线射频产品NetUSB2401,用的芯片与嵌入式设备一样,是nRF2401。在程序初始化的时候,按照嵌入式设备端的设置,把通道、收发频率、接受宽度设为一致,然后设置好地址。依照发送端发来的商品编号从数据库获取当前数量,然后加上发送端发来的数量,最后更新数据库。运转界面如下:4. 经历总结 组员:*本次设计是基于硬件的软件编程,主要的工作是熟悉硬件的工作机制,以及系统自带的函数的功能和应用。在本功能的实现中,主要的困难是硬件的限制(输入按键较少),和按键抖动的消除。为了克服按键少的咨询题,我们利用按位递增循环输入的方法,这在前面已经提到,如此能够充分利用现有的硬件资源。而按键抖动咨询题,由于一开场被忽略,导致程序调试过程中出现意想不到的错误。在发觉这个咨询题后,我们选择用添加延时来去除抖动。由于系统自带的延时函数效果不明显,因此重新编写了一个延时函数delay()。组员:*1:这次开发我花最多的时间并不是在开发上,而是在看一个一个的源码或者说是事例上.刚开场的时候确实不明白如何去做,看了别人做的后,本人才感受到开发也并不是那么的难.才明白一切咨询题都有处理的方法。2:我这次的主要工作确实是要做一个菜单。由于我们的显示屏和例子中的不一样,因此我们本人找了不少材料,菜单主要是结合了按键和显示这两个功能。我们在如何使用按键以及如何让它显示上找材料。一个个的例子让我明白了按键的工作过程和显示原理,接下做就比拟简单了。3:通过这次比拟,我感受我学到了不少知识,不过让我感受最深的是-非常多事情看似非常难,但只要肯用心支做就一定能够做好。组员:*第一个感受时就嵌入式开发,想说爱你不容易。里面涉及太多的硬件知识,这是我们软件工程专业所缺乏的。碰到咨询题时,首先想到要查找DataSheet,理解每个存放器的配置终究代表什么含义。必要的时候,还要翻看PCB图,弄明白接口之间是如何连接的。这非常重要,在开发的过程中,一开场,LCD模组和按键老是冲突。后来翻阅PCB图,才发觉按键并不是采纳中断的方式,而是直截了当跟IOA的前三位相连。找出咨询题的所在后,立即查找DataSheet,为模组不同的接口重新分配引脚。如此咨询题才得以处理。所以,无线仓库治理处理方案只是一个设想。非常多地点我们想到了,但是并没有去实现。例如,嵌入式设备端的产品信息更新功能,语音功能等。但这也只是时间的制约而已。我想,假如我们想去做,就一定能成功,只有想不到,而没有做不到的,尽管途中会碰到种种困难,但是,嵌入式开发的成功,会比任何软件开发的成功更有成就感!而且,那种碰到咨询题,不断的探究和处理的过程也是非常享受的。参考文献:SPCE061A中文编程手册无线传输模组_使用说明书V1.0北京铭正同创科技MzL02-12864 LCD模组编程手册