欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机的自动售货机设计.pdf

    • 资源ID:72475984       资源大小:1.78MB        全文页数:82页
    • 资源格式: PDF        下载积分:11.9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要11.9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的自动售货机设计.pdf

    目录目录摘要摘要2AastractAastract 3一、自动售货机的系统结构一、自动售货机的系统结构4自动售货机的总体系统结构 4自动售货过程的控制子系统简述 5二、自动售货机的功能介绍二、自动售货机的功能介绍6此次设计的自动售货机的功能简介 6实现自动售货机的功能的设计思路 7三、硬件接口电路三、硬件接口电路7中央控制元件简介中央控制元件简介 8投币及投币总数投币及投币总数 LCDLCD 显示系统显示系统 93.2.1 投币系统 93.2.2 货币累加的实现103.2.3 LCD 显示 10货物选择系统货物选择系统 143.3.1 独立式键盘按键的识别143.3.2 键盘的编码143.3.3 货物选择系统的程序流程图14出货系统出货系统 243.4.1 出货功能的描叙 243.4.2 出货程序流程图 24找钱系统找钱系统253.5.1找钱系统的描述253.5.2程序流程图25四、设计仿真四、设计仿真26 Proteus 简介 26仿真电路 26附录附录33参考文献参考文献48致谢致谢49摘要摘要本文详细介绍了自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C51 芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。本系统选择独立式键盘按键作为货物选择端,实现了投币总数的显示功能。此外,系统程序采用keil 软件进行程序的编写和编译,该软件具有编程简单、查错方便、阅读容易等特点。汇编语言是程序的基本语言,具有容易理解,便于记忆和使用等特点。关键词:自动售货机关键词:自动售货机,AT89C51,LCD,AT89C51,LCD显示显示The Vending Machine Design Based On MCUThe Vending Machine Design Based On MCUAbstrctAbstrctThis paper describes a vending machine system design,hardware selection,software planning and preparation,and describes the focus of the work vending machine system theory,system design,software programming principlesand techniques.AT89C51 in the system as the core chip,the realization of a centralized control of the vendingmachines automatic control the entire process.Choice of the system as a stand-alone keyboard keys to choosethe goods side,the realization of the coin shows the total number of features.In addition,the system programusing keil software to prepare and compile procedures,the software programming is simple,convenient errorchecking,easy to read and so on.Assembly language is the basic language program with easy to understand,easy to remember and use and so on.Key words:VendingKey words:Vending Machines,AT89C51,LCD Displayachines,AT89C51,LCD Display一、自动售货机的系统结构一、自动售货机的系统结构自动售货机的总体系统结构自动售货机的总体系统结构自动售货机是集光、机、电一体化的独立机构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如下图1售货机的工作原理是:(1)从投币口送入货币,然后通过传感器采集数据、识别器判断货币的真伪并判别面值。(2)识别器把信息数据传给通信模块。(3)通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键,显示出哪个货道有货,哪个货道已经售完,并等待顾客按键选择商品。(4)顾客选择商品后,售货机自动把商品送出,等待顾客取走。(5)显示余额,如果金额足够多,顾客可以选择找币或者继续买商品;如果款额不够,售货机经过延时予以退币。退币分为两种情况:一种是由货币识别器完成退纸币,另一种是由硬币的通信模块完成退硬币。(6)系统复零,完成售货。自动售货机的硬件原理构成如下图所示综合所述,售货机系统可以分为三部分组成,即自动售货机的控制子系统、通讯子系统、硬币器子系统以及纸币器子系统。其中控制子系统是本设计研究重点。自动售货过程的控制子系统简述自动售货过程的控制子系统简述控制子系统由以下四个部分组成,分别是预设自动售货机系统、金额累计、可售指示和退币系统、售完检测系统、售出累计及自测功能系统。1、预设自动售货机系统。自动售货机售出的同类商品可分为若干品种,其售前设定价格须预先寄存在控制系统内。售货机的价格设置由按键和存储器组成。通过按键选择被设价商品的种类及价格,并将价格写入存储器中,该存储器本身具有掉电保护功能,属于软件设置方式。此外,在简易售货机中,由于出售商品的种类少,价格变化下,使用币种单一,也可以用硬件设置价格,才用拨码开关对应方式,结构简单,操作方便。2、金额累计、可售指示和退币系统。控制系统的核心CPU 对识币、退币、无货检验及购货信号进行循环检查,当有识币信号后,将金额数值送入金额累计存储器中进行累计,并通过串行接口使可售指示灯亮,提示购货。此时可以按下购货按钮,由于 CPU 检测到有购货信号后,如金额累计器中的数值与预设价格相等,则通过并行扩展接口驱动电磁阀或者微电机驱动出商品,并将金额累计存储器清零,完成一次售货过程,如累计金额大于预设价格时,驱动商品后,相减差额由信号驱动退币,实现退币和找钱功能。3、售完检测系统。在自动售货机商品存储存道下方按照有接触行程开关,当存储存道有商品时,压下行程开关,自动售货机正常工作;当商品出售完毕时,行程开关被释放,向CPU 发出无货信号,经过检测通过串行扩展接口向相应的售完指示灯发出信号,使机身“售完”指示灯亮,此种商品自动停售,即使投币金额达到该道商品预设价格数值,可售按钮仍然无法启动信号,金额累计存储器也不清零。4、自动售货机售出累计及自测功能系统。该机CPU 在每次售出商品后,向售出累计存储器中累计售出数据,通过自动售货机内部的按键可在金额显示窗口中读到累计结果。此外,在按下自测功能键后,出现自测功能信号,由外部按键操作,可检测各商品存储道的驱动商品功能。2二、自动售货机的功能介绍二、自动售货机的功能介绍此次设计的自动售货机的功能简介此次设计的自动售货机的功能简介基本原理:货币识别器对所投货币进行识别,根据金额将商品选择权提供用户,用户选择后,控制芯片发出指令将所选择商品从储备料道中送达取物口。其功能描述:货物种类一共设有3 种,这 3 种物品分别对应着3 个不同的按键选择,其中2 元,3 元,4 元价格不等的物品各 1 种;自动售货机能够投币总数LCD 显示功能。如果累计投入的货币数目超过物品的预设价格,机器能够实现找钱功能;如果投入的货币没有达到所选择物品的预设价格时,投入的钱将全部退还;在投入一次累加货币后选择物品,如果投入的累加货币数目大大超过所选择物品的预设单个价格时,那么能够实现选择同一个物品购买多个,在本设计中设为可以同时购买2 个或 3 个物品。本设计中有一共有7 个按键选择,其中3 个是货物选择键,有2 个是多选键(一次购买2 个或 3 个货物),还有 1 个确定键和 1 个取消键。如果没有按照预先设计的流程顺序进行按键选择,自动售货机将会自动返回操作前的状态,等待再次正确的按键选择。自动售货机的原理框图如图所示实现自动售货机的功能的设计思路实现自动售货机的功能的设计思路采用单片机 89C51 作为中央控制元件;用(XO)口作为识别货币输入端;P1口作为货物选择选择端(采用独立式键盘做为选择货物端);采用P0口实现掉出货物功能、找零功能;三、硬件接口电路三、硬件接口电路图图 硬件接口电路硬件接口电路如图所示,本次设计的自动售货机系统包括以下几个部分:中央控制元件 89C51、投币及投币总数 LCD显示系统、货物选择系统、出货系统、找钱系统。中央控制元件简介中央控制元件简介在本次设计中,中央控制元件采用MCS-51 系列单片机中的89C51。如图所示.图图 89C51 89C51 引脚图引脚图1主要特性:与 MCS-51 兼容;4K 字节可编程闪烁存储器;寿命:1000 写/擦循环;数据保留时间:10 年;全静态工作:0Hz-24Hz;三级程序存储器锁定;128*8 位内部 RAM;32 可编程 I/O 线;两个 16 位定时器/计数器;5 个中断源;可编程串行通道;低功耗的闲置和掉电模式片内振荡器和时钟电路2管脚说明:VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P1 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原码输入口,当FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。P1 口:P1 口是一个内部提供上拉电阻的8 位双向 I/O 口,P1 口缓冲器能接收输出4TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。P2 口:P2 口为一个内部上拉电阻的8 位双向 I/O 口,P2 口缓冲器可接收,输出4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或16 位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。P3 口:P3 口管脚是 8 个带内部上拉电阻的双向I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,拉的缘故。P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示:口管脚 备选功能 RXD(串行输入口)TXD(串行输出口)/INT0(外部中断 0)/INT1(外部中断 1)T0(记时器 0 外部输入)T1(记时器 1 外部输入)/WR(外部数据存储器写选通)/RD(外部数据存储器读选通)P3 口将输出电流(ILL)这是由于上P3 口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序存储器。在FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3投币及投币总数投币及投币总数LCDLCD 显示系统显示系统3.2.13.2.1投币系统投币系统投币系统是自动售货设计当中比较重要的一块,涉及到货币识别系统,对于识别货币器是如何设计、如何工作的,在这里将不做进一步的研究。本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货以及找零功能。在本次设计中用上的一个按键来代替投币系统的电平输出。在投币系统中可以通过89C51 内部的定时器来控制投币时间,在规定的时间范围内完成投币动作,否则投入的货币全部退出。由于本次设计主要是要体现从投币到操作最后到出货的过程,在设计中没有用到定时设置。3.2.23.2.2 货币累加的实现货币累加的实现本次设计的货币累加是对判断上的按键上所按下的次数进行累加来实现的,并将累加的次数送到寄存器B,然后系统根据投币的总数和相应的操作来实现输出。3.2.3 LCD3.2.3 LCD 显示显示本次设计选用 TC1602 液晶显示屏,可以直接跟 51 系列单片接口相连。液晶模块 TC1602 采用标准的 16 脚接口,其引脚功能如下第 1 脚:VSS 为电源地,接 GND。第 2 脚:VDD 接 5V 正电源。第 3 脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K 的电位器调整对比度。第 4 脚:RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第 5 脚:RW 为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS 和 RW 共同为低电平时可以写入指令或者显示地址,当RS 为低电平 RW 为高电平时可以读忙信号,当RS 为高电平 RW 为低电平时可以写入数据。第 6 脚:E 端为使能端,当E 端由高电平跳变成低电平时,液晶模块执行命令。第 714 脚:D0D7 为 8 位双向数据线。第 15 脚:BLA 背光电源正极(+5V)输入引脚。第 16 脚:BLK 背光电源负极,接GND。TC1602 液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了 192个57点阵字符,32个510点阵字符。另外还有字符生成RAM(CGRAM)512字节,供用户自定义字符。如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是 01000001B(41H),显示时模块把地址 41H中的点阵字符图形显示出来,我们就能看到字母“A”。1602 液晶模块内部的控制器共有11 条控制指令指令1:清显示,指令码 01H,光标复位到地址 00H位置指令2:光标复位,光标返回到地址00H指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标指令6:功能设置命令 DL:高电平时为 4位总线,低电平时为 8位总线 N:低电平时为单行显示,高电平时双行显示 F:低电平时显示 5x7的点阵字符,高电平时显示5x10的点阵字符指令7:字符发生器 RAM地址设置指令8:DDRAM地址设置指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。指令10:写数据指令11:读数据4 1602 液晶的读写时序如图所示:读操作时序:写操作时序:投币总数 LCD显示相关程序程序如下:MONEY EQU 0040H;定义投币显示存储单元 RS EQU RW EQU E EQU MAIN:MOV MONEY,#01H;赋予 MONEY 单元初值为 1 START:ACALL DELAY;调用延时程序 MOV P2,#01H ;写指令 01H,清屏 LCALL ENABLE MOV P2,#38H ;写指令 38H,设定 LCD 为 16*2 显示,5*7 点阵,8 位数据接口 LCALL ENABLE MOV P2,#0FH ;写指令 0FH,显示 ON,光标 ON,闪烁 ON LCALL ENABLE MOV P2,#06H ;写指令 06H,光标输入方式增量移位 LCALL ENABLE MOV P2,#80H ;第一行起始字符地址 LCALL ENABLE MOV DPTR,#TABLE ;显示字符表头地址 LCALL DISP ;显示第一行数据 RET ;ENABLE:CLR RS ;CLR RW CLR E LCALL DELAY SETB E RETDISP:MOV R4,#6 ;LOOP1:MOV A,00H ;MOV R1,MONEY L1:ADD A,#06H DJNZ R1,L1返回写指令子程序准备显示一行 6 个字符投币数送 A6;设置偏移量为 MOVC A,A+DPTR ;查表取得要显示的数据 LCALL DISPF ;写入一个数据 INC DPTR ;数据表指针加 1,准备取下一个数据 DJNZ R4,LOOP1 ;JMP INSERTDISPF:MOV P2,A ;SETB RS ;CLR RW CLR E LCALL DELAY SETB E RETTABLE:DB 0 YUAN DB 0 YUAN DB 1 YUAN一行没有显示完就继续写 1 字节数据到显示端口写数据时序(请参照 1602LCD 使用说明书)DB 2 YUAN DB 3 YUAN DB 4 YUAN DB 5 YUAN DB 6 YUAN DB 7 YUAN DB 8 YUAN DB 9 YUAN DB 10YUAN DB 11YUAN DB 12YUAN DB 13YUAN DB 14YUAN DB 15YUAN货物选择系统货物选择系统按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。由于本次设计只需要七个按键即可满足设计要求,所以采用独立式键盘,这样对键盘识别的编程也比较简单。3.3.13.3.1独立式键盘按键的识别独立式键盘按键的识别独立式按键的识别很简单,如图所示,当某个键按下时,相应的接口会出现低电平,无键按下时则为高电平,由此就可以判断出哪个键有按下。3.3.23.3.2键盘的编码键盘的编码将上的按键编码为00H、01H、02H、03H、04H、05H、06H,按键所对应的功能见表表表 按键功能表按键功能表按键号00H01H02H03H对应的功能选择 2 元钱货物 A选择 3 元钱货物 B选择 4 元钱货物 C对选择的货物买2 个04H05H06H对选择的货物买3 个对选择的货物再次确定对选择的货物取消3.3.33.3.3货物选择系统的程序流程图货物选择系统的程序流程图:出货系统出货系统3.4.13.4.1出货功能的描叙出货功能的描叙本设计中,设置了价格分别为2 元、3 元、4 元不等的货物,一共3 种。在通过按键选择物品后,将会把产生的信号输入给 89C51 的 P1 的引脚上,89C51 接收信号后,经过处理后,将会在货物输出端产生与其相对应的信号输出,控制所选货物的掉出。本次设计用作为货物的输出端,在货物的输出端采用光电隔离技术,对于光电隔离技术这里不做介绍,在这里用一个 LED 指示灯代替货物的掉出情况,若有货物掉出则对应输出口为高电平,则指示灯亮,反之指示灯不亮。由于这里 P0 口作通用的 I/O 口输出,所以必须接上拉电阻,如图所示。3.4.23.4.2 出货程序流程图出货程序流程图图图 出货程序流程出货程序流程找钱系统找钱系统3.5.13.5.1 找钱系统的描述找钱系统的描述本次设计中采用口作为找零输出口,分别对应 1元找零口、2元找零口、2元找零口、5元找零口。这样设计的目的是方便实现不同数额的找零输出。同出货系统一样,找钱系统也用LED指示灯来表示找零,对应的端口上若指示灯亮则表示有零钱掉出。3.5.23.5.2 程序流程图程序流程图图图 找钱程序流程图找钱程序流程图四、设计仿真四、设计仿真 Proteus Proteus 简介简介Proteus 嵌入式系统仿真与开发平台是英国Labcenter 公司开发的,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台。它是一种可视化的支持多种型号单片机(如51、PIC、AVR、Motorola hcll 等),并且支持与当前流行的单片机开发环境(Keil、MPLAB、IAR)连接调试的软硬件仿真系统。Proteus 除了具有和其他EDA工具一样的原理图、PCB 自动或人工布线及电路仿真功能外,针对微控制系统与外设的混合电路的电路仿真、软件仿真、系统协同仿真也做到了一体化和互动效果,是目前电子设计爱好者广泛使用的电子线路设计与仿真软件Proteus 和 Multisim 功能的联合和进一步发展。Proteus 软件已有近 20 年的历史,在全球拥有庞大的企业用户群,是目前唯一能够对各种处理器进行实时仿真、调试与测试的EDA 工具,真正实现了在没有目标原型时就可对系统进行设计、测试与验证。由于Proteus 软件包括逼真的协同仿真功能,得到了包括剑桥大学在内的众多大学用户作为电子学或嵌入式系统的课程教学、实验和水平考试平台。目前,Proteus 在国内单片机开发者及单片机爱好者之中已开始普及,有很多开发者已经开始用此开发环境进行仿真。5仿真电路仿真电路用 Keil 软件仿真的结果如图所示:图图 5.2.0 Keil5.2.0 Keil 仿真仿真假如投入 5 元钱货币,操作依次为按 2 元货物选择键、确定键,则在 proteus 里的仿真结果如下图所示:附录附录本次设计的完整程序本次设计的完整程序MONEY EQU 0040H;定义投币显示存储单元 RS EQU RW EQU E EQU 投币总数投币总数 LCDLCD 显示程序显示程序 MAIN:MOV MONEY,#01H;赋予 MONEY 单元初值为 1 START:ACALL DELAY;调用延时程序 MOV P2,#01H ;写指令 01H,清屏 LCALL ENABLE MOV P2,#38H ;写指令 38H,设定 LCD 为 16*2 显示,5*7 点阵,8 位数据接口 LCALL ENABLE MOV P2,#0FH ;写指令 0FH,显示 ON,光标 ON,闪烁 ON LCALL ENABLE MOV P2,#06H ;写指令 06H,光标输入方式增量移位 LCALL ENABLE MOV P2,#80H ;第一行起始字符地址 LCALL ENABLE MOV DPTR,#TABLE ;LCALL DISP ;RET ;ENABLE:CLR RS ;CLR RW CLR E LCALL DELAY SETB E RETDISP:MOV R4,#6 ;LOOP1:MOV A,00H ;显示字符表头地址显示第一行数据返回写指令子程序准备显示一行 6 个字符投币数送 A MOV R1,MONEY L1:ADD A,#06H;设置偏移量为 6 DJNZ R1,L1 MOVC A,A+DPTR ;LCALL DISPF ;INC DPTR ;DJNZ R4,LOOP1 ;JMP INSERTDISPF:MOV P2,A ;SETB RS ;CLR RW CLR E LCALL DELAY SETB E RET查表取得要显示的数据写入一个数据数据表指针加 1,准备取下一个数据一行没有显示完就继续写 1 字节数据到显示端口写数据时序(请参照 1602LCD 使用说明书)TABLE:DB 0 YUAN DB 0 YUAN DB 1 YUAN DB 2 YUAN DB 3 YUAN DB 4 YUAN DB 5 YUAN DB 6 YUAN DB 7 YUAN DB 8 YUAN DB 9 YUAN DB 10YUAN DB 11YUAN DB 12YUAN DB 13YUAN DB 14YUAN DB 15YUAN 投币口程序 INSERT:MOV A,P3 ;CPL A JBC ,S1 ;P3 LCALL KEY MOV A,R5 CJNE A,#0FFH,CHECK ;AJMP INSERT S1:LCALL D10MS ;MOV A,P3 CPL A JBC ,S2 S2:MOV R1,MONEY投币口检测口有键按下转 S1货物选择键盘有键按下转 CHECK 程序延时消抖 INC R1 MOV MONEY,R1WAIT1:MOV A,P3 CPL A JBC,WAIT1投币开关未松开继续等待,否则返回 START AJMP START;返回 键盘程序键盘程序 KEY:MOV A,P1;读 P1 口 CPL A JNZ KEY2 ;A 不等零说明有键按下转 KEY2 MOV R5,#0FFH RETKEY2:LCALL D10MS ;延时消抖 MOV A,P1 CPL A JNZ KEY3 MOV R5,#0FFH RETKEY3:JNB ,K1 MOV R5,#00H LCALL WAIT RETK1:JNB ,K2 MOV R5,#01H LCALL WAIT RET K2:JNB ,K3 MOV R5,#02H LCALL WAIT RET K3:JNB ,K4 MOV R5,#03H LCALL WAIT RET K4:JNB ,K5 MOV R5,#04H LCALL WAIT RET K5:JNB ,K6 MOV R5,#05H LCALL WAIT RET K6:MOV R5,#06H LCALL WAIT RETWAIT:MOV A,P1 CPL A JNZ WAIT RET 货物选择程序 CHECK:MOV A,R5 MOV R6,A MOV A,MONEY DEC A ;因为之前给 MONEY 的初值是 1,所以计算投币总数时应该减去 1 MOV B,A;将投币总数送入 B MOV A,R6 CJNE LJMP A,#00H,NEXTB TWOYUAN;判断是否按下键1;判断是否按下键0NEXTB:CJNE A,#01H,NEXTC LJMPTHREEYUANNEXTC:CJNE LJMPA,#02H,NEXTD1FOURYUAN;判断是否按下键2NEXTD1:MOV A,B ;按其他键时退币 LCALL OUTMONEY JMP MAINTWOYUAN:MOV CJNE MOV R0,#01HLOOPE1:LCALL MOV A,R5 CJNE A,#0FFH,PRESS2 SJMP LOOPE1PRESS2:CJNE LCALL JMP MAIN ;A,B;将投入的货币累加数存入寄存器 BA,#02H,NEXTE1;判断投入的货币数是否为 2 元钱;选择的货物数为 1 个KEY;等待是否有键按下A,#05H,NEXTE2;按下确定键,所选货物掉出OUTGOODS返回,等待下一次投币NEXTE2:CJNEA,#06H,BACKE1;按下取消键 MOV A,B;退还全部的钱 LCALLOUTMONEY JMP MAIN ;返回,等待下一次投币 ;选择其他键时返回,等到有键按下;投入的货币数小于所选择商品的预设价格 ;钱全部退还BACKE1:JMP LOOPE1NEXTE1:JNC NEXTE3 LCALLOUTMONEY JMP MAIN ;返回,等待下一次投币;等待是否有键按下NEXTE3:LCALLKEY MOV A,R5 CJNE A,#0FFH,PRESS3 SJMP NEXTE3 PRESS3:CJNEA,#03H,NEXTE4;选择一次性购买 2 个货物 MOV A,B CJNEA,#04H,NEXTE5;判断投入的货币数是否为 4 元 MOV R0,#02HLOOPE2:LCALLKEY MOV A,R5;将选择的货物数量值存入 R0;等待是否有键按下 CJNE A,#0FFH,PRESS4 SJMP LOOPE2A,#05H,NEXTE6;按下确定键,所选货物掉出 PRESS4:CJNE LCALL OUTGOODS JMP MAIN ;返回,等待下一次投币NEXTE6:CJNE A,#06H,BACKE2 MOVA,B LCALL;退还全部的钱 OUTMONEY JMP MAIN ;返回,等待下一次投币 ;选择其他键时返回,等到有键按下;投入的货币数小于所选货物的预设价格 ;钱全部退还BACKE2:JMPLOOPE2NEXTE5:JNCNEXTE7 LCALL OUTMONEY JMP MAIN ;返回,等待下一次投币;等待是否有键按下NEXTE7:LCALLKEY MOV A,R5 CJNE A,#0FFH,PRESS5 SJMP NEXTE7A,#05H,NEXTE8;按下确定键,所选货物掉出 PRESS5:CJNE MOV A,B SUBBA,#04H;将选择的货物数量值存入 R0;找钱 ;所选货物掉出 MOV R0,#02H LCALLOUTMONEY LCALLOUTGOODS JMP MAIN ;返回,等待下一次投币A,#06H,BACKE3;退还全部的钱NEXTE8:CJNE MOV A,B LCALL OUTMONEY JMP MAIN ;返回,等待下一次投币 ;选择其他键时返回,等到有键按;选择一次性购买 3 个货物BACKE3:JMPNEXTE7NEXTE4:CJNE A,#04H,NEXTE9 MOV A,B CJNEA,#06H,NEXTE10;判断投入的货币数是否为 6 元 MOV R0,#03HLOOPE3:LCALLKEY MOV A,R5;将选择的货物数量值存入 R0;等待是否有键按下 CJNE A,#0FFH,PRESS6 SJMP LOOPE3A,#05H,NEXTE11;按下确定键,所选货物掉出PRESS6:CJNE LCALLOUTGOODS JMP MAIN ;返回,等待下一次投币A,#06H,BACKE4;退还全部的钱NEXTE11:CJNE MOV A,B LCALLOUTMONEY JMP MAIN ;返回,等待下一次投币;选择按下其他键返回,等到有键按下;投入的货币数小于所选货物的预设价格 ;钱全部退还BACKE4:JMPLOOPE3NEXTE10:JNCNEXTE12 LCALL OUTMONEY JMP MAIN ;返回,等待下一次投币 KEY;等待是否有键按下NEXTE12:LCALL MOV A,R5 CJNE A,#0FFH,PRESS7 SJMP NEXTE12A,#05H,NEXTE13;按下确定键,所选货物掉出 PRESS7:CJNE MOV A,B SUBBA,#06H;将选择的货物数量值存入 R0;找钱 MOV R0,#03H LCALL OUTMONEY LCALL OUTGOODS ;所选货物掉出 JMP MAIN ;返回,等待下一次投币A,#06H,BACKE5 ;按下取消键 ;退还全部的钱NEXTE13:CJNE MOV A,B LCALLOUTMONEY JMP MAIN ;返回,等待下一次投币;选择按其他键时返回,等到有键按;按下确定键,所选货物掉出BACKE5:JMPNEXTE12NEXTE9:CJNEA,#05H,NEXTE14 MOV A,B SUBBA,#02H;将选择的货物数量值存入 R0 MOV R0,#01H MOV R1,A;将找钱数存入 R1;找钱 ;所选货物掉出 LCALLOUTMONEY LCALLOUTGOODS JMP MAIN ;返回,等待下一次投币NEXTE14:CJNEA,#06H,BACKE6 MOV A,B ;退还全部的钱 LCALL OUTMONEY JMP MAIN ;返回,等待下一次投币BACKE6:JMP NEXTE9THREEYUAN:MOV A,B CJNE ;将投入的货币累加数存入寄存器 B;判断投入的货币数是否为 3 元钱A,#03H,NEXTF1 MOV R0,#01HLOOPF1:LCALLKEY MOV A,R5;选择的货物数为 1 个;等待是否有键按下 CJNE A,#0FFH,PRESSB1 SJMP LOOPF1A,#05H,NEXTF2;按下确定键,所选货物掉出PRESSB1:CJNE LCALL OUTGOODS JMP MAIN ;返回,等待下一次投币NEXTF2:CJNEA,#06H,BACKF1;按下取消键 MOV A,B ;退还全部的钱 LCALLOUTMONEY JMP MAIN ;返回,等待下一次投币;选择按下其他键返回,等到有键按下;投入的货币数小于所选择商品的预设价格 ;钱全部退还BACKF1:JMPLOOPF1NEXTF1:JNCNEXTF3 LCALLOUTMONEY JMP MAIN ;返回,等待下一次投币;等待是否有键按下NEXTF3:LCALLKEY MOV A,R5 CJNE A,#0FFH,PRESSB2 SJMP NEXTF3;选择一次性购买 2 个货物 PRESSB2:CJNEA,#03H,NEXTF4 MOV A,B CJNEA,#06H,NEXTF5;判断投入的货币数是否为 6 元 MOV R0,#02HLOOPF2:LCALLKEY MOV A,R5;将选择的货物数量值存入 R0;等待是否有键按下 CJNE A,#0FFH,PRESSB3 SJMP LOOPF2PRESSB3:CJNEA,#05H,NEXTF6;按下确定键,所选货物掉出 LCALLOUTGOODS JMP MAIN ;返回,等待下一次投币A,#06H,BACKF2 ;按下取消键 ;退还全部的钱NEXTF6:CJNE MOV A,B LCALLOUTMONEY JMP MAIN ;返回,等待下一次投币BACKF2:JMP LOOPF2 ;选择按下其他键返回,等到有键按下NEXTF5:JNC NEXTF7 LCALL ;投入的货币数小于所选货物的预设价格 ;钱全部退还OUTMONEY JMP MAIN ;返回,等待下一次投币KEY;等待是否有键按下NEXTF7:LCALL MOVA,R5 CJNE A,#0FFH,PRESSB4 SJMP NEXTF7;按下确定键,所选货物掉出 PRESSB4:CJNE A,#05H,NEXTF8 MOVA,B SUBB A,#06H MOVR0,#02H LCALL LCALL;将选择的货物数量值存入 R0;找钱 ;所选货物掉出OUTMONEYOUTGOODS JMP MAIN ;返回,等待下一次投币NEXTF8:CJNE A,#06H,VOICEF3 MOVA,B LCALL;退还全部的钱OUTMONEY JMP MAIN ;返回,等待下一次投币 ;选择按下其他键返回,等到有键按;选择一次性购买 3 个货物VOICEF3:JMPNEXTF7NEXTF4:CJNE A,#04H,NEXTF9 MOVA,B CJNE A,#09H,NEXTF10 MOVR0,#03HLOOPF3:LCALLKEY;判断投入的货币数是否为

    注意事项

    本文(基于单片机的自动售货机设计.pdf)为本站会员(w***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开