版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中南大学《微控制器应用系统综合设计》课程设计报告设计题目指导老师设计者目录第一章微控制器应用系统综合课程设计的目的意义 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。189C51的引脚与功能简介 73。5。28155的引脚与功能简介 10第四章软件设计 154.1软件系统的设计方案概要 154。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课程设计目的《微控制器应用系统综合设计》是为测控专业《微控制器技术》课程而开设的课程设计教学环节,其目的在于培养学生综合运用理论知识来分析和解决实际问题的能力,是通过设计以微控制器为核心的单片机检测系统,加深学生对微控制器技术的了解,进一步掌握其程序设计与硬件接口技术。本课程的主要任务是运用所学微控制器技术、微机原理等方面的知识,设计出一台以80C32MCU为核心的单片机数据采集、通讯或测控系统,完成信息的采集、处理、输出及人机接口电路等部分的软、硬件设计。1.2课程设计在教学计划中的地位和作用《微控制器原理及应用》是一门技术性、应用性很强的学科,实验课教学是它的一个极为重要的环节。不论是硬件扩展、接口应用还是编程方法、程序调试,都离不开实验课教学.如果不在切实认真地抓好学生的实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节,学习与应用脱节的局面。任随书本上把单片微机技术介绍得多么重要、多么实用、多么好用,同学们仍然会感到那只是空中楼阁,离自己十分遥远,或者会因此而对它失去兴趣,或者会感到它高深莫测无从下手,这些情况都会令课堂教学的效果大打折扣。《微控制器原理及应用》课程设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS-51单片机多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。使学生增进对单片机的感性认识,加深对单片机理论方面的理解。使学生掌握单片机的内部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通信等。使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础第二章自动售货机设计任务2.1设计内容自动售货机系统由三个投币口组成,可分别投入5角、1元、5元等三种硬币。当购买一定数目的货物以后,在取物口取出商品,然后在退币口取出余额。同时为了指示系统当前的状态,配有L1、L2指示灯,当系统出现错误时,会根据提前设定方式进行报警输出。2.2课程设计要求2.2.1控制要求初始状态货物数量由原有量决定.启动操作首先按下装货按钮,将售货机中的货物装满(每种货物十瓶),购物操作通过面板上的按钮实现.购买货物时应是先投币后选货物,如果投币不足红灯L1会亮,此时必须往里加币,且重新选择所需货物,才能取出想要的货物;若是投币足够取物口灯会亮表示货物已到取物口,并且可继续选择货物,直至余额不足;按“退币钮”退币口灯亮表示余额退出.在操作过程中若是投币后或购买商品10秒钟不操作,退币口将自动退币.自动售货机中的商品有一定数量,如果售货机内无货,再次选择相应货物,绿灯L2将会闪烁通知购物人,此时可选择其他商品或退币。2。2。2设计要求设计出电路原理图,说明工作原理,编写程序及程序流程图。第三章系统硬件设计与选型3.1总体设计思想与选型自动售货机是集光、机、电一体化的独立机构,它只需要顾客投币和按购物键选择即可自动售货及退找零钱,其工作程序如下图3—1图3—图3—1自动售货机时序图售货机的工作原理是:从投币口送入货币,然后通过传感器采集数据、识别器判断货币的真伪并判别面值。(2)识别器把信息数据传给通信模块.(3)通信模块与售货机的主控系统通信,主控系统显示面值,启动售货机的面板键,显示出哪个货道有货,哪个货道已经售完,并等待顾客按键选择商品。(4)顾客选择商品后,售货机自动把商品送出,等待顾客取走.(5)显示余额,如果金额足够多,顾客可以选择找币或者继续买商品;如果款额不够,售货机经过延时予以退币。(6)系统复零,完成售货。由于系统的局限性,本次设计由按钮来替代货币的投入动作,分别有1.5、2、5元3种投币金额,使用89C51为系统的核心,完成投币、装货、金额计算、清零等操作,使用6位共阳极LED显示器来显示货物存量和投入金额。3.2硬件设计方案系统的硬件部分主要包括装货、货币投入、选择货物、显示、货物输出、退币以及主机,系统的结构框图如图3—289C51退币货物输出显示货币投入89C51退币货物输出显示货币投入装货装货选择货物选择货物图3。2系统结构框图3.3硬件设计概要系统的硬件电路主要包括投币输入、选择货物、货物输出、退币、显示以及主机这几个重要组成部分。主机:核心是89C51,晶振频率为6MHz。投币输入:投币的币值主要有0。5、1、5元3种,在本次设计中由按钮来实现3中投币动作,每按下一次代表投一次,之后通过89C51处理再显示到LED上。装货:主要完成的功能是在自动售货机内没有货物时,装入货物,本设计使用按钮来实现装货功能选择,按下按钮后,系统自动将3种货物的数量均设为10个。货物选择:本次设计可供选择的货物有3种,分别是1。5元的可乐、2.5元的纯水、3元的牛奶,使用3个按钮来完成选择。显示:由六位共阳极数码显示管显示货物存量和当前投币金额。货物输出:使用LED灯来表示货物输出.退币:使用按钮来模拟退币操作,按下按钮后总金额清零。3。4硬件设计系统原理图硬件电路原理图反映了所用到的芯片的连接情况,也可以清楚看到各硬件是如何连接的,具体请看图3—33.5选型芯片及其各自功能说明3.5.1芯片列表依照设计思路,本次设计使用了如下芯片:微处理器89C51键盘显示接口器件81553。5.289C51的引脚与功能简介=1\*ROMANI.89C51单片机两种封装形式:(1)双列直插(PDIP):40引脚。(2)方形(PLCC)封装形式:44引脚,有4条引脚是空脚(标为NC)。图3—4(a)为引脚排列图。图3—4(b)为逻辑符号图.=2\*ROMANII.89C51引脚功能:1。电源引脚Vcc和Vss(1)Vcc:电源端,接+5V电源。(2)Vss:接地端。2.外接晶体引脚XTALl和XTAL2(1)XTAL1:片内振荡电路的输入端;(2)XTAL2:片内振荡电路的输出端。3.控制信号引脚(1)RST/VPD:RST是复位信号输入端,高电平有效。出现两个机器周期以上的高电平时复位;图3—489C51单片机引脚排列及逻辑符号图RST引脚的第二功能:备用电源VPD的输入端;当主电源VCC发生故障,降低到规定值时,此引脚可接备用供电,由VPD向内部RAM提供备用供电,以保持片内RAM中的数据。(2)ALE/PROG:地址锁存允许信号访问外部存储器时,ALE信号的输出用于锁存低8位地址的控制信号。信号频率为振荡器的1/6;ALE端可以驱动8个TTL负载;对Flash存储器编程时,用于输入编程脉冲信号。(3)/PSEN:片外程序存储器读选通信号低电平有效,可驱动8个TTL负载。(4)/EA(VPP):片内、外程序存储器选择端编程电压输入端;当/EA端为高电平时,先访问片内EPROM;当/EA端接地时,只访问片外EPROM;在Flash存储器编程时,提供编程电压。4.I/O引脚(1)P0口(P0。0~P0。7):第一功能:通用I/O口,用来输入/输出数据第二功能:当CPU访问片外存储器时,分时提供低8位地址和高8位数据的复用总线。(2)P2口(P2。0~P2.7):第一功能:不扩展片外存储器时,作为通用I/O口。第二功能:扩展片外存储器时,输出片外存储器的高8位地址。(3)P1口(P1.0~P1。7):第一功能:通用I/O口。第二功能:片内ROM编程或校验时,输入片内ROM的低8位地址。(4)P3口(P3.0~P3.7):第一功能:通用的I/O口。第二功能:控制功能。=3\*ROMANIII。89C51的外部总线外部总线结构图如图3-5所示。图3—5外部总线结构图(1)地址总线(AB).16位,寻址范围64KB。高8位(A15~A8)由P2口输出,低8位(A7~A0)由P0口输出。(2)数据总线(DB)。8位,由P0口提供.(3)控制总线(CB)。由4条控制线和P3口的第二功能状态组成.=4\*ROMANIV。89C51的内部结构89C51单片机在一块芯片中集成了CPU、RAM、ROM、定时器/计数器和I/O口等基本功能部件。各功能部件由内部总线连接在一起。89C51基本结构见图3—6所示.图3-689C51单片机基本结构图CPU是单片机的核心部件,由运算器和控制器等部件组成。运算器的功能主要是进行算术运算和逻辑运算。由8位ALU单元,两个8位的暂存器,8位的累加器ACC、B寄存器,程序状态寄存器PSW等组成。控制器用于控制单片机各部分的运行,由程序计数器PC,指令寄存器、译码器及定时控制逻辑和数据指针DPTR组成.3.5.38155芯片的引脚和功能介绍3。5.3.18155的结构和引脚8155有40个引脚,采用双列直插封装,其引脚图和组成框图如图3—7所示。
图3—78155引脚图(1)地址/数据线AD0~AD7(8条)
(2)I/O口总线(22条):PA0~PA7、PB0~PB7、PC0~PC5。(3)控制总线(8条)ALE——地址锁存(输入)IO//M——IO口/RAM选择,0:选内RAM;1:选内IO口/CE-—片选线/RD、/WR——读、写控制TIMERIN-—定时器输入(输入定时器所需时钟)TIMEROUT——定时器输出(输出所产生的方波脉冲)3.5。3。28155的RAM和I/O口地址编码3。5.3。38155的工作方式与基本操作有三种基本操作:1、作单片机片外256B数据存储器IO//M=0,与其它数据存储器统一编址.用MOVX访问。2、作扩展I/O口使用IO//M=1,PA口、PB口、PC口,可通过编程决定如何使用.1)命令寄存器(命令控制字)——I/O口工作方式I/O口工作方式有四种:A口、B口
基本I/O口,
C口输入;A口、B口
基本I/O口,
C口输出;A口选通I/O、B口基本I/O、C口作联络线;A口、B口选通I/O、C口作联络线。2)状态标志寄存器——PA口、PB口状态标志。状态标志寄存器:
BF-—缓冲器满标志;
INTR-—端口中断请求标志;
INTE——端口中断允许标志;
TIMER——定时器中断请求.命令寄存器,只写不读;状态标志寄存器,只读不写;
这二者使用同一地址3、作定时器扩展使用可以通过编程决定输出4种信号,即有四种工作台方式.
单方波;
连续方波;
单脉冲;
连续脉冲。由两个8位寄存器,决定14位定时器计数常数及四种工作方式。由命令寄存器的最高两位对定时器进行四种控制。简单的I/O接口扩展在单片机应用系统中,经常采用TTL电路或CMOS电路锁存器、三态门电路作为I/O口扩展芯片。这种I/O口一般都是通过P0口扩展,不占用单片机的I/O口资源,只需一根地址线作片选线用。这种方法具有电路简单、成本低、配置灵活方便等特点。3.5。3.4单片机与8155的接口图3—8单片机与8155连接图
此时,8155内部RAM的地址范围为:0000H~00FFH,8155各端口的地址(设无关位为0,这些地址都不是惟一的)为:
命令/状态口
0400H
A口
0401H
B口
0402H
C口
0403H
定时器低字节
0404H
定时器高字节
0405HMCS—51单片机的4个I/O口中,通常情况下,只有P1口作为I/O口使用,实际使用中经常需要扩展I/O
口,扩展I/O口方法之一就是采用专用的I/O接口芯片如8155,8255等.本实验中采用8155扩展了两个输出口、一个输入口以实现键盘输入和数码管输出。可编程并行接口芯片Intel8155内部含有256字节的静态RAM,两个并行8位口PA、PB,一个并行的6位口PC,以及一个14位的定时/计数器,是单片机系统最常用的接口芯片之一,掌握其性能与作用方法非常重要。8155可直接与CPU接口,8155的RAM和I/O编址由IO/M和ALE锁存的地址来控制,IO/M=0选择RAM编址为00—FFH;IO/M=1对/8155的I/O口进行读写,8155内部I/O编址如下图3—9:
图3—9
D7
D6
D5
D4
D3
D2
D1
D0
●PA、PB:定义口A、口B,0为输入,1为输出●IEA、IEB:口A、口B中断控制,1为允许,0为禁止第四章系统软件设计4.1软件系统的设计方案概要但系统启动后开始进行按键扫描,等待按钮被按下,从而进入相应的子程序处理部分,其中子程序主要包括装货子程序、投币子程序、选择货物子程序、退币子程序、显示子程序和中断子程序。4。2源程序流程图及其说明程序的设计思想是在主程序一开始就进行初始化子程序的操作,之后开始进行按键扫描,等待按钮按下,再进入相应的子程序从而完成相应的操作。下面就介绍主程序和重要子程序。4。2。1主程序流程图及说明当开机后,程序马上开始进行初始化,之后开始依次对相应的按键状态进行扫描,当有键按下时进入相应的处理子程序,如果没有就继续循环进行扫描。其流程图如图4-1开始开始初始化初始化装货键是否按下?装货键是否按下?装货子程序Y装货子程序N0.5元键是否按下?0.5元键是否按下?0.5元投币子程序Y0.5元投币子程序N1元键是否按下?1元键是否按下?1元投币子程序Y1元投币子程序N5元5元键是否按下?5元投币子程序Y5元投币子程序N可乐键是否按下?可乐键是否按下?退币子程序牛奶子程序纯水子程序可乐子程序退币键是否按下?牛奶键是否按下?纯水键是否按下?Y退币子程序牛奶子程序纯水子程序可乐子程序退币键是否按下?牛奶键是否按下?纯水键是否按下?NYNYNNY4.2。2装货子程序装货子程序主要是对3种货物进行装载,每种货物装10瓶,之后再送6位数码显示管显示.其流程图如图4-2装货子程序装货子程序按键去抖按键去抖三种货物数量全置三种货物数量全置10显示显示返回返回图4—2装货子程序流程图4.2。3投币子程序本程序主要完成的是对投币金额的累加,通过对按键的不同分别进入0.5、1、5元的投币金额累加子程序,其主要工作过程是先对原有金额进行寄存保护,设置退币指示灯延时10s亮开始计时,再在总金额上加上相应的投币值,若现在的总金额小于100则直接输出显示,若大于或等于100则将投入的币退出,重新赋予寄存保护的之前的金额数。由于对于0.5、1、5元3种币值的子程序差不多,故今以0。5元为例进行说明.其流程图如图4—3投币子程序投币子程序按键去抖按键去抖总金额寄存保护总金额寄存保护延时延时10s退币开始计时总金额角位加总金额角位加5角位是否为0?角位是否为0?元位加1角位清零元位加1角位清零N总金额总金额>=100?总金额还原退币Y总金额还原退币N返回返回图4—30。5元投币子程序4.2.4货物选择子程序可供选择的货物主要有1.5元的可乐、2。5元的纯水和3元的牛奶三种。这三种的工作流程是一样的,按下键后,延时10s退币开始计时,先判断是否有货,若没有则L2灯闪烁并返回,若有货则继续,接下来继续判断金额是否足够,若不够则L1灯亮3s后返回,若金额足够则可以出货,同时总金额减去货物价格,该货物存量减1,取物口灯亮3s。其具体工作流程图以可乐为例如图4—4选择可乐子程序选择可乐子程序按键去抖按键去抖延时延时10s退币开始计时有货吗?有货吗?L2灯间隔0.5s闪烁NL2灯间隔0.5s闪烁Y钱够吗?钱够吗?L1灯亮3SNL1灯亮3SY总金额总金额—1.5可乐存量—1点亮取物灯点亮取物灯3s返回返回图4—4购可乐子程序4.2。5显示子程序显示子程序主要为扩展8155I/O接口的6为共阳极LED显示器借口电路.先对8155进行初始化,之后写8155的控制字,再通过字位和字形的设置从而从左至右依次显示可乐存量、纯水存量、牛奶存量和当前总金额.其工作流程图如图4-5显示子程序显示子程序8155初始化8155初始化DPTR指向控制寄存器端口查表得到转换码从显示缓冲区中取数送A写8155命令字DPTR指向控制寄存器端口查表得到转换码从显示缓冲区中取数送A写8155命令字显示转换后的数据显示转换后的数据返回返回图4—5显示子程序4。2。6中断子程序本次设计中使用了T0和T12个定时器中断,其中定时器T0中断主要完成各种灯亮或闪烁的时长控制以及无操作10s后退币的控制,T1只是用于显示子程序中.所以我主要介绍T0的工作,T0没0。1s采样一次。具体流程图如图4—6中断开始中断开始设置中断为设置中断为0.1s-1后是否为0?投币不足灯亮长度是否为0?-1后是否为0?投币不足灯亮长度是否为0?熄灭投币不足指示灯熄灭投币不足指示灯NYYN取物灯亮长度是否为0?-1后是否为0?取物灯亮长度是否为0?-1后是否为0?熄灭取物灯NY熄灭取物灯YN-1后是否为0?10s退币长度是否为0?-1后是否为0?10s退币长度是否为0?点亮退币灯点亮退币灯总金额清0NY退币灯亮长度是否为0?-1后是否为0?YN退币灯亮长度是否为0?-1后是否为0?熄灭退币灯熄灭退币灯NYYN无货灯/5后是否为0?无货亮无货灯/5后是否为0?无货亮长度是否为0?无货灯状态取反NY无货灯状态取反无货灯亮长度-1无货灯亮长度-1中断返回中断返回图4—6定时器中断T0子程序流程图第五章系统的调试与使用5.1系统使用说明连接好dvcc和89C51后。联机、调试完成后开始运行,开始数码管显示应为00000.0,之后可开始选择按键,有装货、投币、购物3大类,当选择装货后,数码管显示应为AAAXX。X,此时表示3种货物的数量均为10个,之后可以选择投入货币按钮如0.5、1、5,此时在数码管最后3位会显示出目前以投入货币总量,之后可以选择要买的货物,有可乐、纯水、牛奶,选择相应货物后若有货并且钱也够的话,取物口灯亮,若没达到条件则会报警,如若10秒内不操作,系统将自动退回所有钱。5。2系统的调试过程在本次设计中碰到了许多的问题,大部分经过努力都一一克服了.由于自动售货机的组成原理不是太复杂,但需要很强的逻辑判断,因此此次设计碰到的问题有一下这些:1.10s不操作就退币无法使用延时实现。刚开始想使用延时来完成10S内不操作就退币的功能,后发现使用延时无法达到要求,经过思考后便使用定时器T0中断来进行判断,从而完成功能。2.金额输入超过100发生显示错误。由于系统所限,金额无法显示到100及以上,最开始时当把币值投入超过100时,总金额显示发生错误,后来通过编程保留未加之前的总金额,当加过后的总金额超出100时,则把刚投的币退回去,使之后的币值依旧是未投币是的总金额。从而避免了这个错误。3.按钮的抖动问题。由于一开始没有按键去抖动的部分,所以导致按一下往往会累加多次,后来加入了按键去抖动部分后就使得按键舒服又稳定。4.小数点显示问题.因为投币时存在0。5元这个选项,所以使得显示起来不方便,后来通过对显示器倒数第二位的查表数据单独设定,从而使小数点永久显示.5.硬件连线问题.此次硬件连线对端口认识程度要求很高,因此多次由于接错线路而导致程序运行错误。6。程序编译错误。程序编译错误主要有3个方面:语法错误、逻辑错误、输入错误.这就需要仔细认真的去多次反复查看程序。7.定时器T0使用问题.一开始不会使用定时器中断,后通过多方面查找资料才了解到它的使用.收获与体会这次单片机课程设计不仅巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,例如对以前所学过的知识理解得不够深刻,掌握得不够牢固,学习了单片机C语言。经过一周的努力,顺利的完成了单片机课设。这是一个磨练意志的过程。从课题的选择开始,计算器的设计、硬件和软件系统的设计、到最后的Proteus软件仿真完成,这其中经历了很多困难,但是更重要的是在这个过程中我得到了很大的锻炼.一方面通过C51单片机等一些器件的设计让我学习和掌握了单片机技术的基础知识和技术要点,也使以前学的很多知识都得到了运用;另一方面在用Proteus软件画电路图时,然后再转换成一维的WORD中进行编辑,这个过程中让我掌握了计算机辅助的设计技术。当然,这是一个需要不断的尝试,不断的校核,不断的修改,最后完成一个合理的设计的过程。需要的是细心和耐心。在很大程度上培养了我拼搏的工作精神。使我受益匪浅,更加明确了自己专业的方向。通过本次课设,我不仅学到了关于单片机技术方面的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的启发,利用好图书馆和网络,是资源的到最好的利用.与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。课设是一个通过思考、发问、自己解惑并动手、提高的过程.我会在以后的学习中不断学习,积累经验,完善自己。这里我要感谢实验室的指导老师,没有老师的细致讲解和耐心的检查,也就没有我的计算器出来,非常感谢!附录系统源程序ORG0000HLJMPSTARTORG000BHLJMPSERVE0ORG001BHLJMPSERVE1ORG0030HSTART:LCALLINITIAL;数据初始化KEY:JNBP1。3,FILL;扫描按键,若有按键按下,则跳到相应处理子程序,否则继续扫描按键JNBP1。5,PM0JNBP1。6,PM1 JNBP1.7,PM2 JNBP1。0,PM3 JNBP1.1,PM4 JNBP1.2,PM5JNBP1。4,PM6AJMPKEYFILL:LCALLD20MS;20ms延时JBP1.3,START;再次检查按键,若按键弹起,则表示此次按键无效,继续扫描按键JNBP1。3,$;按键按下时,原地等待按键弹起LCALLD20MS;20ms延时,去除按键弹起抖动MOV20H,#10;商品装货,三种各10瓶MOV21H,#10MOV22H,#10MOV25H,#0CLRP3.1;无货指示灯熄灭AJMPKEYPM0:LJMPROUT0PM1:LJMPROUT1PM2:LJMPROUT2PM3:LJMPROUT3PM4:LJMPROUT4PM5:LJMPROUT5PM6:LJMPROUT6ROUT0:LCALLD20MS;投5角JBP1.5,KEY0JNBP1.5,$ LCALLD20MSMOV32H,30H;总金额寄存保护MOV33H,31HMOV27H,#100;设置退币指示灯延时10s亮开始计时 CLRP3。0;熄灭投币不足指示灯MOVA,31HADDA,#5;总金额角位加5CJNEA,#10,CMP0MOVA,#0;角位为10角时,元位加1元,同时角位清零 INC30HCMP0:MOV31H,AKEY0: MOVA,30HCJNEA,#100,NEXT0NEXT1:MOV30H,32HMOV31H,33HSETBP3.3MOV28H,#30AJMPNEXT2NEXT0:JNCNEXT1NEXT2:LJMPKEYROUT1:LCALLD20MS;投1元JBP1。6,KEY1JNBP1.6,$ LCALLD20MSMOV32H,30H;总金额寄存保护MOV33H,31HMOV27H,#100 CLRP3.0INC30H;总金额元位加1KEY1:MOVA,30HCJNEA,#100,NEXT3NEXT4:MOV30H,32HMOV31H,33HSETBP3.3MOV28H,#30AJMPNEXT5NEXT3:JNCNEXT4NEXT5:LJMPKEYROUT2:LCALLD20MS;投5元JBP1.7,KEY2JNBP1.7,$ LCALLD20MSMOV32H,30H;总金额寄存保护MOV33H,31HMOV27H,#100 CLRP3。0MOVA,30HADDA,#5;总金额元位加5 MOV30H,AKEY2:CJNEA,#100,NEXT6NEXT7:MOV30H,32HMOV31H,33HSETBP3.3MOV28H,#30AJMPNEXT8NEXT6:JNCNEXT7NEXT8:LJMPKEYROUT3:LCALLD20MS;购买可乐JBP1。0,KEY3JNBP1。0,$ LCALLD20MSMOV27H,#100;设置退币指示灯延时10s亮开始计时MOVA,20HJZEMPTY3 ;判断可乐是否有货,无货则跳转MOVA,30H;判断总金额是否够买可乐CJNEA,#2,CMP3;总金额元位为2,则跳转 MOVA,31H;角位为0,则跳转,即投币不足 JZLACK3 SJMPLP3CMP3:JCLACK3;元位小于2,则跳转,即投币不足LP3: MOVA,31HJZFG3 MOV31H,#0 ;角位为5时,则购买可乐后,角位清零 SJMPCJ3FG3:DEC30H;角位为0时,则向元位借1元,角位则为5,元位自减1元MOV31H,#5CJ3:MOVA,30HSUBBA,#2;元位减2 MOV30H,A DEC20H;可乐数量减1 CLRP3。0;熄灭投币不足指示灯MOV25H,#0 CLRP3。1;熄灭无货指示灯 SETBP3.2;点亮取物指示灯 MOV26H,#30;取物指示灯延时3s熄灭 LJMPKEY3LACK3:SETBP3.0;点亮投币不足指示灯MOV25H,#0CLRP3.1;熄灭无货指示灯CLRP3.2;熄灭取物指示灯MOV24H,#30;投币不足指示灯延时3s熄灭LJMPKEY3EMPTY3:CLRP3。1;无货指示灯复位MOV25H,#30;无货指示灯开始间隔0.5秒闪烁CLRP3。0;熄灭投币不足指示灯 CLRP3。2;熄灭取物指示灯KEY3:LJMPKEYROUT4:LCALLD20MS;购买纯水JBP1。1,KEY4JNBP1.1,$ LCALLD20MS MOV27H,#100MOVA,21HJZEMPTY4MOVA,30HCJNEA,#1,CMP4 MOVA,31H JZLACK4 SJMPLP4CMP4:JCLACK4LP4: MOVA,31HJZFG4 MOV31H,#0 SJMPCJ4FG4:DEC30HMOV31H,#5CJ4:MOVA,30HSUBBA,#1 MOV30H,A DEC21H CLRP3.0MOV25H,#0 CLRP3。1 SETBP3。2 MOV26H,#30 LJMPKEY4LACK4:CLRP3.0MOV25H,#0CLRP3.1CLRP3。2MOV24H,#30LJMPKEY4EMPTY4:CLRP3。1MOV25H,#30CLRP3。0 CLRP3。2KEY4:LJMPKEYROUT5:LCALLD20MS;购买牛奶JBP1。2,KEY5 JNBP1。2,$ LCALLD20MS MOV27H,#100MOVA,22HJZEMPTY5MOVA,30HCJNEA,#3,CMP5CMP5:JCLACK5 SUBBA,#3 MOV30H,A DEC22H CLRP3。0MOV25H,#0 CLRP3。1SETBP3.2 MOV26H,#30 LJMPKEY5LACK5:SETBP3.0MOV25H,#0CLRP3.1CLRP3.2MOV24H,#30LJMPKEY5EMPTY5:CLRP3.1MOV25H,#30CLRP3。0 CLRP3。2KEY5:LJMPKEYROUT6:LCALLD20MSJBP1.4,KEY6 JNBP1.4,$ LCALLD20MS SETBP3.3 CLRP3。0MOV25H,#0 CLRP3。1CLRP3.2 MOV27H,#0MOV28H,#30MOV30H,#0 MOV31H,#0KEY6:LJMPKEYINITIAL:MOVTMOD,#11H;设置T0、T1工作于模式1MOVTL0,#0B0H;装入T0计数值低8位MOVTH0,#03CH;装入T0计数值高8位MOVTL1,#0B0H;装入T1计数值低8位MOVTH1,#0FCH;装入T1计数值高8位SETBET0;允许T0中断 SETBET1;允许T1中断SETBEA;允许CPU中断SETBTR0;启动定时器T0 SETBTR1;启动定时器T1MOV20H,#0;可乐初始数量MOV21H,#0;纯水初始数量MOV22H,#0;牛奶初始数量 MOV30H,#0;总金额元位初始化MOV31H,#0;总金额角位初始化 MOV24H,#0;投币不足时指示灯亮的计时长度初始化 MOV25H,#0;无货时指示灯亮的计时长度初始化 MOV26H,#0;取物指示灯亮的计时长度初始化MOV27H,#0;退币指示灯延时亮的计时长度初始化 MOV28H,#0;退币指示灯亮的计时长度初始化 CLRP3.0;投币不足指示灯初始化 CLRP3.1;无货指示灯初始化CLRP3。2;取物指示灯初始化 CLRP3。3 ;退币指示灯初始化MOVP1,#0FFH;P1口初始化RETDISP:MOVA,30H;总金额显示程序MOVB,#10DIVABMOVR1,AMOVR2,BMOVA,#3;8155初始化MOVDPTR,#0FF20H;DPTR指向8155控制寄存器端口MOVX@DPTR,A;写8155命令字MOVA,29HJNZFLAG0MOVDPTR,#0FF21HMOVA,#20HMOVX@DPTR,AMOVDPTR,#TAB0MOVA,20H;显示可乐剩余量MOVCA,@A+DPTRCPLAMOVDPTR,#0FF22HMOVX@DPTR,AAJMPFLAGFLAG0:CJNEA,#1,FLAG1MOVDPTR,#0FF21H MOVA,#10HMOVX@DPTR,AMOVDPTR,#TAB0MOVA,21H;显示纯水剩余量MOVCA,@A+DPTRCPLAMOVDPTR,#0FF22HMOVX@DPTR,AAJMPFLAGFLAG1:CJNEA,#2,FLAG2MOVDPTR,#0FF21HMOVA,#8MOVX@DPTR,AMOVDPTR,#TAB0MOVA,22H;显示牛奶剩余量MOVCA,@A+DPTRCPLAMOVDPTR,#0FF22HMOVX@DPTR,AAJMPFLAGFLAG2:CJNEA,#3,FLAG3MOVDPTR,#0FF21H MOVA,#4MOVX@DPTR,AMOVDPTR,#TAB0MOVA,R1;显示总金额十位MOVCA,@A+DPTRCPLAMOVDPTR,#0FF22HMOVX@DPTR,AAJMPFLAGFLAG3:CJNEA,#4,FLAG4MOVDPTR,#0FF21H MOVA,#2MOVX@DPTR,AMOVDPTR,#TAB1MOVA,R2;显示总金额个位MOVCA,@A+DPTRCPLAMOVDPTR,#0FF22HMOVX@DPTR,A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年西雅图酋长测试题及答案
- 2026年信誉系统测试题及答案
- 2026青岛科技大学招聘人员14人备考题库及答案详解(历年真题)
- 2026青海海北建工工程建设有限公司招聘1人备考题库附答案详解(达标题)
- 2026鲁南发展投资控股(枣庄)集团有限公司招聘第二批急需紧缺人才3人备考题库附答案详解(考试直接用)
- 2026黑龙江佳木斯市汤原县社会保险事业中心招聘公益性岗位人员3人备考题库及答案详解(全优)
- 2026黑龙江牡丹江医科大学博士招聘100人备考题库附答案详解(培优)
- 2026黑龙江绥化市青冈县乡镇卫生院招聘医学相关专业毕业生5人备考题库附答案详解(突破训练)
- 2026黑龙江黑河市孙吴县社区卫生服务中心招聘2人备考题库附答案详解(完整版)
- 202天津绿色能源发展有限公司社会招聘2人备考题库含答案详解(预热题)
- 初高中数学课标比较与分析
- 护士在不同生命阶段的护理需求
- 总包对分包单位管理制度
- 美术教案-4-6岁-《千里江山图》
- 档案整理及数字化服务方案(技术标 )
- 特效无痛腹针疗法的资料课件
- 磁生电教案(大赛一等奖作品)
- 部编版小学五年级语文下册第六单元综合测试卷(含答案)
- 货币银行学智慧树知到答案章节测试2023年上海财经大学浙江学院
- GB/T 18742.3-2002冷热水用聚丙烯管道系统第3部分:管件
- GB/T 18601-2001天然花岗石建筑板材
评论
0/150
提交评论