基于单片机的电梯仿真实验
基于STC89C52单片机的模拟电梯控制系统

基于STC89C52单片机的模拟电梯控制系统1. 引言1.1 背景介绍电梯作为现代城市的重要交通工具,已成为人们生活中不可或缺的一部分。
随着城市化进程的不断加快,电梯的使用频率也越来越高。
传统的电梯控制系统通常采用机械和电气联动的方式,存在一定的局限性和安全隐患。
为了提高电梯系统的性能和安全性,基于单片机的模拟电梯控制系统应运而生。
基于STC89C52单片机的模拟电梯控制系统可以实现对电梯的控制和管理,提高电梯的运行效率和舒适度。
通过对电梯运行状态的监控和调度,可以有效减少用户等待时间,提高电梯的运行效率。
系统还可以实现对电梯的故障检测和报警处理,提高电梯的安全性和可靠性。
本文将对基于STC89C52单片机的模拟电梯控制系统进行详细设计和研究,探讨其在实际应用中的性能和效果。
通过对系统的硬件设计、软件设计、系统测试等方面的分析和研究,为电梯控制系统的进一步改进和优化提供参考和借鉴。
1.2 问题提出在电梯运行过程中,存在一些问题需要解决,比如电梯的误操作、控制系统的稳定性和可靠性等。
这些问题可能会对乘客的安全和舒适性产生影响,因此需要一个高效可靠的电梯控制系统来解决这些问题。
基于STC89C52单片机的模拟电梯控制系统,可以有效解决电梯运行过程中的各种问题。
通过硬件设计、软件设计和系统测试等步骤,可以实现电梯的自动控制、运行状态监控和故障处理等功能。
对电梯性能进行分析和改进,可以提高电梯的运行效率和安全性,从而提升乘客的出行体验。
研究基于STC89C52单片机的模拟电梯控制系统具有重要的实践意义和应用价值。
通过对电梯控制系统的研究,不仅可以提高电梯的运行效率和安全性,还可以为相关领域的研究提供参考和借鉴。
1.3 研究意义电梯在现代生活中扮演着至关重要的角色,它不仅提高了人们的生活质量,还提高了建筑物的效率。
随着城市化进程的加快和建筑高度的增加,对电梯运行的安全性、效率性和智能化要求也越来越高。
基于STC89C52单片机的模拟电梯控制系统的研究意义在于应用现代控制技术,提高电梯系统的性能,更好地满足人们日益增长的需求。
基于单片机的电梯仿真程序课程设计

目录(一)前言 (1)(二)现代电梯概述 (3)(三)硬件部分设计 (6)(四)软件部分设计 (12)(五)电梯运行界面 (52)(六)设计总结与感悟 (56)(七)参考文献 (57)电梯仿真程序一、前言:本电梯仿真程序采用的是一个基于单片机及其相关外设,编程语言采用汇编与C语言结合的方式,通过矩阵键盘线反选法输入楼层,上、下行等控制信号,经I\O口读入,进行相关实时控制,软硬件结合的仿真系统,输出设备包括由CD4511驱动显示楼层的7段数码管,显示实时信息的显示屏LCD12864,由PWM控制显示电梯门开关的舵机,以及由I\O口间接控制的驱动电机正反转双桥驱动电路等几个部分组成。
可以实现真实电梯中,任意层呼叫,目的层到达按要求顺序到达,开关门,无输入自动回1层等一系列功能,并实时显示当前电梯运行状态,关于真实电梯门控光幕装置,电机自动抱闸平层等部分,由于知识不足,没有足一实现,但会在接下来的专业知识学习过程中不断完善,同时也希望得到程老师的指导。
二、现代电梯概述:电梯是一种以电动机为动力的垂直升降机,装有箱状吊舱,用于多层建筑乘人或载运货物。
也有台阶式,踏步板装在履带上连续运行,俗称自动电梯。
服务于规定楼层的固定式升降设备。
它具有一个轿厢,运行在至少两列垂直的或倾斜角小于15°的刚性导轨之间。
轿厢尺寸与结构形式便于乘客出入或装卸货物,本次微机课程设计电梯仿真选用的是垂直升降梯。
2.1、电梯功能现代电梯主要由曳引机(绞车)、导轨、对重装置、安全装置(如限速器、安全钳和缓冲器等)、信号操纵系统、轿厢与厅门等组成。
这些部分分别安装在建筑物的井道和机房中。
通常采用钢丝绳摩擦传动,钢丝绳绕过曳引轮,两端分别连接轿厢和平衡重,电动机驱动曳引轮使轿厢升降。
电梯要求安全可靠、输送效率高、平层准确和乘坐舒适等。
电梯的基本参数主要有额定载重量、可乘人数、额定速度、轿厢外廓尺寸和井道型式等。
简单使用方法(紧急情况下面有解决方法)载人电梯都是微机控制的智能化、自动化设备,不需要专门的人员来操作电梯电梯结构图电梯内部结构图驾驶,普通乘客只要按下列程序乘坐和操作电梯即可。
基于STC89C52单片机的模拟电梯控制系统

基于STC89C52单片机的模拟电梯控制系统1. 引言1.1 概述本文基于STC89C52单片机设计了一套模拟电梯控制系统。
电梯作为现代化城市生活中不可或缺的交通工具,其安全性和效率对于居民的日常生活具有重要意义。
但是由于电梯系统的复杂性和多样性,其控制系统也变得越来越复杂。
设计一套高效可靠的电梯控制系统具有重要意义。
本系统采用STC89C52单片机作为控制核心,通过合理设计硬件电路和编写高效的控制软件,实现了电梯的调度和控制功能。
为了提高电梯系统的运行效率,本文还研究了电梯调度算法,采用了一种基于优先级的调度算法。
通过系统测试和性能分析,验证了该控制系统的可靠性和高效性。
实验结果表明,本系统具有良好的稳定性和速度表现,能够满足日常使用的需求。
通过本文的研究,不仅提高了电梯系统的控制效率,也为电梯控制系统的设计和应用提供了一定的参考和借鉴。
本文的研究具有一定的实际应用价值和科学研究意义。
1.2 研究背景随着现代社会的快速发展,城市化进程不断加快,高层建筑日益增多,对电梯的需求也日益增长。
电梯作为现代化城市不可或缺的交通工具,其安全性、舒适性和效率性越来越受到人们的关注。
传统的电梯控制系统往往存在一些问题,比如电梯运行效率低、停靠时间过长、能耗高等。
研究基于STC89C52单片机的模拟电梯控制系统具有重要的意义。
通过对电梯控制系统的优化设计,可以提高电梯的运行效率和安全性,减少能耗,提升乘坐体验,从而满足人们日益增长的电梯需求。
本文将基于STC89C52单片机,结合电梯调度算法,设计出一种高效的模拟电梯控制系统。
通过硬件设计、软件设计、系统测试和性能分析,探讨该系统在实际应用中的表现。
通过对实验结果的分析,总结出本系统的创新之处,并展望其未来在电梯控制领域的应用前景。
1.3 研究意义的内容如下:在现代社会中,电梯作为一种常见的交通工具已经成为人们生活中不可或缺的一部分。
然而,目前市面上的电梯控制系统大多都是基于传统的控制方法,存在着运行效率低、能耗高、安全性不足等问题。
基于STC89C52单片机的模拟电梯控制系统

基于STC89C52单片机的模拟电梯控制系统随着现代城市的发展,高层建筑越来越多,电梯作为人们出入高层建筑的主要交通工具之一,其使用率也越来越高。
因此,如何实现电梯的高效、安全、便捷地运行,成为各电梯制造商亟需解决的问题之一。
本文基于STC89C52单片机,设计了一种模拟电梯控制系统,可以实现电梯的自动选择运行、超载保护等功能,提高电梯的运行效率和安全性。
一、设计原理本系统采用了基于STC89C52单片机的控制架构,通过单片机控制电梯的各部件,实现电梯的自动运行。
电梯内设有上、下两个按钮,外部设有每层楼门口的上、下按钮。
当有人按下按钮时,单片机接收到信号后,根据电梯所在的楼层、电梯运行状态等信息,判断应该向上还是向下运行,并控制电梯上升或下降,直到达到目标楼层。
同时,电梯内部设有超载保护功能,当电梯重量超过设定值,单片机便会停止电梯的运行。
二、硬件设计本系统采用STC89C52单片机控制电梯的各部件。
电梯内部设有电机、光电开关等传感器,用于检测电梯所在位置。
电梯外部设有上、下按钮,每层楼门口都配有上、下按钮和光电开关等传感器。
单片机的输入端口与各传感器连接,输出端口分别控制电机、显示屏和报警器等设备。
1.电梯运行控制程序电梯控制程序主要负责检测电梯各传感器的信号,判断电梯运行状态和目标楼层,并控制电机上升或下降,直到达到目标楼层。
具体实现如下:(1)检测位置传感器信号,判断电梯当前位置。
(2)根据当前位置和目标楼层,判断电梯应该向上还是向下运行。
(3)控制电机上升或下降,直到达到目标楼层。
2.超载保护程序超载保护程序主要负责检测电梯内部的重量传感器信号,当重量超过设定值时,便停止电梯的运行,并报警。
具体实现如下:(2)当重量超过设定值时,停止电梯的运行。
(3)同时发出报警信号,提醒乘客。
3.显示屏程序显示屏程序主要负责显示电梯当前位置和目标楼层。
具体实现如下:(2)根据目标楼层信号,显示电梯运行情况。
基于AT89S52单片机的模拟电梯设计

基于AT89S52单片机的模拟电梯设计题 目:基于AT89S52单片机的模拟电梯设计学院: 完成日期:学生姓名: 班级: 专业: 电子信息科学与技术 电信101 物理与电气学院摘要:单片机即单片微型计算机(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。
其中51单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域.电梯是集机械原理应用、电气控制技术、微处理器技术、系统工程学等多学科和技术分支于一体的机电设备,它是建筑中的永久垂直交通工具。
本论文选择AT89S52为核心控制元件,使用宏晶公司的STC89C51RC 加外围器件作控制单元,用数码管显示,使用单片机C语言进行编程制作了一个八层电梯模拟系统。
其原理图可分为按键部分、显示部分、电机部分、最小系统部分。
两个按键(一个电梯内,一个电梯外)对应一个楼层,另有开门、关门两个按键。
芯片一旦检测到某楼层的按键被按下,就会在对应端口输出5V高电平驱动电机来到该楼层,程单序会延迟几分钟,等人进入电梯后,关门,去到要去的楼层。
在整个过程中,数码管会显示楼层数。
最小系统为单片机提供时钟信号和复位功能。
关键词:STC89C52 单片机模拟电梯四位一体数码管目录一、设计任务......................................... 错误!未定义书签。
1.1设计内容与要求............................................................. 错误!未定义书签。
二、硬件系统实现..................................... 错误!未定义书签。
2.1 AT89S52芯片简介......................................................... 错误!未定义书签。
基于51单片机的电梯仿真系统(仿真程序PPT)(2024)

2024/1/28
在项目实现过程中,团队成员积极协作,充分发挥各自的专业技能,保证了项目的顺利进行和按时完成 。
23
未来发展趋势预测
01
随着科技的不断发展,电梯仿 真系统将会越来越智能化,能 够实现更加复杂的功能,如语 音识别、人脸识别等。
02
未来电梯仿真系统将会更加注 重用户体验,提供更加人性化 的服务,如智能调度、个性化 设置等。
设备进行串行通信。
8
51单片机编程语言
汇编语言
汇编语言是51单片机的底层编程语言,它直接对应着硬 件的操作。使用汇编语言编程需要对硬件有深入的了解 ,并且编程效率相对较低。但是,汇编语言具有代码紧 凑、执行效率高等优点,在一些对性能要求较高的场合 仍然有应用。
C语言
C语言是51单片机的主流编程语言之一,它具有语法简 单、易于学习、可移植性好等优点。使用C语言编程可 以大大提高开发效率,并且代码可读性较好。同时,C 语言具有丰富的库函数和强大的数据处理能力,可以满 足大多数应用的需求。
语音识别与控制
集成语音识别技术,方便用户通过语音控制 电梯。
2024/1/28
楼层导航
增加楼层导航功能,引导乘客快速找到目的 楼层。
20
用户体验提升
01
界面优化
改进用户界面,使其更加直观、 易用。
02
03
响应速度提升
个性化服务
优化程序响应速度,减少用户等 待时间。
提供个性化设置选项,如语音提 示、背景音乐等,满足不同用户 需求。
01
02
主程序
初始化系统参数,设置中断向量 表,进入主循环。
03
04
功能模块
实现电梯上下行、开关门、楼层 显示等基本功能。
单片机实验报告-模拟电梯设计

单片机实验报告-------------------------模拟电梯设计目录一、基本摘要-------------------------------------------------------二、实验要求-------------------------------------------------------三、实验方案-------------------------------------------------------四、实验流程图----------------------------------------------------五、实验代码-------------------------------------------------------六、实验总结-------------------------------------------------------------基本摘要:该实验在ADEK5196实验箱上实现电路设计。
采用8255控制键盘查询,8279控制的8段数码管(HL6,HL7)显示来表示当前电梯所在层,LED控制楼层亮灯情况,串行口扩展并行输出接口的8段数码管(HL5)显示电梯运行状态“U”或“P”。
通过编写的汇编程序来控制实现电梯的模拟。
实验要求:用键盘、按钮、八段码和LED模拟电梯工作过程。
楼层设为8层,键盘数字键1-8用来键入希望停的楼层,8个LED显示希望停的楼层,八段码指示电梯当前所在楼层,按扭用来启、停电梯。
电梯正常运行时以每2秒1层的速度上升或下降。
要求“电梯”能按以下方式运行:(1)设当前电梯停在某层(八段码显示相应楼层,8个LED全灭)。
键入1-8数字键,如键入的数字与当前电梯停层同,则不发生任何动作;若不同则相应楼层的LED亮。
如再按运行键,则电梯自动判别上升或下降(在运行过程中八段码显示楼层变化)一直到达希望停的楼层(八段码显示该楼层,相应LED灭);(2)设当前电梯正在上升或下降运行(此时八段码显示楼层变化,LED指示希望抵达的楼层),若键入新的希望停的楼层数字(相应的LED亮),则对同方向(上升或下降)未到的楼层能停,对其他情况则先停原希望停的楼层,然后按运行键后继续进行)。
基于STC89C52单片机的模拟电梯控制系统

基于STC89C52单片机的模拟电梯控制系统1. 引言1.1 背景介绍在现代社会,电梯已经成为人们日常生活中不可或缺的交通工具。
随着城市的发展和建筑的高度不断增加,电梯的使用频率也越来越高。
为了确保电梯系统的安全性和效率,模拟电梯控制系统应运而生。
基于STC89C52单片机的模拟电梯控制系统是一种集成了电子技术和自动控制技术的新型系统。
它采用先进的单片机技术,能够通过精准的控制和调度实现电梯的高效运行。
通过对电梯运行状态的监测和分析,系统可以实现自动开门、关门、调度等功能,提高了电梯的运行效率,减少了人力资源的浪费。
本文将通过对基于STC89C52单片机的模拟电梯控制系统的硬件设计、软件设计和系统功能进行详细介绍,旨在为电梯相关领域的研究和开发提供参考。
通过本文的研究,将有助于提高电梯系统的安全性和运行效率,促进城市交通运输的发展。
1.2 研究目的本文旨在基于STC89C52单片机设计并实现一个模拟电梯控制系统,通过对电梯的控制和调度实现不同楼层之间的乘客运输。
具体研究目的如下:1. 分析和了解单片机控制技术在电梯系统中的应用,探讨其优势和不足之处;2. 设计一个可靠、稳定的电梯控制系统,包括硬件设计和软件设计;3. 实现电梯的基本功能,包括楼层呼梯、乘客进出电梯、电梯运行等;4. 探讨系统功能的扩展性,讨论如何在该系统基础上进行进一步的优化和改进;5. 分析实验结果,评估系统的性能和稳定性,总结存在的问题并提出改进方向。
2. 正文2.1 硬件设计硬件设计是模拟电梯控制系统中至关重要的一部分,它直接影响到系统的稳定性和可靠性。
在本系统中,硬件设计包括电梯控制器、电梯驱动器、按钮模块、电梯门控制模块等组成部分。
首先是电梯控制器,它是整个系统的核心部分,负责处理各种指令、控制电梯的运行状态。
通常采用STC89C52单片机作为控制器,具有较强的计算和控制能力。
控制器还需要接入各种传感器模块,如楼层传感器、开关传感器等,来感知电梯的状态。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的电梯仿真实验1. 80c51引脚图管脚图及各引脚功能介绍图1 80c51引角图Vss(20脚):接地VCC(40脚): 主电源+5VXTAL1(19脚):接外部晶体的一端。
在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。
XTAL2(18脚): 接外部晶体的另一端。
在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。
若需采用外部时钟电路,对于HMOS 单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。
RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET)PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。
CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。
不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。
PSEN端同样可驱动8个LSTTL负载。
我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
图2 80C51的内部结构图ALE/PROG(30脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。
CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。
不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。
PSEN端同样可驱动8个LSTTL负载。
我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。
EA/VPP(31脚): 当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。
当地址超出4KB时,将自动执行片外程序存储器的程序。
当EA 输入低电平时,CPU仅访问片外程序存储器。
在对87C51EPROM编程时,此引脚用于施加编程电压VPP。
输入/输出引脚:(1)P0.0—P0.7 (39脚—32脚)(2)P1.0—P1.7 (1脚—8脚)(3)P2.0—P2.7 (26脚—21脚)(4)P3.0—P3.7 (10脚—17脚)2. 8255A芯片介绍Intel 8086/8088 系列的可编程外设接口电路(Programmable PeripheralInterface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
8255A的通用性强,使用灵活,通过它CPU 可直接与外设相连接。
8255A在使用前要写入一个方式控制字,选择A、B、C 三个端口各自的工作方式,共有三种;方式0 :基本的输入输出方式,即无须联络就可以直接进行的 I/O方式。
其中A、B、C口的高四位或低四位可分别设置成输入或输出。
方式1 :选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0.方式2:双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。
图3 8255A引角图图4 8255A端口选择表3. 74LS373介绍内部有八个D 锁存器。
373为三态输出的八D 透明锁存器,共有54/74S373和 54/74LS373 两种线路结构型式,其主要电器特性的典型值如下(不同厂家具体值有差别): 型号 tPd PD54S373/74S373 7ns 525mW 54LS373/74LS373 17ns 120mW373的输出端 O0~O7 可直接与总线相连。
当三态允许控制端 OE 为低电平时,O0~O7 为正常逻辑状态,可用来驱动负载或总线。
当OE为高电平时,O0~O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。
当锁存允许端 LE 为高电平时,O随数据D而变。
当 LE 为低电平时,O 被锁存在已建立的数据电平。
当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。
引出端符号: D0~D7 数据输入端;OE 三态允许控制端(低电平有效);LE 锁存允许端;O0~O7 输出端。
其真值表:Dn LE OE OnH H L HL H L LX L L Q0X X H 高阻态4. 数码显示管LED图5数码显示管LED引脚图LED显示器是单片机应用系统中常见的输出器件,而在单片机的应用上也是被广泛运用的。
如果需要显示的内容只有数码和某些字母,使用LED数码管是一种较好的选择。
LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单易行。
LED数码管作为显示字段的数码型显示器件,它是由若干个发光二极管组成的。
当发光二极管导通时,相应的一个点或一个笔画发亮,控制不同组合的二极管导通,就能显示出各种字符,常用的LED数码管有7段和“米”字段之分。
这种显示器有共阳极和共阴极两种。
共阴极LED显示器的发光二极管的阴极连在一起,通常此共阴极接地。
当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。
同样,共阳极LED显示器的发光二极管的阳极接在一起,通常此共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。
5. 行列式键盘图6 本次仿真是用到的行列式键盘由于本次实验中用到的按键较多,而单片机的并行口有限,只能用行列式键盘扩展。
该行列式键盘的行和列分别接到8255A的PA口和PB口。
在程序中要注意的是先判断行,再判断列。
这里要注意8255A的接口工作方式,PA口工作在输入,PB口工作在输出方式。
在判断行的时候,PB口全为0,PA口全为1。
在判断列的时候,使得PB口依次为0,扫描列来判断是哪一列的按键按下。
6.中断判断电路图7 外部中断电路此电路旨在引入单片机一个外部中断INY0。
由两个四输入与门74LS21和一个两输入与门74LS08组成。
只要PA口中有一个低电平,INT0就为0。
本实验程序流程图:本实验仿真图:本实验程序:#include<reg51.h>#include<absacc.h>bit e; ///定义电梯的方向sbit door=P3^0;sbit m0=P3^4;sbit m1=P3^5;char bdata yuzh=0x00;char bdata shang=0x00;char bdata xia=0x00;int layer;//当前层#define COM8255 XBYTE[0X7FFF]#define PA8255 XBYTE[0x7FFC]#define PB8255 XBYTE[0x7FFD]#define DENG8255 XBYTE[0XAFFF]#define DENGA XBYTE[0xAFF3]#define DENGB XBYTE[0xAFF7]#define DENGC XBYTE[0xAFFB]void delay(int z)///////////延时程序{ int x,y;for(x=0;x<z;x++)for(y=0;y<110;y++);}///////////延时程序////////////////中断0char templayer;char dir;char constant1=0xff;void INT0_srv(void) interrupt 0 using 1{ //////////////延时去抖动delay(2);if(INT0==1){return;}//////////////延时去抖动templayer=PA8255;//先读A口。
PB8255=0x06; ///////判断列数////////if(PA8255!=constant1){ dir=0x01; }else{ PB8255=0x05;if(PA8255!=constant1){ dir=0x02; }else{ dir=0x03; }} ///////判断列数////////PB8255=0x00;////////////标示量赋值switch(dir){ case 0x01: yuzh=(~templayer)^yuzh;DENGC=yuzh;break;case 0x02: shang=(~templayer)^shang;DENGA=shang;break;case 0x03: xia=(~templayer)^xia;DENGB=xia;}////////////标示量赋值return;}///////////////中断0char code zimo[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; char code pickup[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,};char code pickdown[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,};char code quw[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};////停止层,闪动/int stopat(){ int i;for(i=0;i<8;i++){P1=0;delay(200);P1=zimo[layer];delay(400);}return 0;}////停止层,闪动/void main(){ layer=0x01;//当前层e=1; //1为上,0为下EA=1;EX0=1;//////////按键和灯,初始化COM8255=0x90; //AB口都工作在方式0,A入 B为出。
PB8255=0x00;DENG8255=0X80; ///DENG的ABC口都是输出。
//////////按键和灯,初始化P1=zimo[layer];askdir: if((yuzh|shang|xia)!=0){ if(e==1){upcircle: switch(layer){case 0x01: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}break;case 0x02: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}break;case 0x03: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}break;case 0x04: if((quw[layer-1]&yuzh)||(quw[layer-1]&shang)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}break;case 0x05: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}break;case 0x06: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}break;case 0x07: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}break;case 0x08: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();doo r=1;}}////////////////判断上面还有没有要去的层。