《基于单片机的电梯控制系统设计_毕业设计(21页).doc》由会员分享,可在线阅读,更多相关《基于单片机的电梯控制系统设计_毕业设计(21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于单片机的电梯控制系统设计_毕业设计-第 16 页本科毕业设计基于单片机的电梯控制系统设计摘 要本文主要介绍了基于单片机的电梯控制系统,在本次设计中我们模拟了三层楼层的电梯的运行以及其中相应的逻辑关系。在没有使用到真正的电梯箱和电机的情况下,我们使用LED指示灯以及电梯内部和电梯外部各个楼层的按键来模拟电梯接收到按键信号后的运行情况。电梯控制系统的硬件部分主要由单片机最小系统模块、LED显示模块、按键中断请求模块等3部分组成。该系统采用单片机(89C52)作为控制核心,根据各楼层按键检测结果来控制电梯并实现相应的操作。软件部分使用C语言编程,程序部分由主程序、判断电梯运行方向子程序、电梯运
2、行子程序和到达目的地操作子程序等4部分组成。硬件电路的设计简单可靠,结合软件,基本实现了三层楼层的电梯运行的模拟。关键词:89C52 电梯控制系统 C语言Design of Elevator Control System Based on MCUZhan Dongzhe(College of Engineering, South China Agricultural University, Guangzhou 510642, China)Abstract: This text primarily introduced Elevator control system that based on
3、MCU (micro control unit) ,the design we simulate the operation of the elevator of the three floors and the corresponding logical relationship. without using the real elevator car and motor, we describes the elevator control system based on single chip, we use a LED indicator, and buttons inside the
4、elevator and the elevator the various floors of the external button to simulate the elevator to run after the key signal is received.The hardware portion of the elevator control system mainly by the smallest single-chip system module, LED display module, key interrupt request module. The system uses
5、 a microcontroller (89C52) as the control, to control the elevator and the appropriate action in accordance with the key test results of each floor. Some use of C language software programming , part of the program by the main program to determine the elevator running direction of the subroutine, el
6、evator operation subroutine and reach the destination operation subroutine parts. The design of the hardware circuit is simple and reliable, combined with software, the basic realization of the three-floor elevator running simulation.Key words: 89C52 elevator control system C language目 录1 绪论12 方案论证以
7、及系统功能介绍22.1 方案选择22.2 设计要求32.3 系统的结构框图32.4 STC89C52单片机33 硬件电路系统的设计43.1 硬件电路设计的主要思路43.2 复位电路53.3 晶振电路63.4 LED指示灯电路63.5 按键中断电路74 软件系统的设计84.1 程序的设计思路84.2 主程序流程图94.3 判断方向流程图104.4 电梯运行流程图104.5 梯到达目的地操作流程图114.6 中断处理程序框图125 结论心得14参考文献15附录A16附录B17致谢29华南农业大学本科生毕业设计成绩评定表1 绪论 电梯进入人们的生活已经150年了。一个半世纪的风风雨雨,翻天覆地的是历
8、史的变迁,永恒不变的是电梯提升人类生活质量的承诺。1854年,在纽约水晶宫举行的世界博览会上,美国人伊莱沙格雷夫斯奥的斯第一次向世人展示了他的发明。他站在装满货物的升降梯平台上,命令助手将平台拉升到观众都能看得到的高度,然后发出信号,令助手用利斧砍断了升降梯的提拉缆绳。令人惊讶的是,升降梯并没有坠毁,而是牢牢地固定在半空中奥的斯先生发明的升降梯安全装置发挥了作用。“一切安全,先生们。”站在升降梯平台上的奥的斯先生向周围观看的人们挥手致意。谁也不会想到,这就是人类历史上第一部安全升降梯。生活在继续,科技在发展,电梯也在进步。150年来,电梯的材质由黑白到彩色,样式由直式到斜式,在操纵控制方面更是
9、步步出新手柄开关操纵、按钮控制、信号控制、集选控制、人机对话等等,多台电梯还出现了并联控制,智能群控;双层轿厢电梯展示出节省井道空间,提升运输能力的优势;变速式自动人行道扶梯的出现大大节省了行人的时间;不同外形扇形、三角形、半菱形、半圆形、整圆形的观光电梯则使身处其中的乘客的视线不再封闭。如今,以美国奥的斯公司为代表的世界各大著名电梯公司各展风姿,仍在继续进行电梯新品的研发,并不断完善维修和保养服务系统。调频门控、智能远程监控、主机节能、控制柜低噪音耐用、复合钢带环保一款款集纳了人类在机械、电子、光学等领域最新科研成果的新型电梯竞相问世,冷冰冰的建筑因此散射出人性的光辉,人们的生活因此变得更加
10、美好。中国最早的一部电梯出现在上海,是由美国奥的斯公司于1901年安装的。1932年由美国奥的斯公司安装在天津利顺德酒店的电梯至今还在安全运转着。1951年,党中央提出要在天安门安装一台由我国自行制造的电梯,天津从庆生电机厂荣接此任,四个月后不辱使命,顺利地完成了任务。十一届三中全会后,沐浴着改革开放的春风,我国电梯业进入了高速发展的时期。如今,在我国任何一个城市,电梯都在被广泛应用着。电梯给人们的生活带来了便利,也为我国现代化建设的加速发展提供了强大的保障。电梯是高层建筑中安全、可靠、垂直上下的运载工具,对改善劳动条件、减轻劳动强度起到很大的作用。电梯的应用范围很广,可用于宾馆、饭店、办公大
11、楼、商场、娱乐场所、仓库以及居民住宅大楼等。在现代社会中,电梯已成为人类必不可少的垂直运输交通工具。1889年,美国奥梯斯升降机公司推出了世界第一部以电动机为动力的升降机,同年在纽约市的马累特大厦安装成功,标志着电梯的诞生。 1915年已设计成功电梯自动平层控制系统。 1933年美国制造出6m/s的高速电梯。 1949年研制出4-6台电梯群控系统。 1955年出现真空电子管小型计算机控制电梯。1962年在美国已出现8.5m/s的超高速电梯。 1967年将固体晶闸管用于电梯拖动系统。电梯使用的驱动由最初的直流电机到单速交流感应电机,后来的交流双速电机的发明,才基本满足了电梯的运行要求。 1976
12、年将微处理器应用于电梯。 1977年日本三菱电机开发出10m/s的超高速电梯。至此,电梯的控制技术已有了很大的发展。目前电梯控制系统大多采用继电器或者可编程控制器(PLC)的控制方式,存在着成本高,需要三相供电等缺点,本设计给出了一种基于STC89C52单片机的电梯模型控制系统设计。以该单片机为核心,再辅以适当的硬件电路和控制程序来检测和控制整个电梯系统的运行,该系统具有成本低、通用性强、灵活性大、扩展容易及易于实现复杂控制等优点。本设计注重基本理论知识与实际情况的紧密结合,同时对学生独立创新和分析问题的能力进行培养,加深对知识的理解,同时培养学生的团队合作能力,为以后的工作和学习打下坚实的基
13、础。2 方案论证以及系统功能介绍2.1 方案选择方案一:采用可编程控制器(PLC)作为主要器件来控制电机的运动、内外按键的响应、按键后的电路显示等等。使用PLC编程较简单,电路也不复杂,但是此方案的各个模块的费用都比较高,硬件设计不灵活,故不采用本方案。方案二:采用一个MCU单片机控制所有的按键、LED显示、限位开关的输出信号等等,并对以上所有信号进行处理,作出相应的相应。单片机技术目前较为成熟,自身资源丰富,硬件设计简单,成本低,可靠性高,结合软件完全可以实现电梯运行状况的简单模拟。故采用本方案。系统框图如1所示。2.2 设计要求(1)电梯至少要有三层,且电梯外部要有向上向下的按键,电梯内部
14、要有每个楼层的按键和开门关门的按键。电梯内外都要有相应的指示LED。(2)每一层设有限位开关,结合限位开关,对电梯的运行进行控制。(3)程序初始默认电梯在一楼,当楼层内外都没有按键按下的时候,电梯保持不动。2.3 系统的结构框图系统的结构框图如图1所示,楼层电梯呼叫按键就是楼层外面的上行、下行按键,有需求时即可按下。电梯内呼叫按键就是电梯内部的数字按键,它是内部按键需求的输入,限位开关就每一楼层的位置信号。单片机就是整个系统的核心,接收输入信息,经过处理后输出信息;楼层显示LED就是接收单片机处理的信息,显示此时的楼层数。模拟电梯运行指示灯就是接收单片机处理的信息,模拟电梯的工作状态:上升、下
15、降、停止。图1 系统结构图2.4 STC89C52单片机本设计采用的是STC89C52单片机,STC89C52是一个低电压,高性能CMOS的 8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可以为您提供许多较复杂系统控制应用场合。其主要功能特性如下所示(冯涛等,2009):(1)与MCS-51指令和引脚完全兼容; (2)8K字节可重复檫写Flash闪烁存储器; (3)寿命:1000次檫写周期;(4)三级加密程序存储器;(5)全静态工作:0Hz-24MHz;(6)2568
16、字节内部RAM;(7)32个可编程I/O口线;(8)三个16位定时器/计数器;(9)8个中断源; (10)可编程串行UART通道;(11)低功耗空闲和掉电模式。图2 STC89C52单片机外形及引脚排列图3 硬件电路系统的设计3.1 硬件电路设计的主要思路电梯最底层为1楼,因此在1楼仅有上升按键,而电梯最高层为3楼,因此3楼应仅有下降按键。2楼则应既有上升按键,也有下降按键。在电梯内部按键设置方面,则应有13楼的各层选择按键,还要有开门和关门的按键。除了这些按键以外还要有三个限位开关分别模拟电梯到达每一层的触发信号。按键的一端接VCC,另一端连至单片机引脚。这里,由于按键数量很多,又要求电梯控
17、制系统能以最快速度响应按键的需求,因此,所有按键通过连接到门电路,进行逻辑转换再送到单片机的端。无论哪一个按键有动作,低电平信号就会送到端,从而引发外部中断,外部中断0服务子程序运行。由于此次有十二个按键,所以使用一个双五输入或非门和一个双四输入与非门来实现。由于电梯的楼层只有三层,而且单片机的端口也不是很够,所以本次设计没有使用七段数码管来进行楼层显示,而是直接使用三个LED用来代表电梯外部的三个楼层。此外,电梯内外部的按键都有相应的指示灯,还有电梯运行状态指示灯,开门与关门的指示灯。所有LED指示灯的正极都接单片机IO口,负极经由限流电阻接地,当有按键按下的时候,程序会置1对应的IO口,使
18、指示灯亮起。3.2 复位电路复位是单片机的初始化操作,程序给单片机的复位引脚RST加大于2个机器周期(即24个时钟振荡周期)的高电平就可以使单片机复位(夏明娜等,2011)。STC89C52的复位是由外部的复位电路来实现的。复位电路通常采用两种复位方式,即上电复位和手动复位两种方式,手动复位又有电平方式和脉冲方式两种。本次设计采用了上电复位作为单片机的复位方式。如图3所示,通过RST端经由电阻与地,电容与电源VCC接通而实现,当单片机上电时,RST端为高电平复位。当时钟频率选用12MHz时,C1取22uF,R1取10K时,电容C1充放电时间=R1*C1=0.2s2us(2个机器周期)。复位电路
19、如图3所示。图3 复位电路图3.3 晶振电路单片机的晶振电路由时钟电荡电路和分频电路两部分电路组成。其中,振荡电路是由反相器以及并联外接的石英晶体和电容所构成,用于产生振荡脉冲信号。而分频电路则是用于把振荡电路产生的振荡脉冲信号分频,以得到所需要的时钟信号(李广弟等,2007)。AT89C52单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地一拍接一拍地工作,因此时钟频率直接影响了单片机的运行速度,时钟电路的质量也直接影响单片机系统的稳定性(周坚,2006)。STC89C52单片机电路中的电容C1和C2典型值通常选择为30pF。晶振的频率越高则系统的时钟频率也越高,单片机的运行速度也越
20、快。但是反过来运行速度越快对内存的速度要求也就越高,对印刷电路板的工艺要求也越高,即要求产生的寄生电容要小,晶振和电容应尽可能的安装得与单片机的芯片引脚靠近,以减少寄生电容,更好的保证振荡器稳定、可靠的工作。基于以上本设计我们考虑选择频率为12MHz的晶振,当振荡脉冲频率为12MHz时,一个机器周期为1us。晶振电路如图4所示。图4 晶振电路图3.4 LED指示灯电路LED指示灯电路全部采用蓝色的LED灯作为电梯的指示灯。采用LED作为电梯控制系统的指示灯主要是因为其功耗小,单片机的IO口足以驱动,LED1LED3为电梯停留所在楼层指示灯,LED4LED7为各楼层外部请求指示灯,LED8LED
21、10为电梯内部楼层请求指示灯,LED11LED12为电梯运行状态指示灯,LED13电梯开关门指示灯。指示灯一端通过限流电阻接地,另一端接单片机IO引脚。当有按键按下的时候,该按键所对应的指示灯应当同步亮起。此外,电梯运行指示灯和开关门指示灯应当能够正确的亮灭。电路图如图5所示。图5 LED指示灯电路图3.5 按键中断电路单片机的各中断的优先级(由高到低排列):外部0中断、定时器T0中断、外部1中断、定时器T1中断、串行发送中断、串行接收中断、定时器T2中断(王宜怀,2002)。按键中断电路如下图6所示。图中74LS21为双4输入与非门芯片,74LS260为双5输入或非门芯片,单片机的外部中断引
22、脚与74LS21芯片的输出端相接,按键信号通过74LS260芯片进行逻辑转换,然后将逻辑转换后的输出信号与74LS21芯片相连,通过这样逻辑的转换,可以使得十二个按键当中的任意一个按键按下时,就会触发单片机的外部中断0。当单片机接通电源后,外部中断0对应IO引脚此时为高电平,当任一按键按下后,通过相应的逻辑转换,使得74LS21输出为低电平,令外部中断0的引脚变为低电平。此时引脚的高电平变为低电平,产生了一个电压的下降沿,触发外部中断。此时外部中断0立即响应,单片机系统进入中断控制子程序系统,在中断服务子程序中做出相应的执行指令。按键的另一端同时与单片机的IO引脚相连,其中,S1S3为电梯内部
23、的按钮请求按键, S4S7为每层楼外部的请求按钮,S8S9为电梯内部开关门请求按键, S10S12为电梯到达楼层指示按键。这些按钮一端与电源相接,一端又与单片机和门74LS21和74LS260相接,当按键按下时会使按键对应的IO引脚变为高电平,通过重点子程序就可以检测出到底是哪个按键。图6 按键中断电路图4 软件系统的设计4.1 程序的设计思路首先,必须得合理考虑按键的响应问题。一段时间内可能有多个不同的按键有动作,程序必须记录每一个按键的动作,并根据电梯本身所处的楼层情况与按键楼层之间的位置关系,合理判断电梯应当做出上升或下降的响应动作,再结合限位开关,使电梯能够准确的在目标楼层停留。其次,
24、电梯到达某楼层后,如果没有后续的按键动作,也就是当电梯外部的人进入电梯内部之后没有按下按钮,且电梯其他楼层也没有按键动作时,经过开关门程序之后电梯保持在该楼层不动,直到有新的请求。然后,需要注意几种情况:当电梯在下层,高层楼层有按键按下时,电梯上行,该层以下楼层如果有向下的请求时,电梯会开门,但是请求不会被忽略,等到电梯处理完高层的请求开始下行,到达该楼层的时候再执行相应的请求。同样的,如果电梯在高层,低层楼层有请求指示,该层以上的楼层如果有向上的请求时,电梯经过此楼层也是不会开门的,要等到电梯处理完低层请求,上行经过此楼层的时候才会处理相应请求。 另外,当电梯上升或者下降时,相应的状态指示灯
25、应及时同步点亮,到达目标楼层后楼层的请求指示灯也要同时熄灭。4.2 主程序流程图主程序首先对单片机进行初始化,使得相应的IO口以及中断寄存器置位,以满足接下来的操作。系统开始运行的时候电梯默认停留在1楼,此时楼层所在指示灯应该指示电梯停留在一楼。然后,主程序会进入循环检测有没有按键按下,一旦有按键按下,外部中断会触发,程序进入中断子程序,然后置位相应的标志量,主程序会检测出按键对应的标志位是否置位来判断哪个楼层有按键请求,然后主程序会依次调用判断电梯运行方向子程序、电梯运行子程序和到达目的楼层操作子程序来对按键请求进行处理并让电梯做出相应的执行,程序框图如图7所示。图7 主流程图4.3 判断方
26、向流程图当有请求按键按下时,主程序首先调用会判断方向子程序。该子程序首先判断中断子程序中哪个标志量被置位来确定电梯所要到达的的目标楼层,然后通过对比电梯停留的当前楼层与目标楼层之间的上下关系,确定电梯将要上升还是下降。然后电梯做出相应的模拟上升或者下降。当请求楼层就是电梯所在楼层的时候,此时,电梯不用移动,判断方向电梯运行方向子程序将通知主程序已到达目标楼层,主程序将跳过电梯运行子程序直接调用到达目的楼层子程序。程序框图如图8所示。图8 判断方向流程图4.4 电梯运行流程图 经过判断方向的子程序之后,主程序就会调用电梯运行子程序。该程序首先判断电梯是否运行,如果没运行,即没有按键按下的时候,立
27、即返回主程序。当有按键按下时,即电梯是运行的,那么当电梯到达下一层时,楼层指示信号会跳到下一层。然后,子程序会判断电梯是否到达目标楼层,如果没达到目标楼层,则电梯继续运行,如果已经到达目标楼层,那么执行结束,返回主程序。当有多个请求同时发生的时候,根据电梯的运行状况,判断哪些请求先执行,哪些之后再执行。执行哪个请求应该与真实的电梯的逻辑顺序一致。程序框图如图9所示。图9 电梯运行流程图4.5 梯到达目的地操作流程图如果电梯到达了目的地,这个时候主程序就会调用到达目的操作子程序。当到达目标楼层时,相应的请求指示灯会熄灭,然后电梯门打开,持续大概8s。如果在这8s之内人员还没上齐,那么可以按下开门
28、的按键,此时电梯会从按键按下的那一时刻开始重新计时,重复按下看门按钮可以多次延迟关门的时间。如果在8s之内人已经上齐了,那么为了减少等待时间可以按下关门的按键,电梯门就会提前关闭。当电梯门关闭时,子程序处理结束,返回主程序。程序框图如图10所示。图10 电梯到达目的地操作流程图4.6 中断处理程序框图当外部有按键按下的时候,此时,单片机的外部中断0被触发,程序进入中断如理子程序中执行。在中断处理子程序中,依次判断每一个按键是否按下,如果检测到某个按键按下,则置位相应的标志量,然后返回主函数处理。每次中断只处理一个请求,由于按键几乎不可能同时被按下,所以即使几个按键请求相差很少的时间,单片机也会
29、通过调用多次中断子程序分别处理每次请求,所以不会漏掉每个按键请求。程序框图如图11所示。图11 中断处理流程图5 结论心得本文主要介绍了基于单片机的电梯控制系统,在本次设计中模拟了三层楼层的电梯的运行以及其中相应的逻辑关系。在没有使用到真正的电梯箱和电机的情况下,使用LED指示灯以及电梯内部和电梯外部各个楼层的按键来模拟电梯接收到按键信号后的运行情况。电梯控制系统的硬件部分主要由单片机最小系统模块、LED显示模块、按键中断请求模块等3部分组成。该系统采用单片机(89C52)作为控制核心,根据各楼层按键检测结果来控制电梯并实现相应的操作。软件部分使用C语言编程,程序部分由主程序、判断电梯运行方向
30、子程序、电梯运行子程序和到达目的地操作子程序等4部分组成。硬件电路的设计简单可靠,结合软件,基本实现了三层楼层的电梯运行的模拟。此次设计不仅仅是一个硬件电路设计和程序编写的过程,更重要的是实际问题的分析和设计阶段的努力。在软硬件的设计过程当中遇到了许多意想不到的问题。硬件方面最大的问题就是在设计按键中断的过程中发现,此次设计共有十二个按键需要通过门电路传给中断,然而找不到相应的芯片,所以最后使用了几个门电路的逻辑叠加最后解决了问题。软件方面最大的问题就是逻辑的问题,有时候想法不够细腻和仔细使得在进行模拟的时候会出现逻辑上的错误,然而通过不断的尝试和实验最后发现了漏洞并且解决了问题。此时毕业设计
31、,充分利用单片机开发上的灵活、快速的特点,来实现智能控制的设计。通过本次毕业论文的设计,使我认识到作为科技人员,重要的是思维缜密,知识经验积累深厚,坚强的意志,同时还要创新的精神,当你觉得一种做法可能可以实现的时候就应该勇于尝试,遇到问题的时候应该多问多想,不轻易放弃。在以后的工作和学习中,要勤奋踏实,善于思考,才能在竞争激烈的社会中提升自我的实用价值。这次的毕业设计给了我一个很好的学习机会,我在这里面学习到很多东西,受益匪浅。参 考 文 献冯涛,秦永左.单片机原理及运用M .北京:国防工业出版社,2009年:3233。李广弟,朱月秀,冷祖祁.单片机基础(第3版)M.北京:北京航空航天大学出版
32、,2007年:5761。王宜怀.单片机原理及其嵌入式应用教程M.北京:北京希望电子出版社,2002年:101104。夏明娜,高玉芝.单片机系统设计及应用M.北京:北京理工大学出版社,2011年:7779。周坚主.单片机轻松入门M. 北京:北京航天航空大学出版社,2006年:5155。附录A 总电路图附录B程序列表#include#define MAXFLOOR 3sbit BUTTON1 = P12;sbit BUTTON2 = P00;sbit BUTTON3 = P11;sbit OPEN = P07;sbit CLOSE = P01;sbit LED3DOWN = P20;/三楼向下请求
33、指示灯sbit LED2UP = P25;/二楼向上请求指示灯sbit LED2DOWN = P24;/二楼向下请求指示灯sbit LED1UP = P21;/一楼向上请求指示灯sbit FLOOR3DOWN=P02;sbit FLOOR2UP=P03;sbit FLOOR2DOWN=P04;sbit FLOOR1UP=P05;sbit FLOOR1=P06;sbit FLOOR2=P27;sbit FLOOR3=P26;sbit LED1 = P36;sbit LED2 = P37;sbit LED3 = P17;sbit L1 = P13;sbit L2 = P14;sbit L3 = P
34、15;sbit LEDUP=P23;/向上向下指示灯sbit LEDDOWN=P22;sbit DOOR=P33;bit DIRECTION=1,STOP=0,BUTTONS=0,OPE,CLO;/估计是标志位,电梯即将走向unsigned char CURFLOOR=1;/电梯所在位置unsigned char DESTFLOOR=1;/电梯要去的位置unsigned char RUN=0;unsigned char CALLFLOORUP4=0,0,0,0;/向上请求的数组unsigned char CALLFLOORDOWN4=0,0,0,0;/向下请求的数组unsigned char
35、CALLFLOOR4=0,0,0,0;/内部请求的数组unsigned char LEDCODES4=0xc7,0x08,0x10,0x20;unsigned char BUTTON4=0,0,0,0;void SELECTNEXT();void step(bit DIRECTION);/步骤(方向)void DELAY(unsigned int Z);/延时函数void JUDGESIT();void RUNNING();void main(void)P0=0;P1=P1&0X06;P2=0;P3=0;P1=(P1&LEDCODES0)|LEDCODES1;/数码管TH0=0x3C;TL0=
36、0xB0;TMOD=0x01; ET0=1;EA=1;EX0=1;IT0=1;while(1)if(! RUN&! STOP)SELECTNEXT();step(DIRECTION);RUNNING();else if(STOP)if(CURFLOOR=3)LED3=0;DOOR=1;DELAY(2000);STOP=0;DOOR=0;void SELECTNEXT() char n;if(CURFLOOR=MAXFLOOR)DIRECTION=0;else if(CURFLOOR=1)DIRECTION=1; if(DIRECTION=0)if(CALLFLOORDOWNCURFLOOR)C
37、ALLFLOORDOWNCURFLOOR=0;STOP=1;return;for(n=CURFLOOR-1;n=1;n-)if(CALLFLOORDOWNn)DESTFLOOR=n;return;for(n=0;nCURFLOOR;n+)if(CALLFLOORUPn)DESTFLOOR=n;return;DIRECTION=1;for(n=CURFLOOR+1;nCURFLOOR;n-)if(CALLFLOORDOWNn)DESTFLOOR=n;return;elseif(CALLFLOORUPCURFLOOR)/|CALLFLOORDOWNCURFLOOR/CALLFLOORDOWNCUR
38、FLOOR=0;CALLFLOORUPCURFLOOR=0;STOP=1;if(CURFLOOR)LED1UP=0;return;for(n=CURFLOOR+1;nCURFLOOR;n-)if(CALLFLOORDOWNn)DESTFLOOR=n;return;DIRECTION=0;for(n=CURFLOOR-1;n=1;n-)if(CALLFLOORDOWNn)DESTFLOOR=n;return;for(n=1;n0;X-)for(Y=125;Y0;Y-) if(OPE=1) OPE=0;X=X+1000;L1=1; if(CLO=1) CLO=0;L2=1;X;void int0(
39、) interrupt 0DELAY(2); if(FLOOR3DOWN=1)CALLFLOORDOWN3=1;LED3DOWN=1;else if(FLOOR2DOWN=1)CALLFLOORDOWN2=1;LED2DOWN=1;else if(FLOOR1UP=1)CALLFLOORUP1=1;LED1UP=1;else if(FLOOR2UP=1)CALLFLOORUP2=1;LED2UP=1;else if(FLOOR3=1)CALLFLOOR3=1;JUDGESIT();LED3=1;else if(FLOOR2=1)CALLFLOOR2=1;JUDGESIT();LED2=1;el
40、se if(FLOOR1=1)CALLFLOOR1=1;JUDGESIT();LED1=1;else if(BUTTON1=0)BUTTON1=1;else if(BUTTON2=1)BUTTON2=1;else if(BUTTON3=0)BUTTON3=1;else if(OPEN=1)OPE=1;else if(CLOSE=1)CLO=1;void JUDGESIT()char m;for(m=1;m=MAXFLOOR;m+)if (CALLFLOORm)if (CURFLOOR=m)CALLFLOORUPm=1;CALLFLOORm=0;return;elseCALLFLOORDOWNm
41、=1;CALLFLOORm=0;return;void RUNNING()if(!RUN) return;if(RUN)if(RUN)if(DIRECTION)CURFLOOR+;if(CALLFLOORUPCURFLOOR=1)DESTFLOOR=CURFLOOR;CALLFLOORUPCURFLOOR=0;else CURFLOOR-;if(CALLFLOORDOWNCURFLOOR=1)DESTFLOOR=CURFLOOR;CALLFLOORDOWNCURFLOOR=0;RUN=0;TR0=0;while(BUTTONCURFLOOR=0);/BUTTONCURFLOOR=0;/if(C
42、URFLOOR=1) L1=1; L2=0; L3=0;if(CURFLOOR=2) L1=0; L2=1; L3=0;if(CURFLOOR=3) L1=0; L2=0; L3=1; LED3DOWN=0;if(DIRECTION&(CURFLOOR=2)&CALLFLOORUP2)STOP=1;if(DIRECTION=0)&(CURFLOOR=2)&CALLFLOORDOWN2)STOP=1;if(DESTFLOOR=CURFLOOR)TR0=0;LEDUP=0;LEDDOWN=0;STOP=1;if(DIRECTION)if(CURFLOOR=1)LED1UP=0;LED1=0;if(CURFLOOR=2)LED2UP=0;LED2=0;if(CURFLOOR=3);LED3=0; else if(CURFLOOR=1)LED1=0;if(CURFLOOR=2)LED2DOWN=0;LED2=0;if(CURFLOOR=3)LED3DOWN=0;LED3=0;