基于单片机的自动售货机

更新时间:2024-06-02 11:24:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

攀枝花学院本科毕业设计(论文) 摘 要

摘 要

自动售货机是自动化技术在人们生活中的重要应用。随着人们生活质量的不断提高,对自动售货机的性能要求越来越高。自动售货机的主要功能是通过人机对话的形式完成自动售货这一过程。

本文设计了一款以INTEL公司出品的80C51单片机为核心的自动售货机,并且着重详细地介绍了自动售货机的整体系统设计方案、硬件选择基础、软件使用方法及技巧。以80C51作为CPU处理单元连接各个功能模块;以4*4矩阵键盘作为输入控制模块对货物进行种类和数量的选择以及模拟货币的投入功能;以LCD1602液晶作为显示模块来显示当前的购物状态以及货币状态;以LED的显示来表示当前选择货物以及出货的状态。通过Protues7.5单片机电路原理图进行连接布线连接各个模块;再用Keil uVision3专业编译软件完成源程序编译和调试,最终进行自动售货机的实验电路仿真来模拟自动售货。结合工作原理、系统设计、软件编译和实验仿真来实现自动售货这一相关功能。

关键词 自动售货机,80C51单片机,编译仿真

I

攀枝花学院本科毕业设计(论文) ABSTRACT

ABSTRACT

The automatically vending machine is provided the the the important applications of the automation technology in people's lives. With the continuous improvement of people's quality of life, the increasingly high performance requirements of vending machines. Vending machines The main function of the form of man-machine dialogue vending this process.

The designed a produced by Intel 80C51 microcontroller as the core vending machines, and emphasizes the detailed description of the overall system design of the vending machines, hardware options, software and the use of methods and techniques. As 80C51 CPU processing unit connected to the various functional modules; 4 * 4 matrix keyboard as an input control module of goods, the choice of the type and number of input and analog currency; LCD1602 LCD as the display module to display the current state of shopping as well as currency state; LED display indicates the current selection of goods and shipment status. By the Protues7.5 microcontroller circuit diagram connecting wiring each module; complete source code to compile and debug then the Keil uVision3 professional compiler software, eventually vending machine experiment circuit simulation to simulate the automatic vending. Combined with the working principle, system design, software compiler and experimental simulation to achieve automatic vending related functions.

Keywords automatic vending machine, 80C51 MCU, compiled simulation

II

攀枝花学院本科毕业设计(论文) 目 录

目 录

摘 要 ................................................................................................................................. I ABSTRACT .......................................................................................................................... II

1 绪论 ............................................................................................................................... 1

1.1 课题的研究背景及意义 ............................................................................................. 1 1.2 国内外现状及发展趋势 ............................................................................................. 1 1.3 本课题研究的主要内容 ............................................................................................. 2

2 自动售货机的系统结构 ............................................................................................... 4

2.1 自动售货机的系统概述 ............................................................................................. 4 2.1.1 自动售货机的系统结构 ....................................................................................... 4 2.1.2 自动售货机的控制子系统概述 ............................................................................ 4 2.2 自动售货机的功能简介 ............................................................................................. 5 2.2.1 自动售货机的功能概述 ....................................................................................... 5 2.2.2 自动售货机的设计思路 ....................................................................................... 6

3 自动售货机的硬件设计 ............................................................................................... 8

3.1 80C51的简介 ............................................................................................................ 8 3.1.1 80C51的基本概述............................................................................................... 8 3.1.2 80C51的引脚功能介绍........................................................................................ 8 3.2 LCD1602字符型液晶简介 ......................................................................................... 10 3.2.1 LCD1602的概述 ................................................................................................ 10 3.2.2 LCD1602的硬件结构 ......................................................................................... 10 3.2.3 LCD1602的指令说明 ......................................................................................... 11 3.2.4 LCD1602的基本时序操作 .................................................................................. 13 3.3 4*4矩阵键盘简介 ................................................................................................... 15 3.3.1 4*4矩阵键盘的概述 ......................................................................................... 15 3.3.2 4×4矩阵键盘的硬件结构 ................................................................................ 15 3.4 货币识别系统.......................................................................................................... 16 3.4.1 对硬币的识别 ................................................................................................... 16 3.4.2 对纸币的识别 ................................................................................................... 17 3.5 货物选择系统.......................................................................................................... 18 3.6 出货及找零系统 ...................................................................................................... 19

III

攀枝花学院本科毕业设计(论文) 目 录

4 系统的软件流程图设计 ............................................................................................. 21

4.1 自动售货机货物选择流程图 .................................................................................... 21 4.2 自动售货机投币系统流程图 .................................................................................... 21 4.3 自动售货机出货找零系统流程图 ............................................................................. 22

5 系统软件仿真 ............................................................................................................. 24

5.1 PROTEUS的简介 ....................................................................................................... 24 5.2 仿真结果 ................................................................................................................. 25

6 结论 ............................................................................................................................. 28 参考文献 ......................................................................................................................... 29 附录A:C源程序 ........................................................................................................... 30 附录B:系统总图 .......................................................................................................... 42 致谢 ................................................................................................................................. 43

IV

攀枝花学院本科毕业设计(论文) 1 绪论

1 绪论

1.1 课题的研究背景及意义

如今,在全世界范围内自动售货机方式多样灵活,例如实行联机方式,通过电话网络线路将自动售货机内的库存信息及时地传送各营业点的电脑中,目的就是为了保证自动售货机中的商品推送、商品选的定补充能够更加精确地进行。此外,自动售货机的开发从能源的节省的角度出发,生产制造了更加合理化的节能型饮料自动售货机。例如在夏季电力消费高峰期,这种机型的自动售货机能自动保持低温而不是靠打开冷却器来维持,与以往的老式自动售货机相比更加凸显了它的特点,它能够在达到相同的效果下节约更多的电力。这些充分说明了该行业为了自动售货机走向信息化并进一步实现合理化所作出的不懈努力。

进入21世纪后,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。面对当前快速商品社会的环境,人们的时间观念越来越重,如何才能更快地购买到顾客自己所需的商品,这都是顾客和商家共同面临的问题。随着科技的发展及人们生活水平的显著提高,自动售货机市场的发展越来越呈现出多元化及个性化的需求。通过自动售货机进行自助购物正逐渐成为市民的一种新的消费时尚。同时,这种快捷方便的购物方式也满足了人们在当今科技高速发展的现代社会追求高品质生活的需要。自动售货机在人群几种的区域如城市商业区、风景区、写字楼大厅、车站、码头、繁华街道等公共场所的布设能够美化亮化城市环境,方便群众生活,已经成为城市各角落的一道亮丽风景线。自动售货机已在国内普及,并成为城市现代文明程度的一种象征性标志。自动售货机作为自动化商业机械的代表被广泛应用于公共场所,它是我国生产技术机械化、智能化和自动化的体现。从广义来讲是投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。自动售货机的诞生完善了市政的建设,符合现代化建设的需要,提高了经济活动效率,节约劳动力,把有限的人力物力集中到其他资源上。

1.2 国内外现状及发展趋势

在我国国内,自动售货机在所谓的掀起了“第三次零售业革命”后已经成为

1

攀枝花学院本科毕业设计(论文) 1 绪论

了一个跻身于超市和百货商店之上的具有非常广阔的前景的新兴行业。从形式上的更新到内容上的丰富都带来了很大突破。因为受地域影响小,自动售货机售卖的商品种类可以根据不同的地区来具体供应,包括各种饮料、零食、电子产品、计生用品等都可以作为其销售的对象。并且,从这种智能自动销售系统中,我们可以很精确的读取货物库存、商品销量、物流详情等信息。让管理、销售人员更轻松地开展具体工作。此外,与老式的人为销售相比,自动售货机可以支持多种电子支付模式,比如用信用卡支付就能更方便地进行较大金额的交易支付、结算。在20世纪初,通过手机、英特网购物的消费方式在国内开始相继出现,因为这种需求的诞生,国内的相关公司已着手研制出此种类型的自动售货机。这样的新兴自动售货机在方便顾客消费购物的同时也充当着广告传播的新型媒介。

相较于中国,国外的自动售货机行业发展比较成熟和发达。例如从自动售货机的机型上来说,在日本国内就已经达到了2000多种。而且所售的商品种类已经高达6000多种。更是在由于无所不在的自动售货机为人们提供了24小时的服务而特别受欢迎。而在比较发达的美国,光是提供自动售货机服务的运营商就多达10800家,并且在与各大饮料、食品公司的合作基础上积累了想当多的经验。在英国,为了更具针对性解决投币的麻烦,一些信用机构和某些银行还量身制定了一种自动售货机卡,在购货的时候,用刷卡代替传统的投币从而能更方便快捷地进行购物。到2002年,占全国人口的20%以上的英国人都开通了这种自动售货机卡。自动售货机在国内外的受欢迎程度已经达到一个高度。

自动售货机在城市商业区、写字楼大厅、风景区、车站、码头、繁华街道等公共场所的布设能够美化亮化城市环境,方便群众生活,已经成为城市各角落的一道亮丽风景线。自动售货机已在国内普及,并成为城市现代文明程度的一种象征性标志。随着经济发展,传统的固定地点人员售货方式暴露出许多弊端:人力资源需求大;受所需服务地点,地理条件的限制;而且在服务时间上不能最大限度的服务于消费者。相信随着社会的发展,人们对于生活高效性的重实也会逐渐提高,自动售货机也会受到更多人的关注和喜爱。现在,自动售货机产业正走向信息化并进一步实现合理化。自动售货机的出现解决了这些难题,自动售货机必然朝着操作简单化、监控管理智能化、功耗节能化和性能多样化方面发展。

1.3 本课题研究的主要内容

本课题研究的是通过核心单片机80C51控制的自动售货机。涉及到用keil Uvision3来进行C语言程序的编译调试,通过protues7.5电路连接来设计系统电路。通过80C51与输入模块、输出显示模块、找零模块、显示模块的连接来系统

2

攀枝花学院本科毕业设计(论文) 1 绪论

模拟自动售货这一功能。设计从能根据投入的钱币自动售货的机器。用4*4矩阵键盘来模拟货物种类以及数量的选择,再通过键盘其他按键来模拟投币功能。用LCD1602作为输出显示模块,通过液晶显示来明确按键的功能以及自动售货机的购货状态等。用LED灯来表示货物的种类。因为货币识别功能是在自动售货机的外部硬件电路方面来加以具体实施的,而本设计是模拟自动售货机的功能,所以不考虑货币识别的模块设计,在这里只作原理介绍。

3

攀枝花学院本科毕业设计(论文) 2 自动售货机的系统结构

2 自动售货机的系统结构

2.1 自动售货机的系统概述

2.1.1 自动售货机的系统结构

自动售货机是集光、机、电一体化的自动售货装置,能够独立完成自动售货这一功能。

自动售货机的工作原理是:在初始化的界面等待顾客按键选择货物的种类和数量顾客投入货币,按下确定购买键后等待售货机自动计算所购商品的总价,然后提示顾客投入货币。所投的货币经过外部硬件检测传感器检测真假后累加计数。若顾客确认购买系统则跳转到下一步骤,反之取消购买即退出货币返回到主界面,等待顾客下一步操作。自动售货机通过货币的总价与和所购商品的总价的差值来进行出货找零。总体工作原理如图2.1:

图2.1 自动售货机的总体工作原理图

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

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

① 预设自动售货机系统:自动售货机出售的商品可分为若干个品种,在其

4

攀枝花学院本科毕业设计(论文) 2 自动售货机的系统结构

售前设定价格时必须预先寄存在控制系统内。设定的方式原理:商品的价格设置由按键和存储器组成,通过按键选择被设价商品的种类及价格,并将设定的价格写入存储器中,存储器本身需具有断电保护记忆功能,此为采用软件。此外,如果在自动售货机中,在出售商品的种类少,价格变化小,使用币种单一的情况下,也可以用比较简单的价格设定方法----硬件设置,即采用拨码开关对应的方式设置。

② 金额累加和找零系统:控制系统的核心CPU对识币、退币、无货检验及购货信号进行循环检查。如果顾客投入货币,识币器检测到货币信号后,通过通信系统把识别的货币数值信号送入累计存储器器中进行累加计数。要是货币数值满足购货需求则通过串行接口提示购货,售货机则通过并行扩展接口驱动电磁阀或者微电机驱动送出货物,同时存储器计数清零跳入到找零系统,自动售货完成。如果货币数值不满足购货需求则提示顾客继续投币或者取消购货,取消购货后由售货机退出投入的货币返回初始化界面。

③ 货物检测系统:为了货物供应充足,把接触开关和行程开关安装在自动售货机货物存储存道的下方,当存储存道尚有货物时,行程开关保持闭合,CPU控制自动售货机正常售货。货物供应不足的时候,行程开关自动断开,向CPU发出缺货信号,经过检测后发送到外部电机或者电磁阀来推动外部货物进入存储道达到自动添加货物的目的,以保持货源充足。

④ 售出累计及反馈功能系统:自动售货机的CPU在每次售出一种货物后,由通信系统向出货存储器中累计已经售出的数据,通过自动售货机内部控制的按键可以显示出累计数据以掌握销售情况。此外,由外部按键操作在按下自测功能键后,出现自测功能信号,可以通过检测结果查看各个模块的功能情况,也可以检测自动售货机的货物存储道驱动功能。

2.2 自动售货机的功能简介

2.2.1 自动售货机的功能概述

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

功能描述:货物种类一共设有8种,这8种商品通过选择按键进行选择确认,通过数量选择按键确定购买数量,价格规定为1-8元不等;货币识别器能够识别1元硬币、1元纸币、5元纸币、10元纸币、20元纸币50元纸币以及100元纸币。在规定的时间内,投了几次货币后,货币能够实现自动累加功能,这样设计会把投入的

5

攀枝花学院本科毕业设计(论文) 2 自动售货机的系统结构

所有货币总额数目数据传递到中央控制元器件进行处理;在超过规定时间后投币口自动关闭,数据处理单元按照投币总数和购买的数量和价格乘积来进行加减运算累,实现购买和找币功能。当投入的货币总值小于商品总金额时,则不能进行购货,投入的钱将全部退还。

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

2.2.2 自动售货机的设计思路

① 本设计以这样的工作流程开始自动售货机的自动售货过程: 1) 启动系统,开始待机;

2) 顾客通过按键选择商品的种类以及数量并确认;

3) 售货机检查是否有足够的货物并通过LCD提示等待顾客投币; 4) 顾客投入货币,售货机自动检测金额是否足够;

5) 金额足够多,售货机将推出顾客选择的相应数量的商品,若金额不足则直接退还货币;

6) 推出商品,售货机转入找零系统退出余币; 7) 系统自动复位,完成售货; ② 系统采用硬件设计思路如图2.3: 1) 采用单片机80C51作CPU; 2) 采用P3.5口作为投币的输入端; 3) 采用LCD1602液晶为显示模块:

4) 采用4*4矩阵键盘连接P1口作为货物选择选择端; 5) 采用P0口实现出货、找零功能;

图2.3 自动售货机系统原理图

③ 硬件端口的选择思路:

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

6

攀枝花学院本科毕业设计(论文) 2 自动售货机的系统结构

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-”; 2) 输出:选择商品由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灯亮;

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

7

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

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的引脚功能介绍

8

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

图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

9

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

个引脚;P3口还具有第二功能——用于特殊信号输入输出和控制信号(属控制总线)P0口输入时需要接上拉电阻才能置1。

在每次使用单片机之前,我们都要使单片机复位,让CPU以及其他功能部件都处于一个确定的初始状态,以消除上一次用户的操作对本次用户操作的影响。51的RST引脚是复位信号的输入端。复位信号是高电平有效,持续时间要有24个时钟周期以上。例如:若MCS-51单片机的时钟频率为12MHz,则复位脉冲宽度至少应为2us。通常,80C51的复位有自动上电复位和人工按纽复位两种

自动上电复位电路的工作原理是:电容在通电的时候相当于短路情况,导致RST引脚上的电位为高电平,这样电容会因为电阻被充电,然后RST端逐渐降低电压直到变为低电平,从而使单片机开始正常工作。由于自动售货机的功能需求,本次设计采用自动上电复位电路。

3.2 LCD1602字符型液晶简介

3.2.1 LCD1602的概述

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

3.2.2 LCD1602的硬件结构

10

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

图3.3 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.2.3 LCD1602的指令说明

① LCD1602的初始化设置: 1) 显示模式设置如表3.1所示:

11

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

表3.1 显示模式设置

2) 显示开/关及光标位置如表3.2所示:

表3.2 显示开/关及光标位置

② 数据控制:控制器内部设有一个数据地址指针,可以根据它来访问内部的全部字节。

1) 数据指针设置如表3.3所示:

表3.3 数据指针设置

2) 读数据:输入时 RW 、RS、 E均等于H,输出D0-D7=数据 3) 写数据:输入时RW=L、RS=H、D0-D7=数据、E=高脉冲,输出无; 4) 其他设置如表3.4所示:

表3.4 其他设置

12

攀枝花学院本科毕业设计(论文) 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.2.4 LCD1602的基本时序操作

LCD1602的基本时序操作以及对应的状态和输入输出如表3.5所示:

13

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

表3.5 基本时序操作及对应状态的输入输出

LCD1602的读写时序操作如图3.4、3.5所示:

图 3.4读时序操作图

14

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

图 3.5写时序操作图

3.3 4*4矩阵键盘简介

3.3.1 4*4矩阵键盘的概述

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

3.3.2 4×4矩阵键盘的硬件结构

图3.6 4*4矩阵键盘的基本结构图

15

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

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

① 行扫描法:

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

1) 将连接的全部行线置为低电平,然后检测所有列线的电位状态。只要某一列列线电位为低电平,就表示矩阵键盘中这列有键被按下,并且在被按下的闭合的按键在低电平列线与全部根行线相交叉的4个按键之中。反之,若所有列线电位均为高电平,则表示矩阵键盘中没有按键被按下;

2) 通过前一可知按键处在判断的4个按键之中,在确认了有按键被按下后,就可进入到确定具体被闭合键的操作。然后再依次将所有行线电位置为低电平,即只有一根行线为低电平,其余行线则为高电平。在确定了某根行线电位为低电平后,再逐行检测所有列线的电平状态。若某根列线的电位为低电平,则被按下的按键就处在这根列线和低电平行线的交叉处;

② 高低电平翻转法:

这种确定矩阵键盘按键的方法也是非常有效的方法,也分为两个步骤: 1) 先让所连接的端口高四位为高(1),低四位为低(0),若矩阵键盘上有按键被按下,则高四位中会有一个电平从1被翻转到0,低四位则不会改变电平状态,然后即可确定矩阵键盘上被按下的按键的所在行的具体位置;

2) 让让所连接的端口高四位为低(0),低四位为高(1)。若矩阵键盘上有按

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

3.4 货币识别系统

3.4.1对硬币的识别

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

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

16

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

图3.7 电涡流检测电路原理图

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

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

3.4.2对纸币的识别

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

① 钞票的纸张材料是特定的,所以同一种面值的钞票在特性上具有一定程度的相同,可以设定这个面值的真币来作为参考;

② 钞票表面的图案异同,对于同种面值的真钞而言,其表面的图案应该完全相同,而不同面值的真钞表面刻印的图案有较大区别,所以可以根据上述的光辐射理论来判定,也可以根据它们对相同光辐射的不同反映来判断面值归属;

③ 因为钞票在市场的使用过程中会出现不同程度的磨损或者沾染上

17

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

污垢,这种情况下的钞票表面的特征会发生直接的改变,接受光辐射的特性就会相应地产生变化。因此,光辐射可以反映出钞票的新旧程度;

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

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

3.5 货物选择系统

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

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

① 能够准确检测键盘上有无按键按下,为了消除键盘的按键机械触点抖动可以采取硬件或软件措施;

② 有良好的逻辑处理方法,按键处理可以独立开展,在处理期间对任何一个按键的操作不对系统产生影响,只要按键按下系统都只执行一次按键功能程序;

18

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

③ 输出的按键值或者键号可以达到很精确的状态来正确执行跳转指令;

图3.9 货物选择系统图

3.6 出货及找零系统

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

19

攀枝花学院本科毕业设计(论文) 3 自动售货机的硬件设计

图3.10 出货及找零

20

攀枝花学院本科毕业设计(论文) 4 系统的软件流程图设计

4 系统的软件流程图设计

4.1 自动售货机货物选择流程图

本设计提供1-8元不等的货物,分别用1-8的序号对应货物。当启动系统后进入初始化界面,等待顾客选择货物种类和数量,按键“OK”则跳入投币系统,按键“NO”则返回初始化等待界面。在这里只以1号商品作为例子来讲解具体流程如图4.1:

图4.1 自动售货机货物选择流程图

4.2 自动售货机投币系统流程图

在4*4矩阵键盘上模拟投入货币,若投入一种面值的货币就累加一种面值的货币,如果没有投入货币或者投入货币值不足购买商品的话则提示继续投币。当所投货币足够时,进入出货找零系统如图4.2所示:

21

攀枝花学院本科毕业设计(论文) 4 系统的软件流程图设计

图4.2 自动售货机投币系统流程图

4.3 自动售货机出货找零系统流程图

进入出货找零系统时,如果购买商品后没有剩余货币则直接推出商品,若还

22

攀枝花学院本科毕业设计(论文) 4 系统的软件流程图设计

有剩余货币则找出余币,如图4.3所示:

4.3 自动售货机出货找零系统流程图

23

攀枝花学院本科毕业设计(论文) 5 系统软件仿真

5 系统软件仿真

5.1 PROTEUS的简介

世界上著名的EDA仿真软件Protues拥有其自身的独立特点,例如从原理图布线图、代码调试到单片机与外围电路的协同仿真,一键切换到PCB设计,都能实现从概念设计到产品仿真的完整功能。同时也是目前世界上唯一能将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持的类型也非常广泛,例如8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,该软件在2010年又同时增加了Cortex和DSP系列处理器,并持续增加其他类型系列的处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能分别有:

① 原理布线图; ② PCB自动或人工布线; ③ SPICE电路仿真;

从软件的诞生到如今,Protues作出了很大的改革,这些改革使其成为如今最受欢迎的仿真软件之一:

1) 互动的电路仿真;

用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

2) 仿真处理器及其外围电路;

可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。

3) 丰富的器件库:超过27000种元器件,可方便地创建新元件; 4) 智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;

5) 智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;

6) 支持总线结构:使用总线器件和总线布线使电路设计简明清晰; 7) 可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用;

24

攀枝花学院本科毕业设计(论文) 5 系统软件仿真

5.2 仿真结果

设计好程序之后,还需要通过protues7.5和keil3.0来实现程序的调试和仿真,仿真结果图如下:

① 当启动自动售货机时机器进入初始化等待状态,等待按键输入,如图5.1所示:

图5.1 初始化等待界面

② 通过按键price+和price-来选择货物的种类,然后通过num+和num-来选择所购买货物的数量,同时代表被选择货物的LED指示灯亮,如图5.2所示:

图5.2 选择货物的种类及数量

25

攀枝花学院本科毕业设计(论文) 5 系统软件仿真

③ 当选择好货物后,按下“OK”键进入到投币系统,此时机器会自动计算出

所购货物总金额,如图5.3所示:

图5.3 货物选择并计价

④ 当机器计算出总价等待顾客投入货币并按下“OK”键后,当投入货币货币值大于或等于总价时就出货并找零,若投入货币货币值小于总价则不能出货只能按下“NO”退出所投货币或继续投币,如图5.4所示:

图5.4 出货找零

26

攀枝花学院本科毕业设计(论文) 5 系统软件仿真

⑤ 当完成以上步骤后则完成一次自动购物过程,机器自动复位回到初始化界面如图5.5所示:

图5.5 自动复位返回初始化界面

27

攀枝花学院本科毕业设计(论文) 6 结论

6 结论

本次自动售货机的设计主要通过单片机80c51作为中央处理原件在protues7.5中连接输入模块4*4矩阵键盘、输出模块LCD1602液晶显示和LED显示来进行系统调试仿真。通过keil3.0来实现程序的编译和调试,最终得到能正确完善地实现设计要求功能的结果。本次设计实现了所有自动售货功能,包括系统的初始化待机、等待顾客选择货物并确认、投币购买货物、自动出货并找零功能、最后自动跳转到初始化待机界面。通过4*4矩阵键盘来模拟实现顾客的选择货物系统以及投币系统、通过LED灯来显示所选择的货物类别、再通过LCD1602液晶来显示当前的操作状态以及货物的数量和货币的总值,最后通过LCD显示来模拟系统的出货系统和找零系统。在不断地仿真和调试下都完整的实现了以上功能,达到了基于单片机的自动售货机设计的要求。

28

攀枝花学院本科毕业设计(论文) 参考文献

参考文献

[1] 白丽.自动售货机:第三次零售业革命[J].电子商务.2005.(3). [2] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版,1996. [3] 付家才.单片机控制工程实践技术[M].北京:化学工业出版社,2004.5. [4] 潘新民.微型计算机控制技术[M].北京:人民邮电出版社,1999.9.

[5] 余锡存 曹国华. 单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7. [6] 雷丽文.微机原理与接口技术[M].北京:电子工业出版社,1997.2.

[7] 叶银兰.自动售货机的设计与实现.微计算机信息[J],2008年23期,53-55 [8] 朱清慧,张凤蕊,翟天嵩.Proteus教程[M].清华大学出版社,2008.9.

[9] Guiyun Tian.Foundtion and Application of Microcontroller[M].高等教育出版社,2004.11.

[10] 丁元杰.单片微机原理及应用[M].北京:机械工业出版社,2005.7. [11] 张元良.单片机原理及应用教程[M].北京:清华大学出版,2011.2. [12] 朱军.自动售货机的结构[J].信息与电脑.1995

[13] 裴进灵.一种新型自动售货机的研制[J].科技情报开发与经济.2002.

[14] 张文祥,李志军,张子红,张小清.单片机系统设计与开发教程[M].北京:电子工业出版社,2011.5.

[15] 宋萧,李佩佩,韩莹莹.自动售货机控制设计[J].科技信息,机械与电子,2009. [16] 徐仁贵.单片微型计算机应用技术[M].北京:机械工业出版社,2001. [17] 冯克.MCS-51单片机实用子程序及其应用实例.黑龙江科学技术出版社,1990 [18] 马刚.用Proteus和Keil整合构建单片机虚拟仿真平台.[J].现代电子技术,2006.24:129-131.

[19] 朱军.基于Proteus的单片机仿真实验.[J].计算机光盘软件与应用.

29

攀枝花学院本科毕业设计(论文) 附录

附录A:C源程序

C源程序列表: #include

/*******************define*************************/ #define WAIT_SALE 0 //定义1602显示状态 #define NO_WATER 1 #define INPUT_MONEY 2 #define SALING #define CHANGE #define CANCLE

3 4 5 0

#define NO_DATA

#define water_change(x, y) ((x) & (~(0x01 << y))) //宏 控制水种类的切换 #define uint unsigned int #define uchar unsigned char

unsigned char water_total[] = {10, 10, 10, 10, 10, 10, 10, 10}; unsigned char water_price[] = {1, 2, 3, 4, 5, 6, 7, 8};

uchar code wait_sale[]=\定义所显示的内容 uchar code no_water[] = %uchar code price[] = %uchar code number[] = %uchar code sum[] = %uchar code input[] = %uchar code change[] = %uchar code put_water[] = %uchar code cancle[] = \

unsigned char e=0x00;

sbit P2_0=P2^0; //定义接端口 sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3;

30

攀枝花学院本科毕业设计(论文) 附录

sbit lcd_en=P3^4; sbit rs=P3^2; sbit rw = P3^3;

/****************************************************/

/***********************function**********************************/ /************lcd 1602*************************/ void lcd_1602_delay(uint z) //延时 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }

void lcd_1602_write_com(uchar com) //写命令 { rs=0; rw=0; P2=com;

lcd_1602_delay(5); lcd_en=1;

lcd_1602_delay(5); lcd_en=0; }

void lcd_1602_write_data(uchar date) //写数据 { rs=1; rw=0; P2=date;

lcd_1602_delay(5); lcd_en=1;

lcd_1602_delay(5); lcd_en=0;

31

攀枝花学院本科毕业设计(论文) 附录

}

void lcd_1602_init() //LCD1602初始化函数 { lcd_en=0;

lcd_1602_write_com(0x38); lcd_1602_write_com(0x0e); lcd_1602_write_com(0x06); lcd_1602_write_com(0x01); }

void lcd_1602_wait_sure() //显示'OK'&'NO'界面 {

lcd_1602_write_com(0x80+0x40); lcd_1602_write_data('O'); lcd_1602_write_data('K');

lcd_1602_write_com(0x80+0x4e); lcd_1602_write_data('N'); lcd_1602_write_data('O'); }

void lcd_1602_show_num(uint num) // 1602显示数字的函数 {

if(num <= 9) {

lcd_1602_write_data('0'+num); lcd_1602_write_data(' '); }else if(num >= 10 ) {

lcd_1602_write_data('0'+num/10); lcd_1602_write_data('0'+num); } }

32

攀枝花学院本科毕业设计(论文) 附录

void lcd1602_info_display(uint choose, uint num_type, uint num_count) //1602显示函数 { int num;

lcd_1602_write_com(0x01); switch(choose) {

case WAIT_SALE:

lcd_1602_write_com(0x80+0x03); // for(num = 0; num < 7; num++) {

lcd_1602_write_data(wait_sale[num]); } break;

case NO_WATER:

lcd_1602_write_com(0x80+0x03); for(num = 0; num < 9; num++) {

lcd_1602_write_data(no_water[num]); } break; case SALING: //price

lcd_1602_write_com(0x80+0x00); for(num = 0; num < 6; num++) {

lcd_1602_write_data(price[num]); }

lcd_1602_write_data('0'+(num_type+1)); lcd_1602_write_data(' '); //number

lcd_1602_write_data(' '); for(num = 0; num < 4; num++)

33

攀枝花学院本科毕业设计(论文) 附录

{

lcd_1602_write_data(number[num]); }

lcd_1602_show_num(num_count);

break;

case INPUT_MONEY: //need money

lcd_1602_write_com(0x80+0x00); for(num = 0; num < 4; num++) {

lcd_1602_write_data(sum[num]); }

lcd_1602_show_num(num_type); //input

lcd_1602_write_data(' '); lcd_1602_write_data(' '); for(num = 0; num < 6; num++)

{ }

lcd_1602_write_data(input[num]); lcd_1602_show_num(num_count); break; case CHANGE: if(!num_count)

{

//put water

for(num = 0; num < 13; num++)

lcd_1602_write_com(0x80+0x02); {

lcd_1602_write_data(put_water[num]); } }

34

攀枝花学院本科毕业设计(论文) 附录

else {

//cancle water

lcd_1602_write_com(0x80+0x02); //取消选择时写命令退币 for(num = 0; num < 9; num++) } //change

lcd_1602_write_com(0x80+0x43); for(num = 0; num < 7; num++)

{

lcd_1602_write_data(change[num]); }

{ }

lcd_1602_write_data(cancle[num]);

lcd_1602_show_num(num_type); break; default: break; }

lcd_1602_write_com(0x0c); }

void lcd_1602_saling(uint type, uint num) { }

void lcd_1602_inputing(uint need, uint input) {

lcd1602_info_display(INPUT_MONEY, need, input); lcd_1602_wait_sure(); }

/*************************************************/

35

lcd1602_info_display(SALING, type, num); lcd_1602_wait_sure();

攀枝花学院本科毕业设计(论文) 附录

void delay1(unsigned int t) // 延时函数 {

unsigned int i,j; for(i=0;i

void out_water() //推出水函数 {

int i, j = 100; while(j--) {

for(i = 0; i < 8; i++) {

P0 = water_change(0xff, i);

delay1(50); } } P0 = 0xff; }

unsigned char key(void) //按键响应函数 {

unsigned char key,key1,key2; P1=0XF0;

if((P1&0XF0)!=0XF0) //ked down {

delay1(10); {

key1=P1&0XF0; P1=0X0F; key2=P1&0X0F; key=key1|key2;

36

//延时去抖动

//仍然有键按下 //读入列线值

if((P1&0XF0)!=0XF0)

本文来源:https://www.bwwdw.com/article/cul6.html

Top