自动存包柜的设计_第1页
自动存包柜的设计_第2页
自动存包柜的设计_第3页
自动存包柜的设计_第4页
自动存包柜的设计_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

自动存包柜的设计目录第一章前言…………31.1本设计的目的及意义……….4-51.2本设计应解决的主要问题………………….51.3控制系统的工作原理与技术追求…………5第二章系统硬件设计.………………………2.1STC系列单片机的结构…………………5-62.2MSC-51系列单片机的主要应用特性……6-82.3自动存包柜系统框架图……………………82.4自动存包柜的开关选择方案………………82.5自动存包柜光电开关的使用注意事项…………8-92.6.11602液晶显示屏特点………92.6.2结构及引脚示意…………………102.6.31602LED基本操作时序…………………10-132.6.41602LED的指令…………………13-162.6.5参考代码…………………16-232.6.6显示存储器DDRAM………………232.6.7字符发生器与CGRAM……242.6.81602LCD字符表…………………24第三章自动存包柜的软件设计图及仿真3.1自动存包柜protues图………………24-30第四章结束语…………30-31第五章文献………………31-32前言改革开放以来,随着我国人民生活水平的不断提高,我国人民对于物质及服务的追求也在不断提高。基于在商场私人物品人工寄存的所存在的劣势,随着电子科技信息的不断发展,出现了一种新型的自动存包柜。为基于单片机为主控制器来通过密码的对比实现完成自动存包柜的设计。基于单片机的控制模块,输入显示模块与执行模块组成。利用控制门,当顾客按存包或取包键时,相应空着的柜门将会被打开,并且会产生一组随机密码,密码是一次性使用有效的,随机密码是由软件产生,使得硬件更为经济有效,简单且容易安装。1.1本设计研究目的1.便于给人们提供更加方便快捷新颖的自动存包柜的寄存服务寄存柜也是由四种寄存方式发展一步步变化至今的,期间经历了人工寄存,自动化寄存,自主寄存和智能化寄存:从以上我们可以看出,自动存包柜相比于传统的存包方式,有利因素实在多太多了。就是因为利大于弊,所以到如今传统的存包柜方式正在慢慢淘汰取而代之的就是我们现如今普遍适用于超市,商场,小区及大部分服务型区域,现在的自动存包柜还被应用于蜂巢快递柜及小区洗衣柜。在这个日新月异科技不断发展进步的信息化时代,自从有了网上购物平台,由于物美价廉,想要的东西几乎都能找到,做到了既能足不出户,又能进行购物。由于传统的快递太费人工,所以近年出现了一种自动存包快递柜(智能快递柜)—蜂巢快递柜。只需要通知用户扫码取件即可。在超市需要按存包键,拿走条码,再将物品放入箱内即可方便快捷。及方便了广大顾客朋友又满足了人们对高质量服务的需求。自动存包柜分布现在比较广泛,基本上每个地区超市大大小小都有一些电子存包柜或者是快递柜,这些电子存包柜的出现方便了人民自动存包,去一些商场跟超市这种公共场合可以解放双手,再也不需要大包小包的拿来拿去。也缓解了有些超市里存在的尴尬现象,解除了很多不必要的误会,只要在取货的时候凭借条码取出东西即可;自动存包快递柜也只是将用户的快件派送到快递柜中,只要扫码就可以轻松取件,实现无接触取件方式。既节约了成本也方便了用户及商家。1.1本设计研究意义近年来,随着居民的生活水平在逐步提高,居民对于社会消费品和公共设施等的社会服务质量在逐步增加,为了给广大居民更好的服务质量,在一些人群比较多集中的公共场合,商场电影院超市等地方设有自动存包柜,以方便广大消费者朋友们。自动存包柜具有操作简单,安全可靠,便捷实用等优点,使顾客群众更加能够接受这种服务,自助式的存包项目不仅方便了自己也避免了许多不必要的物品纠纷,既可以解放用户的双手,省时省力又可以方便商家,不需要再去招募新的员工,来达到节约商家开支成本的效果。能够让顾客在购物休闲娱乐的时候,安全得以保证,购物娱乐更加的畅快这实际上也给商场的管理制度上面来了一次小小的革新。这将会影响到人们的生活就业方面的内容,但也是最大程度在生活上方便了人民。同时我也想用我所学知识MSC-51单片机微控制的典型应用来做论文中本存包柜控制系统。更好的提供便民服务。1.2本设计因该解决的主要问题在单片机的技术知识上,去研究自动存包柜的组成,技术与特点。1.3控制系统的工作原理与技术追求本系统是由MSC-51单片机为自动存包柜的总控制器,它可以对多个存包柜进行管理,用电磁阀去控制自动存包柜的柜门,当顾客有需要时,可以自行到存包柜前按“存”,单片机的脉冲就会收到信号,并且通过i/o口发出和接收到的相应信号,通过内部系统自动打印密码凭条,控制柜门的电磁阀门就会自动打开,顾客即可自行存包。当顾客需要取包时,则需要将条码凭条靠近条形码阅读器,输出相应信号给单片机,确定系统与所对应的条码一致后就会打开柜门取走东西。第二章自动存包柜的硬件设计2.1.STC系列单片机结构:系列单片机是AT推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。2.2MSC-51系列单片机的特性:MSC-51单片机是由美国Intel公司推出的产品,与MSC-48单片机相比,它的结构更加先进,功能更加强大。在原来的单片机基础上增加了不少电路的指令和电路的单元,MSC-51单片机可以算是这些单片机系列中作为相当成功的产品之一。从开始到如今,在单片机中,MSC-51系列单片机仍是其系列中最为兼容与常用的产品,被国内外许多高校以及高等专业职业学院作为培训学生教材进行使用。对学生进行单片机系列理论化的基础学习与训练,作为学生的我们就会以这样的一个比较具有代表性的单片机机型进行各种系统设置与设计。MCS-51系列的单片机主要包括MSC-518031,MCS-518051等经典产品,他们的主要功能是:1.8位CPU5个中断源,2个优先级全双工串行通信口有一个逻辑操作位寻址功能MSC-51有着较为典型的结构和完善的总线专用寄存器管理,许多逻辑位操作功能和指令系统。正是因为它的完整性体系与结构,世界上许多大型的电气公司都考虑了运用MSC-51系列单片机。8051系列它的中央处理器内部的集成的功能很强,它包含了硬件乘除法器,21个专用控制寄存器,4KB程序存储器,128字节的数据存储器,4组8位的并行口,两个16位的可编程定时/计数器,一个全双工的串行口以及布尔处理器。MSC-51单片机的所有主要部件都集中在了这么一小块芯片上,使得单片机的数据量的传送数据极大的缩短了。使得单片机的性能:高可靠性,更快速的进行运转,使得单片机变成极为芯片化的微型计算机。因为单片机是属于最为典型的嵌入式计算机系统,所以它需要运用低端的控制系统来进行操控的最优部件。由所以借鉴以上单片机MSC-51的结构应用特征来做这样一个自动存包系统的设计。2.3自动存包柜系统框架图打开相应柜门取包扫描条形码AT打开相应柜门取包扫描条形码AT89C51显示空箱存包柜显示空箱存包柜存包关门存包关门红外线检测打印机打印条形码红外线检测打印机打印条形码断电保护显示柜中物品断电保护显示柜中物品本系统我们选用能够在MSC-51指令系统中能完全兼容的,AT89C51作为存包柜的主控制器。它具有各项存包柜中均可使用的功能类型。AT89C51是一种较高效果的微型控制处理器,AT89C51单片机为很多嵌入式控制系统提供了一种性价比高的整体方案。2.4自动存包柜的开关自动存包柜的红外开关是检测物体能不能对红外光束的反射有作用。这个方法对红外光线有反应的物体均可以试验。漫反射式光电开关一般来说如果检测的物体它的表面光洁反射率高则用此开关。用它来检测自动存包中是否有物体,并且把得到的信号传输给单片机的控制系统,然后通过i/o口进行工作。2.5自动存包柜光电开关的使用注意事项1.红外光电开关能在高温的环境情况下进行工作3.红外线光电开关不可以用稀释溶剂进行擦拭,以免损害镜片。必须用擦镜纸擦拭4.在一些较为恶劣的环境场合,在长期使用的过程中延长维护。2.61602液晶显示屏2.6.1特点:1602字符型LCD液晶模块的应用非常广泛,采用几乎同样的规格模块,尽管各厂家的对其各自的产品命名不尽相同;但基本上规格特性是一样的。通常所见到的1602模块的规格基本如下:模块内置字符类型为西文字符。在JHD162A的模块当中,每个字符的点阵情况如下图:2.6.2LCD芯片结构及引脚图下图为是1602LCD模块的结构尺寸示意图。模块的引脚说明如下表:1602液晶的基本的操作分为以下四种:状态字读操作:输入RS=低、RW=高、EP=高;输出:DB0~7在模块没有光时。15脚和16脚的示意是无意义2.6.3基本操作时序可以分为读出数据,指令写入与数据写入读操作的时序图如下而写操作的时序图如下:时序时间参数如下表:MCS51系列MCU与1602LCD模块的连接方式一般来说分两中,一是利用总形,将LCD模块挂在MCU的外部总线上,当然MCS51的总线是8080的格式,而1602LCD的接口为6800总线,两者有区别,是需要经路改造一下接口,如不过也有很多MCU与1602的接口连接时采用的是端口模拟时序的方法2.6.41602LCD的指令:1602LCD的控制器,因为显示屏中有些位置是无法一一对应,下图为显存地址对应图:状态字:在1602LCD的状态字中,读与写是最高位,在当数据指针地址为低七位BF位为读/写允许位,进行读写操作前,都要确认该位值是否为0AC6~0为7位的AC值是数据指针的地址值DL:设置控制器与MCU的接口形式为1;F:设置显示字符的字体为0;显示状态设置指令:该指令控制着画面、光标的开与关。光标或画面滚动设置指令:该指令设置光标和画面的特性。输入方式设置指令:功能在于设置显示字符的输入方式,数据写入/读出后,AC数据地址指针的修改方式。清屏指令:归位指令:CGRAM地址设置指令该指令将6位的CGRAM地址写入地址指针计数器AC内,随后的对数据的操作是对CGRAM的读操作。DDRAM地址设置指令:这是7位地址指针计数器所操作的指令2.6.5参考代码:#include"REG51.h"#include"intrins.h"//包含此头文件可直接操作内核的寄存器以及一些定义好的宏//thisfileforMCUI/Oportortheorther`shardwareconfig//forLCDDisplay//DefinefortheportusebyLCDDriversbitLCD_EP=P2^7;sbitLCD_RW=P2^6;bitLCD_RS=P2^5;#defineLCD_Data_BUS_OutP0#defineLCD_Data_BUS_InP0codeunsignedcharLCD_InitialCode[]={0x30,0x30,0x30,0x38,0x01,0x06,0x0c};//========================================================================//函数:voidLCD_DataWrite(unsignedcharData)//函数:voidLCD_DataWrite(unsignedcharData)//参数:Data写入的数据//返回:无/========================================================================voidLCD_DataWrite(unsignedcharData){unsignedintRead_Dat=0;LCD_EP=0;//EP、RS端口为低,RW为高LCD_RS=0;LCD_RW=1;do{LCD_Data_BUS_In=0xff;LCD_EP=1;Read_Dat=LCD_Data_BUS_In&0x80;LCD_EP=0;Read_Dat=LCD_Data_BUS_In&0x80;LCD_EP=0;}while(Read_Dat!=0);//读状态字并判断是否可进行读写操作LCD_RW=0;//EPRWtoLowLCD_RS=1;//RSHightLCD_Data_BUS_Out=Data;LCD_EP=1;//EPtoHightLCD_EP=0;//EPtolow}/========================================================================//函数:voidLCD_RegWrite(unsignedcharCommand)//描述:写一个字节的数据至LCD中的控制寄存器当中//参数:Command写入的数据(byte)//返回:无/========================================================================voidLCD_RegWrite(unsignedcharCommand){unsignedintRead_Dat=0;LCD_EP=0;//EP、RS置低,RW置高,表为读状态字LCD_RS=0;LCD_RW=1;do{LCD_Data_BUS_In=0xff;LCD_EP=1;Read_Dat=LCD_Data_BUS_In&0x80;LCD_EP=0;}while(Read_Dat!=0);//读状态字并判断是否可进行读写操作LCD_RW=0;//RWtoLow,表为写指令LCD_Data_BUS_Out=Command;LCD_EP=1;//EPtoHightLCD_EP=0;}//========================================================================//函数:unsignedcharLCD_DataRead(void)//描述:从LCD中的显示缓冲RAM当中读一个字节的显示数据//参数:无//返回:读出的数据,低八位有效(byte)//========================================================================unsignedcharLCD_DataRead(void){unsignedcharRead_Dat=0;LCD_EP=0;//EP、RS置低,RW置高,表为读状态字LCD_RS=0;LCD_RW=1;do{LCD_Data_BUS_In=0xff;LCD_EP=1;Read_Dat=LCD_Data_BUS_In&0x80;LCD_EP=0;}while(Read_Dat!=0);//读状态字并判断是否可进行读写操作LCD_RS=1;//RS置高,表为读数据LCD_EP=1;//EPtoHightRead_Dat=LCD_Data_BUS_In;//读出数据LCD_EP=0;returnRead_Dat;}//========================================================================//函数:unsignedcharLCD_StatusRead(void)//描述:从LCD中的显示缓冲RAM当中读一个字节的显示数据//参数:无//返回:读出的数据,低八位有效(byte)/========================================================================unsignedcharLCD_StatusRead(void){unsignedcharRead_Dat=0;LCD_EP=0;//EP、RS置低,RW置高,表为读状态字LCD_RS=0;LCD_RW=1;LCD_Data_BUS_In=0xff;LCD_EP=1;Read_Dat=LCD_Data_BUS_In;//读状态字LCD_EP=0;returnRead_Dat;}/========================================================================//函数:voidLCD_Init(void)//描述:LCD初始化程序,在里面会完成LCD初始所需要设置的许多寄存器,具体如果//用户想了解,建议查看DataSheet当中各个寄存器的意义//参数:无/返回:无//备注://版本://2007/11/14Firstversion//========================================================================//延时程序voidTimeDelay(intTime){inti;while(Time>0){for(i=0;i<800;i++){for(i=0;i<800;i++)}Time--;}}voidLCD_Init(void){unsignedcharuiTemp=0,i;unsignedchar*Point;//LCD驱动所使用到的端口的初始化Point=(unsignedchar*)LCD_InitialCode;//获取初始化序列数据的首地址LCD_EP=0;LCD_RS=0;LCD_RW=0;for(i=0;i<4;i++){uiTemp=*Point++;LCD_Data_BUS_Out=uiLCD_EP=1;//EPtoHightLCD_EP=0;//EPtoHightTimeDelay(4);//延一定的时间,一般要求4.5ms以上就可以,没有那么严格的了}LCD_RegWrite(*Point++);LCD_RegWrite(*Point++);LCD_RegWrite(*Point++);}voidmain(){unsignedcharuiTemp=0;unsignedchar*String_s;LCD_Init();uiTemp=LCD_StatusRead();//无意义,只是测试读状态字的子程序String_s="LCD1602Demo";LCD_RegWrite(0x80);//设置地址为第一行第一个字符的位置while(*String_s!=0)//显示字符串{LCD_DataWrite(*String_s);String_s++;}String_s="Mzdesign";LCD_RegWrite(0xc0);//设置地址为第二行第一个字符的位置while(*String_s!=0){LCD_DataWrite(*String_s);String_s++;}//以下仅为测试使用,测试读数据程序的功能uiTemp=LCD_DataRead();//读数据LCD_RegWrite(0x80);//设置地址后再读数据uiTemp=LCD_DataRead();while(1){}}MCU与LCD的连接参考如下://LCDDB0~DB7---P0.0~P0.7//LCDEP---P2.7/LCDRW---P2.6/LCDRS---P2.5//LCD5V供电~~~2.6.6显示存储器DDRAM1602LCD模块的控制器里拥有80个字节的显示存储器DDRAM。DDRAM的地址由地址指针计数器AC提供操作。DDRAM各单元对应着显示屏上的各字符位。2.6.7字符发生器与CGRAM1602LCD模块的控制器内部有两种字符发生器,一种是CGROM即已固化好的字模库。另一种为CGRAM,即可随时定义的字符字模库。2.6.81602LCD字符表在1602LCD的控制IC当中,字符库中0x00~0x0F未定义,留给使用者的自定义字符使用。但只能使用0x00~0x07或者0x08~0x0F之一。3.1自动存包柜protues图自动存包柜我们是采用proteus仿真,我们可以将调试好的程序写入单片机中,然后进行仿真运行。如果出现错误那么就进行修改达到最终想要的目的要求。点击图中红色图框按钮系统初始化如图所示此时开始输入密码操作(系统默认密码为:1234)密码输入完成如图所示此时按下确定键如图所示图中红色图框为确定键假若密码输入正确出现如图界面此时输入我们想开的柜台编号按开锁键即可打开如图所示此时我们输入6号柜台开锁对应的开锁灯点亮然后按下关门_6此时6号锁被关且等熄灭回到初始状态在本次自动存包柜的设计中,如果是空柜子那么灯就会灭,如果灯还亮着就代表不是空的柜子。按自动存包键,数码管内就会产生八位随机密码,然后随机密码会通过打印机,以凭条的形式打印出来,然后比对密码,直至密码消失不见,即可存包。当要取包时将凭条靠近红外线进行读取,比对密码。如果密码正确,对应的发光二极管消失,就可取走包裹。凭条上的二维码对比随机产生的八位密码,如果密码核对正确,那么指示灯就会熄灭,就可以取走箱内所存储的东西。结束语在做毕业

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论