基于单片机的自动售货机设计毕业设计.docx

上传人:b****4 文档编号:30819243 上传时间:2024-01-30 格式:DOCX 页数:71 大小:3.55MB
下载 相关 举报
基于单片机的自动售货机设计毕业设计.docx_第1页
第1页 / 共71页
基于单片机的自动售货机设计毕业设计.docx_第2页
第2页 / 共71页
基于单片机的自动售货机设计毕业设计.docx_第3页
第3页 / 共71页
基于单片机的自动售货机设计毕业设计.docx_第4页
第4页 / 共71页
基于单片机的自动售货机设计毕业设计.docx_第5页
第5页 / 共71页
点击查看更多>>
下载资源
资源描述

基于单片机的自动售货机设计毕业设计.docx

《基于单片机的自动售货机设计毕业设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的自动售货机设计毕业设计.docx(71页珍藏版)》请在冰豆网上搜索。

基于单片机的自动售货机设计毕业设计.docx

基于单片机的自动售货机设计毕业设计

基于单片机的自动售货机设计

摘要2

Aastract3

一、自动售货机的系统结构4

1.1自动售货机的总体系统结构4

1.2自动售货过程的控制子系统简述5

二、自动售货机的功能介绍6

2.1此次设计的自动售货机的功能简介6

2.2实现自动售货机的功能的设计思路7

三、硬件接口电路7

3.1中央控制元件简介8

3.2投币及投币总数LCD显示系统9

3.2.1投币系统9

3.2.2货币累加的实现10

3.2.3LCD显示10

3.3货物选择系统14

3.3.1独立式键盘按键的识别14

3.3.2键盘的编码14

3.3.3货物选择系统的程序流程图14

3.4出货系统24

3.4.1出货功能的描叙24

3.4.2出货程序流程图24

3.5找钱系统25

3.5.1找钱系统的描述25

3.5.2程序流程图25

四、设计仿真26

4.1Proteus简介26

4.2仿真电路26

附录33

参考文献48

致谢49

摘要

本文详细介绍了自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、

系统设计、软件编程的原则和技巧。

该系统以单片机AT89C51芯片为核心,采用集中控制方式实现了对自动售货机全过程

的自动控制。

本系统选择独立式键盘按键作为货物选择端,实现了投币总数的显示功能。

此外,系统程序采用keil软件

进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。

汇编语言是程序的基本语言,具有容易理解,

便于记忆和使用等特点。

矚慫润厲钐瘗睞枥庑赖。

关键词:

自动售货机,AT89C51,LCD显示

TheVendingMachineDesignBasedOnMCU

Abstrct

聞創

Thispaperdescribesavendingmachinesystemdesign,hardwareselection,softwareplanningandpreparation,anddescribesthefocusoftheworkvendingmachinesystemtheory,systemdesign,softwareprogrammingprinciplesandtechniques.AT89C51inthesystemasthecorechip,therealizationofacentralizedcontrolofthevendingmachine'sautomaticcontroltheentireprocess.Choiceofthesystemasastand-alonekeyboardkeystochoosethegoodsside,therealizationofthecoinshowsthetotalnumberoffeatures.Inaddition,thesystemprogramusingkeilsoftwaretoprepareandcompileprocedures,thesoftwareprogrammingissimple,convenienterrorchecking,easytoreadandsoon.AssemblyIanguageisthebasicIanguageprogramwitheasytounderstand,easytorememberanduseandsoon.沟燴鐺險爱氇谴净。

Keywords:

VendingMbchines,AT89C51,LCDDisplay

一、自动售货机的系统结构

1.1自动售货机的总体系统结构

自动售货机是集光、机、电一体化的独立机构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如下图1.1[1]残骛楼諍锩瀨濟溆塹籟。

售货机的工作原理是:

(1)从投币口送入货币,然后通过传感器采集数据、识别器判断货币的真伪并判别面值。

(2)识别器把信息数据传给通信模块。

(3)通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键,显示出哪个货道有货,哪个货道已

经售完,并等待顾客按键选择商品。

酽锕极額閉镇桧猪訣锥。

(4)顾客选择商品后,售货机自动把商品送出,等待顾客取走。

(5)显示余额,如果金额足够多,顾客可以选择找币或者继续买商品;如果款额不够,售货机经过延时予以退币。

退币

分为两种情况:

一种是由货币识别器完成退纸币,另一种是由硬币的通信模块完成退硬币。

彈贸摄尔霁毙攬砖卤庑。

(6)系统复零,完成售货。

自动售货机的硬件原理构成如下图2.2所示

®rz自动售貨机哽件詰构團

综合所述,售货机系统可以分为三部分组成,即自动售货机的控制子系统、通讯子系统、硬币器子系统以及纸币器子系统。

其中控制子系统是本设计研究重点。

謀荞抟箧飆鐸怼类蒋薔。

1.2自动售货过程的控制子系统简述

控制子系统由以下四个部分组成,分别是预设自动售货机系统、金额累计、可售指示和退币系统、售完检测系统、售出累计及自测功能系统。

厦礴恳蹒骈時盡继價骚。

1、预设自动售货机系统。

自动售货机售出的同类商品可分为若干品种,其售前设定价格须预先寄存在控制系统内。

售货机的价格设置由按键和存储器组成。

通过按键选择被设价商品的种类及价格,并将价格写入存储器中,该存储器本身

具有掉电保护功能,属于软件设置方式。

此外,在简易售货机中,由于出售商品的种类少,价格变化下,使用币种单一,

第5页共62页

也可以用硬件设置价格,才用拨码开关对应方式,结构简单,操作方便。

茕桢广鳓鯡选块网羈泪。

2、金额累计、可售指示和退币系统。

控制系统的核心CPU对识币、退币、无货检验及购货信号进行循环检查,当有

识币信号后,将金额数值送入金额累计存储器中进行累计,并通过串行接口使可售指示灯亮,提示购货。

此时可以按下购

货按钮,由于CPU检测到有购货信号后,如金额累计器中的数值与预设价格相等,则通过并行扩展接口驱动电磁阀或者微

电机驱动出商品,并将金额累计存储器清零,完成一次售货过程,如累计金额大于预设价格时,驱动商品后,相减差额由信号驱动退币,实现退币和找钱功能。

鹅娅尽損鹤惨歷茏鴛賴。

3、售完检测系统。

在自动售货机商品存储存道下方按照有接触行程开关,当存储存道有商品时,压下行程开关,自

动售货机正常工作;当商品出售完毕时,行程开关被释放,向CPU发出无货信号,经过检测通过串行扩展接口向相应的售

完指示灯发出信号,使机身“售完”指示灯亮,此种商品自动停售,即使投币金额达到该道商品预设价格数值,可售按钮仍然无法启动信号,金额累计存储器也不清零。

籟丛妈羥为贍债蛏练淨。

4、自动售货机售出累计及自测功能系统。

该机CPU在每次售出商品后,向售出累计存储器中累计售出数据,通过自

动售货机内部的按键可在金额显示窗口中读到累计结果。

此外,在按下自测功能键后,出现自测功能信号,由外部按键操

作,可检测各商品存储道的驱动商品功能。

⑵預頌圣鉉儐歲龈讶骅籴。

二、自动售货机的功能介绍

2.1此次设计的自动售货机的功能简介

基本原理:

货币识别器对所投货币进行识别,根据金额将商品选择权提供用户,用户选择后,控制芯片发出指令将所选择商品从储备料道中送达取物口。

渗釤呛俨匀谔鱉调硯錦。

其功能描述:

货物种类一共设有3种,这3种物品分别对应着3个不同的按键选择,其中2元,3元,4元价格不等的物品各1种;

自动售货机能够投币总数LCD显示功能。

铙誅卧泻噦圣骋贶頂廡。

如果累计投入的货币数目超过物品的预设价格,机器能够实现找钱功能;如果投入的货币没有达到所选择物品的预设价格时,投入的钱将全部退还;在投入一次累加货币后选择物品,如果投入的累加货币数目大大超过所选择物品的预设单

个价格时,那么能够实现选择同一个物品购买多个,在本设计中设为可以同时购买2个或3个物品。

擁締凤袜备訊顎轮烂蔷。

本设计中有一共有7个按键选择,其中3个是货物选择键,有2个是多选键(一次购买2个或3个货物),还有1个

确定键和1个取消键。

如果没有按照预先设计的流程顺序进行按键选择,自动售货机将会自动返回操作前的状态,等待再次正确的按键选择。

贓熱俣阃歲匱阊邺镓騷。

自动售货机的原理框图如图1.2所示

2.2实现自动售货机的功能的设计思路

采用单片机89C51作为中央控制元件;

用P3.4(XO)口作为识别货币输入端;

P1口作为货物选择选择端(采用独立式键盘做为选择货物端);采用PO口实现掉出货物功能、找零功能;

三、硬件接口电路

 

H門

>■•«■••■*•«••■・・i・r■ri■iIe■r■■n■r

■U1

iDk』■

”..亦..sJEW^

.

VQEED

P口亦口■cmKJifC.BiADl[FDJfiAHFOjSKK

FD.T«FT

RHT

FHBIAL£口

PZ«V>S

pz.v>e

♦N.gfZ也SA乜

film*

pinFid

口VD«冲amraaWTl

P3.+HDpjsn

P3.TfflF

FO

PI.*

hiM

PlIJ

-d尉象需-KUDDrvupp卫-?

IH23Esqif豆

■«■

Tr

MHBUEn

:

Il:

l■:

■O-»

WC-•

:

^[TTT

n

3

番辭口..

:

^[TTT

n

3

D7•

LED1UUQliiL

=TE

WXX

WXX

 

图3.0硬件接口电路

如图3.0所示,本次设计的自动售货机系统包括以下几个部分:

中央控制元件89C51、投币及投币总数LCD显示系统、货

物选择系统、出货系统、找钱系统。

坛搏乡囂忏蒌鍥铃氈淚。

3.1中央控制元件简介

在本次设计中,中央控制元件采用MCS-51系列单片机中的89C51。

如图3.1所示.

U1

图3.189C51引脚图

1•主要特性:

与MCS-51兼容;4K字节可编程闪烁存储器;寿命:

1000写/擦循环;数据保留时间:

10年;全静态工

作:

0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源;可编程串行通道;低功耗的闲置和掉电模式片内振荡器和时钟电路蜡變黲癟報伥铉锚鈰赘。

2•管脚说明:

GND接地。

P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,

当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

買鯛鴯譖昙膚遙闫撷凄。

P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校

验时,P1口作为第八位地址接收。

綾镝鯛駕櫬鹕踪韦辚糴。

P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,

其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉

的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”

时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH

编程和校验时接收高八位地址信号和控制信号。

驅踬髏彦浃绥譎饴憂锦。

P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内

部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

猫虿驢

绘燈鮒诛髅貺庑。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:

口管脚备选功能

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2/INTO(外部中断0)

P3.3/INT1(外部中断1)

P3.4TO(记时器0外部输入)

P3.5T1(记时器1外部输入)

P3.6/WR(外部数据存储器写选通)

P3.7/RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的的脉冲或用于定时目的。

锹籁饗迳琐筆襖鸥娅薔。

/PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次

FLASH编程期间,此引脚用于

1/6。

因此它可用作对外部输出

/PSEN有效。

但在访问外部数

据存储器时,这两次有效的/PSEN信号将不出现。

構氽頑黉碩饨荠龈话骛。

/EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(OOOOH-FFFFH),不管是否有内部程序存储器。

注意加密

方式1时,/EA将内部锁定为RESET当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施

加12V编程电源(VPF)。

輒峄陽檉簖疖網儂號泶。

XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入

3.2投币及投币总数LCD显示系统

3.2.1投币系统

投币系统是自动售货设计当中比较重要的一块,涉及到货币识别系统,对于识别货币器是如何设计、如何工作的,在

这里将不做进一步的研究。

本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货以及找零功能。

在本次设计中用P3.4上的一个按键来代替投币系统的电平输出。

尧侧閆繭絳闕绚勵蜆贅。

在投币系统中可以通过89C51内部的定时器来控制投币时间,在规定的时间范围内完成投币动作,否则投入的货币全

部退出。

由于本次设计主要是要体现从投币到操作最后到出货的过程,在设计中没有用到定时设置。

识饒鎂錕缢灩筧嚌俨淒。

3.2.2货币累加的实现

本次设计的货币累加是对判断P3.4上的按键上所按下的次数进行累加来实现的,并将累加的次数送到寄存器B,然后

系统根据投币的总数和相应的操作来实现输出。

凍鈹鋨劳臘错痫婦胫籴。

3.2.3LCD显示

本次设计选用TC1602液晶显示屏,可以直接跟51系列单片接口相连。

液晶模块TC1602采用标准的16脚接口,其引脚

功能如下恥諤銪灭萦欢煬鞏鹜錦。

第1脚:

VSS为电源地,接GND

第2脚:

VDD接5V正电源。

第3脚:

VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼

影”,使用时可以通过一个10K的电位器调整对比度。

鯊腎鑰诎漣鉀沩懼統庫。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

当RS和RW共同为低电平时可以写入指令

或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。

硕癘鄴颃诌攆檸攜驤蔹。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7〜14脚:

D0〜D7为8位双向数据线。

阌擻輳嬪諫迁择植秘騖。

第15脚:

BLA背光电源正极(+5V)输入引脚。

第16脚:

BLK背光电源负极,接GND

TC1602液晶模块内带标准字库,内部的字符发生存储器(CGROM已经存储了192个5X7点阵字符,32个5X10点阵字

符。

另外还有字符生成RAM(CGRAM512字节,供用户自定义字符。

如表1所示,这些字符有:

阿拉伯数字、英文字母的大

小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),

显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。

氬嚕躑竄贸恳彈濾颔澩。

1602液晶模块内部的控制器共有11条控制指令

指令1:

清显示,指令码01H,光标复位到地址00H位置

指令2:

光标复位,光标返回到地址00H

指令3:

光标和显示模式设置I/D:

光标移动方向,高电平右移,低电平左移S:

屏幕上所有文字是否

左移或者右移。

高电平表示有效,低电平则无效釷鹆資贏車贖孙滅獅赘。

指令4:

显示开关控制。

D:

控制整体显示的开与关,高电平表示开显示,低电平表示关显示C:

控制光标的开与

关,高电平表示有光标,低电平表示无光标B:

控制光标是否闪烁,高电平闪烁,低电平不闪烁怂阐譜鯪迳導

嘯畫長凉。

指令5:

光标或显示移位S/C:

高电平时移动显示的文字,低电平时移动光标

第12页共62页

指令6:

功能设置命令~~DL:

高电平时为4位总线,低电平时为~~8位总线N:

低电平时为单行显示,高电平时双行显示F:

低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符谚辞調担鈧谄动禪泻類。

指令7:

字符发生器RAMte址设置

指令8:

DDRAI地址设置

指令9:

读忙信号和光标地址BF:

为忙标志位,高电平表示忙,此时模块

嘰觐詿缧铴嗫偽純铪锩。

不能接收命令或者数据,如果为低电平表示不忙。

指令10:

写数据指令11:

读数据⑷

1602液晶的读写时序如图所示:

读操作时序:

 

写操作时序:

投币总数LCD显示相关程序程序如下:

MONEYEQU0040H;定义投币显示存储单元

RSEQUP3.0

RWEQUP3.1

EEQUP3.2

MAIN:

MOVMONEY,#01H;赋予MONE单元初值为1

START:

ACALLDELAY;调用延时程序

MOVP2,#01H;写指令01H,清屏

LCALLENABLE

MOVP2,#38H;写指令38H,设定LCD为16*2显示,5*7点阵,8位数据接口

LCALLENABLE

MOVP2,#0FH;写指令0FH,显示ON光标ON闪烁ON

LCALLENABLE

MOVP2,#06H;写指令06H,光标输入方式增量移位

第14页共62页

LCALLENABLE

MOVP2,#80H;

LCALLENABLE

第一行起始字符地址

MOVDPTR,#TABLE

LCALLDISP;

;显示字符表头地址

显示第一行数据

RET;

返回

ENABLE:

CLRRS;

CLRRW

写指令子程序

CLRE

LCALLDELAY

SETBE

RET

DISP:

MOVR4,#6;

LOOP1:

MOVA,00H;

MOVR1,MONEY

L1:

ADDA,#06H

DJNZR1,L1

MOVCA,@A+DPTR

LCALLDISPF;

准备显示一行6个字符

投币数送A

;设置偏移量为6

;查表取得要显示的数据

写入一个数据

INCDPTR;

数据表指针加1,准备取下一个数据

DJNZR4,LOOP1;

JMPINSERT

DISPF:

MOVP2,A;

SETBRS;

一行没有显示完就继续

写1字节数据到显示端口

写数据时序(请参照1602LCD使用说明书)

CLRRW

CLRE

LCALLDELAY

SETBE

RET

TABLE:

DB"0YUAN"

DB"0YUAN"

DB"1YUAN"

DB"2YUAN"

DB"3YUAN"

DB"4YUAN"

DB"5YUAN"

DB"6YUAN"

DB"7YUAN"

DB"8YUAN"

DB"9YUAN"

DB"10YUAN"

DB"11YUAN"

DB"12YUAN"

DB"13YUAN"

DB"14YUAN"

DB"15YUAN"

3.3货物选择系统

按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。

编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。

由于本次设计只需要七个按键即可满足设计要求,所以采用独立式键盘,这样对键盘识别的编程也比较简单。

熒绐譏钲鏌觶鷹緇機库。

331独立式键盘按键的识别

独立式按键的识别很简单,如图3.0所示,当某个键按下时,相应的接口会出现低电平,无键按下时则为高电平,由此就可以

判断出哪个键有按下。

鶼渍螻偉阅劍鲰腎邏蘞。

3.3.2键盘的编码

将P1.0〜P1.6上的按键编码为OOH、01H、02H、03H、04H、05H、06H,按键所对应的功能见表3.1纣忧蔣氳頑莶驅藥悯骛。

表3.1按键功能表

按键号

对应的功能

00H

选择2元钱货物A

01H

选择3元钱货物B

02H

选择4元钱货物C

03H

对选择的货物买2个

04H

对选择的货物买3个

05H

对选择的货物再次确定

06H

对选择的货物取消

3.3.3货物选择系统的程序流程图

 

按上页[3]

退还全部的钱,等待重新再一肚投币

退还全部的钱

 

 

 

退还全部的钱

返回.等待重新再一逹投币

 

将案加器货币敌存入累加器直、

寄存器B

返回,等待再按下撐键

捋选2个否乍

Y

掉岀两个所选的3元後货韧

退还全觥的後

 

 

捋上页(61

退还全部的践

接上页[7]

 

 

3元钱葩址理子程序猱程图

 

 

[2]

N

按诜2个否?

投入S元蘇

梭确定瞬否

-L^r

 

 

.退还全敲的钱,等待重新再一

拠投币

大于S亓•否十

掉出两个所选的4元钱货物

退还全部的践

接上页[10]

.掉出三个所选的4元铁货物

 

 

4元钱赏翻虻理子程歸

 

 

3.4出货系统

341出货功能的描叙

本设计中,设置了价格分别为2元、3元、4元不等的货物,一共3种。

在通过按键选择物品后,将会把产生的信号输

第26页共62页

入给89C51的P

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职业技术培训

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1