基于单片机的自动售货机系统设计Word文档下载推荐.docx
《基于单片机的自动售货机系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于单片机的自动售货机系统设计Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
有些智能自动售货机不仅能够自动识别1元、5角硬币,而且能够自动识别20元、10元、5元纸币,还会自动找零,人机对话的应用性提高使自动售货机在国内大面积普及成为可能。
智能自动售货机越来越人性化的设计将会很快的占领中国市场。
(1)当前发达国家现状
日本:
各种自动售货机保有量超过600万台,平均20人一台,世界普及率第一。
1990年通过自动售货机实现的销售额即已达到5兆日元(约3000亿人民币)。
美国:
总的机器保有量大致和日本相当,2000年通过自动售货机实现的销售额达到250亿美元,其中OCS(OfficeCoffeeService)的销售额排第六位。
韩国:
自动售货机的使用历史要远短于其它发达国家,仅有25年,但据2001年的统计,总保有量已超过80万台。
在2001年韩国生产的自动售货机中OCS占32.7%,排第一位,咖啡自动售货机占18.1%,排第三位,仅次于18.6%的充电自动售货机。
瓶罐饮料自动售货机和复合型自动售货机(同机销售瓶罐饮料和热咖啡)都仅占8.6%,并列第四位。
(2)我国国内现状
保有量约2万台,且品种单一,主要以瓶饮料售货机为主,技术质量还未完全过关,生产和运营成本较高,收益也不高。
导致此现状的主要原因是中国有关的自动售货机企业未能有效解决成本,质量,运营等诸多问题。
但由于随中国经济的快速发展和社会的巨大进步,自动售货机的实际需求已相当大。
1.2课题设计目标
如此多的优点使得自动售货机在世界范围内得到广泛的应用。
自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。
本文详细介绍了如何控制、要求进行自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧
基于单片机的自动售货机设计,是一种功能增强的自动售货机,实现自动售货机的功能设计思路:
采用单片机89C51作为中央控制元件;
用P3.4(XO)口作为识别货币输入端;
P1口作为货物选择选择端(采用独立式键盘做为选择货物端);
采用P0口实现掉出货物功能、找零功能
第二章自动售货机系统总体方案设计
以AT89C51单片机为核心的自动售货机装置的控制系统。
2.1自动售货机系统方案总述
该系统以单片机AT89C51芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。
系统程序采用汇编及C语言软件进行程序的编写和编译,该软件具有编程简单。
2.2自动售货机系统功能要求
1、自动售货机能销售五种商品:
A,B,C,D,E假设每种商品数量无限。
2、自动售货机允许投入2元、3元、4元硬币:
若总币值等于顾客需要的商品单价时,机器送出需要的商品;
若总币值大于顾客需要的商品单价时,机器除提供所需商品外,显示余额等待继续输入或者找回余额;
若总币值小于顾客需要的商品单价时,报警显示总额,机器提示“余额不足”等待继续输入或者取消交易。
机器内1元和2元的找零硬币无限。
3、如果投入的硬币达到或大于所要购买商品的价格,就不必再投入硬币了,自动售货机会发出一个指示信号使接受硬币的装置不再接收新的硬币。
4、每次投币时间有限制,设定每次投币时间不超过30秒,在时间到时,总币值不足顾客购买的商品单价时,自动售货机按钱数不足处理,退还全部硬币。
或者在设定时间内,总投币值不足顾客购买的商品单价时,若需要取消交易则可按取消键,售货机按不足钱数处理,退还全部硬币。
5、当顾客完成一次购买后或按错按钮后,显示余额等待继续输入或者找回余额;
6、顾客一次只能购买一种商品的一个,若需要更多商品,需要重复操作。
2.3自动售货机系统功能简介
基本原理:
货币识别器对所投货币进行识别,根据金额将商品选择权提供用户,用户选择后,控制芯片发出指令将所选择商品从储备料道中送达取物口。
其功能描述:
货物种类一共设有3种,这3种物品分别对应着3个不同的按键选择,其中2元,3元,4元价格不等的物品各1种;
自动售货机能够投币总数LCD显示功能。
如果累计投入的货币数目超过物品的预设价格,机器能够实现找钱功能;
如果投入的货币没有达到所选择物品的预设价格时,投入的钱将全部退还;
在投入一次累加货币后选择物品,如果投入的累加货币数目大大超过所选择物品的预设单个价格时,那么能够实现选择同一个物品购买多个,在本设计中设为可以同时购买2个或3个物品。
本设计中有一共有7个按键选择,其中3个是货物选择键,有2个是多选键(一次购买2个或3个货物),还有1个确定键和1个取消键。
如果没有按照预先设计的流程顺序进行按键选择,自动售货机将会自动返回操作前的状态,等待再次正确的按键选择。
自动售货机的原理框图如图2-1所示
2.4实现自动售货机的功能的设计思路
采用P0口实现掉出货物功能、找零功能;
第三章自动售货机系统硬件设计
微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。
微控制器诞生于20世纪70年代中期,经过30多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。
例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。
微控制器主要分为单片机、DSP、ARM等等,其中单片机体积小、使用灵活方便、价格便宜,主要应用于工业控制和智能仪表等领域;
DSP芯片具高速运算能力,常用来处理大量数据或数字信号;
ARM凭借低功耗、高性能的特点,广泛应用在移动通信和手持设备领域。
3.189C51的引脚与功能简介
本次设计采用89C51单片机,其引脚如图3-1所示
图3-1
1.主要特性:
与MCS-51兼容;
4K字节可编程闪烁存储器;
寿命:
1000写/擦循环;
数据保留时间:
10年;
全静态工作:
0Hz-24Hz;
三级程序存储器锁定;
128*8位内部RAM;
32可编程I/O线;
两个16位定时器/计数器;
5个中断源;
可编程串行通道;
低功耗的闲置和掉电模式片内振荡器和时钟电路
2.管脚说明:
VCC:
供电电压。
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/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;
当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出
3.2硬件设计要求
控制系统要完成图2-1中的各个环节,应具备中央处理模块(微控制器),键盘输入模块,报警提示模块,数额显示模块、货币识别模块和电机驱动模块等,电机驱动模块是自动售货设计当中比较重要的一块,涉及到送出货物的功能。
对于驱动电机是如何设计、如何工作的,在这里将不做进一步的研究。
本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货(用发光二极管替代)以及找零功能。
在本次设计中用P2.0~P2.7作为送出货物输出接口,以发光二极管作为出货状态。
这就需要控制系统提供如表1中所列的外设器件。
表1硬件电路接口列表
外设名称
数量
用途
备注
MDB货币识别器
1
货币识别、找零
硬币器要符合国际标准MDB接口
键盘输入
输入设备
采用3×
3键盘,和1个退币按键
报警提示
语音提示
采用语音提示功能
显示模块
显示货币金额
采用TC1602的LCD显示器
这些外设元器件的总体原理框架如图3-2所示
模
图3-2
3.3晶体振荡和复位电路
晶体振荡电路和复位电路图
3-3晶体振荡电路图
(1)晶体振荡电路功能介绍:
此电路能让电路产生振荡频率,直流电经过晶体振荡电路就会产生电路所需的交流电,此电路不需要外信号刺激自身就可以将直流电能转化为交流电能,所以要是电路需要将直流电变成交流电,在这里就需要用一个晶体振荡电路。
(2)参数计算:
这是一个晶体振荡电路用到了两个电容和一个晶振,一般12MHZ~30P,6MHZ~20P,2MHZ~10P,我采用的是12MHZ~30P的晶振电路。
(3)复位电路功能介绍:
为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。
一般微机电路正常工作需要供电电源为5V±
5%,即4.75~5.25V。
由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。
(4)参数计算:
这是一个复位电路,由一个电阻和一个电容组成,一般的复位电路电容都为10uF,电阻都为10K
3.4独立键盘按键的识别
独立式按键的识别很简单,如图3-4所示,当某个键按下时,相应的接口会出现低电平,无键按下时则为高电平,由此就可以判断出哪个键有按下。
如图3-4独立键盘按键图
将P1.0~P1.6上的按键编码为00H、01H、02H、03H、04H、05H、06H,按键所对应的功能见表2
表2按键功能表
按键号
对应的功能
00H
选择2元钱货物A
01H
选择3元钱货物B
02H
选择4元钱货物C
03H
对选择的货物买2个
04H
对选择的货物买3个
05H
对选择的货物再次确定
06H
对选择的货物取消
3.5投币系统
投币系统是自动售货设计当中比较重要的一块,涉及到货币识别系统,对于识别货币器是如何设计、如何工作的,在这里将不做进一步的研究。
本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货以及找零功能。
在本次设计中用P3.4上的一个按键来代替投币系统的电平输出,如图3-5所示。
如图3-5投币系统图
在投币系统中可以通过89C51内部的定时器来控制投币时间,在规定的时间范围内完成投币动作,否则投入的货币全部退出。
由于本次设计主要是要体现从投币到操作最后到出货的过程,在设计中没有用到定时设置。
本次设计的货币累加是对判断P3.4上的按键上所按下的次数进行累加来实现的,并将累加的次数送到寄存器B,然后系统根据投币的总数和相应的操作来实现输出。
3.5LCD显示
本次设计选用TC1602液晶显示屏,可以直接跟51系列单片接口相连。
液晶模块TC1602采用标准的16脚接口,作用是显示主控系统面值,如图3-6所示。
图3-6TC1602液晶显示屏图
其引脚功能如下
第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。
第四章系统软件设计
4.1程序流程图
4.1.1货物选择程序如图
图4-1
4.1.2投币流程图
投币装置流程图如图
图4-2
4.1.3出货系统
本设计中,设置了价格分别为2元、3元、4元不等的货物,一共3种。
在通过按键选择物品后,将会把产生的信号输入给89C51的P1的引脚上,89C51接收信号后,经过处理后,将会在货物输出端产生与其相对应的信号输出,控制所选货物的掉出。
本次设计用P1.0~P1.2作为货物的输出端,在货物的输出端采用光电隔离技术,对于光电隔离技术这里不做介绍,在这里用一个LED指示灯代替货物的掉出情况,若有货物掉出则对应输出口为高电平,则指示灯亮,反之指示灯不亮。
如图4-2出货设计流程图
4.1.4找零系统
本次设计中采用P1.3~P1.6口作为找零输出口,P1.3~P1.6分别对应1元找零口、2元找零口、2元找零口、5元找零口。
这样设计的目的是方便实现不同数额的找零输出。
同出货系统一样,找钱系统也用LED指示灯来表示找零,对应的端口上若指示灯亮则表示有零钱掉出。
找零装置流程图4-3
找零装置流程图
4.2程序设计
ORG0000H
LJMPSTART
ORG000BH
LJMPSERVE0
ORG001BH
LJMPSERVE1
ORG0030H
START:
LCALLINITIAL;
数据初始化
KEY:
JNBP1.3,FILL;
扫描按键,若有按键按下,则跳到
相应处理子程序,否则继续扫描按
键
JNBP1.5,PM0
JNBP1.6,PM1
JNBP1.7,PM2
JNBP1.0,PM3
JNBP1.1,PM4
JNBP1.2,PM5
JNBP1.4,PM6
AJMPKEY
FILL:
LCALLD20MS;
20ms延时
JBP1.3,START;
再次检查按键,若按键弹起,则表
示此次按键无效,继续扫描按键
JNBP1.3,$;
按键按下时,原地等待按键弹起
20ms延时,去除按键弹起抖动
MOV20H,#10;
商品装货,三种各10瓶
MOV21H,#10
MOV22H,#10
MOV25H,#0
CLRP3.1;
无货指示灯熄灭
PM0:
LJMPROUT0
PM1:
LJMPROUT1
PM2:
LJMPROUT2
PM3:
LJMPROUT3
PM4:
LJMPROUT4
PM5:
LJMPROUT5
PM6:
LJMPROUT6
ROUT0:
投5角
JBP1.5,KEY0
JNBP1.5,$
LCALLD20MS
MOV32H,30H;
总金额寄存保护
MOV33H,31H
MOV27H,#100;
设置退币指示灯延时10s亮开始
计时
CLRP3.0;
熄灭投币不足指示灯
MOVA,31H
ADDA,#5;
总金额角位加5
CJNEA,#10,CMP0
MOVA,#0;
角位为10角时,元位加1元,
同时角位清零
INC30H
CMP0:
MOV31H,A
KEY0:
MOVA,30H
CJNEA,#100,NEXT0
NEXT1:
MOV30H,32H
MOV31H,33H
SETBP3.3
MOV28H,#30
AJMPNEXT2
NEXT0:
JNCNEXT1
NEXT2:
LJMPKEY
ROUT1:
投1元
JBP1.6,KEY1
JNBP1.6,$
MOV27H,#100
CLRP3.0
INC30H;
总金额元位加1
KEY1:
CJNEA,#100,NEXT3
NEXT4:
AJMPNEXT5
NEXT3:
JNCNEXT4
NEXT5:
ROUT2:
投5元
JBP1.7,KEY2
JNBP1.7,$
总金额元位加5
MOV30H,A
KEY2:
CJNEA,#100,NEXT6
NEXT7:
AJMPNEXT8
NEXT6:
JNCNEXT7
NEXT8:
ROUT3:
购买可乐
JBP1.0,KEY3
JNBP1.0,$
设置退币指示灯延时10s亮开始计时
MOVA,20H
JZEMPTY3;
判断可乐是否有货,无货则跳转
MOVA,30H;
判断总金额是否够买可乐
CJNEA,#2,CMP3;
总金额元位为2,则跳转
MOVA,31H;
角位为0,则跳转,即投币不足
JZLACK3
SJMPLP3
CMP3:
JCLACK3;
元位小于2,则跳转,即投币不足
LP3:
MOVA,31H
JZFG3
MOV31H,#0;
角位为5时,则购买可乐后,角位
清零
SJMPCJ3
FG3:
DEC30H;
角位为0时,则向元位借1元,
角位则为5,元位自减1元
MOV31H,#5
CJ3:
SUBBA,#2;
元位减2
DEC20H;
可乐数量