智能快递柜资料_第1页
智能快递柜资料_第2页
智能快递柜资料_第3页
智能快递柜资料_第4页
智能快递柜资料_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

第1章绪论

这一章讲了单片机在现在生活中发张趋势和应用范围,并对本课题背景及意义,阐

述了其发展情况。简明说明了本文所介绍内容。

1.1单片机发展史

单片单片微型计算机简称单片机,是经典嵌入式微控制器(MicrocontrollerUnit),

惯用英文字母缩写MCU表示单片机,它最早是被用在工业控制领域。因为单片机在工

业控制领域广泛应用,为使更多业内人士、学生、兴趣者,产品开发人员掌握单片机这

门技术,于是产生单片机开发板,比较有名比如电子人DZR-01A单片机开发板。单片机

由芯片内仅有CPU专用处理器发展而来。最早设计理念是经过将大量外围设备和CPU集

成在一个芯片中,使计算机系统更小,更轻易集成进复杂而对体积要求严格控制设备当

中。INTELZ80是最早按照这种思想设计出处理器,从此以后,单片机和专用处理器发展

便分道扬镶。

单片机(Microcontrollers)诞生于1971年,经历了SCM、MCU>SoC三大阶段,

早期SCM单片机都是8位或4位。其中最成功是INTEL8051,今后在8051上发展出了

MCS51系列MCU系统。基于这一系统单片机系统直到现在还在广泛使用。伴随工业控制

领域要求提升,开始出现了16位单片机,但因为性价比不理想并未得到很广泛应用。

90年代后伴随消费电子产品大发展,单片机技术得到了巨大提升。伴随INTELi960系

列尤其是日后ARM系列广泛应用,32位单片机快速取代16位单片机高端地位,而且进

入主流市场。

单片机比专用处理器更适合应用于嵌入式系统,所以它得到了最多应用。实际上单

片机是世界上数量最多计算机。当代人类生活中所用几乎每件电子和机械产品中都会集

成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配

件中都配有1-2部单片机c单片机又称单片微控制器,它不是完成某一个逻辑功效芯片,

而是把一个计算机系统集成到一个芯片上。相当于一个微型计算机,和计算机相比,单

片机只缺乏了I/O设备。概括讲:一块芯片就成了一台计算机。它体积小、质量轻、价

格廉价、为学习、应用和开发提供了便利条件。同时:学习使用单片机是了解计算机原

理与结构最好选择。

1.2智能快递柜发展趋势

近年来,伴随电子商务迅猛发展,快递业务呈高速增加趋势,但快递末端“最终一

公里”投递问题却成为快递发展瓶颈。智能快递投递箱将快件暂时保留在投递箱内,并

将投递信息经过短信等方式发送用户,为用户提供二十四小时自助取件服务,这种服务

模式很好地满足了用户随时取件需要,受到快递企业和用户欢迎,为处理快件“最终一

公里”问题提供了有效处理方案。国家邮政局领导高度关注智能快递投递箱发展,指示

要尽快开展智能快递投递箱相关标准研究工作,以期在发展早期就对智能快递投递箱使

用与管理问题进行研究和规范,以推进这种服务模式规范化、健康化发展。

白以来,伴随电了商务快速发展,物流面临着严峻考验。众所周知I,淘宝搞双I。

活动,掀起了一股网购大风。不但如此,快递包裹也跟着席卷开来。各地物流仓库都出

现了快递包裹爆仓,出仓速度远远跟不上进仓速度。这种现象出现与快递配送"最终一

公里”不无关系。

各行各业试图处理这快递“最终一公里”问题,包含增加配送人员,包裹代收,设

置共同配送点等等,不过还是改变不了人等人局面。最终,智能快递终端被引用进来。

在国外,二十四小时自助快递站已经有10多年发展历史,日本每栋楼宇都有一个

标准配置用来收发快递,操作十分简单,只有像信用卡等宝贵或者主要物品一定要送达

本人签字,德国、俄罗斯、法国、爱沙尼亚等欧洲国都在使用。

2月至6月,DHL国际快递对瑞士3个不一样地点3台全天候自助包裹终端机进行

了测试。第一台自助包裹终端机于2月安装在苏黎世一家加油站,己经投入运行,另外

两台将安装到瑞士西部地域。

在国内,智能快递终端还处于刚才起步状态。不少高新科技企业纷纷推出了各种快

递终端。小部分地域己经出现了智能快递终端身影,它们分布在大中专院校、企事业单

位、小区、写字楼、工厂等地。给收件用户提供了一个自由便捷快递服务。

可能智能快递终端不能完美地处理物流“最终一公里”,不过,能够必定是它将会

给人们生活带来极大便利V

1.3设计研究要求及能实现主要内容

智能快递投递箱系统物联网这一关键技术,包含前台站点快件存取和后台中心数据

处理两部分。物联网就是经过红外感应、蓝牙等信息传感设备,按约定协议,把任何物

品与与联网相连接,进行信息交换和通信,以实现对物品智能化识别、定位、跟踪、监

控和管理一个网络。有了“物物相连”网络后还需要依靠先进信息处理技术。

第2章设计过程及方案

2.1设计方案

系统采取STC89c52单片机板,使用红外线感应模块,按钮矩阵模块,蓝牙模块控制

驱动器控制电机转动不一样角度,将齿轮和齿轮条与异步电机练接。就能够实现齿轮条

转动来控制机械臂定位。我们在不一样三个按钮上设施了不一样使异步电机旋转角度。

有60度,120度,360度。当操作不一样按钮时三个异步电机就会转动不一样角度,机械

臂移动到不一样位置寻找物品。

2.2设计原理

使用STC89c52单片机,在STC89c52单片机Pl.0-P1.3接步进电机一,Pl.4-PL7接

步进电机二,在单片机P0.0-P0.3接步进电机三。在P2口接矩阵按键,在P3.2接红外遥

控,在单片机P3.1接蓝牙模块RXD,在步进电机P3.2口接TXD。其余引脚接VCC和GND。

第3章硬件电路设计

3.1最小系统设计

1)在STC89c52单片机Pl.0-P1.3接步进电机一

2)PL4-PL7接步进电机二

3)在单片机P0.0-P0.3接步进电机三

4)在P2口接矩阵按键,在P3.2接红外遥控

5)在单片机P3.1接蓝牙模块RXD

6)在步进电机P3.2口接TXD。其余引脚接VCC和GND

HC6800-ESV2.0.pd£

104

—|vcc

PICPU1P2

P10140

20PIOvcc1

P1!239POO

19Pl.IPOO2

PI23其P01

18Pl.2P0.I3

37P02

17PI34Pl.3P0.24

P14536P03

16PI.4P0.35

P15635P04

Pl.5P0.46

15P16734P05

14P17RPl.6P0.533P067

13Pl.7P0.68

RST932P07

12RST/VPDP0.79

TXD1031VCC

P3.0/RxDEA/Vpp10

IIRXD1130

10PS.ifTxDALDPROG

P32/CSI122911

9P3.24NT0PSEN12

P3VCS21328P27/LCDE

8P3.3HNTIP2.713

P341427P26/RD

7P3.4/T0P2.614

P351526P25AVR

6P3.5/TIP2>15

P361625P24

P3.6AVRP1416

5P371724P23

4P3.7/RDP2.J17

XT21823P22

3XTAL2P2.218

XT11922P21/SCL

19

220XTALlP2121P2(VSDA

1_LGNDPIO20

GND

3.2主要元器件介绍

3.2.1单片机介绍

单片机(Microcontrcllcrs)是一个集成电路芯片,是采取超大规模集成电路技术

把具备数据处理能力中央处理器CPU、随机存放器RAM、只读存放器ROM、多个I/O口和

中止系统、定时器/计数器等功效集成到一块硅片上组成一个小而完善微型计算机系统,

在工业控制领域广泛应用C

该单片机具备以下标准功效:8k字节Flash,512字节RAM,32位I/O口线,看

门狗定时器,内置4KBEEPR0M,MA狗定复位电路,3个16位定时器/计数器,4个外部中

止,一个7向量4级中止结构(兼容传统515向量2级中止结构),全双工串行口。另外

STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停

顿工作,允许RAM、定时器/计数器、串口、中止继续工作。掉电保护方式下,RAM内容

被保留,振荡器被冻结,单片机一切工作停顿,直到下一个中止或硬件复位为止。最高

运作频率35MHz,6T/12T可选。

工WOE

工翌工aoBg

PPECHIN

3.2.2红外线介绍

红外遥控发射电路是采取红外发光二极管来发出经过调制红外光波;红外接收电路

由红外接收二极管、三极管或硅光电池组成,它们将红外发射器发射红外光转换为对应

电信号,再送后置放大器C

发射机通常由指令键、调制电路、驱动电路、发射电路等几部分组成。当按下指令

键或推进操作杆时,指令编码电路产生所需指令编码信号,指令编码信号对载波进行调

制,再由驱动电路进行功率放大后由发射电路向外发射经调制订指令编码信号C

IR1

•0。

000

000

0©®

000

000P32/CS1

000vcc

GND

3.2.3蓝牙介绍

蓝牙(Bluetooth®):是一个无线技术标准,可实现固定设备、移动设备和楼宇

个人域网之间短距离数据交换(使用2.4-2.485GHzISM波段UHF无线电波)。

3.2.4步进电机

步进电机是将电脉冲信号转变为角位移或线位移开环拴制元步进电机件。在非超载

情况下,电机转速、停顿位置只取决于脉冲信号频率和脉冲数,而不受负载改变影响,

当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定方向转动一个固定角度,

称为“步距角”,它旋转是以固定角度一步一步运行,能够经过控制脉冲个数来控制角

位移量,从而达成准确定位目标:同时能够经过控制脉冲频率来控制电机转动速度和加

速度,从而达成调速目标C

步进电机是一个感应电机,它工作原理是利用电子电路,将直流电变成份时供电,

多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是

为步进电机分时供电,多相时序控制落。

即使步进电机已被广泛地应用,但步进电机并不能像普通直流电机,交流电机在常

规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。所以用

好步进电机却非易事,它包括到机械、电机、电子及计算机等许多专业知识。步进电机

作为执行元件,是机电一体化关键产品之一,广泛应用在各种自动化控制系统口。伴随

微电子和计算机技术发展,步进电机需求量与日俱增,在各个国民经济领域都有应用。

,3

L4

PIOL6

PH2^IN1OITT1

PI2ell\xUUIZ3

P!34:IN3OUT34GND

314

IN4OUT45

PI55-2_BZ

IN5OLTT5V

IN6056y

INI1c.iJrur*l/7

89

GNDCOM

£I

ULN2OO3D

vcc

GND

3.2.5步进电机驱动器

步进电机驱动器是一个将电脉冲转化为角位移执行机构。当步进驱动器接收到一个

脉冲信号,它就驱动步进电机按设定方向转动一个固定角度(称为“步距角”),它旋转

是以固定角度一步一步运行。能够经过控制脉冲个数来控制角位移量,从而达成准确定

位目标;同时能够经过控制脉冲频率来控制电机转动速度和加速度,从而达成调速和定

位目标。

3.2.6矩阵按键

在键盘中按键数量较多时,为了降低1/。口占用,通常将按键排列成矩阵形式。在

矩阵式键盘中,每条水平线和垂直线在交叉处不宜接连通,而是经过一个按键加以连接。

这么,一个端口(如P1口)就能够组成4*4=16个按键,比之直接将端口线用于键盘多出

了一倍,而且线数越多,区分越显著,比如再多加一条线就能够组成20键键盘,而直接

用端口线则只能多出一键(9键)。由此可见,在需要键数比较多时,采取矩阵法来做键

盘是合理。

SIS2S3S4

S5S6S7S8

i—i.

S9S10SilS12

i—i

P17

HS13S14S15S16

P16

PU,FTl..X----1..,i—i,

P14

FM3

Ff2

PH

PTO

第4章软件设计

软件设计是从软件需求规格说明书出发,依照需求分析阶段确定功效设计软件系统

整体结构、划分功效模块、确定每个模块实现算法以及编写详细代码,形成软件详细设

计方案。

软件设计是把许多事物和问题抽象起来,而且抽象它们不一样层次和角度。将问题

或事物分解并模块化使得处理问题变得轻易,分解越细模块数量也就越多,它副作用就

是使得设计者考虑更多模块之间耦合度情况。

软件程序:

ttinclude〃reg51.h”

#include<math.h>

ttdefineGPIO_KEYP2

#defineconst_interrupt_time792〃840us定时值

sfrAUXR=0x8e;

sbitIR_sr=P3^2;//外部中止口,数据接收口

voiddelay();

voidKeyDown(void);

voidTrunLeftMotorl(unsignedlongangle);

voidTrunRightMotorl(unsignedlongangle);

voidTrunLeftMotor2(unsignedlongangle);

voidTrunRightMotor2(unsignedlongangle);

voidTrunLeftMotor3(unsignedlongangle);

voidTrunRight\Iotor3(unsignedlongangle);

voidinitial();〃初始化外围

voidlntO();//外部中止函数

voiddetector_IR();

longunsignedintNumKey=0;

unsignedcharucMotorStep=0;〃被触发电机动作编号

unsignedcharucdata;〃从遥控器中接收编码

unsignedcharbusy=O;

unsignedchard=0;

/*1**1**1*«J^*1**1*^1<*1**f»«J^

4•4."・

*1*

*J*^p*J**J**p

*函数名:main

*函数功效:主函数

*输入:无

*输出:无

*1**1*^1**1^*1**1*»^**1*^1**1**1**1^»1»*1**1**1^*^*»^**1**1**^**1*^1**1^*1**1*%1»*1**1**^*«1^*1**1**1**1**1**1*»1»*1*^1**1**1*

*1**1**1**1*^1*

voidmain(void)

(

SC0N=0X50:

AUXR=0x00;

TM0D=0X21;

TLl=0XFd;

THl=0XFd;

ES=1;

EA=1;

TR1=1;

initial();

while(1)

KeyDown();

detector_IR();

if(NumKey==l)

(

TrunLeftMotorl(60*1);

delay();

TrunLeftMotor2(60*1);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*1);

delay();

TrunRightMotorl(60*1);

NumKey=0;

)

if(NumKey=2)

TrunLeftMotor1(60*2);

delay();

TrunLeftMotor2(60*2);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*2);

delay();

TrunRightMotorl(60*2);

NumKey=0;

)

if(NumKcy==3)

{

TrunLeftMotorl(60*3);

delay();

TrunLeftMotor2(60*3);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*3);

delay();

TrunRightMotorl(60*3);

NumKey=0;

)

if(ucMotorSt3p==l)

(

TrunLeftMotorl(60*1);

delay();

TrunLeftMotor2(60*1);

delay0:

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*1);

delay();

TrunRightMotorl(60*1);

ucdata=0x74;

if(ucMotorStep==2)

TrunLeftMotorl(60*2);

delay();

TrunLeftMotor2(60*2);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*2);

delay0:

TrunRightMotorl(60*2);

ucdata=0x74;

)

if(ucMotorStcp==3)

{

TrunLeftMotorl(60*3);

delay();

TrunLeftMotor2(60*3);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*3);

delay();

TrunRightMotorl(60*3);

ucdata=0x74;

)

if(d==l)

(

TrunLeftMotor1(60*1):

delay();

TrunLeftMotor2(60*l);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*1);

delay();

TrunRightMotorl(60*1);

d=0;

)

if(d==2)

(

TrunLeftMotor1(60*2);

delay();

TrunLeftMotor2(60*2);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1):

delay();

TrunRightMotor2(60*2);

delay();

TrunRightMotorl(60*2);

d=0;

)

if(d==3)

TrunLeftMotor1(60*3);

delay();

TrunLeftMotor2(60*3);

delay();

TrunLeftMotor3(360*1);

delay();

TrunRightMotor3(360*1);

delay();

TrunRightMotor2(60*3);

delay();

TrunRightMotorl(60*3);

d=0;

)

)

)

voidKcyDown(void)

(

chara=0;

GPI0_KEY=0x0f;

if(GPI0_KEY!=0x0f)〃读取按键是否按下

delay();

if(GPIO_KEY!=OxOf)〃再次检测键盘是否按下

(

GPI0_KEY=0X7F;

switch(GPIO_KEY)

case(0X77):NumKey=0;break;

case(9X7b):NumKey=l;break;

case(3X7d):NumKcy=2;break;

case(0X7。):NumKey=3;break;

}

GPIO_KEY=OXBF;

switch(GPIO-KEY)

(

case(0Xb7):NumKcy=4;break;

case(OXbb):NumKcy=5;break;

case(OXbd):NumKey=6;break;

case(9Xbe):NumKey=7;break;

}

GPIOKEY二OXDF;

switch(GPTOKEY)

case(0Xd7):NumKey=8;break;

case(OXdb):NumKey=9;break;

case(OXdd):NumKey=10;break;

case(OXde):NumKey=ll;break;

}

GPIO_KEY=OXEF;

switch(GPIO.KEY)

(

case(0XE7):NumKcy=12;break;

case(OXEb):NumKey=13;break;

case(OXEd):NumKcy=14;break;

case(OXEe):NumKcy=15;break;

}

whi1c((a<50)&&(GPIO^KEY!=OxfO))〃检测按键松手检测

(

delayO;

a++;

)

}

}

voiddelay()

unsignedinti=200;

while(i-);

)

voidTrunLeftMotorl(unsignedlongangle)

(

unsignedchartrap;

unsignedcharindex=0;

unsignedlongbeats=0;

unsignedcharcodeBcatCodcLeft[8]={

OxOE,OxOC,OxOD,0x09,OxOB,0x03,0x07,0x06};

beats=(angle*4076)/360;

while(beats―)

tmp=Pl;

tmp=tmp&OxFO;

tmp=tmp|BeatCodeLeft[index];

Pl二tmp;

index++;

index=index&0x07;

delay();

)

)

voidTrunRightMotorl(unsignedlongangle)

unsignedchartrap;

unsignedcharindex=0;

unsignedlongbeats=0;

unsignedcharcodeBcatCodeRight[8]=[

0x06,0x07,0x03,OxOB,0x09,OxOD,OxOC,0x0E};

beats=(angle*4076)/360;

while(beats―)

!

tmp=Pl;

tmp=tmp&OxFO;

tmp=tmp|BcatCodeRight[index];

Pl=tmp;

indcx++;

index=index&0x07;

delay();

)

voidTrunLeftMotor2(unsignedlongangle)

unsignedchartrap;

unsignedcharindex=0;

unsignedlongbeats=0;

unsignedcharcodeBeatCode[8]={

OxEO,OxCO,OxDO,0x90,OxBO,0x30,0x70,0x60};

beats=(angle*4076)/360;

while(beats―)

tmp=Pl:

tmp=tmp&OxOF;

tmp=tmp|BeatCode[index];

Pl=tmp;

index++;

index=index&0x07;

delay();

)

}

voidTrunRightMotor2(unsignedlongangle)

unsignedchartrap;

unsignedcharindex=0;

unsignedlongbeats=0;

unsignedcharcodeBeatCode[8]={

0x60,0x70,0x30,OxBO,0x90,OxDO,OxCO,OxEO};

beats=(angle*4076)/360;

while(beats—)

tmp=Pl;

tmp=tmp&OxOF;

tmp=tmpIBeatCode[index]:

Pl=tmp;

indcx++;

index=index&0x07;

delay();

}

)

voidTrunLeftMotor3(unsignedlongangle)

unsignedchartrap;

unsignedcharindex=0;

unsignedlongbeats=0;

unsignedcharcodeBeatCodeLeft[8]={

OxOE,OxOC,OxOD,0x09,OxOB,0x03,0x07,0x06};

beats=(angle*4076)/360;

while(beats―)

(

tmp=PO;

tmp=tmp&OxFO;

tmp=tmp|BeatCodeLeft[index];

PO=tmp;

indcx++:

index=index&0x07;

delay();

)

}

voidTrunRightMotor3(unsignedlongangle)

(

unsignedchartrap;

unsignedcharindex=0;

unsignedlongbeats=0;

unsignedcharcodeBeatCodeRight[8]=I

0x06,0x07,0x03,OxOB,0x09,OxOD,OxOC,OxOE};

beats=(anglc*4076)/360;

while(beats—)

!

tmp=PO;

tmp=tmp&OxFO;

tmp=tmp|BeatCodeRight[index];

PO=tmp;

index++;

index=index&0x07;

delay():

)

)

voidIntO()interrupt0

(

unsignedchari,j;

EXO=O;//关闭外部中止0

i=10;

while(i-)

THO=(65535-const_interrupt_time)/256;

TL0=(65535-const_interrupt_time)%256;

TRO=1;

while(!TFO);

TF0=O;

TR0=O;

while(IR_sr)

(

EXO=1;

return;

)

}〃每840us检测一次P3.2口是否出现高电平,共检测10次,

出现高电平则重新进入中止

while(!IR_sr);//等候低电平过去

尸5;

while(j-)

(

TH0=(65535-const_interrupt_time)/256;

TL0=(65535-const_interrupt_tinie)%256;

TRO=1;

while(!TFO);

TFO=O;

TR0=O;

while(!IR_sr)

(

EXO=1;

return;

)

)〃每840us检测一次P3.2口是否出现低电平,共检测5次,出

现低电平则重新进入中止

while(IRsr);//等候高电平过去

for(i=0;i<4;i++)

(

for(j=0;j<8;j++)

{

while(!IR_sr);//等候低电平过去

THO=(65535-const_interrupt_time)/256;

TLO=(65535-const_interrupt_time)%256;

TRO=1;

while(!TFO);

TFO=O;

TRO=O;//'延时840us

if(IR_sr)〃判断是否是高电平

(

ucdata|=0

温馨提示

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

评论

0/150

提交评论