单片机课程设计自动售货机_优秀资料_第1页
单片机课程设计自动售货机_优秀资料_第2页
单片机课程设计自动售货机_优秀资料_第3页
单片机课程设计自动售货机_优秀资料_第4页
单片机课程设计自动售货机_优秀资料_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微控制器应用系统综合设计课程设计报告设计题目指导老师设计者 专业班级设计日期第一章 微控制器应用系统综合课程设计的目的意义11.1设计目的11.2课程在教学计划中的地位和作用1第二章 自动售货机设计任务32. 1 设计内容及要求32.2课程设计的要求32. 2. 1 控制要求32. 2.2 设计要求3第三章 系统的硬件设计与选型43.1总体设计思想与选型43.2硬件设计方案53.3硬件设计概要53.4硬件设计系统原理图63.5选型芯片及其各自功能说明 73. 5. 1 89c51的引脚与功能简介73. 5.2 8155的引脚与功能简介 10第四章软件设计154. 1软件系统的设计方案概耍154

2、.2源程序流程图及其说明154.2.1主程序流程图及其说明 154. 2.2装货子程序流程图及其说明 174. 2.3投币子程序流程图及其说明174. 2.4货物选择了程序流程图及其说明 184. 2.5显示子程序流程图及其说明 194. 2.6中断子程序流程图及其说明 20第六章 系统调试及使用说明225. 1系统使用说明225. 2系统调试22收获、体会24附录系统源程序25参考文献35第一章 微控制器应用系统综合课程设计的目的意义1.1课程设计目的微控制器应用系统综合设计是为测控专业微控制器技术课程而开设 的课程设计教学环节,其目的在于培养学生综合运用理论知识來分析和解决实际 问题的能力

3、,是通过设计以微控制器为核心的单片机检测系统,加深学生对微控 制器技术的了解,进一步掌握其程序设计与硬件接口技术。本课程的主要任务是运用所学微控制器技术、微机原理等方面的知识,设计 出一台以80c32mcu为核心的单片机数据采集、通讯或测控系统,完成信息的采 集、处理、输出及人机接口电路等部分的软、硬件设计。1.2课程设计在教学计划中的地位和作用微控制器原理及应用是一门技术性、应用性很强的学科,实验课教学 是它的一个极为重要的环节。不论是硕件扩展、接口应用还是编程方法、程序调 试,都离不开实验课教学。如果不在切实认真地抓好学生的实践技能的锻炼上下 功夫,单凭课堂理论课学习,势必出现理论与实践脱

4、节,学习与应用脱节的局面。 任随书木上把单片微机技术介绍得多么重要、多么实用、多么好用,同学们仍然 会感到那只是空中楼阁,离自己十分遥远,或者会因此而对它失去兴趣,或者会 感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。微控制器原理及应用课程设计的0的就是让同学们在理论学习的基础 上,通过完成一个涉及mcs-51单片机多种资源应用并具有综合功能的小系统目 标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结 合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加 深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方 面得到较全面

5、的锻炼和提高。使学生增进对单片机的感性认识,加深对单片机理 论方面的理解。使学生掌握单片机的内部功能模块的应用,如定吋器/计数器、 中断、片内外存贮器、i/o 口、串行口通信等。使学生了解和掌握单片机应用系 统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好 基础第二章自动售货机设计任务2.1设计内容自动售货机系统由三个投币口组成,可分别投入5角、1元、5元等三种 硬币。当购买一定数目的货物以后,在取物口取岀商品,然后在退币口取岀余额。 同时为了指示系统当而的状态,配有li、l2指示灯,当系统出现错误时,会根 据提前设定方式进行报警输出。2. 2课程设计要求2. 2. 1控

6、制要求初始状态货物数量由原有量决定。启动操作首先按下装货按钮,将售货机中的货物装满(每种货物十瓶),购物操作通 过面板上的按钮实现。购买货物时应是先投币后选货物,如果投币不足红灯l1 会亮,此时必须往里加币,且重新选择所需货物,才能取出想要的货物;若是投 币足够取物口灯会亮表示货物已到取物口,并且可继续选择货物,直至余额不足; 按“退币钮”退币口灯亮表示余额退出。在操作过程中若是投币后或购买商品 10秒钟不操作,退币口将自动退币。自动售货机屮的商品冇一定数量,如果售 货机内无货,再次选择相应货物,绿灯l2将会闪烁通知购物人,此时可选择其 他商品或退币。2. 2.2设计要求设计出电路原理图,说明

7、工作原理,编写程序及程序流程图。第三章系统硬件设计与选型3.1总体设计思想与选型自动售货机是集光、机、电一体化的独立机构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如下图3-1机器自动计数机器送出选定商品机器将余市送出图3-1自动售货机时序图售货机的工作原理是:(1)从投币口送入货币,然后通过传感器采集数据、识别器判断货币的 真伪并判别面值。(2)识别器把信息数据传给通信模块。(3)通信模块与售货机的主控系统通信,主控系统显示面值,启动售货 机的而板键,显示出哪个货道冇货,哪个货道已经售完,并等待顾客按键 选择商品。(4)顾客选择商品后,售货机自动把商品送出,等待顾客取走

8、。(5)显示余额,如果金额足够多,顾客可以选择找币或者继续买商品; 如果款额不够,售货机经过延时予以退币。(6)系统复零,完成售货。由于系统的局限性,本次设计由按钮来替代货币的投入动作,分别有1.5、2、5元3种投币金额,使用89c51为系统的核心,完成投币、装货、 金额计算、清零等操作,使用6位共阳极led显示器来显示货物存量和投 入金额。3.2硬件设计方案系统的硬件部分主要包括装货、货币投入、选择货物、显示、货物输 出、退币以及主机,系统的结构框图如图3-2货币投入显示89c51货物输出退币3.2系统结构框图3.3硬件设计概要系统的硕件电路主要包括投币输入、选择货物、货物输出、退币、 显示

9、以及主机这几个重耍组成部分。主机:核心是89c51,晶振频率为6mhzo投币输入:投币的币值主要有0.5、1、5元3种,在木次设计屮由 按钮来实现3中投币动作,每按下一次代表投一次,之后通过89c51处理 再显示到led ±o装货:主耍完成的功能是在口动售货机内没有货物时,装入货物, 本设计使用按钮来实现装货功能选择,按下按钮后,系统门动将3种货物 的数量均设为10个。货物选择:本次设计可供选择的货物有3种,分别是1. 5元的可乐、2. 5元的纯水、3元的牛奶,使用3个按钮来完成选择。显示:由六位共阳极数码显示管显示货物存量和当前投币金额。 货物输出:使用led灯来表示货物输出。退币

10、:使用按钮来模拟退币操作,按下按钮后总金额清零。3.4硬件设计系统原理图硬件电路原理图反映了所用到的芯片的连接情况,也可以清楚看 到各硕件是如何连接的,具体请看图3-33. 5选型芯片及其各自功能说明3.5. 1芯片列表依照设计思路,本次设计使用了如下芯片:1 微处理器89c512. 键盘显示接口器件81553. 5.2 89c51的引脚与功能简介i. 89c51单片机两种封装形式:(1)双列直插(pdip) :40引脚。(2)方形(plcc)封装形式:44引脚,有4条引脚是空脚(标为nc)。图3-4 (a)为引脚排列图。图3-4 (b)为逻辑符号图。ii. 89c51引脚功能:1. 电源引脚

11、vcc和vss(1) vcc :电源端,接+5v电源。(2) vss :接地端。2. 外接晶体引脚xtal1和xtal2(1) xtal1:片内振荡电路的输入端;(2) xtal2:片内振荡电路的输出端。3. 控制信号引脚(1) rst / vpd:rst是复位信号输入端,高电平冇效。出现两个机器周期以上的高电平时复位;(txd) (into) (inti) (to) (tl) (wr> (hi»e.2.3.4.5.6.7" plplplplplplplpleh3.o up3.1 up3.2 匸p3.3 匸p3.4 cp3.5 cp3.6 up3.7 =xtal2 &

12、lt;= xtaliu gno c0123456789010545678911111111112098765432io987654343333333333222222222cc=1 po.o (ado) n po. 1 (adi )n po.2 n po.3 n po.4 n po.5 =)po.6(ao2) (ad3) <ad4) (al>5) (adb)n po.7 (ad7): ea/v n ale/proo n psrnn p2.7 n p2.6 =i p2.5 n p2.4 n p2.3 =p2.2n p2.1 n p2.0(ai5) (a14) (a13) (八 12)

13、 (ain (a1o) (a<>)(ab)to门tot1uuuuuuulull 567t0c12345 111吕3z33333 ppprplppppp8 01234567 7891111111123222av) § 5v)8v)987654323333333333苜 0< i £ =£(6y) uos!(< 占n亍ix mix 2=2(s)09n po.4 (ai>4> po.5 (ad5) n po.6 (az>6> n po.7 (al>7>=i fa/vprn nc => 人t.e/prog

14、=> psezn p2.7 (a15) j p2.6 (a 14) n p2 5 (a13>(b)图3-4 89c51单片机引脚排列及逻辑符号图 rst引脚的第二功能:备用电源vpd的输入端;当主电源vcc发生故障,降低到规定值时,此引脚可接备用供电,由vpd向内部ram提供备用供电,以保持片内ram中的数据。(2) ale/prog:地址锁存允许信号访问外部存储器时,ale信号的输出用于锁存低8位地址的控制信号。信号频率为振荡器的1/6; ale端可以驱动8个ttl负载;对flash存储器编程时,用于输入编程脉冲信号。(3) /psen:片外程序存储器读选通信号低电平有效,可驱动

15、8个ttl负载。(4) /ea(vpp):片内、外程序存储器选择端编程电压输入端;当/ea端为高电平时,先访问片内eprom;当/ea端接地吋,只访问片外eprom;在flash存储器编程吋,提供编程电压。4. i/o引脚(1) p0 口(p0.0p0.7):第一功能:通用i/o 口,用来输入/输出数据第二功能:当cpu访问片外存储器时,分时提供低8位地址和高8位数 据的复用总线。(2) p2 口 (p2.0p2.7):第一功能:不扩展片外存储器时,作为通用i/o 口。第二功能:扩展片外存储器时,输出片外存储器的高8位地址。(3) p1 口(p1.0p1.7):第一功能:通用i/o 口。第二功

16、能:片内rom编程或校验时,输入片内rom的低8位地址。(4) p3 口(p3.0p3.7):第一功能:通用的i/o 口。第二功能:控制功能。iii. 89c51的外部总线外部总线结构图如图35所示。、控制总线p2.7pl.7p1.6p2.6p2.5p2.4pl.5p23pl.4p2.2pl 3p2.1pl.2p2.0pl.lp0.7piop0.689c51p0.5p0.4p3.0t>03p3.1p0.2p3.2po.lp33po.op3.4alep3.5p3.6p3.7psenea ale resetvgv$s锁 仃 器5 4 3 2 101111119876543210aaaaaaa

17、aaaaaaaaa数捋总线-+5vzl地址总线ab图35外部总线结构图(1) 地址总线(ab)o 16位,寻址范围64kbo高8位(a15a8)由p2 口输出, 低8位(a7a0)曲p0 口输出。(2) 数据总线(db)o 8位,由p0 口提供。(3) 控制总线(cb)o eb 4条控制线和p3 口的第二功能状态组成。iv. 89c51的内部结构89c51单片机在一块芯片屮集成了 cpu、ram、rom、定时器/计数器和i/o 口等基本功能部件。各功能部件由内部总线连接在一起。89c51基本结构见 图36所示。外部时钟源计数器输入中断控制pop1p2p3串n输入串口输出图3-6 89c51单片

18、机基本结构图cpu是单片机的核心部件,由运算器和控制器等部件组成。运算器的功能 主要是进行算术运算和逻辑运算。由8位alu单元,两个8位的暂存器,x位 的累加器acc、b寄存器,程序状态寄存器psw等组成。控制器用于控制单片 机各部分的运行,由程序计数器pc,指令寄存器、译码器及定时控制逻辑和数 据指针dptr组成。3. 5.3 8155芯片的引脚和功能介绍3. 5. 3. 18155的结构和引脚8155有40个引脚,釆用双列直插封装,其引脚图和组成框图如图3-7所示。42treseto 1 2 5 4 5 6 - papapa叽papapbpbpbpbpbpbpbpbpcpcpcpcpcpc

19、21 232426is2930 ji343tifjtio sttimer in 一timer out *ad0r9了 c如屁reset<pa0ta<>:pcotlpbc-pb"vcc<-5 v)vss(gnd)图3-7 8155引脚图(1)地址/数据线adoad7 (8条)(2)i/o 口总线(22 条):paopa7、pbopb7、pcopc5。控制总线(8条)ale 地址锁存(输入)10 / /m10 口/ram 选择,0:选内 ram; 1:选内 10 口/ce片选线/rd、/wr读、写控制timerin定时器输入(输入定时器所需时钟)timerout

20、定时器输岀(输岀所产生的方波脉冲)包括:內raai3. 5. 3. 2 8155的ram和1/0 口地址编码命令状态寄存器地址一-1个地址3pa 口地址一一1个地址pb 口地址一一个地址1pc 口地址一一1个地址p定时器低8位地址一一1个地址3定时器高s位地址一一1个地址3丿256b对应256个地址心、由ad7ado及a10 1决定。“3. 5. 3. 3 8155的工作方式与基木操作有三种基本操作:1、作单片机片外256b数据存储器10 / /m二0,与其它数据存储器统一编址。用m0vx访问。2、作扩展i / 0 口使用10 / /m = 1, pa 口、pb 口、pc 口,可通过编程决定如

21、何使用。1)命令寄存器(命令控制字) i / 0 口工作方式i / 0 口工作方式有四种:a 口、b 口基本 i/o 口,c 口输入;a 口、b 口基本 i / 0 口,c 口输出;a 口选通i / 0、b 口基本i / 0、c 口作联络线;a 口、b 口选通i / 0、c 口作联络线。2)状态标志寄存器 pa 口、pb 口状态标志。状态标志寄存器:bf缓冲器满标志;intr 端口中断请求标志;inte端口中断允许标志;timer 定时器中断请求。命令寄存器,只写不读;状态标志寄存器,只读不写;这二者使用同一地址3、作定时器扩展使用可以通过编程决定输岀4种信号,即冇四种工作台方式。单方波;连续

22、方波;单脉冲;连续脉冲。由两个8位寄存器,决定14位定时器计数常数及四种工作方式。由命令寄存器的最高两位对定时器进行四种控制。简单的i/o接口扩展在单片机应用系统中,经常采用ttl电路或cmos电路锁存器、三态门电路作为 i/o 口扩展芯片。这种i/o 口一般都是通过p0 口扩展,不占用单片机的i/o 口 资源,只需一根地址线作片选线用。这种方法具有电路简单、成木低、配置灵活 方便等特点。3. 5. 3.4单片机与8155的接口图3-8单片机与8155连接图此时,8155内部ram的地址范围为:0000hooffh, 8155各端口的地址(设无关位为0,这些地址都不是惟一的)为:命令/状态口0

23、400ha 口0401hb 口0402iic 口0403h定时器低字节定时器高字节0404h0405hmcs-51单片机的4个i/o 口中,通常情况k,只有p1 口作为i/o 口使用,实际 使用中经常需要扩展i/o口,扩展1/0 口方法之一就是采用专用的i/o接口芯片如8155, 8255等。木实 验中采用8155扩展了两个输岀口、一个输入口以实现键盘输入和数码管输岀。可编程并行接口芯片intel 8155内部含有256字节的静态ram,两个并行8位口 pa、pb, 一个并行的6位口 pc,以及一个14位的定 时/计数器,是单片机系统最常用的接口芯片之一,掌握其性能与作用方法非常重要。8155

24、可直接与cpu接口, 8155的ram和1/0编址由10/m和ale锁存的地址来控 制,i0/m二0 选择 ram编址为oo-ffii; io/m=1对/8155的i/o 口进行读写,8155内部i/o编址如下图39:aoaiaji/o 口000命令状态口001pa 口010pb 口011pc 口100定时器低8位101疋时器咼6位和方式图3-9d7 d6 d5 d4 d3 d2 di dotm,tmxiebieapc.fcxfbfa pa、pb:定义口 a、口 b, 0为输入,1为输出 iea、ieb: 口 a、口 b中断控制,1为允许,0为禁止第四章系统软件设计4.1软件系统的设计方案概要

25、但系统启动后开始进行按键扫描,等待按钮被按下,从而进入相应的 子程序处理部分,其中子程序主要包拈装货子程序、投币子程序、选择货 物子程序、退币子程序、显示子程序和屮断子程序。4.2源程序流程图及其说明程序的设计思想是在主程序一开始就进行初始化子程序的操作,之后 开始进行按键扫描,等待按钮按下,再进入相应的子程序从而完成相应的 操作。下面就介绍主程序和重要子程序。4.2.1主程序流程图及说明当开机后,程序马上开始进行初始化,z后开始依次对相应的按键状 态进行扫描,当有键按下时进入相应的处理子程序,如果没冇就继续循环 进行扫描。其流程图如图4-1cccccccccccccccccccccccccc

26、cccccccccccccccc4. 2. 2装货子程序装货子程序主要是对3种货物进行装载,每种货物装10瓶,之后再 送6位数码显示管显示。其流程图如图4-2图4-2装货子程序流程图4.2.3投币子程序本程序主要完成的是对投币金额的累加,通过对按键的不同分别进入 0.5、1、5元的投币金额累加子程序,其主要工作过程是先对原冇金额进 行寄存保护,设置退币指示灯延时10s亮开始计时,再在总金额上加上相 应的投币值,若现在的总金额小于100则直接输出显示,若大于或等于100 则将投入的币退出,重新赋予寄存保护的之前的金额数。由于对于0.5、1、 5元3种币值的子程序差不多,故今以0.5元为例进行说明

27、。其流程图如 图4-3图4-30. 5元投币子程序4.2.4货物选择子程序可供选择的货物主要有1. 5元的可乐、2。5元的纯水和3元的牛奶三种。这三种的工作流程是一样的,按下键后,延时10s退币开始计时, 先判断是否冇货,若没冇则l2灯闪烁并返回,若冇货则继续,接下来继 续判断金额是否足够,若不够则l1灯亮3s后返回,若金额足够则可以出货,同时总金额减去货物价格,该货物存量减1,取物口灯亮3s。其具体工作流程图以可乐为例如图4-4图4-4 购可乐子程序4. 2. 5显不子程序显示子程序主要为扩展81551/0接口的6为共阳极led显示器借口电路。先对8155进行初始化,z后写8155的控制字,

28、再通过字位和字形的 设置从而从左至右依次显示可乐存量、纯水存量、牛奶存量和当前总金额。 其工作流程图如图4-5图4-5 显示子程序4.2.6中断子程序本次设计中使用了 to和t12个定时器中断,其中定时器to中断主要 完成各种灯亮或闪烁的时长控制以及无操作10s后退币的控制,t1只是用 于显示了程序中。所以我主要介绍t0的工作,t0没0.1s采样一次。具体 流程图如图4-6图4-6定时器中断to 了程序流程图第五章系统的调试与使用5.1系统使用说明连接好dvcc和89c51后。联机、调试完成后开始运行,开始数码管 显示应为00000.0,之后可开始选择按键,有装货、投币、购物3大类, 当选择装

29、货后,数码管显示应为aaaxx.x,此时表示3种货物的数量均为 10个,z后可以选择投入货币按钮如0.5、1、5,此时在数码管最后3位 会显示出目前以投入货币总量,之后可以选择要买的货物,冇可乐、纯水、 牛奶,选择相应货物后若有货并且钱也够的话,取物口灯亮,若没达到条 件则会报警,如若10秒内不操作,系统将口动退冋所有钱。5.2系统的调试过程在本次设计屮碰到了许多的问题,大部分经过努力都一一克服了。由于门动售货机的组成原理不是太复朵,但需要很强的逻辑判断,因 此此次设计碰到的问题冇一下这些:1. 10s不操作就退币无法使用延吋实现。刚开始想使用延吋来完成10 s内不操作就退币的功能,后发现使用

30、延时无法达到要求,经过思考后便 使用定时器t0中断来进行判断,从而完成功能。2. 金额输入超过100发生显示错误。由于系统所限,金额无法显示到 100及以上,最开始吋当把币值投入超过100时,总金额显示发生错误, 后来通过编程保留未加之前的总金额,当加过后的总金额超出100吋,则 把刚投的币退冋去,使之后的币值依旧是未投币是的总金额。从而避免了 这个错误。3按钮的抖动问题。由于一开始没有按键去抖动的部分,所以导致按 一下往往会累加多次,后來加入了按键去抖动部分后就使得按键舒服又稳 定。4. 小数点显示问题。因为投币时存在0.5元这个选项,所以使得显示 起來不方便,后來通过对显示器倒数第二位的查

31、表数据单独设定,从而使 小数点永久显示。5. 硕件连线问题。此次硕件连线对端口认识程度要求很高,因此多次 由于接错线路而导致程序运行错误。6. 程序编译错误。程序编译错误主要有3个方面:语法错误、逻辑错 误、输入错误。这就需要仔细认真的去多次反复查看程序。7定吋器t0使用问题。一开始不会使用定时器屮断,后通过多方面 查找资料才了解到它的使用。收获与体会这次单片机课程设计不仅巩固了以前所学过的知识,而11学到了很多在书本 上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远 远不够的,只有把所学的理论知识与

32、实践相结合起来,从理论屮得出结论,从而 提高门己的实际动手能力和独立思考的能力。同时在设计的过程中发现了门己的 不足之处,例如对以前所学过的知识理解得不够深刻,掌握得不够牢固,学习了 单片机c语言。经过一周的努力,顺利的完成了单片机课设。这是一个磨练意志的过程。从 课题的选择开始,计算器的设计、硕件和软件系统的设计、到最后的proteus软 件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很 大的锻炼。一方面通过c51单片机等一些器件的设计让我学习和掌握了单片机技 术的基础知识和技术要点,也使以前学的很多知识都得到了运用;另一方面在用 proteus软件画电路图时,然后再转

33、换成一维的word中进行编辑,这个过程中 让我掌握了计算机辅助的设计技术。当然,这是一个需要不断的尝试,不断的校 核,不断的修改,最后完成一个合理的设计的过程。需要的是细心和耐心。在很 大程度上培养了我拼搏的工作精神。使我受益匪浅,更加明确了自己专业的方向。通过木次课设,我不仅学到了关于单片机技术方面的许多专业知识,同吋也 让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的 启发,利用好图书馆和网络,是资源的到最好的利用。与他人交流思想是取得成 功的关键,在交流中,不仅强化了门己原有的知识体系,也扩展了门己的思维。 课设是一个通过思考、发问、自己解惑并动手、提高的过程。我会

34、在以后的学习 屮不断学习,积累经验,完善自己。这里我要感谢实验室的指导老师,没有老师的细致讲解和耐心的检查,也就 没冇我的计算器岀来,非常感谢!附录系统源程序org000011ljmpstartorgooobhljmpserveoorgoo1bhljmpserve1org0030hstart:lcallinitial;数据初始化key:jnbpl. 3, fill;扫描按键,若有按键按下,则跳到 相应处理子程序,否则继续扫描按 键jnbpl. 5, pmojnbpl. 6, pm1jnbpl. 7, pm2jnbpl.o, pm3jnbpl. 1, pm4jnbpl. 2, pm5jnbpl.

35、 4, pm6ajmpkeyftll:lcalld20ms;20ms延时jbpl. 3, start;再次检查按键,若按键弹起,则表 示此次按键无效,继续扫描按键jnbpl. 3, $;按键按下时,原地等待按键弹起lcalld20ms;20ms延吋,去除按键弹起抖动mov20h, #10;商品装货,三种各10瓶mov2111, #10mov22h, #10mov25h, #0clrp3. 1;无货指示灯熄灭ajmpkeypmo:ljmproutopm1:ljmpr0ut1pm2:ljmpr0ut2pm3:ljmpr0ut3pm4:ljmpr0ut4pm5:ljmpr0ut5pm6:ljmpr0

36、ut6routo:lcalld20ms;投5角jbpl. 5, keyojnbpl. 5, $lcalld20msmov32h, 30h;总金额寄存保护mov33h, 31hmov2711, #100;设置退币指示灯延时10s亮开始 计时clrp3. 0;熄灭投币不足指示灯mova, 31hadda, #5;总金额角位加5cjnea, #10, cmpomova, #0;角位为10角时,元位加1元, 同时角位清零inc30hcmpo:mov31h, akeyo:mova, 3011cjnea, #100, nextonext1:mov30h, 32hmov31h, 33hsetbp3. 3mo

37、v2811, #30a j mpnext2nexto:jncnext1next2:ljmpkeyrout1:lcalld20ms;投1元jbpl. 6, key1jnbpl. 6, $lcalld20msmov32h, 30h;总金额寄存保护mov3311, 3111mov27h,#100clrp3. 0inc30h;总金额元位加1key1 :mova, 30hcjnea, #100, next3next4:mov30h, 32hmov31h, 33hsetbp3. 3mov28h, #30a川pnext5next3:jncnext4nexts:l川pkeyr0ut2:lcall d20ms;

38、投5元jbpl. 7, key2jnbpl. 7, $lcalld20msmov32h, 30h;总金额寄存保护mov3311, 3111mov27h, #100clrp3. 0mova, 30hadda, #5;总金额元位加5mov3011, akey2:cjnea, #100,next6next7:mov30h, 32hmov31h, 33hsetbp3. 3mov2811, #30a j mpnextsnext6:jncnext7next8:ljmpkeyr0ut3:lcalld20ms;购买可乐jbpl. 0, key3jnbpl. 0, $lcalld20msmov27h,#100;

39、设置退币指示灯延时10s亮开始计时mova, 20hjzempty3;判断可乐是否有货,无货则跳转mova, 30h;判断总金额是否够买可乐cjnea, #2, cmp3;总金额元位为2,则跳转mova, 3111;角位为0,则跳转,即投币不足jzlack3sjmplp3cmp 3:jclack3;元位小于2,则跳转,即投币不足lp3:mova, 31hjzfg3mov31h, #0;角位为5时,则购买可乐后,角位 清零sjmpcj3fg3:dec30h;角位为0时,则向元位借1元,角位则为5,元位自减1元mov31h, #5cj3:mova, 30hsubba, #2;元位减2mov3011

40、, adec20h;可乐数量减1clrp3. 0;熄灭投币不足指示灯mov25h, #0clrp3. 1;熄灭无货指示灯setbp3. 2;点亮取物指示灯mov26h, #30;取物指示灯延时3s熄灭l川pkey3lack3:setbp3. 0;点亮投币不足指示灯mov25h, #0clrp3. 1;熄灭无货指示灯clrp3. 2;熄灭取物指示灯mov24h, #30;投币不足指示灯延时3s熄灭ljmpkey3empty3:clrp3. 1;无货指示灯复位mov2511, #30;无货指示灯开始间隔0.5秒闪烁clrp3. 0;熄灭投币不足指示灯clrp3. 2;熄灭取物指示灯key3:ljm

41、pkeyr0ut4:lcalld20ms;购买纯水jbpl. 1, key4jnbpl. 1, $lcalld20msmov27h, #100mova, 2111jzempty4mova, 30hcjnea, #1,cmp4mova, 31hjzlack4sjmplp4cmp4:jclack4lp4:mova, 31hjzfg4mov3111, #0sjmpcj4fg4:dec30hmov31h, #5cj4:mova, 30hsubba, #1mov30h, adec21hclrp3. 0mov2511, #0clrp3. 1setbp3. 2mov26h, #30ljmpkey4lack4

42、:clrp3. 0mov25h, #0clrp3. 1clrp3. 2mov24h, #30l川pkey4empty4:clrp3. 1mov25h, #30clrp3. 0clrp3. 2key4:ljmpkeyrouts:lcalld20msjbpl. 2, keysjnbpl. 2, $lcalld20msmov27h, #100mova, 22hjzempty5mova, 30hcjnea, #3, cmp5cmp 5:jclack5subba, #3mov30h, adec22hclrp3. 0mov25h, #0clrp3. 1setbp3. 2mov26h, #30l川pkey5

43、lacks:setbp3. 0mov25h, #0clrp3. 1clrp3. 2mov2411, #30ljmpkeysempty5:clrp3. 1mov25h, #30;购买牛奶clrp3. 0clrp3. 2key5:ljmpkeylcall d20msr0ut6:jbpl. 4, key6jnbpl. 4, $lcall d20mssetb p3. 3clr p3. 00m2511, #0clrp3 1clrp3. 2mov 28h,#30mov3011, #0mov31h, #0ljmp keymov 27h,#0intttal:movtmod,#11h;设置to、t1工作于模式1

44、movtlo, #oboii;装入to计数值低8位movtho,#03ch;装入to计数值高8位movtl1,#0b0h;装入t1计数值低8位movth1,#0fch;装入t1计数值高8位setbeto;允许to中断setbet1;允许t1中断setbea;允许cpu中断setbtro;启动定时器tosetbtri;启动定时器t1mov20h, #0口j乐初始数量mov2111, #0纯水初始数量mov22h, #0牛奶初始数量mov30h, #0总金额元位初始化mov31h, #0总金额角位初始化化mov24h, #0投币不足时指示灯亮的计时长度初始mov25h, #0无货时指示灯亮的计时长

45、度初始化mov26h, #0取物指示灯亮的计时长度初始化mov27h, #0退币指示灯延吋亮的计时长度初始化mov28h, #0退币指示灯亮的计时长度初始化clrp3. 0投币不足指示灯初始化clrp3. 1无货指示灯初始化clrp3. 2取物指示灯初始化clrp3. 3;退币指示灯初始化key6:movretpl, soffii;p1 口初始化disp:mova, 30h;总金额显示程序movb, #10divabmovrl, amovr2,bmova, #3;8155初始化movdptr,#0ff20h;dptr指向8155控制寄存器端口movxdptr, a;写8155命令字mova,

46、29hjnzflagomovdptr,s0ff21hmova, #20hmovxdptr, amovdptr,#tabomova, 20h;显示可乐剩余量movca,a+dptrcplamovdptr,#0ff22hmovxdptr, aajmpflagflago:cjnea, #1,flag1movdptr,#0ff21hmova, #1011movxdptr, amovdptr,#tabomova, 21h;显示纯水剩余量movca,a+dptrcplamovdptr,s0ff22hmovxdptr, aajmpflagflag1:cjnea, #2, flag2movdptr,#0ff21hmova, #8movxdptr, amovdptr,stabomova, 22h;显示牛奶剩余量movca, a+dptrcplamovdptr,#0ff22hmovxdptr, aa川pflagflag2:cjnea, #3, flag3movdptr,#0ff21hmova, #4movxdptr, amovdptr,#tabomova, r1;显示总金额十位movca,©a+dptrcplamovdptr,#0ff22hmovx

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论