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

目录

一、自动售货机的控制子系统概述

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

1 自动售货机的功能概述

2 自动售货机的设计思路

三、自动售货机的硬件设计

1. 80C51的简介

(1) 80C51的基本概述

(2)80C51的引脚功能介绍

2. LCD1602字符型液晶简介

(1) LCD1602的概述

(2)LCD1602的硬件结构

(3)LCD1602液晶模块的读写指令:

3.矩阵键盘简介

(1)矩阵键盘的概述

(2)4×4矩阵键盘的硬件结构

4.货币识别系统

(1)对硬币的识别

(2)对纸币的识别

5 货物选择系统

6 出货及找零系统


一、自动售货机的控制子系统概述

自动售货机的控制子系统由以下几个部分组成,分别是预设自动售货系统、金额累加和找零系统、售完检测系统、售出累计及反馈功能系统。

  • 预设自动售货机系统:自动售货机出售的商品可分为若干个品种,在其售前设定价格时必须预先寄存在控制系统内。设定的方式原理:商品的价格设置由按键和存储器组成,通过按键选择被设价商品的种类及价格,并将设定的价格写入存储器中,存储器本身需具有断电保护记忆功能,此为采用软件。此外,如果在自动售货机中,在出售商品的种类少,价格变化小,使用币种单一的情况下,也可以用比较简单的价格设定方法----硬件设置,即采用拨码开关对应的方式设置。
  • 金额累加和找零系统:控制系统的核心CPU对识币、退币、无货检验及购货信号进行循环检查。如果顾客投入货币,识币器检测到货币信号后,通过通信系统把识别的货币数值信号送入累计存储器器中进行累加计数。要是货币数值满足购货需求则通过串行接口提示购货,售货机则通过并行扩展接口驱动电磁阀或者微电机驱动送出货物,同时存储器计数清零跳入到找零系统,自动售货完成。如果货币数值不满足购货需求则提示顾客继续投币或者取消购货,取消购货后由售货机退出投入的货币返回初始化界面。
  • 货物检测系统:为了货物供应充足,把接触开关和行程开关安装在自动售货机货物存储存道的下方,当存储存道尚有货物时,行程开关保持闭合,CPU控制自动售货机正常售货。货物供应不足的时候,行程开关自动断开,向CPU发出缺货信号,经过检测后发送到外部电机或者电磁阀来推动外部货物进入存储道达到自动添加货物的目的,以保持货源充足。
  • 售出累计及反馈功能系统:自动售货机的CPU在每次售出一种货物后,由通信系统向出货存储器中累计已经售出的数据,通过自动售货机内部控制的按键可以显示出累计数据以掌握销售情况。此外,由外部按键操作在按下自测功能键后,出现自测功能信号,可以通过检测结果查看各个模块的功能情况,也可以检测自动售货机的货物存储道驱动功能。

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

1 自动售货机的功能概述

基本原理:通过矩阵键盘来选择货物的种类与数量过后自动售货机提示投币。自动售货机的货币识别器对所投货币进行识别,根据金额大小然后将商品选择权通过LCD液晶显示给客户,客户按键选择后,CPU控制芯片发出指令将所选择商品从储备料道中送达取物口。

功能描述:货物种类一共设有8种,这8种商品通过选择按键进行选择确认,通过数量选择按键确定购买数量,价格规定为1-8元不等;货币识别器能够识别1元硬币、1元纸币、5元纸币、10元纸币、20元纸币50元纸币以及100元纸币。在规定的时间内,投了几次货币后,货币能够实现自动累加功能,这样设计会把投入的所有货币总额数目数据传递到中央控制元器件进行处理;在超过规定时间后投币口自动关闭,数据处理单元按照投币总数和购买的数量和价格乘积来进行加减运算累,实现购买和找币功能。当投入的货币总值小于商品总金额时,则不能进行购货,投入的钱将全部退还。

 本设计中有一共有16个按键选择,其中有两个是货物选择键,有两个是数量选择键,此外还有6个货币投入键1个确认键和1个取消键。

2 自动售货机的设计思路

  • 本设计以这样的工作流程开始自动售货机的自动售货过程:
  1. 启动系统,开始待机;
  2. 顾客通过按键选择商品的种类以及数量并确认;
  3. 售货机检查是否有足够的货物并通过LCD提示等待顾客投币;
  4. 顾客投入货币,售货机自动检测金额是否足够;
  5. 金额足够多,售货机将推出顾客选择的相应数量的商品,若金额不足则直接退还货币;
  6. 推出商品,售货机转入找零系统退出余币;
  7. 系统自动复位,完成售货;
  • 系统采用硬件设计思路:
  1. 采用单片机80C51作CPU
  2. 采用P3.5口作为投币的输入端;
  3. 采用LCD1602液晶为显示模块:
  4. 采用4*4矩阵键盘连接P1口作为货物选择选择端;
  5. 采用P0口实现出货、找零功能;

  • 硬件端口的选择思路:
  1. 输入:由于本设计模拟输入功能是由4*4矩阵键盘来完成的,而键盘连接在80C51的P1口上,则货币投入设定为:

P1口的按键值为0X04的时候代表1元货币的投入;

P1口的按键值为0X05的时候代表5元货币的投入;

P1口的按键值为0X06的时候代表10元货币的投入;

P1口的按键值为0X07的时候代表20元货币的投入;

P1口的按键值为0X08的时候代表50元货币的投入;

P1口的按键值为0X09的时候代表100元货币的投入;

P1口的按键值为0X0f的时候代表购物确定“OK”按钮;

P1口的按键值为0X0e的时候代表购物取消“NO”按钮;

本设计假定自动售货机的商品种类为8种,价格为1、2、3、4、5、6、7、8元。每一个价格代表一种商品且一经售出就由外部电机自动完成补货。规定每次最多只能购买10个。货物选择:

P1口的按键值为OX00的时候代表选择货物价格“price+”;

P1口的按键值为OX01的时候代表选择货物价格“price-”;

P1口的按键值为OX02的时候代表选择货物数量“num+”;

P1口的按键值为OX03的时候代表选择货物价格“num-”;

  1. 输出:选择商品由P0口控制的相应LED指示灯:

选择商品1用P0.0控制D1LED灯亮;

选择商品2用P0.1控制D2LED灯亮;

选择商品3用P0.2控制D3LED灯亮;

选择商品4用P0.3控制D4LED灯亮;

选择商品5用P0.4控制D5LED灯亮;

选择商品6用P0.5控制D6LED灯亮;

选择商品7用P0.6控制D7LED灯亮;

选择商品8用P0.7控制D8LED灯亮;

  1. 示:本设计的显示端口由P2端口和P3.2(RS)、P3.3(RW)、P3.4(E)控制LCD1602液晶来显示购货状态,用P0口控制LED灯表示货物种类。通过它可以显示购货的种类、数量、总价以及找零等。

三、自动售货机的硬件设计

1. 80C51的简介

(1) 80C51的基本概述

由INTEL公司出品的MCS-51系列的80C51其实用性非常高。由于它是采用CHMOS的工艺技术制造,所以它是一款稳定性很高的高性能8位单片机,是HCMOS中的最基本的产品之一。在制作工艺的程中不仅继承和扩展了先前单片机的指令系统和体系结构更是把HMOS的高速高密度的技术特点和CHMOS的低功耗特点相结合。为了满足需求,在80C51内部置入CPU、RAM(128字节)、I/O(32个双向输入输出)、定时器/计数器(16位)、串行通信口、两级中断结构以及片内时钟震荡电路。此外,它还可以通过选择空闲和掉电的方式用于低功耗模式来进行工作,空闲模式下保持串行口、中断系统、RAM和定时器正常工作而同时冻结CPU来保证其正常运行。掉电模式下,自动保存RAM数据,时钟震荡停止、芯片的其他功能停止工作。

(2)80C51的引脚功能介绍

80C51单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。

  • 电源:
  1. VCC - 芯片电源,接+5V;
  2. VSS - 接地端。
  • 时钟:XTAL1、XTAL2晶体振荡电路反相输入端和输出端。
  • 控制线:控制线共有4根:
  1. ALE/PROG:地址锁存允许/片内EPROM编程脉冲
  1. ALE功能用来锁存P0口送出的低8位地址;
  2. PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
  1. PSEN:外ROM读选通信号。
  1. RST/VPD(复位/备用电源):
  1. RST(Reset)功能是复位信号输入端;
  2. VPD功能是在Vcc掉电情况下,接备用电源。
  1. EA/Vpp(内外ROM选择/片内EPROM编程电源):
  1. EA功能:内外ROM选择端;
  2. 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端逐渐降低电压直到变为低电平,从而使单片机开始正常工作。由于自动售货机的功能需求,本次设计采用自动上电复位电路。 

2. LCD1602字符型液晶简介

(1) LCD1602的概述

LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用。根据显示内容可以分为字符型液晶,图形液晶。根据显示容量又可以分为单行16字,2行16字,两行20字等等。

(2)LCD1602的硬件结构

引脚说明:LCD1602一般是16个引脚

第1脚:VSS为接地电源。

第2脚:VDD接5V正电源。

第3脚:VEE为液晶显示器对比度调整端,通过连接电源正负来调节对比度的强弱。当连接电源正端时对比度最弱,反之连接负极则最高。对比度太高时会产生所谓的“鬼影”,在连接时可以通过接一个电位器来调整对比度。

第4脚:RS为数据命令选择端,电平为H时选择数据寄存器、电平为L时选择指令寄存器。

第5脚:RW为读写选择端,电平为H时进行读操作,电平为L时进行写操作。

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

第7~14脚:D0~D7为8位双向数据线。

第15~16脚:空脚或背灯电源,15脚背光正极,16脚背光负极。

(3)LCD1602液晶模块的读写指令:

  1. 指令1:清除显示,指令码为01H,清楚显示数据;
  2. 指令2:光标返回到地址00H即光标复位;
  3. 指令3:光标和显示位置设置,光标按方向移动,高/低电平右/左移,S:屏幕上所有文字是否左移或右移,高电平移动,低电平不移动;
  4. 指令4:显示开关控制D:控制整体的显示开与关,高电平表示开显示,低电平表示关显示。C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁;
  5. 指令5:光标或显示移位 S/C :高电平时显示移动的文字,低电平时移动光标;
  6. 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时为双行显示,F:低电平时显示5X7的点阵字符,高电平时显示5X10的显示字符;
  7. 指令7:字符发生器RAM地址设置;
  8. 指令8:DDRAM地址设置;
  9. 指令9:读忙信号和光标地址BF:忙标志位,高电平表示忙,此时模块不能接收命令或数据,如果为低电平表示不忙;

3.矩阵键盘简介

(1)矩阵键盘的概述

4*4矩阵键盘又是4*4行列键盘,它是分别用4条I/O线作为行线和列线组成的键盘。每个键的位置设置在每条行线和列线在交叉处上,可以知道4*4矩阵键盘共有4*4=16个按键。这样的设置可以有效地提高单片机I/O口的利用率,与独立式按键相比大大降低了接口占用率。当设计过程中需要按键个数要求比较大时,为了释放出I/O端口来供其他连接需要时往往采用这种矩阵式按键来解决问题。在矩阵键盘中,行列线均通过一个按键加以连接取代了直接交叉相连。这样,在很大的程度上增加了按键数,而直接将端口线连接在键盘上则会减少一倍的按键数量。在需要很多按键的设计中采用矩阵键盘明显地比独立式按键更合理,而且行列线越多效果越明显。

(2)4×4矩阵键盘的硬件结构

在应用矩阵键盘的设计中要编译程序的时候必定会计算出每个按键的接口地址是多少以方便编译,在矩阵键盘的按键确定上我们可以采用两种方法:

  • 行扫描法:

行扫描法是我们常用的一种识别按键的方法,这种方法需要我们逐行逐列进行扫描查询,分为两个步骤:

  1. 将连接的全部行线置为低电平,然后检测所有列线的电位状态。只要某一列列线电位为低电平,就表示矩阵键盘中这列有键被按下,并且在被按下的闭合的按键在低电平列线与全部根行线相交叉的4个按键之中。反之,若所有列线电位均为高电平,则表示矩阵键盘中没有按键被按下;
  2. 通过前一可知按键处在判断的4个按键之中,在确认了有按键被按下后,就可进入到确定具体被闭合键的操作。然后再依次将所有行线电位置为低电平,即只有一根行线为低电平,其余行线则为高电平。在确定了某根行线电位为低电平后,再逐行检测所有列线的电平状态。若某根列线的电位为低电平,则被按下的按键就处在这根列线和低电平行线的交叉处;
  • 高低电平翻转法:

这种确定矩阵键盘按键的方法也是非常有效的方法,也分为两个步骤:

  1. 先让所连接的端口高四位为高(1),低四位为低(0),若矩阵键盘上有按键被按下,则高四位中会有一个电平从1被翻转到0,低四位则不会改变电平状态,然后即可确定矩阵键盘上被按下的按键的所在行的具体位置;
  2. 让让所连接的端口高四位为低(0),低四位为高(1)。若矩阵键盘上有按键被按下,则低四位中会会有一个电平1翻被转为0,高四位则不会改变电平状态,然后即可确定矩阵键盘上被按下的按键的所在列的具体位置。综合这两个步骤就可以判断出被按下的按键具体位置;

4.货币识别系统

(1)对硬币的识别

目前在国内,对于硬币的识别可采用多种方法,比如激光扫描、应变片测重量、光电管检测大小等,然而在自动售货机中采用结构简单、成本低、测量准确及其非接触测量等优点集一身的涡流传感器检测。

电涡流检测原理:以高频的电信号通过一个线圈,在这个过程中产生变化的磁场通过硬币的表面即变化磁通通过硬币的表面,相应地硬币表面上产生电涡流, 并产生反向的变化磁场,以削弱原来线圈产生出来的磁场。然后根据激励磁场线圈幅值的变化,通过变化的给定值即可测出真假硬币。

图3.7中Q2所需要的频率由Q1、L、C4等元件组成的振荡电路所提供,从而在C点产生一正弦波振荡信号;然后再A、B 两点外接一个传感线圈,当有硬币投入通过线圈时会改变C点原有信号的幅值大小,而真假硬币通过线圈时改变的幅值大小是不一样的,通过对比设定给定真币的参照值来判断真假硬币。

但是在实际应用中,由于某些条件的原因会影响到电子线路元器件的判定值,比如温漂的影响,由于材质的差异比较小,从而导致信号值得差距变小,若受到的温漂影响稍微增强一点,那么则很难精确地确检测出假币,为此可以采用电桥的方法来进行改善弥补,从而减小由温漂造成的干扰。图中L3、L4都是激励线圈,L3上方放置一个标准的1元硬币或其它用低碳钢做成的圆片,L4为检测有无硬币通过和是否为真假币的激励线圈,A、B两信号通过通信模块同时送到后续的运算放大器之中进行相减,从而抵消因温漂所造成的影响。

(2)对纸币的识别

我们知道,在硬件数据采集设备中的电源为发光二极光,所发出光的波长峰值在红外线所在的波段,但又不是单光谱,其中红外光成分达到90%以上,因此,光源辐射光中起主要作用的实际上是红外辐射。实验中对各种纸币的特征的识别也主要是根据纸币的表面特征对红外辐射的敏感。这主要是因为不同的纸币表面特征不同,所以在相同的光辐射照耀下会呈现不同的反映,从而可以从以下几个方面来鉴别纸币:

  • 钞票的纸张材料是特定的,所以同一种面值的钞票在特性上具有一定程度的相同,可以设定这个面值的真币来作为参考;
  • 钞票表面的图案异同,对于同种面值的真钞而言,其表面的图案应该完全相同,而不同面值的真钞表面刻印的图案有较大区别,所以可以根据上述的光辐射理论来判定,也可以根据它们对相同光辐射的不同反映来判断面值归属;
  • 因为钞票在市场的使用过程中会出现不同程度的磨损或者沾染上污垢,这种情况下的钞票表面的特征会发生直接的改变,接受光辐射的特性就会相应地产生变化。因此,光辐射可以反映出钞票的新旧程度;
  • 相对于伪币,因为伪币的纸张特性很难满足真钞要求,而且伪币中某些图案达不到真钞的实际标准,如水印是在造纸过程中通过特征工艺抄制上去的无色图案,而伪钞的水印则是通过一定方式轧印或描绘上去的等等,这都能在钞票对光辐射接受的信息中反映出来。本系统中采用发光二极管作为光源,所发出的光的波长峰值在红外波段,并且有90%以上是红外线,但不是单光谱,还有其它光谱范围的光线。接受管使用NPN型的光电三极管,工作在红外波长范围内,发射管和接受管分别有6个,采用光的透射方式,采集数据时,完全对应位于钞票的两侧,可以做到精确检测。但是光辐射在传输过程中,会受外界环境的影响而产生能量损失。比如经过大气传输时,就会受到大气成分的吸收,而在不同的环境条件下,大气的成分含量有某些程度的变化,因而导致能量损失的程度不同。所以光辐射到钞票介质的传输距离越短,所造成的能量损失的影响就越微小,如果硬件的性能较好,外界的这种影响可以不予考虑。

当货币投入后经过识别,识别出信号后,伪币和异物被排出真币按面值由几组分配电磁阀分配到不同存币腔体内备用。当收到退币找零电信号后,通过退币电磁阀或者退币电机拉杆,将存币腔内下部依电信号程序退出,完成自动售货机的退币找零功能。

5 货物选择系统

货物选择系统主要通过矩阵键盘按键操作来完成。4*4矩阵键盘是自动售货机中的输入装置,价格低廉,结构简单,使用方便,在单片机应用系统中得到广泛地应用。键盘按照接口原理可分为编码键盘与非编码键盘两类,它们的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。

CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。

一个完整的矩阵键盘控制程序应该具备以下功能:

  • 能够准确检测键盘上有无按键按下,为了消除键盘的按键机械触点抖动可以采取硬件或软件措施;
  • 有良好的逻辑处理方法,按键处理可以独立开展,在处理期间对任何一个按键的操作不对系统产生影响,只要按键按下系统都只执行一次按键功能程序;
  • 输出的按键值或者键号可以达到很精确的状态来正确执行跳转指令;

6 出货及找零系统

在本系统中,总共设计了8种饮料,价格分别为1、2、3、4、5、6、7、8元不等,由顾客通过按键选择确定后,投入售货机可识别的货币(货币可以累加计数)。当投入的货币总值不够购买选择的商品总值时,售货机显示金取消交易并退出所投货币,如果所投货币大于等于购买选择的商品总值时,由售货机出货并计算剩余货币。但是在单片机的输出中只有高电平和低电平之分。在自动售货机中只需要安装一个驱动电机,待顾客投入货币后将信号送入系统通过相应电路来驱动电机推出相应商品即可。本设计只模拟实现此功能,负责软件仿真,暂不考虑硬件电机方面,只作介绍。在这里,我们选用光敏三极管来实现这一功能。当单片机输出端为高电平时,则驱动二极管发光,使驱动电机电路导通,这时驱动电机开始工作等待信号。当单片机输出端为低电平时,则二极管熄灭。驱动电机电路断开,即完成推货动作,LED灯闪烁。售货机通过投币时累计的计数和购买商品的总金额进行相减的运算,在LCD液晶上显示出余币的数量,顾客取走货物后自动退还余币。

  • 3
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

下饭的王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值