自动售货机系统设计

发布时间:2020-06-17 04:11:55   来源:文档文库   
字号:

自动售货机系统设计

摘要:自动售货机越来越多的出现在人们的视线当中,主要因为自动售货机不受任何场地,时间限制,而且方便快捷,操作简单。本文介绍一款以单片机AT89S52模块为核心的自动售货机系统,系统采用独立式4×4键盘模块实现货物选择、货币面值选择及找零功能,LED模块根据当前货币面值,提示出可购买的货物种类, LCD1602液晶模块将消费者在当前售货机上的购物信息显示出来。通过多次系统测试表明,该系统操作简单方便,交互性强,易于实现。

关键词:自动售货机;控制系统;AT89S52;LCD显示

The design of vending machine system

Abstract: vending machine more and more appear in the line of sight of people,mainly because of the vending machine without any space, time constraints, and convenient, simple operation. This paper introduces a single-chip AT89S52 module as the core of the vending machine system, system uses an independent type 4 × 4 keyboard module choice of goods, currency of denomination choice and change function, the LED module according to the currency of denomination that can buy goods, LCD1602 LCD module will consumers shopping information displayed in the vending machines. That many times through the system test, this system is simple and convenient operation, strong interaction, easy to realize.

Keywords: vending machine; control system; AT89S52; LCD display

前言

自动售货机最早出现在二十世纪五、六十年代的西欧,英国是较早实行自动售货机售货的国家之一。1942年,在食品销售中首先推广了自动售货的销售方式。1950年英国食品杂货行有500家商家采用自动售货机售货。1969年,采用自动售货机售货的商家增加到23000家,销售的商品扩展到文化用品、唱片、香烟、食品等多个方面。进入70年代后,约有40多万家香烟、饮料店采用自动售货机售货。1980年英国有50余万台自动售货机,年销售额达亿英镑。70年代后,本、美欧等发达国家和地区自动售货机迅猛发展,短短30年的时间,发达国家自动售货机产业已发展到相当大规模。

自动售货机被广泛地放于车站、油站、码头、机场、宾馆、写字楼、娱乐场所及大街小巷和公路旁,人们通过自动售货机可以买到食品、香烟、饮料、报纸、票、卡甚至鲜花和小宠物等物品。自动售货机实现了商品需求化、性能多样化的发展, 又由原来只能出售有限商品品种, 转变为继百货公司、超级市场、便民店之后, 以消费者与售货机“一对一”自动售货的无店铺销售业态。自动售货, 给人们的生活带来了极大的方便。

从广义上来说自动售货机就是投入硬币、纸币、信用卡等以便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。从供给的条件上来看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买的自身性能,可以很好地解决人工费用上升的问题等多种优点。

自动售货机的分布密度高,满足了消费者的便利性和即时性需求。随着人们生活方式向快节奏、高效率变化,时间的价值显着提高,消费者在购物时更加注重便利性、即时性。随着自动售货机数量的增加,商品包装的定量化和标准化,出售的商品多样化,自动售货的便利性日益显现。同时,被称为“永不下班的超级营业员”的自动售货机在满足人们的即时性需求方面是其它零售方式不可替代的。

现在,自动售货机产业正在走向信息化,并进一步实现合理化。同时因经济复苏缓慢,社会对扩大就业与工作场所提供茶点饮料的福利事业更为关注。自动售货机不仅保障了惬意的工休时间,也是最廉价、提高职工工作效率最有效的手段。特别是在24小时无休工作状态中的办公场所,使用独具魅力的迷你型饮料冲饮机,解决了不间断提供咖啡饮品服务的问题,这种服务加速了自动售货机与咖啡饮品服务的融合。

随着劳动密集性的产业构造向技术密集型社会转变,自动售货机也随之出现在人们的视线当中。它的产生为许多人群密集的交易场所提供了新的途径。自动售货机不受任何场地限制,时间限制而且方便快捷,操作简单。零售业各业态日趋激烈的竞争,使得商家不断寻求新的投资机会,而自动售货业态恰好符合投资的风险——收益原则。由于自动售货机的销售效率高(平均每台自动售货机销售额达到1万美元) ,运营商规模大(一般拥有10多万台甚至100多万台) ,加上自动售货机本身具有的节约劳动力与场地等优势,从而降低了经营成本,提高了投资收益,满足了运营商获取高收益的需求。

专家预测,未来几年中国市场上的自动售货机将每年增加510万台。中国沿海比较富裕的地区,将大约有亿人口经常使用自动售货机。目前按人均台数计算,自动售货机在日本达到每台25人,在美国达到每台50-60人,在欧洲每台50-120人,而中国的人均拥有量却很低,若按每台500人计算,中国城市人口亿,中国自动售货机的潜在容量为73万台,以每天销售200元计,73万台自动售货机的全年销售额可达500亿。因此加快发展中国自动售货业,对提高投资效益具有重要的意义。

为防止地球暖化,自动售货机的开发致力于能源的节省,节能型清凉饮料自动售货机成为该行业的主流。在夏季电力消费高峰时,这种机型的自动售货机即使在关掉冷却器的状况下也能保持低温,与以往的自动售货机相比,它能够节约1015%的电力。进入21世纪时,自动售货机也将进一步向节省资源和能源以及高功能化的方向发展。

自动售货机作为自动化商业机械的代表被广泛应用于公共场所,它是中国生产技术机械化、智能化和自动化的体现。自动售货机的诞生完善了市政的建设,符合现代化建设的需要,提高了经济活动效率,节约劳动力,把有限的人力物力集中到其他资源上。相信随着社会的发展,人们对于生活高效性的重视也会逐渐提高,自动售货机也会受到更多人的关注和喜爱。

第1章 系统总体设计

自动售货机工作流程

自动售货机是集光、机、电一体化的独立机构,只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序流程如图1-1所示。

图1-1 自动售货机工作程序流程图

由图1-1可以看出,操作自动售货机基本流程如下:

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

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

3、通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键并等待顾客按键选择商品。

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

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

6、系统复零,完成售货

由于系统的局限性,本次设计由按键来替代货币的投入动作,分别有一角、五角,一元3种投币金额,使用AT89S52为系统的核心,完成投币、金额计算、清零等操作,使用LCD1602来进行显示。

系统硬件设计

依据上述自动售货机的工作程序,本次自动售货机的设计主要包括货币投入、选择货物、显示、货物输出、退币以及单片机控制模块等

图1-2硬件框图

在图1-2中,各模块的主要作用如下:

1、单片机控制模块:设计采用AT89S52单片机,主要完成各种信号处理。

2、货币投入:投币的币值主要有1角、5角,1元共3种,在本次设计中由按键来实现3种投币动作,每按下一次按键代表投一次货币,之后通过AT89S52处理再显示到LED上。

3、选择货物:本次设计采用三个按键完成货物选择的模拟操作,本次设计可供选择的货物有3种,分别是1元的矿泉水、2元的可乐、元的冰红茶,使用3个按键来完成选择。

4、显示:设计采用LCD1602液晶显示器显示消费、投币、找零等信息。

5、货物输出:使用LED指示灯来表示货物输出。

6、退币:使用按键来模拟退币操作,按下按键后总金额清零。

系统软件设计

1-3 软件设计流程图

软件设计流程图如图1-3所示。首先,LCD进行初始化设置,顾客从投币口送入货币,自动售货机扫描键盘获取键值并加以计算,通过LCD液晶屏幕显示面值,自动售货机根据顾客投入不同的面值启动售货机不同的面板键,并等待顾客按键选择商品。顾客选择商品后,售货机自动把商品送出,等待顾客取走,自动售货机显示余额并找零。系统复零,完成售货。

主要功能及技术指标

本课题设计的具体工作任务如下:

售货机可以出售矿泉水1元、可乐2元、冰红茶元。此售货机可投入1角、5角和1元硬币,当投入的硬币总值超过1元时,矿泉水灯亮;当投入的硬币总值超过2元时,矿泉水灯和可乐灯亮;当投入的硬币总值超过元时,矿泉水灯、可乐灯和冰红茶灯亮。当按键矿泉水灯亮时,按动矿泉水按键,开始售货,同时矿泉水灯闪3s后熄灭。可乐和冰红茶售货与矿泉水售货相同,本系统可以进行找零,找零时三个LED灯全闪。

第2章 硬件电路设计

单片机控制模块

单片机AT89S52简介

AT89S52是一种低功耗、高性能 8位微控制器,具有8K在系统可编程Flash。使用Atmel公司高密度非技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

图2-1 AT89S52芯片引脚图

1、AT89S52主要性能参数:

(1)与MCS-51的产品兼容;

(2)8K字节在系统可编程;

(3)全静态操作:0Hz-33MHz

(4)三级加密;

(5)32个可编程I/O口线;

(6)三个16位/;

(7)六个;

(8)低功耗空闲和掉电模式;

(9)掉电后中断可唤醒;

(10) ;

(11) 双数据指针;

(12) 掉电。

2、AT89S52引脚说明:

VCC:电源端。

GND:接地。

P0口:P0口是一个8位漏极开路的双向I/0口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,用作高阻抗输入。当访问外部和数据时,P0口也被作为低8位地址/数据复用。在这种模式下,P0不具有内部上拉电阻。在flash时,P0口也用来接收指令;在校验时,输出指令字节。校验时,需要外部上拉电阻。

P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,p1 输出缓冲器能驱动4个TTL逻辑电平。

此外,和分别作/2的外部计数输入(T2)和/计数器2的触发输入(T2EX)。在flash和校验时,P1口接收低8位的地址字节。

号第二功能:

T2(/T2的外部计数输入),时钟输出;

T2EX(定时器/T2的捕捉/重载触发信号和方向控制);

MOSI(在用);

MISO(用);

SCK(用);

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部或用16位地址读取时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用 8位地址访问存储器时,P2口输出P2的内容。在flash编程和校验时,P2口也接收高8位地址和一些。

P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P3输出缓冲器能驱动4个TTL逻辑电平。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,P3口也接收一些。

端口第二功能:

RXD(串行输入口);

TXD(串行输出口);

INTO(外中断0);

INT1(外中断1);

TO(定时/0);

T1(定时/1);

WR(写选通);

RD(读选通);

此外,P3口还接收一些用于和校验的。

并不是所有的地址都被定义了,片上没有被定义的地址是不能用的。读取这些地址会得到一个随机的数据,这个数据写入程序会无效,复位以后,这些都会被置为“0”。

RST复位输入。当振荡器工作时,RST引脚出现两个以上高电平将是复位。

ALE/PROG当访问外部或数据时,ALE(允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问存储器时将跳过一个ALE脉冲。对FLASH期间,该还用于输入编程脉冲(PROG)。如有必要,可通过对(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条指令才能将ALE激活。此外,该会被微弱拉高,执行外部时,应设置ALE禁止位无效。

PSEN储存允许(PSEN)输出是外部的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个两次PSEN有效,即输出两个脉冲,在此期间,当访问存储器,将跳过两次PSEN信号。

EA/VPP外部访问允许,欲使CPU仅访问外部(地址为0000H-FFFFH)EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH时,该加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端。

单片机最小系统设计

单片机最小系统或者称为最小应用系统AT89S52单片机来说,最小系统一般应该包括:单片机模块时钟模块及复位模块。

1、时钟模块。时钟电路就像是单片机的心脏,没有时钟电路来驱动单片机,单片机无法执行程序,它为单片机产生时钟信号。原理图如图2-2所示:

图2-2时钟电路图

图2-2中,利用芯片内部振荡电路,在XTAL1XTAL2的引脚上外接定时元件,内部振荡器便能产生自激振荡。本次设计选择12MHz的晶体,每个机器周期为1us。电容一般选择20PF,本系统电容选择22pF。电容C1,C2的大小对振荡频率有微小影响,可起频率微调作用。

2、复位模块。无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。

单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。89系列单片机的复位信号是从RST引脚输入到芯片内的触发器中的。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期以上,则CPU就可以响应并将系统复位。复位原理图如图2-3所示:

图2-3复位电路

图2-3中,上电后,VCC对电容C1充电,C1端的电流达到最大,此时,电容C1相当于短路,复位端为高电平,单片机自动复位。复位要求RST上加高电平的时间为2个机器周期以上,本系统中晶振为12MHz,则每个机器周期为1us。当电容C1两端的电压达到电源电压时,流过C1的电流变为0,此时复位端降为低电平,单片机开始正常工作。复位时间为:

(2-1)

由公式(2-1)可知为1ms,值远大于2us,满足复位要求。

下按S0RST直接通过R2和VCC相连,此时复位端RST为高电平,电容C1短路放电,放电完成之后,系统开始正常工作。只要复位端持续高电平两个机器周期以上,就可以保证可靠复位。

按键输入模块

4×4矩阵键盘的工作原理

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。 在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20键的键盘,而直接用端口线则只能多出一键(9键)。由此可见,在需要的键数比较多时,采用矩阵法来做键盘是合理的。

矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。这样,当按键没有按下时,所有的输出端都是高电平,代表无键按下。行线输出是低电平,一旦有键按下,则输入线就会被拉低,这样,通过读入输入线的状态就可得知是否有键按下了。如图2-4为矩阵键盘电路图,列线接-,行线接-。

图2-4 矩阵键盘电路图

图2-5 按键排列

图2-4中,-为 4×4 键盘的列扫描线,- 为 4×4 键盘的行扫描线。行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识别被按下的键是哪一个。一般会采用行列扫描法,可以同时完成上述两项任务。基本的扫描原理是:先使行扫描线输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果是有键被按下时,则对应的列扫描线必然会被读回高电平,如果是无键盘按下时,则读取的列码必定全是0。这也就可以判断有无按键的按下了。一旦检测到有键按下时,还需要有一个延时消除抖动的操作,以消除按键时带有的抖动信号;一般延时在12ms左右即可。延时后,如还能检测到有按键按下,则可确定当前是有键按下,可进入获取键值的操作。获取键值时,采用行列依次扫描的方法。首先使第一行扫描线输出高电平,其它的行扫描线输出低电平,然后读取列扫描线的状态,得到列码;如果本行无键按下,则得到的列码为全0,并扫描下一行;如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。当第一行扫描没有检测到按键时,则扫描下一行,即使第二行扫描线输出高电平,其它行扫描线输出低电平,其它与前面所述类似。在行列扫描时,可以用一个变量记录下当前扫描的行号,在计算键值时可以利用此行号以及列码得知是哪一行、哪一列上的按键按下了。

输出显示模块

LCD显示模块的设计

为了让顾客看到购物的整个过程,设计添加了LCD显示电路,具体电路如图2-6所示:

图2-6 LCD显示电路

图2-6中,AT89S52芯片的,,作为LCD1602显示器的控制口。接RS端,RS为1时,进行数据操作,RS为0时进行指令操作;接RW端,RW为1时,进行读操作,RW为0时进行写操作E使能端,E为1时使能端拉高,E为0时,使能端拉低;把P0口作为数据输出,接D0-D7端口,D0-D7为8位双向数据端。15-16为空脚或背光电源,15为背光正极,16为背光负极。电路中还加了一个10K的可调变阻器W1,因为3号脚为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”。

LED显示模块的设计

为了使售货机能够根据当前投入币值指示出可售物品状态,系统设计添加了LED显示电路,具体电路如图2-7所示:

图2-7 LCD显示电路

图2-7中,D2表示矿泉水,D3表示可乐,D4表示冰红茶;D2,D3,D4分别与单片机口,口口相连,单片机三个端口,输出为低电平时点亮,R3,R4,R5这三个电阻的作用是限流。

电源模块

LM7805简介

电子产品中,常见的三端稳压集成电路有正电压输出的LM7805系列和负电压输出的LM7905系列。顾名思义,三端IC是指这种稳压用的集成电路,只有三条引脚输出,分别是输入端、接地端和输出端。它的样子是普通的三极管,TO-220的标准封装。三端稳压集成电路LM7805如图2-8所示

图2-8 LM7805

LM7805系列三端稳压IC来组成稳压电源所需的外围元件极少,电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜。该系列集成稳压IC型号中LM78后面的数字代表该三端集成稳压电路的输出电压,如LM7805表示输出电压为正5V

5V直流稳压电源设计

为了给单片机模块,时钟模块及复位模块供电,本次设计添加了5V直流稳压电源设计。电路原理图如图2-9所示:

图2-9直流稳压电路

图2-9中,交流220V电压经过6v/10w的变压器T1降压成的交流电压。桥式整流电路是利用二极管的单向导通性进行整流的最常用的电路,常用来将交流电转变为直流电。电路中采用D1,D2,D3,D4四个二极管,互相接成桥式结构。利用二极管的电流单向导通作用,在交流输入电压的正半周内,二极管D1、D3导通,D2、D4截止,在负载上得到上正下负的输出电压;在负半周内,正好相反,D1、D3截止,D2、D4导通,流过负载的电流方向与正半周一致。因此,利用变压器的一个副边绕组和四个二极管,使得在交流电源的正、负半周内,整流电路的负载上都有方向不变的脉动直流电压和电流。通过C1滤波之后,经过LM7805稳压成5V的直流电压。再通过C2高通滤波,C3低通滤波使电压更为稳定。该稳压电源设计简单方便,但也有不足,就是电路温度会升高,对电路的保护要求更高,但在这里足够了。

第3章 系统软件设计

程序的设计思想

本次程序的设计思想是在主程序一开始就进行初始化子程序的操作,然后开始进行按键扫描,等待按键按下,再进入相应的子程序从而完成相应的操作。下面就介绍一下主程序和重要子程序。

主程序流程图

主程序流程图如图3-1所示:

图3-1主程序流程图

图3-1为主程序流程图。首先,系统对LCD1602进行初始化设置,对系统设置初值。自动售货机判断顾客是否投币,当顾客投币满1元时,矿泉水指示灯亮并启动矿泉水按键;当顾客投币满2元时,矿泉水和可乐指示灯亮并启动矿泉水和可乐按键;当顾客投币满元时,矿泉水,可乐及冰红茶指示灯亮并启动全部键盘。当顾客按键选择商品后,自动售货机扫描键盘获取键值,并根据顾客的选择出货。一旦检测到有键按下时,还需要有一个延时消除抖动的操作,以消除按键时带有的抖动信号,顾客可以选择继续购买商品或者找零。

液晶写命令子程序设计

图3-2 LCD1602写入控制命令流程图

图3-2为液晶写命令子程序流程图,主要可以分以下几个步骤:

1、延时5ms,作用是等待数据写入。

2、将LCD1602的RS置0,表示要对LCD1602指令寄存器操作

3、将LCD1602的RW置0,表示单片机将要对LCD1602写操作。

4、将LCD1602的使能端E拉低,表示LCD1602可以执行指令寄存器中的控制命令。

5、通过单片机的P0口向LCD1602的指令寄存器写入需执行的控制指令,如:

(1)当P0口为0X38时,LCD1602执行初始化;

(2)当P0口为0X0C时,LCD1602执行开显示;

(3)当P0口为0X01时,LCD1602执行清屏。

6、LCD1602执行指令寄存器中的指令,同时,重新将使能端E拉高。

7、延时20ms,作用是等待数据写入。

8、将LCD1602的使能端E拉低。

液晶写数据子程序设计

图3-3写数据流程图

3-3为液晶写数据子程序流程图。写数据子程序设计与写命令子程序设计大致相同,不同点主要有:

1、将LCD1602的RS置1,表示要对LCD1602数据寄存器操作

2、通过单片机的P0口向LCD1602的数据寄存器写入需执行的控制指令。

显示定位子程序设计

LCD1602光标定位方法

1、定义光标位置

显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址占7位。Set DDRAM address命令如表3-4所示。光标定位,写入一个显示字符后,DDRAM地址会自动加1或减1,加或减由输入方式设置。

表3-4Set DDRAM address命令

RS

R/W

DB7

DB6

DB5

DB4

DB3

DB2

DB1

DB0

0

0

1

AC6

AC5

AC4

AC3

AC2

AC1

AC0

第1行DDRAM地址与第2行DDRAM地址并不连续,如表3-5所示。

表3-5 DDRAM地址

row

1

2

3

4

5

14

15

16

lin1

80H

81H

82H

83H

84H

8dH

8eH

8fH

lin2

0c0H

0c1H

0c2H

0c3H

0c4H

0cdH

0ceH

0cfH

定位程序设计

goto_xy(uchar x,uchar y)

{

if(y==0) {write_com(0x80+x);delay(5000);}

else {write_com(0x80+0x40+x);delay(5000);}

}

显示定位子程序设计的目的是进行光标定位,把数据显示在LCD1602的液晶屏幕上。显示数据的某位,就是把显示数据写在相应的DDRAM地址中,DDRAM地址并不连续。比如:要显示第一行第三列的值,首先,设置X的值为2,y的值为0,则读取的数值为82H;当要显示第二行第四列的值,首先,设置X的值为3,y的值为1,则读取的数值为0C3H。

定时中断服务子程序设计

图3-6中断服务子程序流程图

图3-6为定时中断服务子程序流程图。首先,对定时器T设置初值,THO=0xd8,TL0=0xf0。设置定时器每隔10ms加1,当定时器累加到达3S时,将系统设置为投币状态。自动售货机判断顾客是否投币,系统根据顾客投入不同的币值点亮不同的指示灯;自动售货机判断顾客是否购物,系统根据顾客的选择闪烁不同的指示灯。

按键扫描子程序设计

接下图

图3-7 按键扫描流程图

3-7为按键扫描子程序流程图。下面对图3-7中一些问题作较为详尽的描述:

1、 启动面板键

(1) 当顾客投币达到1元时,表示矿泉水的LED灯被点亮,矿泉水按键启动,顾客可以购买矿泉水。

(2) 当顾客投币达到2元时,表示矿泉水和可乐的LED灯分别被点亮,矿泉水、可乐按键启动,顾客可以购买矿泉水及可乐。

(3) 当顾客投币达到元时,表示矿泉水、可乐及冰红茶的LED灯分别被点亮,全部按键启动,顾客可以购买任意饮料。

2、 1,2,3号按键为投币键,当1,2,3号按键被按下时,LCD液晶屏幕上投币显示处分别添加1角、5角及1元。

3、 找钱子程序就是自动售货机退换顾客购买货物后的余币。找钱时,表示矿泉水,可乐及冰红茶的LED灯一起闪三下后熄灭。

4、 矿泉水、可乐及冰红茶子程序在设计过程中,主要采用LED灯进行表示,当顾客购买货物后,对应的LED灯会闪三下。

第4章 调试

硬件的调试

1、逻辑故障的调试:首先将加工的印制板认真对照原理图,看两者是否一致。应特别注意电源系统检查,以防止电源短路和极性错误,然后用万用表检测,看看每条电路是否都是联通的,一经发现情况要及时处理。在用万用表检测的过程当中就发现了一个情况,有一个电阻看似是焊上去了,其实是虚焊,马上用电烙铁将那个点焊实。

2、元器件的调试:在调试过程中也要注意元器件失效的情况。造成这类错误的原因有两个:一个是元器件买来时就已坏了;另一个是由于安装错误,造成器件烧坏。可以采取检查元器件与设计要求的型号、规格和安装是否一致。在保证安装无误后,用替换方法排除错误。

3、对5V电源电压的检查调试:这部分的调试最好应该放在前面,因为这一块电路是要给整个电路供电,如果电压过大,会烧坏电路。这部分的测试很简单,插上插头,用万用表测量输出部分电压是否为5V,如果不是,则要重新检查电路。

4、LCD1602屏幕的调试:因为3号脚为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”。电路中有一个10K的可调变阻器W1,通过调试W1,将屏幕调试到适中亮度。

5、在安装器件的过程中也要格外的小心,要将引脚对好卡槽,因为引脚都比较脆弱,稍微不小心一用力,引脚可能就被弄歪或者弄断了。

软件的调试

自动售货机的组成原理不是太复杂,但是需要很强的逻辑判断,因此在这次设计中碰到了一些问题:

1、按键去抖的调试:由于一开始没有按键去抖动的部分,所以导致按一下往往会累加多次,导致按键输入不精确,后来加入了按键去抖动部分后就解决了这个问题。

2、错误输入的调试:在程序编译的过程中,由于粗心大意把程序错误的输入进去,造成很大的困扰,然后经过多次反复不断的查看程序,最后找到了错误并加以解决。

3、对显示子程序的调试:将硬件电路连接完毕后,对源程序进行编译,可以从液晶屏上看到有相应的字符出现,满足了预期的设置,没有出现异常情况,可证明显示子程序调试成功。

4、键盘调试键盘调试就比较简单,完全可以借助于LCD1602显示器,利用程序进行调试。通过按下按键看LCD屏幕上的显示即可判断是否有误。调试中每按下一次按键,屏幕就进行了相应的显示。没有出现异常情况,即可证明按键调试成功。

系统调试

接上电源后,查看电源指示灯是否点亮;然后查看LCD显示屏是否处于货物待售状态;最后,进行功能的检测。如图4-1所示为自动售货机待售状态图。

图4-1自动售货机待售状态图

1.投币输入检测:投币的币值主要有1角、5角,1元3种,在本次设计中由按键来实现3种投币动作,每按下一次按键代表投币一次,之后通过AT89S52处理再显示到LED灯上。如图4-2所示为自动售货机投币状态图。

图4-2自动售货机投币状态图

2.货物选择检测:本次设计可供选择的货物有3种,分别是1元的矿泉水、2元的可乐、元的冰红茶,使用3个按键来完成选择。分别按下按键,查看LCD上是否显示其对应的商品,另外,商品对应的指示灯是否被点亮。如图4-2所示,绿灯表示矿泉水,黄灯表示可乐,红灯表示冰红茶,商品对应的指示灯分别被点亮。

3.显示检测:本次设计采用LCD1602来同时显示消费、投币及找零,计算其正确性。如图4-3所示为自动售货机找零状态图。

图4-3自动售货机找零状态图

4.货物输出:使用LED灯来表示货物输出。

5.退币:使用按键来模拟退币操作,按下按键后总金额清零。

指示灯的显示,屏幕的显示,通过按键来投币选择购物,找零等都正确的显示出来了,没有出现异常情况。

第五章 结束语

时间过得真快,转眼之间四年就这么过去了,想起当初大一刚进校门的时候,仿佛好像是昨天一样。在没有做这次毕业设计以前觉得毕业设计只是对我们之前几年所学知识的一个单纯总结,但是通过这次做毕业设计,我发现自己的看法有点太片面。毕业设计不仅是对我们前面所学知识的一种检验,而且也是对我们能力的一种提高。这次毕业设计使我明白了原来自己知识还比较欠缺。需要学习的地方实在是太多了,以前老是觉得自己什么东西都会,什么东西都懂,原来是半桶水,有点眼高手低。通过这次毕业设计,我才明白原来学习是一个长期积累的过程,在以后的学习、工作、生活中都应该不断的学习,努力提高自己知识和自身的综合素质。

通过这次的毕业设计,使我得到了一次用专业的知识、专业的技能分析和解决问题的机会,使我得到了一次锻炼。让我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是C语言)的掌握方面都能够向前迈进一步,为日后成为合格的应用型人才打下了良好的基础。

经过几个月的学习、研究以及老师的细心指导终于按时完成了毕业设计。本文中,自动售货机控制器系统就是利用了89S52芯片的I/O引角。系统采用了MSC-51系列单片机为中心器件来设计自动售货机的控制器,实现了能根据计量投入货币的累加大小、选择3种不同的货物、可以同时购买几个货物、显示花钱数以及找钱数的功能;显示的数值直接通过LCD1602显示输出。本文系统设计简便、实用性强、操作简单、程序设计简便。由于时间等多方面的原因,本次毕业设计的仿真结果没有在论文中做详细具体的介绍,此后我将会继续研究力求更加圆满地完成此次设计。

这次的毕业设计是我学生生涯最后一次也是非常难得的一次理论与实际相结合的机会,我摆脱了单纯的理论知识学习状态,理论知识和实际设计的结合锻炼了我综合运用所学专业基础知识的能力,同时也提高了我查阅文献资料、设计规范以及电脑制图等其他专业能力水平,而且通过对整体的掌控,对局部的取舍,以及对细节的斟酌处理,都使我的能力得到了锻炼,丰富了实践经验,并且意志力,抗压能力及耐力也都得到了不同程度的提升。这将会是我踏入社会进入工作岗位后的一笔宝贵的财富!

参考文献

[1] 冯克.MCS-51单片机实用子程序及其应用实例[M].黑龙江:科学技术出版社,1990.

[2] 陈萌,叶桦,达飞鹏.[J].东南大学学报(自然科学版),2007(S1):24-28.

[3] 周航慈着.单片机应用程序设计技术[M].北京:航空航天大学出版社,2003.

[4] 胡新颜,刘建民,邹爱英.[J].电工技术杂志,2003(4):57-57.

[5] 叶银兰.自动售货机的设计与实现.微计算机信息[J].2008(23):53-55.

[6] GueuningF. , Distance Measuremnt by an Autonomous Supersonic System Combining Time-of-Flight and Phase-Shift Methods[J].IEEE Transactions on Instrumentation and Measurement,1997,46(6): 1236-1240.

[7] Mt. 51 Family of Microcontrollers Architectural Overview.[M]September 1993.

[8] 万福君等. MCS-51单片机原理、系统设计与应用[M].北京:清华大学出版,2008.

[9] 裴进灵.[J].科技情报开发与经济,2003(12):141-142.

[10]张建龙,余世明.[J].机电工程,2010(4):55-57.

[11]王玺,郑大宇.[J].哈尔滨商业大学学报(自然科学版)2009(5):604-606.

[12]陈京培, 徐永梅.基于AT89S52单片机的液晶显示控制电路设计[J].现代电子技术,2008(22):20-23

[13]李光飞等着.《单片机课程设计实例指导》[M].北京:航空航天大学出版社,2004.

[14]余锡存,曹国华. 单片机原理及接口技术[M].陕西:西安电子科技大学出社,2000.

[15]Wahyu Sapto Aji;Fajar Hermawanto;Muchlas. [J]. TELKOMNIKA. 2009 207-212.

[16]孙晓洁,叶桦,丁昊,曹赟.[J]. 2010(5):31-34.

[17]陈劲松.[J].煤炭技术,2011(1):206-207.

[18]宋潇,李佩佩,韩莹莹.[J]. 科技信息, 2009(33):119-120.

致谢

经过了几个月的奋战,今天终于顺利地完成了毕业设计。论文得以完成,首先要感谢谈老师,因为毕业设计与论文都是在谈老师的悉心指导下完成的。谈老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。本论文从选题到完成,每一步都是倾注了他大量的心血。虽然在此次毕业设计中我遇到了很多困难,但是这些困难都在谈老师的耐心讲解和与谈老师共同探讨下迎刃而解。他那种不言放弃的精神一直在鼓励着我。

同时,论文的顺利完成,离不开其它各位同学和朋友的关心和帮助。在整个的毕业设计和论文写作过程中,同组的同学和朋友积极的帮助我查资料和提供有利于论文写作的建议和意见,在他们的帮助下,我的毕业设计得以不断的完善,最终帮助我完整的完成了整篇论文,在这里我要表示一下我的谢意。

最后同样重要,我要特别地感谢我的家人,感谢你们一直在我身边陪伴我成长,成熟。感谢你们培养了我良好的生活习惯,感谢你们一直以来对我的宽容与理解,感谢你们对我学习上一如既往的默默支持。就算是千言万语也以难表达我对你们的感激之情与深深的敬意,祝你们身体健康,万事如意!同时,感谢百忙中抽出宝贵时间审阅我论文的各位老师。谢谢您们对我论文所提出的宝贵意见!

四年的大学生活在这个季节即将划上一个句号,而于我的人生却只是一个逗号,在未来的工作和学习中,我将以更好的成绩来回报各位领导和老师,为校争光,不会辜负大家对我的期望!

附录1 电路原理图

附录2 实物图

附录3 程序

main()

{

initTimer();

TR0=1;

ET0=1;

EA=1;

write_com(0x38);delay(1500);;;

write_int(f_money%100) ; //找钱时 显示 找钱的金额

write_str(" ");}

}

}

附录4 元器件清单

元器件

数量

AT89S52

1

晶振12M

1

LCD1602

1

电阻1K

1

电阻500k

3

电阻10K

1

按键

17

发光二极管

4

排针

若干

电路板

1

排母

若干

40P IC座

1

ISP下载接口

1

瓷片电容

3

10K排阻

1

10K可调电阻

1

LM7805

1

二极管

4

变压器

1

插头

1

电解电容

2

本文来源:https://www.2haoxitong.net/k/doc/e57929f50166f5335a8102d276a20029bc64632d.html

《自动售货机系统设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式