




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
天 津 大 学 网 络 教 育 学 院本科毕业设计(论文)题目:基于单片机的自动售货机系统设计完成期限:2015年1月12日 至 2015年5月18日学习中心:专业名称:电气工程及其自动化 学生姓名:学生学号:121701442018指导教师:摘 要自动售货机是劳动密集型的产业构造向技术密集型社会转变的产物。随着经济发展,传统的固定地点人员售货方式暴露出许多弊端:人力资源需求大;受所需服务地点,地理条件的限制;而且在服务时间上不能最大限度的服务于消费者。自动售货机的出现解决了这些难题。品种繁多,对生活的覆盖面广,自动售货,效率高,可 24 小时不间断运营;选址容易,且方便改换场地;适合全职经营,也可兼职(副业)经营;作为广告载体,可赚高额外块。投资风险低,收益高。工作人员唯一所需要做的就是添加商品取走货币。本文设计了一种以AT89C51单片机为核心的自动售货机装置的控制系统。详细介绍了自动售货机系统的方案设计、硬件选择、软件编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。关键词:自动售货机;AT89C51单片机;LCD液晶; 目 录第一章绪论11.1课题设计现状分析31.2课题设计目标5第二章自动售货机系统总体方案设计92.1自动售货机系统方案总述102.2自动售货机系统功能要求112.3自动售货机系统功能简介122.4实现自动售货机的功能的设计思路.13第三章 自动售货机系统硬件设计143.189C51的引脚与功能简介153.2硬件设计要求163.3晶体振荡和复位电路173.4独立键盘按键的识别183.5LCD显示19第四章 系统软件设计214.1程序流程图244.1.1货物选择程序254.1.2货币流程图264.1.3出货系统274.1.4找零系统284.2程序设计30参考文献31附 录32致 谢33天津大学网络教育学院本科毕业设计(论文)第一章 绪论1.1课题设计现状分析从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。大量的生产、大量的消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。智能自动售货机是以单片机为核心的自动化控制装置,它集按键选择技术、单片机技术和显示技术于一体,有功能强大、可靠性高、使用方便、维护简单等特点。因此,在商业、生活中得到了广泛的应用。有些智能自动售货机不仅能够自动识别1元、5角硬币,而且能够自动识别20元、10元、5元纸币,还会自动找零,人机对话的应用性提高使自动售货机在国内大面积普及成为可能。智能自动售货机越来越人性化的设计将会很快的占领中国市场。(1)当前发达国家现状日本:各种自动售货机保有量超过600万台,平均20人一台,世界普及率第一。1990年通过自动售货机实现的销售额即已达到5兆日元(约3000亿人民币)。美国:总的机器保有量大致和日本相当,2000年通过自动售货机实现的销售额达到250亿美元,其中OCS(Office Coffee Service)的销售额排第六位。 韩国:自动售货机的使用历史要远短于其它发达国家,仅有25 年,但据2001 年的统计,总保有量已超过80万台。在2001年韩国生产的自动售货机中OCS占32.7%,排第一位,咖啡自动售货机占 18.1% ,排第三位,仅次于18.6% 的充电自动售货机。瓶罐饮料自动售货机和复合型自动售货机(同机销售瓶罐饮料和热咖啡)都仅占 8.6%,并列第四位。(2)我国国内现状保有量约2万台,且品种单一,主要以瓶饮料售货机为主,技术质量还未完全过关,生产和运营成本较高,收益也不高。导致此现状的主要原因是中国有关的自动售货机企业未能有效解决成本,质量,运营等诸多问题。但由于随中国经济的快速发展和社会的巨大进步,自动售货机的实际需求已相当大。1.2课题设计目标随着经济发展,传统的固定地点人员售货方式暴露出许多弊端:人力资源需求大;受所需服务地点,地理条件的限制;而且在服务时间上不能最大限度的服务于消费者。自动售货机的出现解决了这些难题。品种繁多,对生活的覆盖面广,自动售货,效率高,可 24 小时不间断运营;选址容易,且方便改换场地;适合全职经营,也可兼职(副业)经营;作为广告载体,可赚高额外块。投资风险低,收益高。工作人员唯一所需要做的就是添加商品取走货币。如此多的优点使得自动售货机在世界范围内得到广泛的应用。自动售货机必将在国内普及,并成为城市现代文明程度的一种象征性标志。 本文详细介绍了如何控制、要求进行自动售货机系统的方案设计、硬件选择、软件规划和编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧基于单片机的自动售货机设计,是一种功能增强的自动售货机,实现自动售货机的功能设计思路:采用单片机89C51作为中央控制元件;用P3.4(XO)口作为识别货币输入端;P1口作为货物选择选择端(采用独立式键盘做为选择货物端);采用P0口实现掉出货物功能、找零功能27第二章自动售货机系统总体方案设计以AT89C51单片机为核心的自动售货机装置的控制系统。详细介绍了自动售货机系统的方案设计、硬件选择、软件编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。 2.1自动售货机系统方案总述以AT89C51单片机为核心的自动售货机装置的控制系统。详细介绍了自动售货机系统的方案设计、硬件选择、软件编写,并重点描述了自动售货机系统的工作原理、系统设计、软件编程的原则和技巧。该系统以单片机AT89C51芯片为核心,采用集中控制方式实现了对自动售货机全过程的自动控制。系统程序采用汇编及C语言软件进行程序的编写和编译,该软件具有编程简单。2.2自动售货机系统功能要求1、 自动售货机能销售五种商品:A,B,C,D,E 假设每种商品数量无限。2、 自动售货机允许投入2元、3元、4元硬币:若总币值等于顾客需要的商品单价时,机器送出需要的商品;若总币值大于顾客需要的商品单价时,机器除提供所需商品外,显示余额等待继续输入或者找回余额;若总币值小于顾客需要的商品单价时,报警显示总额,机器提示“余额不足”等待继续输入或者取消交易。机器内1元和2元的找零硬币无限。3、 如果投入的硬币达到或大于所要购买商品的价格,就不必再投入硬币了,自动售货机会发出一个指示信号使接受硬币的装置不再接收新的硬币。4、 每次投币时间有限制,设定每次投币时间不超过30秒,在时间到时,总币值不足顾客购买的商品单价时,自动售货机按钱数不足处理,退还全部硬币。或者在设定时间内,总投币值不足顾客购买的商品单价时,若需要取消交易则可按取消键,售货机按不足钱数处理,退还全部硬币。5、 当顾客完成一次购买后或按错按钮后,显示余额等待继续输入或者找回余额;6、 顾客一次只能购买一种商品的一个,若需要更多商品,需要重复操作。2.3自动售货机系统功能简介基本原理:货币识别器对所投货币进行识别,根据金额将商品选择权提供用户,用户选择后,控制芯片发出指令将所选择商品从储备料道中送达取物口。其功能描述:货物种类一共设有3种,这3种物品分别对应着3个不同的按键选择,其中2元,3元,4元价格不等的物品各1种;自动售货机能够投币总数LCD显示功能。如果累计投入的货币数目超过物品的预设价格,机器能够实现找钱功能;如果投入的货币没有达到所选择物品的预设价格时,投入的钱将全部退还;在投入一次累加货币后选择物品,如果投入的累加货币数目大大超过所选择物品的预设单个价格时,那么能够实现选择同一个物品购买多个,在本设计中设为可以同时购买2个或3个物品。本设计中有一共有7个按键选择,其中3个是货物选择键,有2个是多选键(一次购买2个或3个货物),还有1个确定键和1个取消键。如果没有按照预先设计的流程顺序进行按键选择,自动售货机将会自动返回操作前的状态,等待再次正确的按键选择。自动售货机的原理框图如图2-1所示2.4实现自动售货机的功能的设计思路采用单片机89C51作为中央控制元件;用P3.4(XO)口作为识别货币输入端;P1口作为货物选择选择端(采用独立式键盘做为选择货物端);采用P0口实现掉出货物功能、找零功能;第三章 自动售货机系统硬件设计微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过30多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。微控制器主要分为单片机、DSP、ARM等等,其中单片机体积小、使用灵活方便、价格便宜,主要应用于工业控制和智能仪表等领域;DSP芯片具高速运算能力,常用来处理大量数据或数字信号;ARM凭借低功耗、高性能的特点,广泛应用在移动通信和手持设备领域。 3.1 89C51的引脚与功能简介本次设计采用89C51单片机,其引脚如图3-1所示图3-11主要特性:与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口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示: 口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) 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.2硬件设计要求控制系统要完成图2-1中的各个环节,应具备中央处理模块(微控制器),键盘输入模块,报警提示模块,数额显示模块、货币识别模块和电机驱动模块等,电机驱动模块是自动售货设计当中比较重要的一块,涉及到送出货物的功能。对于驱动电机是如何设计、如何工作的,在这里将不做进一步的研究。本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货(用发光二极管替代)以及找零功能。在本次设计中用P2.0P2.7作为送出货物输出接口,以发光二极管作为出货状态。这就需要控制系统提供如表1中所列的外设器件。表1 硬件电路接口列表外 设 名 称数 量用 途备 注MDB货币识别器1货币识别、找零硬币器要符合国际标准MDB接口 键盘输入1输入设备采用33键盘,和1个退币按键报警提示1语音提示采用语音提示功能显示模块1显示货币金额采用TC1602的LCD显示器这些外设元器件的总体原理框架如图3-2所示货币识别模块显示器STC89C51提示块键盘模块MCUSTC89C52STC89C52STC89C52语音模块模图3-23.3晶体振荡和复位电路晶体振荡电路和复位电路图3-3晶体振荡电路图(1)晶体振荡电路功能介绍:此电路能让电路产生振荡频率,直流电经过晶体振荡电路就会产生电路所需的交流电,此电路不需要外信号刺激自身就可以将直流电能转化为交流电能,所以要是电路需要将直流电变成交流电,在这里就需要用一个晶体振荡电路。(2)参数计算:这是一个晶体振荡电路用到了两个电容和一个晶振,一般12MHZ 30P,6MHZ 20P,2MHZ 10P,我采用的是12MHZ 30P的晶振电路。(3)复位电路功能介绍:为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V5%,即4.755.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。(4)参数计算:这是一个复位电路,由一个电阻和一个电容组成,一般的复位电路电容都为10uF,电阻都为10K3.4独立键盘按键的识别独立式按键的识别很简单,如图3-4所示,当某个键按下时,相应的接口会出现低电平,无键按下时则为高电平,由此就可以判断出哪个键有按下。 如图3-4 独立键盘按键图将P1.0P1.6上的按键编码为00H、01H、02H、03H、04H、05H、06H,按键所对应的功能见表2表2 按键功能表按键号对应的功能00H选择2元钱货物A01H选择3元钱货物B02H选择4元钱货物C03H对选择的货物买2个04H对选择的货物买3个05H对选择的货物再次确定06H对选择的货物取消3.5投币系统投币系统是自动售货设计当中比较重要的一块,涉及到货币识别系统,对于识别货币器是如何设计、如何工作的,在这里将不做进一步的研究。本课题设计主要是要实现自动售货机的投币总数显示、货物选择、出货以及找零功能。在本次设计中用P3.4上的一个按键来代替投币系统的电平输出,如图3-5所示。如图3-5 投币系统图在投币系统中可以通过89C51内部的定时器来控制投币时间,在规定的时间范围内完成投币动作,否则投入的货币全部退出。由于本次设计主要是要体现从投币到操作最后到出货的过程,在设计中没有用到定时设置。本次设计的货币累加是对判断P3.4上的按键上所按下的次数进行累加来实现的,并将累加的次数送到寄存器B,然后系统根据投币的总数和相应的操作来实现输出。3.5 LCD显示本次设计选用TC1602液晶显示屏,可以直接跟51系列单片接口相连。液晶模块TC1602采用标准的16脚接口,作用是显示主控系统面值,如图3-6所示。图3-6 TC1602液晶显示屏图其引脚功能如下第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。 第四章 系统软件设计4.1程序流程图4.1.1货物选择程序如图 图4-14.1.2投币流程图投币装置流程图如图 图4-24.1.3出货系统本设计中,设置了价格分别为2元、3元、4元不等的货物,一共3种。在通过按键选择物品后,将会把产生的信号输入给89C51的P1的引脚上,89C51接收信号后,经过处理后,将会在货物输出端产生与其相对应的信号输出,控制所选货物的掉出。本次设计用P1.0P1.2作为货物的输出端,在货物的输出端采用光电隔离技术,对于光电隔离技术这里不做介绍,在这里用一个LED指示灯代替货物的掉出情况,若有货物掉出则对应输出口为高电平,则指示灯亮,反之指示灯不亮。如图4-2出货设计流程图4.1.4找零系统本次设计中采用P1.3P1.6口作为找零输出口, P1.3P1.6分别对应1元找零口、2元找零口、2元找零口、5元找零口。这样设计的目的是方便实现不同数额的找零输出。同出货系统一样,找钱系统也用LED指示灯来表示找零,对应的端口上若指示灯亮则表示有零钱掉出。找零装置流程图4-3找零装置流程图4.2程序设计ORG 0000H LJMP START ORG 000BH LJMP SERVE0 ORG 001BH LJMP SERVE1 ORG 0030HSTART: LCALL INITIAL ;数据初始化KEY: JNB P1.3,FILL ;扫描按键,若有按键按下,则跳到 相应处理子程序,否则继续扫描按 键 JNB P1.5,PM0 JNB P1.6,PM1 JNB P1.7,PM2 JNB P1.0,PM3 JNB P1.1,PM4 JNB P1.2,PM5 JNB P1.4,PM6 AJMP KEYFILL: LCALL D20MS ;20ms延时 JB P1.3,START ;再次检查按键,若按键弹起,则表 示此次按键无效,继续扫描按键 JNB P1.3,$ ;按键按下时,原地等待按键弹起 LCALL D20MS ;20ms延时,去除按键弹起抖动 MOV 20H,#10 ;商品装货,三种各10瓶 MOV 21H,#10 MOV 22H,#10 MOV 25H,#0 CLR P3.1 ;无货指示灯熄灭 AJMP KEYPM0: LJMP ROUT0PM1: LJMP ROUT1PM2: LJMP ROUT2PM3: LJMP ROUT3PM4: LJMP ROUT4PM5: LJMP ROUT5PM6: LJMP ROUT6ROUT0: LCALL D20MS ;投5角 JB P1.5,KEY0 JNB P1.5,$ LCALL D20MS MOV 32H,30H ;总金额寄存保护 MOV 33H,31H MOV 27H,#100 ;设置退币指示灯延时10s亮开始 计时 CLR P3.0 ;熄灭投币不足指示灯 MOV A,31H ADD A,#5 ;总金额角位加5 CJNE A,#10,CMP0 MOV A,#0 ;角位为10角时,元位加1元, 同时角位清零 INC 30HCMP0: MOV 31H,AKEY0: MOV A,30H CJNE A,#100,NEXT0NEXT1: MOV 30H,32H MOV 31H,33H SETB P3.3 MOV 28H,#30 AJMP NEXT2NEXT0: JNC NEXT1NEXT2: LJMP KEYROUT1: LCALL D20MS ;投1元 JB P1.6,KEY1 JNB P1.6,$ LCALL D20MS MOV 32H,30H ;总金额寄存保护 MOV 33H,31H MOV 27H,#100 CLR P3.0 INC 30H ;总金额元位加1KEY1: MOV A,30H CJNE A,#100,NEXT3NEXT4: MOV 30H,32H MOV 31H,33H SETB P3.3 MOV 28H,#30 AJMP NEXT5NEXT3: JNC NEXT4NEXT5: LJMP KEYROUT2: LCALL D20MS ;投5元 JB P1.7,KEY2 JNB P1.7,$ LCALL D20MS MOV 32H,30H ;总金额寄存保护 MOV 33H,31H MOV 27H,#100 CLR P3.0 MOV A,30H ADD A,#5 ;总金额元位加5 MOV 30H,AKEY2: CJNE A,#100,NEXT6NEXT7: MOV 30H,32H MOV 31H,33H SETB P3.3 MOV 28H,#30 AJMP NEXT8NEXT6: JNC NEXT7NEXT8: LJMP KEYROUT3: LCALL D20MS ;购买可乐 JB P1.0,KEY3 JNB P1.0,$ LCALL D20MS MOV 27H,#100 ;设置退币指示灯延时10s亮开始计时 MOV A,20H JZ EMPTY3 ;判断可乐是否有货,无货则跳转 MOV A,30H ;判断总金额是否够买可乐 CJNE A,#2,CMP3 ;总金额元位为2,则跳转 MOV A,31H ;角位为0,则跳转,即投币不足 JZ LACK3 SJMP LP3CMP3: JC LACK3 ;元位小于2,则跳转,即投币不足LP3: MOV A,31H JZ FG3 MOV 31H,#0 ;角位为5时,则购买可乐后,角位 清零 SJMP CJ3FG3: DEC 30H ;角位为0时,则向元位借1元, 角位则为5,元位自减1元 MOV 31H,#5 CJ3: MOV A,30H SUBB A,#2 ;元位减2 MOV 30H,A DEC 20H ;可乐数量减1 CLR P3.0 ;熄灭投币不足指示灯 MOV 25H,#0 CLR P3.1 ;熄灭无货指示灯 SETB P3.2 ;点亮取物指示灯 MOV 26H,#30 ;取物指示灯延时3s熄灭 LJMP KEY3LACK3: SETB P3.0 ;点亮投币不足指示灯 MOV 25H,#0 CLR P3.1 ;熄灭无货指示灯 CLR P3.2 ;熄灭取物指示灯 MOV 24H,#30 ;投币不足指示灯延时3s熄灭 LJMP KEY3EMPTY3: CLR P3.1 ;无货指示灯复位 MOV 25H,#30 ;无货指示灯开始间隔0.5秒闪烁 CLR P3.0 ;熄灭投币不足指示灯 CLR P3.2 ;熄灭取物指示灯KEY3: LJMP KEYROUT4: LCALL D20MS ;购买纯水 JB P1.1,KEY4 JNB P1.1,$ LCALL D20MS MOV 27H,#100 MOV A,21H JZ EMPTY4 MOV A,30H CJNE A,#1,CMP4 MOV A,31H JZ LACK4 SJMP LP4CMP4: JC LACK4LP4: MOV A,31H JZ FG4 MOV 31H,#0 SJMP CJ4FG4: DEC 30H MOV 31H,#5CJ4: MOV A,30H SUBB A,#1 MOV 30H,A DEC 21H CLR P3.0 MOV 25H,#0 CLR P3.1 SETB P3.2 MOV 26H,#30 LJMP KEY4LACK4: CLR P3.0 MOV 25H,#0 CLR P3.1 CLR P3.2 MOV 24H,#30 LJMP KEY4EMPTY4: CLR P3.1 MOV 25H,#30 CLR P3.0 CLR P3.2KEY4: LJMP KEYROUT5: LCALL D20MS ;购买牛奶 JB P1.2,KEY5 JNB P1.2,$ LCALL D20MS MOV 27H,#100 MOV A,22H JZ EMPTY5 MOV A,30H CJNE A,#3,CMP5CMP5: JC LACK5 SUBB A,#3 MOV 30H,A DEC 22H CLR P3.0 MOV 25H,#0 CLR P3.1 SETB P3.2 MOV 26H,#30 LJMP KEY5LACK5: SETB P3.0 MOV 25H,#0 CLR P3.1 CLR P3.2 MOV 24H,#30 LJMP KEY5EMPTY5: CLR P3.1 MOV 25H,#30 CLR P3.0 CLR P3.2KEY5: LJMP KEYROUT6: LCALL D20MS JB P1.4,KEY6 JNB P1.4,$ LCALL D20MS SETB P3.3 CLR P3.0 MOV 25H,#0 CLR P3.1 CLR P3.2 MOV 27H,#0 MOV 28H,#30 MOV 30H,#0 MOV 31H,#0KEY6: LJMP KEYINITIAL:MOV TMOD,#11H ;设置T0、T1工作于模式1 MOV TL0,#0B0H ;装入T0计数值低8位 MOV TH0,#03CH ;装入T0计数值高8位 MOV TL1,#0B0H ;装入T1计数值低8位 MOV TH1,#0FCH ;装入T1计数值高8位 SETB ET0 ;允许T0中断 SETB ET1 ;允许T1中断 SETB EA ;允许CPU中断 SETB TR0 ;启动定时器T0 SETB TR1 ;启动定时器T1 MOV 20H,#0 ;可乐初始数量 MOV 21H,#0 ;纯水初始数量 MOV 22H,#0 ;牛奶初始数量 MOV 30H,#0 ;总金额元位初始化 MOV 31H,#0 ;总金额角位初始化 MOV 24H,#0 ;投币不足时指示灯亮的计时长度初始化 MOV 25H,#0 ;无货时指示灯亮的计时长度初始化 MOV 26H,#0 ;取物指示灯亮的计时长度初始化 MOV 27H,#0 ;退币指示灯延时亮的计时长度初始化 MOV 28H,#0 ;退币指示灯亮的计时长度初始化 CLR P3.0 ;投币不足指示灯初始化 CLR P3.1 ;无货指示灯初始化 CLR P3.2 ;取物指示灯初始化 CLR P3.3 ;退币指示灯初始化 MOV P1,#0FFH ;P1口初始化 RETDISP: MOV A,30H ;总金额显示程序 MOV B,#10 DIV AB MOV R1,A MOV R2,B MOV A,#3 ;8155初始化 MOV DPTR,#0FF20H ;DPTR指向8155控制寄存器端口 MOVX DPTR,A ;写8155命令字 MOV A,29H JNZ FLAG0 MOV DPTR,#0FF21H MOV A,#20H MOVX DPTR,A MOV DPTR,#TAB0 MOV A,20H ;显示可乐剩余量 MOVC A,A+DPTR CPL A MOV DPTR,#0FF22H MOVX DPTR,A AJMP FLAGFLAG0: CJNE A,#1,FLAG1 MOV DPTR,#0FF21H MOV A,#10H MOVX DPTR,A MOV DPTR,#TAB0 MOV A,21H ;显示纯水剩余量 MOVC A,A+DPTR CPL A MOV DPTR,#0FF22H MOVX DPTR,A AJMP FLAGFLAG1: CJNE A,#2,FLAG2 MOV DPTR,#0FF21H MOV A,#8 MOVX DPTR,A MOV DPTR,#TAB0 MOV A,22H ;显示牛奶剩余量 MOVC A,A+DPTR CPL A MOV DPTR,#0FF22H MOVX DPTR,A AJMP FLAGFLAG2: CJNE A,#3,FLAG3 MOV DPTR,#0FF21H MOV A,#4 MOVX DPTR,A MOV DPTR,#TAB0 MOV A,R1 ;显示总金额十位 MOVC A,A+DPTR CPL A MOV DPTR,#0FF22H MOVX DPTR,A AJMP FLAGFLAG3: CJNE A,#4,FLAG4 MOV DPTR,#0FF21H MOV A,#2 MOVX DPTR,A MOV DPTR,#TAB1 MOV A,R2 ;显示总金额个位 MOVC A,A+DPTR CPL A MOV DPTR,#0FF22H MOVX DPTR,A AJMP FLAGFLAG4: MOV DPTR,#0FF21H MOV A,#1 MOVX DPTR,A MOV DPTR,#TAB0 MOV A,31H ;显示总金额小数位 MOVC A,A+DPTR CPL A MOV DPTR,#0FF22H MOVX DPTR,AFLAG: INC 29H MOV A,29H CJNE A,#6,FLAG5 MOV 29H,#0FLAG5: RETD20MS: MOV R5,#10 ;20ms延时程序 MOV R4,#250 DJNZ R4,$ DJNZ R5,$-4 RETTAB0: DB 03FH;0 DB 006H;1 DB 05BH;2 DB 04FH;3 DB 066H;4 DB 06DH;5 DB 07DH;6 DB 007H;7 DB 0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家具安装安全培训课件
- 建筑工地施工员聘用合同5篇
- 2025年毛纺织、染整加工产品项目立项申请报告
- 2025年橡胶油项目规划申请报告模板
- 机械协议书4篇
- 南庄打井工程方案(3篇)
- 李俊贤科学家科普课件
- 《现代网络技术》课件第9章
- 《电子商务基础与实务》课件第1章
- 2024中国三峡新能源(集团)股份有限公司社会招聘招聘笔试备考试题及答案详解(网校专用)
- 历史选择性必修1 国家制度与社会治理(思考点学思之窗问题探究)参考答案
- 中国铁路总公司《铁路技术管理规程》(高速铁路部分)2014年7月
- 学前儿童发展心理学(第3版-张永红)教学课件1754
- 医学资料冠心病英文版
- 部编人教版九年级语文上册教学计划及教学进度表
- 干法——稻盛和夫
- 人教版数学八年级上册12.2 :三角形全等的判定(“角边角”“角角边”定理)》课件(共26张PPT)
- 城市垃圾焚烧发电处理讲解
- 乳铁蛋白与骨质疏松症
- 注塑成型工艺参数表(模板与说明)
- 询问笔录模板(共7页)
评论
0/150
提交评论