摘 要
自动售货机是自动化技术在人们生活中的重要应用。随着人们生活质量的不断提高,对自动售货机的性能要求越来越高。自动售货机的主要功能是通过人机对话的形式完成自动售货这一过程。
本文设计了一款以INTEL公司出品的80C51单片机为核心的自动售货机,并且着重详细地介绍了自动售货机的整体系统设计方案、硬件选择基础、软件使用方法及技巧。以80C51作为CPU处理单元连接各个功能模块;以4*4矩阵键盘作为输入控制模块对货物进行种类和数量的选择以及模拟货币的投入功能;以LCD1602液晶作为显示模块来显示当前的购物状态以及货币状态;以LED的显示来表示当前选择货物以及出货的状态。通过Protues7.5单片机电路原理图进行连接布线连接各个模块;再用Keil uVision3专业编译软件完成源程序编译和调试,最终进行自动售货机的实验电路仿真来模拟自动售货。结合工作原理、系统设计、软件编译和实验仿真来实现自动售货这一相关功能。
关键词 自动售货机,80C51单片机,编译仿真
2 自动售货机的系统结构
2.1 自动售货机的系统概述
2.1.1 自动售货机的系统结构
自动售货机是集光、机、电一体化的自动售货装置,能够独立完成自动售货这一功能。
自动售货机的工作原理是:在初始化的界面等待顾客按键选择货物的种类和数量顾客投入货币,按下确定购买键后等待售货机自动计算所购商品的总价,然后提示顾客投入货币。所投的货币经过外部硬件检测传感器检测真假后累加计数。若顾客确认购买系统则跳转到下一步骤,反之取消购买即退出货币返回到主界面,等待顾客下一步操作。自动售货机通过货币的总价与和所购商品的总价的差值来进行出货找零。总体工作原理如图2.1:
图2.1 自动售货机的总体工作原理图
2.1.2 自动售货机的控制子系统概述
自动售货机的控制子系统由以下几个部分组成,分别是预设自动售货系统、金额累加和找零系统、售完检测系统、售出累计及反馈功能系统。
① 预设自动售货机系统:自动售货机出售的商品可分为若干个品种,在其售前设定价格时必须预先寄存在控制系统内。设定的方式原理:商品的价格设置由按键和存储器组成,通过按键选择被设价商品的种类及价格,并将设定的价格写入存储器中,存储器本身需具有断电保护记忆功能,此为采用软件。此外,如果在自动售货机中,在出售商品的种类少,价格变化小,使用币种单一的情况下,也可以用比较简单的价格设定方法----硬件设置,即采用拨码开关对应的方式设置。
② 金额累加和找零系统:控制系统的核心CPU对识币、退币、无货检验及购货信号进行循环检查。如果顾客投入货币,识币器检测到货币信号后,通过通信系统把识别的货币数值信号送入累计存储器器中进行累加计数。要是货币数值满足购货需求则通过串行接口提示购货,售货机则通过并行扩展接口驱动电磁阀或者微电机驱动送出货物,同时存储器计数清零跳入到找零系统,自动售货完成。如果货币数值不满足购货需求则提示顾客继续投币或者取消购货,取消购货后由售货机退出投入的货币返回初始化界面。
③ 货物检测系统:为了货物供应充足,把接触开关和行程开关安装在自动售货机货物存储存道的下方,当存储存道尚有货物时,行程开关保持闭合,CPU控制自动售货机正常售货。货物供应不足的时候,行程开关自动断开,向CPU发出缺货信号,经过检测后发送到外部电机或者电磁阀来推动外部货物进入存储道达到自动添加货物的目的,以保持货源充足。
④ 售出累计及反馈功能系统:自动售货机的CPU在每次售出一种货物后,由通信系统向出货存储器中累计已经售出的数据,通过自动售货机内部控制的按键可以显示出累计数据以掌握销售情况。此外,由外部按键操作在按下自测功能键后,出现自测功能信号,可以通过检测结果查看各个模块的功能情况,也可以检测自动售货机的货物存储道驱动功能。
3 自动售货机的硬件设计
3.1 80C51的简介
3.1.1 80C51的基本概述
由INTEL公司出品的MCS-51系列的80C51其实用性非常高。由于它是采用CHMOS的工艺技术制造,所以它是一款稳定性很高的高性能8位单片机,是HCMOS中的最基本的产品之一。在制作工艺的程中不仅继承和扩展了先前单片机的指令系统和体系结构更是把HMOS的高速高密度的技术特点和CHMOS的低功耗特点相结合。为了满足需求,在80C51内部置入CPU、RAM(128字节)、I/O(32个双向输入输出)、定时器/计数器(16位)、串行通信口、两级中断结构以及片内时钟震荡电路。此外,它还可以通过选择空闲和掉电的方式用于低功耗模式来进行工作,空闲模式下保持串行口、中断系统、RAM和定时器正常工作而同时冻结CPU来保证其正常运行。掉电模式下,自动保存RAM数据,时钟震荡停止、芯片的其他功能停止工作。
图3.1 80C51单片机内部基本结构
3.1.2 80C51的引脚功能介绍
图3.2 80C51的引脚图
80C51单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。
① 电源:
1)VCC - 芯片电源,接+5V;
2)VSS - 接地端。
② 时钟:XTAL1、XTAL2晶体振荡电路反相输入端和输出端。
③ 控制线:控制线共有4根:
1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲
a.ALE功能用来锁存P0口送出的低8位地址;
b.PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
2)PSEN:外ROM读选通信号。
3)RST/VPD(复位/备用电源):
a.RST(Reset)功能是复位信号输入端;
b.VPD功能是在Vcc掉电情况下,接备用电源。
4)EA/Vpp(内外ROM选择/片内EPROM编程电源):
a.EA功能:内外ROM选择端;
b.Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
④ I/O线:80C51共有4个8位并行I/O端口即P0、P1、P2、P3口,共32个引脚;P3口还具有第二功能——用于特殊信号输入输出和控制信号(属控制总线)P0口输入时需要接上拉电阻才能置1。
在每次使用单片机之前,我们都要使单片机复位,让CPU以及其他功能部件都处于一个确定的初始状态,以消除上一次用户的操作对本次用户操作的影响。51的RST引脚是复位信号的输入端。复位信号是高电平有效,持续时间要有24个时钟周期以上。例如:若MCS-51单片机的时钟频率为12MHz,则复位脉冲宽度至少应为2us。通常,80C51的复位有自动上电复位和人工按纽复位两种
自动上电复位电路的工作原理是:电容在通电的时候相当于短路情况,导致RST引脚上的电位为高电平,这样电容会因为电阻被充电,然后RST端逐渐降低电压直到变为低电平,从而使单片机开始正常工作。由于自动售货机的功能需求,本次设计采用自动上电复位电路。
4 系统的软件流程图设计
4.1 自动售货机货物选择流程图
本设计提供1-8元不等的货物,分别用1-8的序号对应货物。当启动系统后进入初始化界面,等待顾客选择货物种类和数量,按键“OK”则跳入投币系统,按键“NO”则返回初始化等待界面。在这里只以1号商品作为例子来讲解具体流程如图4.1:
图4.1 自动售货机货物选择流程图
5.仿真结果
设计好程序之后,还需要通过protues7.5和keil3.0来实现程序的调试和仿真,仿真结果图如下:
① 当启动自动售货机时机器进入初始化等待状态,等待按键输入,如图5.1所示:
图5.1 初始化等待界面
② 通过按键price+和price-来选择货物的种类,然后通过num+和num-来选择所购买货物的数量,同时代表被选择货物的LED指示灯亮,如图5.2所示:
图5.2 选择货物的种类及数量
③ 当选择好货物后,按下“OK”键进入到投币系统,此时机器会自动计算出所购货物总金额,如图5.3所示:
图5.3 货物选择并计价
④ 当机器计算出总价等待顾客投入货币并按下“OK”键后,当投入货币货币值大于或等于总价时就出货并找零,若投入货币货币值小于总价则不能出货只能按下“NO”退出所投货币或继续投币,如图5.4所示:
图5.4 出货找零
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。