1 课题概述1、1课题的主要研究内容及设计步骤本课题的主要任务就是完成一个电梯系统的调度模块,即根据每个楼层不同顾客的按键需求,让电梯做出合理的判断,正确高效地知道电梯完成各项载客任务。
根据此任务,本课题需要研究的内容有:1、根据系统的技术要求,进行系统硬件的总体方案设计;2、学习单片机的相关知识,并且加以运用;3、选择恰当的芯片,并对其内部协议有所掌握,便于应用。
4、研究C语言编程,并且规定电梯的工作规则,用C语言加以实现;5、对软件与硬件进行调试,让其协调工作,完成指定任务。
结合以上内容,本课题的设计方案步骤如下:关于硬件部分:首先,对实际的电梯系统进行模拟,一般情况下,一个电梯应该具备相关按键、显示二极管、数码管等,由于这就是一个调度模块,故没有设计具体的轿厢等机械部分。
然后,结合这些实物,选择恰当的芯片,并分成若干模块,安排好各自之间的关系。
接着,要完成电路图的设计,画出PCB板,焊接相关器件后进行硬件调试,瞧就是否好用并加以适当的更正。
关于软件部分:关于电梯调度时所遵循的原则作出规定,其必须基于高效与人性化两个原则。
最后就是使用C语言将规定程序化,以便电梯真正的运作。
当然,二者的关系并不就是分离的,它们就是相辅相成,硬件依据软件来验证,软件依据硬件来调试。
经过一个个的发现问题、一个个的解决问题,最终做出完美的电梯调度模块。
1、2课题的开发环境简介1、2、1电路图制作软件proteus 7、2Proteus就是目前最好的模拟单片机外围器件的工具,因此在仿真与程序调试时,关心的不再就是某些语句执行时单片机寄存器与存储器内容的改变,而就是从工程的角度直接瞧程序运行与电路工作的过程与结果。
对于这样的仿真实验,从某种意义上讲,就是弥补了实验与工程应用间脱节的矛盾与现象。
1、2、2C51的程序开发软件KeilKeil C51 软件就是众多单片机应用开发的优秀软件之一,它集编辑,编译,仿真于一体,支持汇编,PLM 语言与 C 语言的程序设计,界面友好,易学易用。
2 方案论证2、1 设计功能要求本设计就是为一六层电梯设计一调度系统,即使电梯能够合理高效地运行,完成各楼层顾客的接送任务。
形象地说,就就是要应对不同楼层顾客的不同需求,作出合理高效的判断,使所有顾客在整体运用时间最短的条件下将其运往各自的目的地。
这个设计的成品应该可以作为真实电梯的控制系统一样,遵守以下两个原则:一就是高效性,二就是人性化。
而实际电梯所面临的情况无比复杂,故本设计的难点除了硬件上面外,还有对这些复杂的情况归类化,分为若干个基本情况,另外就是用恰当的C语言描述来表达这些复杂的逻辑。
核心处两个步骤:第一判断电梯就是上行还就是下行;第二,判断就是去接人还就是去送人。
2、2 系统的结构框图图2-1 系统的结构框图如上图2-1所示,楼层电梯呼叫按键就就是楼层外面的上行、下行按键,有需求时即可按下;电梯内呼叫按键就就是电梯内部的数字按键,它就是内部按键需求的输入;单片机就就是整个系统的核心,接收输入信息,经过处理后输出信息;楼层显示数码管就就是接收单片机处理的信息,显示此时的楼层数;电梯状态指示灯就就是接收单片机处理的信息,显示电梯的状态:上升、下降、停止。
电动机的驱动与控制就就是接收单片机的PWM脉冲信号来控制驱动器,进而控制电动机的正反转,使电动机牵引电梯做上下运动。
3 系统的硬件设计电梯最底层为1楼,因此在1楼仅有上升按键,而电梯最高层为6楼,因此6楼应仅有下降按键。
其她楼层则既有上升按键,也有下降按键。
在电梯内部按键设置方面,则应有1~6楼的各层选择按键。
按键的一端接地,另一端通过集成电路芯片连至单片机引脚。
这里,由于按键数量很多,又要求电梯控制系统能以最快速度响应按键的需求,因此,所有按键通过与门连接单片机。
用五片双4输入与门74LS21即可实现16个按键对象的集体与运算的最终结果,按键动作最终就是送到单片机的INT0端。
即:INT0←(P1、0*P1、1*P1、2*P1、3)*(P1、4*P1、5*P1、6*P1、7)*(P3、0*P3、1*P2、0*P3、3)*(P3、4*P3、5*P2、1*P2、2)无论哪一个按键有动作,低电平信号就会送到INT0端,从而引发外部中断0服务子程序运行。
当定时器0中断时,单片机向电动机发送PWM脉冲信号,电动机接到脉冲信号后,经过驱动器的驱动,电动机便牵引电梯上下运动。
电梯的楼层显示用七段数码管完成显示。
本设计电梯只有6层,因此用七段数码管即可,数码管的显示数据通过单片机的P0口来进行传送。
设计中要求数码管随着电梯的位置变化而变化,即数码管显示数据要与楼层数同步,因此数码管的片选线直接连接地,而不需要再选择。
电梯升降的状态用上升与下降指示灯来进行显示,通过单片机的P3、7与P3、6引脚分别连接上升与下降指示灯的负极,其正极均连接至系统正电源处。
3、1单片机最小系统模块在本设计中,最小系统应该包括:单片机、晶振电路、复位电路。
如图3-1所示,晶振电路由C3与C2与晶振组成。
C3与C2就是两个30pF的瓷片电容接地用来削减偕波对电路的稳定性的影响。
复位电路采取的为手动按键复位电路,由电容C13,电阻R1、C1与开关RESET组成,当单片机的复位引脚RESET出现2个机器周期以上的高电平时,单片机就执行复位操作。
图3-1 单片机的最小系统3、2电动机的选择我们选用三相异步电动机来做电梯的动力装置,因为国产Y系列的电动机具有高效、节能、特性好及低噪声等优点,我们将选用国内最先进的Y系列异步电动机。
这里我们选用Y100L24三相异步电动机,因为它还具有性能好、寿命长、可靠性高、维护方便、启动转矩大等优点,其功能参数为额定电压380V,额定频率50HZ,额定功率3000W,额定转速1400转/分。
如图3-2,在PROTEUS中,我们选用的普通的MOTOR-BCD代替进行仿真。
图3-2电动机正反控制电路3、3中断电路图3-3 中断电路图中断电路如上图3-3所示。
图中外部0中断INT0与74LS21与门相接,低电平有效,所以当单片机接电源后,P1、0~P1、3引脚此时为高电平,当任一按键按下后,相应的中断输入口直接与地相接,高电平变为低电平,外部0中断立即响应,单片机系统进入中断控制子程序系统,在中断服务子程序中做出相应的执行指令。
3、4 数码管显示模块图3-4 数码管显示电路七段数码管外形如图3-4所示,即左边的7个引脚跟单片机P0口相接,下边的引脚连接地。
楼层内外分别用一个7段数码管显示,可以共用一个P0口。
3、5 按钮控制电路模块图3-5电梯不同楼层的按钮如图3-5所示,按键显示电路模块包括电梯内部的按钮与每层楼的上下按钮,这些按钮一端与地相接,一端又与单片机与与门74LS21相接,外部0中断低电平有效,这样可以实现模拟按键的自如操作。
3、6 报警电路如图3-6所示,电梯内添加手动报警电路,假若电梯发生故障,电梯内的人可自行发出报警信号,向外界求救。
该电路接在单片机的P2、7口。
图3-6电梯不同楼层的按钮3、7 模拟电路图如下图3-7所示,电路原理图包括状态指示灯模块、内外按键模块、中断电路模块、单片机的主要外围模块、数码管显示模块与电动机驱动控制模块、报警模块。
P0口的P0、1~P0、6引脚与数码管模块相接,P2口的P2、4~P2、7引脚与电动机驱动控制模块相接,P3口的P3、2引脚与中段电路模块相接,P1口的P1、0~P1、7引脚、P3、0~P3、1引脚、P3、3~P3、5引脚分别与对应的内外按键模块相接,P3、6~P3、7引脚与状态指示灯模块相接。
图3-7 模拟电路原理图4系统的软件设计从程序功能上来分,本设计的高层软件程序大概可以分为以下几类:一、运行与决策函数;二、中断处理函数;三、置位各状态变量函数;其中,第一类函数起作用于按键按下的时刻,当有按键按下时,通过74LS21以中断的方式发送给单片机,此时,单片机即对程序中所用到的各个状态变量进行置位并且点亮相关发光二极管,如置位按键所对应的去向变量等,方便决策函数使用。
第二类函数起作用于电梯到达目标楼层时,这时函数负责把相关发光二极管熄灭,并且及时清除相关状态位,以免影响判别函数作出正确判断。
第三类函数就是程序的核心。
它直接负责管理电梯下一次所要到达的楼层,并且要基于短时间、高效率、人性化等原则。
每当电梯经过一楼层时,此函数即会被调用,然后返回一个变量名为aim的值,它即为下一个电梯要停留的目标楼层值。
4、1单片机中断处理函数本设计主要用到了单片机的中断系统。
当有按键按下时,利用函数将键值存储起来,并在单片机引脚输出高电平发出中断进行相关处理。
中断的相关设置以及中断处理如图4、1所示。
图4、1 中断处理中的相关操作4、2电梯判决函数在电梯经过一个楼层时,就会自动调用该函数。
其流程如图4、2所示。
图4-2 电梯判决流程图由图可知,程序中将实际情况分为四种情况来判断:电梯上行且就是去送人、电梯上行且就是去接人、电梯下行且就是去送人、电梯下行且就是去接人。
电梯各情况下所对应的处理方法,以电梯上行的两种状态为例:在实际应用中,最简单的情况莫过于电梯当前为闲置状态,然后有一人按下按键呼叫,然后电梯便响应呼叫。
但就是,实际情况往往比这复杂的多,往往会有多人呼叫电梯。
那么就必须得为电梯规定好一个特定的优先级规则,以免乱作一团。
若电梯处于上行状态,则在该过程中响应不同顾客的优先级为:高层呼叫上行顾客>高层呼叫下行顾客>底层呼叫下行顾客>底层呼叫上行顾客。
若上行,且就是送人,比如电梯当前在二层,六楼有人呼叫上楼,那么它就要响应这一呼叫,从而把自己的目标楼层锁定为六楼并向上运行,而在六楼呼叫后不久,五楼也有人呼叫上楼(且电梯此刻还未运行到五楼),那么在电梯运行中,每经过一个楼层,会做一次判决,因为五楼也有人呼叫,所以正常情况下,它应该在判决后将目标楼层定位五楼。
而若五楼的顾客按下的就是下行键,或者二楼的人按下呼叫键,电梯此时都会暂时不予理会。
在程序中,当五楼有上行键呼叫时,状态变量f5up便会被置位,程序走到判别if((f5up==0)|(present>5))时,里面的内容即为假,则不再继续向下判断,而转向else 语句中,里面又有一个判断,当确定此时确实有键按下且电梯当前所处楼层小于五楼时,目标楼层就会被变更到五楼,程序最终返回一个aim值。
由于程序中没有下行键的出现,故下行键的状态就是不会影响到该程序的判决的。
此时程序的检测依据两个标准:第一,由低层像高层开始检查;第二,对于电梯已经过的楼层与按下下行键所发出的请求,电梯暂时就是不予理会的。
这也就是很明显的,因为上行送人状态中,低层的优先权大于高层的。