本科毕业论文设计基于单片机的自动售货机的系统设计.docx
《本科毕业论文设计基于单片机的自动售货机的系统设计.docx》由会员分享,可在线阅读,更多相关《本科毕业论文设计基于单片机的自动售货机的系统设计.docx(41页珍藏版)》请在冰点文库上搜索。
本科毕业论文设计基于单片机的自动售货机的系统设计
本科毕业论文(设计)
基于单片机的自动售货机的系统设计
姓名:
****
学号:
*********
专业:
*****
院系:
***************
指导老师:
******
职称学历:
*********
完成时间:
****************
教务处制
安徽新华学院本科毕业论文(设计)独创承诺书
本人按照毕业论文(设计)进度计划积极开展实验(调查)研究活动,实事求是地做好实验(调查)记录,所呈交的毕业论文(设计)是我个人在导师指导下进行的研究工作及取得的研究成果。
据我所知,除文中特别加以标注引用参考文献资料外,论文(设计)中所有数据均为自己研究成果,不包含其他人已经发表或撰写过的研究成果。
与我一同工作的同志对本研究所做的工作已在论文中作了明确说明并表示谢意。
毕业论文(设计)作者签名:
日期:
基于单片机的自动售货机的系统设计
摘要
本文设计了一种以STC89C52单片机为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。
本系统选择3×3矩阵式键盘作为控制按键,实现货物的掉出、退币以及货币数的LCD显示等功能。
关键词:
STC89C52,自动售货机,键盘控制,LCD显示
DesignofautomaticsystemofvendingmachinebasedonMicrocontroller
Abstract
ThispaperintroducesadesignofSTC89C52microcontrollerasthecore,adoptsthecentralizedcontrolmethodtorealizetheautomaticcontrolofthewholeprocessofautomaticvendingmachine.Inthissystem,3*3matrixkeyboardasthecontrolbutton,realizethegoodsoutof,thecoinandcurrencynumberLCDdisplayandotherfunctions.
Keywords:
STC89C52,vendingmachine,keyboardcontrol,LCDdisplay
1绪论
自动售货机是一种全新的商业零售形式,20世纪70年代自日本和欧美发展起来。
它又被称为24小时营业的微型超市。
从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。
大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。
从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。
从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。
此次自动售货机的设计是以单片机为核心的自动化控制装置,它集按键选择技术、单片机技术和显示技术于一体。
因此,在商业、生活中得到了广泛的应用。
有些自动售货机不仅能够自动识别1元、5角硬币,而且能够自动识别20元、10元、5元纸币,还会自动找零,人机对话的应用性提高使自动售货机在国内外大面积普及成为可能。
随着科技的发展及人们生活水平的提高,自动售货机市场越来越呈现出多元化及个性化的需求。
人们通过自动售货机自助购物,这种简单、快捷的方式正逐渐成为市民的一种新的消费时尚,并且满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。
自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化城市环境,方便群众生活,它已经成为城市各角落的一道亮丽风景线。
自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。
本文详细介绍了如何控制、要求进行自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。
2自动售货机系统总体设计方案
该章节对自动售货机的控制系统进行完整的功能需求分析,并确定总体设计方案,这是完成系统设计的前提。
这不仅有助于时间的合理计划和安排,还可以避免因盲目进行设计而达不到要求的情况。
2.1工作原理
自动售货机是集机、电的独立智能化售货设备,只需顾客进行投币、选货、退币等简单的操作选择,就能够方便快捷地购买到想要的商品。
其工作程序如下图2.1
顾客投入钱币
顾客选取货物
机器记录金额
机器送出货物
顾客取出货物
机器计算余额
顾客取出余币
图2.1自动售货机的工作时序图
自动售货机的工作时序是:
顾客从投币口投入货币,然后通过货币识别器采集数据、识别判断货币的真伪并判别面值,并把信息数据传给主控系统通信,启动售货机的货物选择键和退币按钮,并等待顾客按键选择货物。
顾客选择货物后,自动售货机把货物准确送出领货口,顾客再取走货物。
如果售货机内还有顾客未用完的货币,顾客可以选择按下退币按钮进行取零或者继续买商品;如果款额不够但还有余额,顾客依然可以按下退币按钮取零;如果没有余额,售货机将自动调成售货结束。
最后系统复零,完成售货。
2.2项目要求
此次自动售货机设计将满足一下几点要求:
主控制系统对货币识别器识别的金额进行记录,根据金额数通过LCD显示器跟踪显示,同时售货机将货物选择权提供用户,用户选择货物后,单片机发出指令将所选商品从储货仓送到取物口。
其功能描述:
货物种类一共设有8种,这8种物品分别对应着8个不同的按键选择,其中价格不等的物品各3种,1元的有3个可选按键,2元的有3个可选按键,3元的有2个可选按键;自动售货机将顾客投的货币进行金额累加。
投了几次货币后,这样机器就会把投入的货币总额数目大小输入中央控制元器件,进行处理。
如果累计投入的货币数目多于物品的设定价格,机器能够实现找钱功能,或者顾客可以继续选择货物;如果投入的货币没有达到所选择物品的预设价格时,投入的钱将全部退还。
2.2.1硬件设计要求
控制系统要完成图2-1中的各个环节,应具备中央处理模块(微控制器),键盘输入模块,报警提示模块,数额显示模块、货币识别模块和电机驱动模块等,电机驱动模块是自动售货设计当中比较重要的一块,涉及到送出货物的功能。
对于驱动电机是如何设计、如何工作的,在这里将不做进一步的研究。
本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货(用发光二极管替代)以及找零功能。
在本次设计中用P2.0~P2.7作为送出货物输出接口,以发光二极管作为出货状态。
这就需要控制系统提供如表2.1中所列的外设器件。
表2.1硬件电路接口列表
外设名称
数量
用途
备注
MDB货币识别器
1
货币识别、找零
硬币器要符合国际标准MDB接口
键盘输入
1
输入设备
采用3×3键盘,和1个退币按键
报警提示
1
语音提示
采用语音提示功能
显示模块
1
显示货币金额
采用TC1602的LCD显示器
这些外设元器件的总体原理框架如图2.2所示
图2.2硬件系统总体框架图
2.2.2软件设计要求
控制系统的软件应包括主程序、启动退币系统程序、货币数额显示程序以及提示程序四个部分。
参照国内外自动售货机的系统设计实例,结合自身硬件特点,系统要编写的程序需满足以下特点和要求:
1、友好的人机交互界面,简易的操作步骤和可靠的销售流程;2、键盘模块能够激活自动售货机的售货系统,同时完成对商品的选择操作以及对货币识别器的退币系统的启动;3、语音提示模块要实现选取货物时金额不足的提示功能。
本文第四章将重点讲述软件程序的设计。
3控制系统的硬件电路设计
3.1硬件设计概述
硬件是控制系统的物理载体,硬件设计是整个设计的基础环节。
根据对第2.2.1节的硬件设计要求可知,此次控制系统的构成模块应包括:
中央处理模块(微控制器),键盘输入模块,语音提示模块,LCD显示模块和MDB货币识别模块。
各元器件的选用质量在此次设计中很重要,是否合理直接影响控制系统的设计质量,要以经济适用、稳定可靠为原则进行设计。
3.2微控制器
微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。
微控制器诞生于20世纪70年代中期,经过30多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。
例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。
微控制器主要分为单片机、DSP、ARM等等,其中单片机体积小、使用灵活方便、价格便宜,主要应用于工业控制和智能仪表等领域;DSP芯片具高速运算能力,常用来处理大量数据或数字信号;ARM凭借低功耗、高性能的特点,广泛应用在移动通信和手持设备领域。
综合考虑技术指标、接口需求和经济性等因素,本设计采单片机STC89C52最合理。
STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
该单片机具有以下标准功能:
8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
该单片机的引脚配置如图3.1所示:
图3.1STC89C52引脚配置图
3.3货币识别系统
货币识别分别有对硬币和纸币的识别,由此在下文中分别介绍说明:
我国目前发行的1元、5角和1角硬币的金属原材料是为造币而专门使用的特殊合金,因此在它通过投币入口进入由电感和电容组成的特定高频振荡线路所产生的磁场时,金属材质和体积的体积的差别对电感量的影响大小也出现微弱差异,电感量的变化将引起振荡频率的变化,与设定值进行比较,确定某种硬币后,经窄带选频电路将频率信号变为电压信号输出,完成对金属硬币的识别。
金属硬币识别器种类繁多,但存币退币机构基本上分为两类:
一类是平面是存币,电磁阀退币;另一类是圆筒式存币,步进机退币。
当硬币投入后经过识别识别出电信号后,伪币和异物被排出真币按面值由几组分配电磁阀分配到不同存币腔体内备用。
当收到退币找零电信号后,通过退币电磁阀或者退币电机拉杆,将存币腔内下部依电信号程序退出,完成自动售货机的退币找零功能。
硬件数据采集设备的电源为发光二极光,所发出的光的波长峰值在红外线波段,但不是单光谱,其中红外光成分达到90%以上,因此,光源辐射光中起主要作用的实际上是红外辐射。
实验中对各种纸币的特征的识别也主要是根据纸币的表面特征对红外辐射的敏感。
红外辐射是光辐射中的一种类型,它具有普通光辐射的共性。
这主要是因为不同的纸币表面特征不同,所以在相同的光辐射下会呈现不同的反映,从而可以用来识别不同的纸币,具体地说,首先,钞票的纸张材料是特定的,所以同一种钞票具有一定程度的共性;其次,钞票表面的图案差异,对于相同面值的钞票而言,其表明的各种图案相同,不同面值的钞票之间表明图案有较大区别,所以,根据所述的光的辐射理论,也可以根据它们对相同光辐射的不同反映来判断起面值归属;再次,钞票流通过程中所造成的不同程度的污损,就会造成钞票表面特征的变化,接受光辐射的特性就是有所变化。
因此,光辐射可以反映钞票的新旧程度;另外,相对于伪币的鉴别,因为伪币的纸张一般都无法满足真钞的纸张特性,而且,伪币中某些图案达不到钞票的实际标准,如水印是在造纸过程中通过特征工艺抄制上去的无色图案,而伪钞的水印则是通过一定方式轧印或描绘上去的等等,这都能在钞票对光辐射的接受信息中反映出来。
但是光辐射在传输过程中,会受外界环境的影响而产生能量损失。
比如经过大气传输时,就会受到大气成分的吸收,而在不同的环境条件下,大气的成分含量有某些程度的变化,因而导致能量损失的程度不同。
所以光辐射到钞票介质的传输距离越短,所造成的能量损失的影响就越微小,如果硬件的性能较好,外界的这种影响可以不予考虑。
作为整个货币识别系统的核心部分,纸币控制器必须由一颗功能相对较强的嵌入式微处理器以及一系列外围器件构成。
89C52拥有4个I/O口即P0、P1、P2、P3,它有两个可编程的定时器/计数器,分别称为定时器/计数器0和定时器/计数器1。
它们都是16位加法计数结构,分别由TH0和TL0及TH1和TL1两个8位计数器组成。
其主要功能是:
处理器通过控制发光二极管发光,当纸币进入时,入口处发光二极光投射过纸币的光强变化,被相应入口处的光电三极管接受到后转换为电信号,传给89C52处理器,经过判断,处理器直接控制;当用户按下退币按钮时,单片机将信号发送到MDB中,再施行退币功能。
其中注意的是,当选取货物后,货币器能监测到金额的减少,在退币系统启动时退出相应的金额。
MDB的通信接口是全双工的主从式接口,使用标准的专用6针插头连接,其中4号接口与P3.0相连,CPU接收到信号并记录金额,5号接口与P3.1相连,CPU通过发送信号控制退币系统的运行。
由于货币识别器的核心内容是保密的,可供参考的资料较少,因此本系统中的MDB的使用仅限1元的投币、退币方式,同时下一章的软件设计中不做详细的介绍。
MDB接口电路设计如图3.2所示。
图3.2MDB接口电路图
3.3LCD显示系统模块
在用户操作自动售货机时,为了让用户(顾客或运营商)更加简便、容易达成交易,本设计选用广州捷胜吉电子科技公司的TC1602AL型液晶显示模块实现此功能。
其规格参数如下:
外形尺寸:
80×36mm;视域尺寸:
64.5×13.8mm
点尺寸:
宽×高=0.52×0.6mm
本文设计的电路如图3.3所示。
图3.3液晶模块电路图
表3.1液晶显示模块接口说明
标号
功能说明
备注
Vss
逻辑负电源输入引脚,0V
Vdd
逻辑正电源输入引脚,+5V
V0
LCD驱动电源输入引脚,大小可调先是对比度
一般接0V
E
读写使能引脚:
高电平有效,下降沿锁定数据
RS
数据/指令寄存器选择引脚:
RS=“1”:
数据D0-D7与数据寄存器通信
RS=“0”:
数据D0-D7与指令寄存器通信
R/W
读/写选择引脚:
高电平:
读数据
低电平:
写数据
若不须读操作功能,该引脚可直接接地
D0~D7
8位数据线引脚
目前,液晶显示模块在国内已经规范化。
其引脚接口形式都是标准统一的,只要在指令设置上稍加改动,就可驱动各规格的字符型液晶显示模块,因此使用起来非常方便。
关于图3.3中各引脚的功能如表3.1中所描述。
3.4提示程序模块
提示模块电路图,如图3.4所示。
图3.4提示模块电路图
1.此次提示电路的功能是当用户投入金额不够并且按下货物选择按键时,短暂发出提示音,会给用户提示作用。
2.参数计算:
这是一个报警提示电路它由电阻、三极管、蜂鸣器组成,R4作为保护电阻它的阻值范围:
330~1K。
4控制系统的软件设计
4.1软件设计概述
C语言是编译型程序设计语言的一种,它兼顾了各种高级语言和汇编语言的特点。
使用C语言进行程序设计已经成为单片机软件开发的主流。
其有以下优点:
1、C语言具有语法简洁的特点
2、运算符丰富,夺得我有时后都分不清
3、数据结构类型丰富
4、结构化,就是想一小块一小块的程序,这样写起来容易
5、语法要求不严格,这样的话相对容易一些,但有时喉也不爽,有错的时候不知道语言的语法错了
6、功能强大,现在诸如nuix这样的操作系统就是用c语言写的
本设计使用被广泛应用的KeiluVision2C语言编译器为开发环境,进行了单片机的C语言程序设计。
综合考虑自动售货机的功能需求和硬件设计,软件程序的编写应该包括以下几个内容:
主程序;键盘模块程序;液晶显示模块的程序;提示模块程序。
4.2主程序
在程序层次结构方面,当系统上电之后,应先对其进行相关初始化(如对每种饮料价格的设定和商品原始库存数量的设定等)。
然后程序应当进入无限循环,再根据相应的触发条件进入相应的子程序,完成相应的状态下的工作。
由于系统在多个状态间跳转切换,所以在程序编写时比较适合应用循环结构实现。
自动售货机工作的整个流程图如图4.1所示。
N
N
N
Y
NY
Y
Y
N
Y
图4.1自动售货机的流程图
主程序将调用其他子程序以达到自动售货机的完整工作。
例如,当用户按下按键并顺利取得货物时,主程序将调用TC1602AL显示程序,以达到显示余额的功能,再让用户选择是否继续交易。
主程序详见附录。
4.3键盘程序设计
主程序中将直接对键盘实施控制,当用户在与自动售货机进行交易时,键盘则是重要的人机交互设备,对键盘的识别流程如图4.2。
图4.2按键识别模块原理图
此次的键盘设计是以3X3矩阵形式,其中前八个按键是货物选择键,第九个键盘是作为退币系统启动按键,当用户按下键盘,程序通过去抖动的方法来解除干扰,再以行扫描的方式来确定所按键盘,并确定键值,最后再等待顾客释放。
4.4字符型液晶显示模块程序设计
TC1602AL液晶模块的功能相对简单,而控制器的设置也不多,下面就介绍常用的控制驱动特性。
TC1602AL的基本操作分为以下4种,如表3-1所示。
表3-1TC1602AL的基本操作
类别名称
输入
输出
状态字的读操作
RS=L;RW=H;EP=H
DB0-7读出为状态字
数据读出操作
RS=H;RW=H;EP=H
DB0-7读出为数据
指令写入操作
RS=L;RW=L;EP=上升沿
无
数据写入操作
RS=H;RW=L;EP=上升沿
无
TC1602AL指令的描述(其中:
L=0,H=1,X=0/1)
1、清显示CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
L
L
L
L
L
H
功能:
送20H“空代码”到所有的DDRAM中,清楚所有的显示数据,并将DDRAM地址计算器(AC)清零,光标返回到原始状态,设置I/D=H,AC为自动加一的输入方式。
2、返回CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
L
L
L
L
H
X
功能:
设DDRAM地址为零,显示回原位,DDRAM内容不变。
3、输入方式设置CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
L
L
L
L
I/D
SH
功能:
设置光标移动方向并指定整体显示是否移动。
I/D表示地址的修改方式,也是光标的移动方式:
I/D=1:
光标由左向右移动且AC自动加一;
I/D=0:
光标由右向左移动且AC自动减一。
SH表示是否允许显示画面的滚动方式:
SH=0:
:
禁止滚动;SH=1:
允许滚动。
SH=1且I/D=0:
显示画面向右移动一个字符。
SH=1且I/D=1:
显示画面向左移动一个字符。
4、显示开关控制CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
L
L
H
D
C
B
功能:
控制整体显示开关(D),光标开关(C)及闪烁开关(B)的开关。
D=1:
整体显示开;D=0:
整体显示关。
C=1:
光标显示开;C=0:
光标显示关。
B=1:
光标闪烁;B=0:
光标不闪烁。
5、光标或整体显示移位位置CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
L
H
S/C
R/L
X
X
功能:
移动光标或整体显示,同时不改变DDRAM内容,S/C和R/L置位不同时对应的操作:
00:
光标左移;01:
光标右移。
10:
所有显示左移:
11:
所有显示右移。
6、功能设置CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
L
H
DL
N
F
X
X
功能:
设置接口数据位数(DL)、显示行数(N)以及字形(F)。
DL=1:
8位数据接口模式,DL=0:
4位数据接口模式(DB4-7有效,在这种模式下,传送的方式为先高4位,后低4位)。
N=1:
两行显示;N=0:
单行显示。
F=1:
5×10点阵模式加光标;F=0:
5×7点阵模式加光标。
7、设置CGRAM地址CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
L
H
ACG5
ACG4
ACG3
ACG2
ACG1
ACG0
功能:
将CGRAM地址送入AC中。
设置后MCU对数据的操作是对DDRAM的读/写操作。
8、设置DDRAM地址CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
L
H
ADD6
ADD5
ADD4
ADD3
ADD2
ADD1
ADD0
功能:
DDRAM地址送入AC中。
当N=0时,DDRAM地址范围为:
80H-FFH;
当N=1时:
第一行的DDRAM地址范围为:
80H-BFH;
第二行的DDRAM地址范围为:
C0H-FFH。
9、读忙状态位(BF)及地址CODE:
RS
R/W
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
L
H
BF
AC6
AC5
AC4
AC3
AC2
AC1
AC0
功能:
读最高位(BF)判断内部操作是否正在执行,并读低7位地址计数器的内容。
10、写数据CODE:
RS
R/W