基于单片机的自动售货机设计(共10页).docx
精选优质文档-倾情为你奉上基于单片机的自动售货机设计摘要近些年来自动售货机已经非常普遍,各大商场门口和一些公园等公共场所随处可见,自动售货机已经得到了人们的认可,使用人数越来越多。由于自动售货机有节约劳动力、节省空间和方便购买等优点,满足自动化时代人们的要求。相信不久得将来自动售货机将会更普遍,甚至会代替现有的小型超市,成为全新的零售模式。本设计就是根据所学知识制作一个模拟自动售货机,该设计选用单片机AT89S52芯片为核心,并用1602液晶显示屏显示,采用红外线光电开关模拟演示投币过程。设计包括软、硬件多个工作模块:硬件包括电源模块、货物选择模块、红外对管模拟投币模块、1602LCD显示模块、单片机控制模块、出货和退币模块;软件包括选择货物子程序、出货退币子程序、LCD显示程序、主程序等模块。最后可以完成自动售货机的投币以及钱币总数显示功能、选择货物和出货功能、退币功能、缺货报警功能等。符合现代化自动售货机的要求。关键词:自动售货机;AT89S52单片机;1206液晶显示屏;光偶传感器1 引言 随着经济和技术的发展,自动售货机已广泛应用于人们的日常生活,在商场、车站和公园等公共场所随处可见,深受人们的欢迎。它只需要顾客选择自己所需货物并投入钱币即可自动得到想买的货物并退找零钱。它的方便快捷、节约空间、节省劳动力等优点非常符合现代化生活的需要。相信不久的将来自动售货机将成为主流代替原有的小型超市来方便人们生活。 自动售货机主要包括投币功能、货物选择功能、数据显示功能、退币功能和缺货报警功能。自动售货机是主要以单片机为控制核心的自动化装置,具有使用方便、可靠性高、维护简单等特点。因此,已被广泛应用于商业和生活。自动售货机有着非常大的市场潜力。 利用单片机的多功能控制,设计一个以单片机为核心芯片的模拟自动售货机,采用红外对管模拟投币,用LCD显示屏显示数据,并可实现退币和缺货报警等功能。该设计结构简单,符合普通售货机的工作要求,且成本较低。能够方便大家对自动售货机的理解,掌握自动售货机的工作原理,学会使用自动售货机。 2 总体设计思路及所用器件简介 自动售货机是一种新兴的自动化设备,它具有操作简单、方便快捷等特点,只需要顾客选择所需的货物和投入货币即可自动售出货物并退还零钱,其工作流程图如下图1所示: 2.1 本次设计的自动售货机的功能简介 工作基本原理:用户选择五种不同价格货物其中的一种,在显示屏上显示出来并显示所需钱数。然后通过红外对管传感器从不同的槽投入不同的币种,并在显示屏上累加显示,当所投钱币数大于等于选择物品所需钱数时可按确认键使货物输出,且退回剩余钱币。当售货机缺货时能够自动报警,然后重启自动售货机装满货物。 系统功能描述: 本次设计的自动售货机共有5种货物类型,这5种商品分别和5个不同的按键选择对相应,其分别为1元的纯水,2元的可乐,2.5元的雪碧,3元的牛奶和4元的果汁;自动售货机投币模块分别用两个红外对管通道代表0.5元和1元进口,总数能够在LCD上显示。选好货物并投入相应钱币后按确认键就能够输出货物。 如果货币数量的总投入数超过货物预先设定的价格,机器能够实现退币功能;当所买的货物超过自动售货机的最大存货量5个时,自动售货机能够自动报警,并需要重新装货。 自动售货机的原理框图如图2所示。 2.2 AT89S52单片机 AT89S52单片机跟与51系列单片机产品的指令和引脚完全兼容。是Atmel 公司生产的一种8位的微控制器,片内带有8K的可编程flash存储器,可读可写可擦除,使用方便且使用寿命长;在指令和引脚上完全兼容80C51系列,再加上该单片机具有高性能、低功耗、允许片上flash程序存储器在线编程等优点,所以使得AT89S52得到了各行业的广泛应用。随着科技的发展,现在几乎所有的产品都在向智能化发展,单片机已经走进了我们的日常生活,各种自动化设备都有单片机的影子。 AT89S52单片机内部有许多组成器件,查询资料可知,它有三个计数器/定时器(均为16位),可编程全双工串行口,8KB的flash ROM,256B的RAM,时钟电路,32个可编程I/O接口,八个中断源,数据指针二个及其一个2级中断结构等。除此以外,AT89S52芯片还有两种节电保护模式,一是空闲模式:此模式下虽然片内CPU不工作,但仍可以读写程序,也不影响定时器、中断过程、串行接口的运行;二是掉电保护模式:此模式下片内一切器件都不工作。 AT89S52是具有性能高、功耗低特点的八位微控制器,具有8K在系统可编程 Flash存储器。它与MCS-51单片机产品的指令和引脚完全兼容。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,能够完成一千次擦写,有32个可编程I/O口,三个16位定时器/计数器和八个中断源,具有低功耗空闲和掉电模式,还有不同于AT89C51的看门狗定时器和在系统可编程功能,无需编程器。 AT89S52单片机共有40个引脚,其中有32个I/O接口引脚,4个控制线引脚,2个外部晶振引脚。1个电源引脚和1个接地引脚。其管脚定义如图3所示。 2.3 槽型红外对管 工作原理:传感器二极管端主动发射红外线,根据反射光探测原理,如果探测到障碍,OUT脚输出低电平,否则输出高电平。 工作电压:3.8v-5.5v 工作电流(5V时):典型电流6MA 输入输出信号(3线): VCC是电源,VCC的范围是3.8v-5.5v GND是接地线 OUT是输出端 槽型红外对管内部电路及接法: K接地,A接正电源,限流为几十毫安,要接限流电阻。集电极C接正电源,发射极E接地,也要控制电流在几十毫安,也需要加限流电阻。 当有障碍通过槽时,OUT输出一次低电平。无障碍时OUT输出持续高电平。 障碍探测时间(有效探测范围内从无障碍目标到出现障碍,或者有障碍到障碍目标消失): <=21ms 2.4 1602LCD液晶显示屏 本次设计的显示功能选用1602液晶显示屏实现,它可以直接跟51系列单片机接口相连。其主要技术参数为,显示容量:16×2个字符,芯片工作电压:4.55.5V,工作电流:2.0mA(5.0V),模块最佳工作电压:5.0V,字符尺寸:2.95×4.35(W×H)mm。1602显示屏采用16引脚接口如图5所示,其引脚功能如下: 第1引脚:VSS为电源地,需接地。 第2引脚:VDD为电源输入端,需接5V正电源。 第3引脚:VO为液晶显示器对比度调整端,当此引脚接地时能使对比度最高,但对比度太高时会产生“叠影”,需要通过接一个大约10K的电位器来调整对比度。 第4引脚:RS为数据指令寄存器选择端,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5引脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。 第6引脚:E端为使能端,当E端由高电平变为低电平时,液晶模块执行命令。 第714引脚:D0D7为8位双向数据线。 第15引脚:BLA为背光电源正极输入引脚,与+5V电源相连接。 第16引脚:BLK为背光电源负极,接地。 3 硬件电路设计 系统的硬件部分主要以单片机为控制核心,利用单片机的串行输入串行输出,实现售货机的功能,其硬件电路设计包括货物选择模块、钱币投入模块、LCD显示模块、货物输出退币、及报警模块,系统的结构框图如图6所示。 3.1 单片机控制模块 本模块是系统最小单元,一个四十引脚的S89C52单片机,电路部分包括电容与晶振连接XTAL1、XTAL2引脚的振荡电路,形成自激震荡,给单片机提供时钟周期,此电路是单片机工作时必不可少的电路模块。还有一个和RST引脚连接的复位电路,自动上电和按下按键都能使RST脚持续2个机器周期高电平让单片机复位,在本设计中,由于自动售货机货物卖完需要装货,可以按下按键使单片机复位或者重启自动售货机,都能使货物自动填装满。电源采用正5伏直流电源,本设计采用4节5号电池串联一个电阻来实现供电。而且连接一个LED灯,当电源接通时,LED发光。单片机中为了执行内部程序指令, 应该接VCC。单片机控制模块如下图7所示。 3.2 投币模块 本模块设计为自动售货机模拟投币系统,真正的售货机需要用到货币识别,但由于过于复杂,对识别货币器设计和工作原理在这里不做研究,本设计采用槽型红外对管,利用红外线反射原理,当有障碍通过槽时,OUT输出一次低电平,当没有障碍时,持续输出高电平,并采用累加器计数。 本设计采用两个槽型红外对管传感器,一个传感器相当于0.5元投币孔,另一个传感器相当于1元投币孔。当钱币从相应的槽中通过一次时,钱币数相应的累加一次。并把投入的钱币数显示到LCD上。电路板上还接一个LED,探测到障碍时亮一下。 用槽型红外对管的输出端分别与与单片机的P2.3和P2.4引脚连接。红外对管内部,光电开关那个二极管是发光二极管,输出则是光敏三极管,K接电源正极,A接地。输出端,集电极C接电源正极,发射极E接地,并在集电极C点输出。如图8所示。 3.3 货物选择模块 由于本次设计只需要六个按键即可满足设计要求,所以采用独立式键盘,这样对键盘识别的编程也比较简单。独立式按键识别是非常简单的,如图9所示,当一个键被按下时,对应的接口将是低电平,没有按下键的是高电平,从而判断哪个键被按下。本设计采用P1.3P1.7引脚和P3.6引脚与按键连接。P1.3到P1.7引脚分别接选择可乐、雪碧、纯水、牛奶和果汁的货物选择按键,P3.6引脚接选好货物投币完成后的确认按键。 3.4 LCD显示模块 本设计选用1602LCD液晶显示屏。初始工作时显示屏显示“Please select merchandise”,然后可以按键选择货物,当按下相应货物的按键时,显示货物名称及钱数。例如选择牛奶按键,显示屏显示" milk 3.0 yuan"。投币时,显示屏显示钱数,当钱数足够买货物时,间隔1s没有再进行投币时,显示" No longer Coin!"。按下确认键进行出货显示" Being shipped ",当钱币不足以支付选择的货物则显示" Lack of money! "。而且当货物卖完时显示" empty! "。 采用P0.0P0.7引脚作为输出口与LCD相连,且LCD的寄存器选择端(RS)、读写信号端(RW)和使能端(EN)分别与单片机的P1.0P1.2相连接。VL为对比度调整端,接地能保证对比度最高,但需要接一个10k电位器防止发生鬼影。又由于LCD采用P0口作为输出口,在程序校验时,需要接上拉电阻,所以用排阻与P0口相连。其硬件电路连接如下图10所示。 3.5 出货、退币及缺货报警模块 当自动售货机售出货物时,不仅LCD显示屏显示,而且P2.0引脚输出一个低电平,二极管正极接高电平,相对应的出货指示灯L1亮2秒。当投入的钱币大于货物所需钱数时,在出货的同时P2.1引脚输出低电平使L2灯亮,表示退回剩余钱币,且假设售货机有足够零钱退币。具体退币过程在这里不做复杂的研究。 因为自动售货机的最大装货量设计的是每个物品五个,当同一个货物购买了5次以上时,自动售货机会自动进行缺货报警,P2.2输出低电平使L3灯亮,同时LCD显示“empty”而且P2.5也输出低电平通过放大器使报警器发出声响。需要重新启动自动售货机自动进行填装。具体连接图如图11所示。 4 软件设计 自动售货机是由软件与硬件配合完成的,软件设计主要包括延时程序,显示程序,货物选择程序,出货程序,主程序。其主流程图如下图9所示。 4.1 延时子程序 延时子程序有按键消抖功能,当有按键按下时,执行延时子程序,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为确保CPU对键的一次闭合仅作一次处理,去除键抖动是非常必要的。本次设计按下一次延迟8ms。而且LED灯亮的时间和报警时间也需要用延时子程序。 其具体程序如下: 4.2选择货物子程序: 每一种不同货物的选择都有其相应的子程序,而且它们的程序和流程图大体相同,其具体工作流程图以可乐为例如图13所示。 图13 选择货物子程序流程图 可乐选择子程序如下: 4.3 输出货物子程序 货物输出程序能够实现在LCD上显示输出,并控制出货后灯亮,而且钱币有剩余时退出钱币。以可乐输出为例,流程图如下图14所示。 货物输出及退币子程序如下: 4.4 显示子程序 自动售货机LCD显示屏的工作过程就是主程序不断调用显示子程序的过程,而显示过程就是一直执行显示程序的过程, 5 联机调试 结合软硬件进行联机调试也是设计的关键一步,把软件编程和硬件电路结合起来,完成protues仿真,并根据仿真选购相应硬件进行实物焊接,调试完成使本设计成功实现。 5.1 protues仿真的实现 Proteus嵌入式系统仿真与开发平台是目前世界上最先进、最完整的嵌入式系统设计与仿真平台。它是一种可视化的支持多种型号单片机,并且支持与当前流行的Keil单片机开发环境连接调试。Proteus是目前唯一能够对各种处理器进行实时仿真、调试与测试的工具,真正实现了在没有目标原型时就可对系统进行设计、测试与验证。Proteus软件有逼真的协同仿真功能。 Keil c51软件是一个具有强大功能的程序开发软件,它不仅可以独自完成编译、连接、调试、仿真等任务,而且经过此软件生成的目标代码效率非常高。初次之外,经过Keil c51软件编译的多数语句而生成的汇编代码不仅比较容易理解,而且整齐紧凑,一点不凌乱。在编译过程中,程序员还可以利用别的编辑器来完成程序的编程,无论哪种编译方法,最后都能生成在单片机内可自行的二进制文件(该文件的格式为.HEX),来实现最后把生成的二进制文件烧制在单片机内进行系统仿真的功能。 按照原理图在protues环境中找出所用元器件,安排好位置并连接好线路,设计出完整的电路仿真图。由于投币部分无法在仿真中模拟出来,仿真时用按键代替红外对管模拟投币系统,没按下按键一次输出一次低电平,按下一次代表从相应通道投币一次。最后用keil软件生成的hex文件放入单片机中进行仿真。实现相应的功能。Protues 仿真图见附录2。 5.2实物焊接与调试 按原理电路图和仿真图选购相应的器件,将不同阻值的电阻用万用表检测出来,NPN和PNP三极管也分辨出来。进行焊接之前先将原件设计好位置并进行合理的布线,这样可以大大提高电路制作的速度和准确性。元件在整个万用板面上应分布均匀、疏密一致,以核心元件AT89S52为中心,围绕它进行布局。发光二极管和蜂鸣器等有正负极的器件要先判断好正负极,在排放的时候以信号的走向放好元件。然后进行焊接,焊接时先把元件的引脚焊在万用板上,然后再用导线进行相应引脚的连接。焊接时注意锡点不要太大也不要过小,防止虚焊和断路。 焊接完成后,把烧好程序的单片机插入槽中,接好电源。通电后,并没有实现应该实现的功能。需要继续进行硬件调试,调试主要注意是否发生错接、开路、短路等几种故障,其中短路是最常见的故障。还有就是器件的调试,包括器件本身已损坏、性能不符合要求及由于组装错误造成的元器件失效,如电解电容、二极管的极性错误等。另外,插件接触不良也会造成系统时好时坏,走线和布局的不合理等也会引起系统可靠性差。对以上可能发生的几方面的问题认真检查,先按照原理图认真查对走线和相应的管脚连接是否正确,再用万用表检查每个可能发生故障的接线端点,检查电压和阻值是否接近正常值。最终找出了一处接线错误,一个发光二极管以击穿,还有一个接线端子虚接。解决了存在的问题,最终完成了实物的调试。实物如下图15所示。 参考文献1聂颖,陈宝霞,冯新恒,等.早期E/Em对急性心肌梗死患者院内事件率的预测价值J.中华医学杂志,2011,91(34):2380-2383.2欧阳烽.基于SAS/EM的图书借阅数据关联规则数据挖掘J.电脑与信息技术,2011,19(4):33-34.3龚倩,白丽平,伍乃骐.基于eM-Plant的晶圆重入加工自动组合装置仿真J.机电工程技术,2012,41(8):7-10.4刘祥,杨家武,郭艳玲,等.基于EM-Plant的发泡水泥板生产线规划设计与仿真J.新技术新工艺,2011(2):40-42.5尹超平,张秉仁,赵吉祥.基于VIISEM平台的虚拟数字集成电路测试仪的设计J.电子技术应用,2013,39(5):89-92.6金华,赵烽.一种基于RFID技术的EM卡有源仿真设计与实现研究J.信息网络安全,2011(6):48-50.7郑馨,王勇,汪国有.EM聚类和SVM自动学习的白细胞图像分割算法J.数据采集与处理,2013,28(5):614-619.8李皓,郑衍松,庞九凤,等.EmBIOS:一种支持MSWindows的嵌入式系统BIOS设计J.北京大学学报:自然科学版,2012,48(1):20-28.9张华琳,沈广茂,高玺璟.一种支持EM信令的中继网关设计与实现J.无线电通信技术,2016(1):89-93.10张中,臧铁钢,王静静.基于eM-Plant的医用轨道物流传输系统仿真与优化J.机械设计与制造工程,2014(1):28-30.专心-专注-专业