1、单片机课程设计之电梯控制系统JIANGSU UNIVERSITY OF TECHNOLOGY单片机应用系统设计电梯控制器 学 院: 电气信息工程学院 专 业: 测控技术与仪器 班 级: 11测控2 姓 名: 唐德康 学 号: 11314204 指导教师: 刘素芬 时 间: 2014年11月 基于单片机的电梯控制系统设计摘要:本文介绍了一种采用单片AT89C52芯片进行电梯控制系统的设计方法,主要阐述如何使用单片机进行编程来实现电子设计的方法,利用单片机编程实现功能,简洁而又多变的设计方法,缩短了研发周期,同时使电梯控制系统体积更小功能更强大。硬件部分主要由单片机的最小模块、电梯内外按钮控制模块
2、、数码管显示楼层模块、发光二极管显示目的楼层模块、报警显示模块组成。软件部分使用kiel软件进行C语言程序编写,用proteus软件进行仿真调试。本设计具有电梯控制系统所需的一些基本功能,能通过方向按键选择方向,能通过数字按键选择楼层,数码管显示实时楼层数,电动机控制部分采用直流电机及H桥驱动电路,使电梯箱能上下运动。硬件设计简单可靠,结合软件,基本实现了五层电梯运行的模拟仿真。关键词:AT89C52;单片机;电梯控制系统; C语言1内容和要求 以AT89C52单片机和步进电动机为核心设计单片机电梯控制器,假设电梯安装在一个楼层为4层的小楼上。其人机接口包括显示器、键盘、喇叭、指示灯。每层电梯
3、口都有上楼、下楼两个按键,一个7段数码管显示器作为电梯当前层指示灯,两个发光二极管作为电梯运行方向指示灯。进入电梯里边,按数字键选择想要去的目的楼层,一个7段数码管显示器作为电梯当前层指示灯,两个发光二极管作为电梯上行和下行指示灯。步进电动机正转表示电梯上行,步进电动机反转表示电梯下行。启动按键按下去表示电梯控制系统可以运行。紧急停止按键按下,电动机停止运动。报警按键按下,启动蜂鸣器和闪烁红色报警灯。 1.1设计思路本次设计的基本思想是采用AT89C52单片机作为核心,利用其丰富的I/O接口与外围电路配合进行控制。采用延时函数来控制电梯的位置校验,采用数码管静态显示来实时显示电梯所在楼层。采用
4、行列式矩阵键盘矩阵作为外呼内选电路,由于是5层楼,故选用44矩阵键盘。当电梯到达目的楼层时电机停止,此时即可进、出乘客,乘客进入电梯之后可选择去哪一层,然后电梯根据乘客的选择判断去哪一层,继续运行。通过单片机控制电梯在上升过程中只响应上升呼叫,下降过程中只响应下降呼叫。电梯的正常运行通过单片机的控制来实现。1.1.1方案确立(1)主控芯片选择 方案一:多片单片机控制方案。这种方案是使用多片单片机,其中一片是作为主控制器,另外设置了轿厢控制系统,每层的控制系统分别由一个单片机控制,然后通过主控制器和副控制器之间的通讯,实现电梯系统的控制。这种方案的控制系统的结构简单明了,各个系统之间相互独立便于
5、维护和修检。所以根据功能要求需要选用5片AT89C51单片机就可以实现该电梯的功能。不过单片机之间的通讯较多,在目前通讯是个难点,可能导致电梯运行过程不够稳定。方案二 :采用CPLD 器件作为控制中心,对整个系统的运作进行统一管理,但这种方案要求平时有很多的知识积累和较强的专业水平,实现起来比较困难且器件较贵,不符合经济要求,而且升降电机的控制,运行时间的测量、显示等还需要单片机的配合。方案三:一片单片机为主控制器的方案。MCU采用一个单片机控制所有的按键、数码管显示、电动机的转动、传感器的输出信号等,并对以上所有信号进行处理。这种方案的控制系统相对复杂,只适用于较简单的电梯控制系统,因为这次
6、的设计的内容是5层电梯控制系统,所以选用这种方案。单片机技术目前较为成熟,自身资源丰富,硬件设计简单,成本低,可靠性高,结合软件完全可以实现电梯运行状况的简单模拟。权衡以上方案的分析,采用方案三。(2)楼层显示模块方案一:采用点阵式液晶显示器(LCD)显示各种相关数据以及信息。点阵式液晶显示器属于低功耗器件,但其价格较贵。方案二:采用传统的7段数码管(LED)显示电梯实时所到的楼层。虽功耗大,但其软件驱动简单,硬件电路调试方便,价格便宜,亮度大,能满足本设计的要求。以上两种方案中,选择方案二。(3) 声音提示模块方案一:采用美国ISD公司的2590语音芯片,该语音芯片录放时间为90 秒。ISD
7、2500 系列具有抗断电、音质好,使用方便等优点。它的最大特点在于片内E2PROM容量为480K,所以录放时间长;有10个地址输入端,寻址能力可达1024 位;最多能分600 段;设有OVF(溢出)端,便于多个器件级联。方案二:采用蜂鸣提示音提示当轿箱到达所需的楼层时,蜂鸣器响,提示乘客到达了所需的楼层,另外可以作为紧急停止时的报警提示信号,其软件驱动、硬件电路调试非常简洁方便,而且价格便宜,能满足本设计的要求。以上两种方案中,选择方案二。(4)电动机模块方案一:采用步进电机作为本设计的执行元件,步进电机在定位性能方面十分优越。步进电机和普通电机的区别主要就在于其脉冲驱动的形式,步进电机不需要
8、A/D 转换,能够直接将数字脉冲信号转化成为角位移。常用的步进电机每转一步,角度转1.8,在应用中,步进电机可以同时完成两个工作,其一是传递转矩,其二是传递信息,升降精度很高。方案二:采用直流电机作为本设计的执行元件,直流电机工作是让线圈始终交替地处于稳定状态和非稳定平衡状态,通过控制电流的方向可以实现电机的正反转。直流电机在高起动转矩、大转矩、低惯量的系统中经常使用到。此题目中电机要带动的负载较大,对升降精度要求不是很,所以采用方案二。 1.1.2实现单片机控制电梯的主要方法首先,对实际的电梯系统进行模拟,一般情况下,一个电梯应该具备相关按键、显示二极管、数码管等,由于这是一个调度模块,故没
9、有设计具体的轿厢等机械部分。然后,结合这些实物,选择恰当的芯片,并分成若干模块,安排好各自之间的关系。由于其有诸多按键和显示环节,而单片机的I/O口管脚资源实在有限,故需要I/O口扩展,用以管理二极管;同时要有专门的按键控制芯片,从而便于按键管理。接着,要完成电路图的设计,焊接相关器件后进行硬件调试,看是否好用并加以适当的更正,最终使硬件电路简单又实用。同时,如果每个选层按钮都采用独立的按键设置,可以很大程度上简化扫描按键程序,采集信号也容易得多,但是由于单片机接口有限,模拟电梯自动控制系统所需按键较多,如此会有接口不足的问题,所以本设计采用44按键矩阵开关电路作为外呼内选呼叫控制。出于同样问
10、题,显示楼层电路采用数码管从串口输出。为了更接近实际的电梯控制系统,设计中还应该添加电梯外上下行请求显示,可用五个发光二极管表示目的请求按键是否按下,有则亮,无则暗。软件方面至于采用中断方式还是采用查询的方式来检测用户的请求信息,可根据具体的设计方案来确定,同时要想准确地采集按键请求状态,就必须时时刻刻调用键盘矩阵扫描程序,也就增加了软件编程的难度。采用单片机作为核心,配以适当接口作为输入输出通道。实际电梯控制系统每层装有一个传感器,从而判断车厢所在位置,本模型使用延时函数对电梯运行楼层数进行控制。当电梯到达所选层,电梯开门延时等待进人并选层,然后延时关门执行请求,若无请求则停在本层等待请求。
11、软件部分使用kiel作为开发环境,用C语言进行编程,采用查询方式来检测用户请求的按键信息并相应相应的函数。 随着人类社会的不断发展,电梯在人们生活中越来越占着重要位置,如何使电梯发挥更大的作用关键在于电梯的控制方法的改进以及控制费用的降低。单片机之所以如此受欢迎在于其廉价的成本和可靠地运行性能。故应用单片机进行电梯的控制势必成为电梯今后发展的重要方向,最优化的程序设计以及更廉价的费用对促进电梯行业的发展用着重要的作用,通过对具体问题的分析和探讨,具体程序的优化与改良,本设计也致力于解决这一问题。1.2功能框架图本电路主要由6大部分电路组成:键盘电路、单片机最小系统电路、楼层显示电路、电机驱动显
12、示电路、目的楼层显示电路、警报电路。其中单片机最小系统主要由复位电路组成。电路复位后楼层显示数字1 表示电梯此时在一楼,显示电路数码管显示,电梯楼层位置是由延时电路控制的,延时电路包括3秒延时和5秒延时,每层之间通过5秒延时控制即每延时5秒表示电梯走了一层,3秒延时是控制电梯的开门时间,3秒延时后电梯关门继续运行。电梯状态是通过两个发光管显示的,上行灯亮表示电梯在向上运行,下行灯亮表示电梯在向下运行。键盘电路采用44键盘矩阵共16个按键分,其中8个按键是各层楼外呼按键,5个按键是电梯内部的选择键。电梯的正常工作是通过对单片机写入程序控制的。总体方框图如图0所示:图0 功能框架2 目的和意义电梯
13、是集机械原理应用、电气控制技术、微处理技术、系统工程学等多科学和技术分支于一体的机电设备,它是建筑中永久垂直交通工具。电梯作为生产生活的典型运载工具使用已十分普及,其控制信号类型多,关系复杂,要求的控制性能特别高。随着经济的发展高层建筑越来越多对电梯的运行速度和控制性能也提出了更高的要求。而在我国于八十年代初至九十年代初投入使用的电梯,其中绝大部分采用继电器继电器阵列结构该结构体积大、接线复杂、噪音大、触点易磨损、故障率高、维护工作量大,已无法满足现代社会的需要。自上世纪80年代以来,微机控制系统得到了极大的发展,现已深人到我国工农业生产的各个方方面面,随着电力电子技术和微电子技术的发展,使得
14、以微机为核心的控制系统得到广泛应用。尤其是单片机的开发与应用,其深度和广度越来越大。微机应用于电梯控制系统,与传统的采用继电接触逻辑控制系统相比,具有很大优越性,一方面,它使整个系统的体积减小,可靠性提高,使用寿命延长;另一方面,它还简化了安装调试和维护维修的工作量,使整个电梯的运行成本降低。更突出的优点是微机具有灵活的算术和逻辑运算功能,具有很强的通信和可扩展功能,实现更完善的自动控制。常用的微机控制主要的有两种技术:基于PLC控制和基于单片机控制两大技术。可编程控制器,是微机技术与继电器常规控制技术相结合的产物,是在顺序控制器和微机控制器的基础上发展起来的新型控制器,是一种以微处理器为核心
15、用作数字控制的专用计算机,它有良好的抗干扰性能,适应很多工业控制现场的恶劣环境,所以现在的电梯控制系统主要还是由可编程控制器控制。但是由于PLC的针对性较强,每一台PLC都是根据一个设备而设计的,所以价格较昂贵。而单片机价格相当便宜,也不像PLC那么有针对性,可以随着设备的更新而不断修改完善,更完美的实现设备的升级。基于单片机控制的电梯可以大大的降低成本而且运行也较可靠,采用单片机来实现老式电梯控制系统的改造无疑是最佳方案。由于单片机具有体积小、线路简单、无噪音、可靠性高、维护方便,是一种少投入、高回报的方案。同时能方便实现多台电梯的群控,并通过通讯接口与楼宇自动化系统联接,实施对电梯的监控。
16、3 仿真电路设计3.1硬件设计3.1.1时钟电路图1 时钟电路图 单片机的时钟电路有振荡电路和分频电路组成。其中振荡电路由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲。而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。AT89C52单片机各功能部件的运行都是以时钟控制信号为基准,有条不紊地一拍一拍地工作,因此时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。AT89C52单片机电路中的电容C1和C2典型值通常选择为30pF。晶振的频率越高则系统的时钟频率也越高,单片机的运行速度也越快。但反过来运行速度越快对内存的速度要求就越高,对印刷电路板的工艺要求也
17、越高,即要求产生的寄生电容要小,晶振和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好的保证振荡器稳定、可靠的工作。基于以上本设计我们考虑选择频率为12MHz的晶振,当振荡脉冲频率为12MHz时,一个机器周期为1us。3.1.2复位电路图2 复位电路图复位是单片机的初始化操作,程序给单片机的复位引脚RST加大于2个机器周期(即24个时钟振荡周期)的高电平就可使单片机复位。AT89C52的复位是由外部的复位电路来实现的。复位电路通常采用上电复位和手动复位两种方式,手动复位有电平方式和脉冲方式两种,我们采用了手动复位为电平方式的复位。如图3-2所示,我们通过RST端经由电阻与电源VCC接通
18、而实现,当按键按下时,RST端为高电平复位。当时钟频率选用12MHz时,C1取10uF,R1取10K时,电容C1充放电时间=R1*C1=0.1s2us(2个机器周期)。3.1.3键盘矩阵电路的设计由于本电路所需按键较多,为了节省单片机的I/O口,故选用行列式键盘矩阵(但是使用了矩阵键盘就与真实电梯有明显的区别了)。本电路采用的是44键盘矩阵,分为外部按钮跟内部按钮两部分。电路如图2 所示,0 - 7是接单片机的P3 端口,单片机采用行和列扫描法来判别这16个按键中哪个键按下,并将其信号进行储存,然后可根据每个按键的功能来通过单片机控制电梯的运行。下面将每个按键的功能说明一下:1L上: 一楼向上
19、呼叫按键,此键按下表示一楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;2L上: 二楼向上呼叫按键,此键按下表示二楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;3L上: 三楼向上呼叫按键,此键按下表示三楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;4L上: 四楼向上呼叫按键,此按键按下表示四楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;2L下:二楼向下呼叫按键,此键按下表示二楼有人要乘坐电梯
20、下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;3L下:三楼向下呼叫按键,此键按下表示三楼有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;4L下:四楼向下呼叫按键,此按键按下表示四楼有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;5L下:五楼向下呼叫按键,此按键按下表示五楼有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;1L:电梯内部选择去一楼按键,此按键按下表示电梯里的乘客要去一楼,单片机根据此信号控制电梯的运行;2
21、L:电梯内部选择去二楼按键,此按键按下表示电梯里的乘客要去二楼,单片机根据此信号控制电梯运行;3L:电梯内部选择去三楼按键,此按键按下表示电梯里的乘客要去三楼,单片机根据此信号控制电梯运行;4L:电梯内部选择去四楼按键,此按键按下表示电梯里的乘客要去四楼,单片机根据此信号控制电梯运行;5L:电梯内部选择去五楼按键,此按键按下表示电梯里的乘客要去五楼,单片机根据此信号控制电梯运行;ALARM:警报按钮,此按钮按下表示电梯有突发情况,单片机根据此信号会将电梯停止运行,点亮警报指示灯并发出警报;键盘电路如图3 所示:图3 键盘矩阵电路3.1.4 电机正反转控制本电路中用两个发光二极管来表示电机正反转
22、,如图6所示:用单片机的P1.1口和P1.2口做输出口来驱动发光二极管,其中上行灯亮表示电机正转,下行灯亮表示电机反转、两灯都不亮表示电机停转。本设计使用两二极管反向并联再与电机串联,有效的节约了单片机端口的使用,又能准确的显示电机的运行状态。由于单片机的IO口电压过低,不能驱动电机,故电机驱动部分采用常用的H桥电路,如图4所示:图4 直流电机H桥驱动电路3.1.5警报电路本电路由蜂鸣器和发光二极管两部分组成,其中蜂鸣器由单片机的P1.0口进行控制,二极管由单片机的P0.0口进行控制,由于P0口无内部电压,故在外部上拉电压。当有突发情况发生时,按下ALARM按钮,蜂鸣器会发出警报,二极管将点亮
23、。警报电路如图8所示: 图5 警报电路3.1.5整体电路图图6 整体电路图4软件设计4.1软件运行整体设计软件设计是智能化系统进行数据采集、处理、控制等工作的基础。系统的软件设计直接影响整个系统的运转和硬件作用的发挥。本设计由于采用键盘矩阵来代替外呼内选按钮,而电梯的运行方向是根据这些呼叫按键和选择按键来决定的,所以单片机要不断的扫描键盘来获取各层呼叫状态。从而来控制电梯的运行。故键盘矩阵扫描是本系统软件设计的重要一部分,另外要把键盘扫描到的各层的按键信息存储起来,然后和电梯的运行状态比较,判断是否响应各层呼叫(电梯只响应同方向呼叫),最后就是楼层显示部分和警报部分了。整个软件设计包括一下几部
24、分:初始化程序使数码管显示“1”表示电梯处在一楼。主程序主要包括:判断乘客进入电梯后选择去哪一层,根据判断情况来控制电梯运行;电梯在运行过程中要不断的扫描键盘,从而来判断各楼层有无呼叫请求,;电梯在运行过程中只响应同方向的呼叫请求;实时显示电梯所在位置及运行状态(上行/下行);开关门有一定的延时来保证乘客走出/进入电梯;4.2 分析键值设计单片机在读取到键值后,自然会分析该键值来自于哪一层楼的哪个按键。然后才可以把该按键对应的储存单位置1,点亮相应的二极管(实际中的电梯也是如此)。在本设计中,按键是按照行与列均匀分布的,特定的行与特定的列处的每个按键,均对应有特定的键值。首先可以人为地规定每个
25、按键在电梯中所处的位置。例如规定位第一行按键为上行呼叫的按键等等(具体可参照电路图)。它有自己固定的键值。那么在返回键值后,只需用一个switch-case语句对相应存储数据进行置1即可。在程序中,我们定义了shang、xia、nei三个数组对相应的按键状况进行存储,这一步是整个程序得以正常运行的前提与基础。在程序开始之前,我们设置了这样一些状态变量,它们分别对应于各个按键,当某个按键按下时,其对应的状态变量就会被置位。这样做的好处是使电梯在执行判决操作时,有据可循。因为判决函数就是依靠当前都有哪些键按下以及电梯此刻所处的上下行状态来判断下一个需要停留的目标楼层的。分析完键值的来源后,就要点亮
26、相应的二极管。由于二极管是由单片机控制且是低电平使发光二极管点亮,故一般来说,要点亮哪个二极管,只需在单片机向相应端口输入0即可。当电梯到达该层后,我们再向该层对应的端口输入1即可熄灭该二极管。4.3电梯运行方向的判决方法这是整个程序成功运行的核心保证。在电梯经过一个楼层时,就会自动调用该函数,它的作用是基于短时间、高效率、人性化的基础上,合理智能的对电梯的运行进行调度,结合实际情况,最终得出电梯下一个目标停留楼层。其流程如图10所示: 图10 电梯判决流程图由图可知,程序中将实际情况分为四种情况来判断:电梯上行且是去送人(即电梯此时位于底层,而高层有人呼叫要上楼)、电梯上行且是去接人(即电梯
27、此时位于底层,而高层有人呼叫要下楼)、电梯下行且是去送人(即电梯此时位于高层,而低层有人呼叫要下楼)、电梯下行且是去接人(即电梯此时位于高层,而低层有人呼叫要上楼)。在实际应用中,最简单的情况莫过于电梯当前为闲置状态,然后有一人按下按键呼叫,然后电梯便响应呼叫。但是,实际情况往往比这复杂的多,在第一个人按下按键电梯运行的过程中,还很有可能会有其他不同楼层的人按下不同的按键(上行或者下行)的情况发生。那么就必须得为电梯规定好一个特定的优先级规则,让其依据这个规则来运行,以免乱作一团。那么这个规则就必须要高效且人性化,在此,我们规定,当电梯上行时,均不理会那些按下行按键的顾客。并且,若在上行过程中
28、,也有人在某层按的是上行按键,但是电梯此时已经走过了该层,那么电梯也绝对不会再选择先下行接他。当然,当将高层上行的顾客送完后(此时一般来说电梯已经处于高层了),电梯便会检测下行按键,若更高层有人呼叫下行,则电梯会选择先去响应他们,然后再下行的过程中依次响应按了下行处于等待中的顾客,最后这些顾客都送完后,再去相应那些电梯上行过程中,处于比电梯低的楼层却按了上行键的顾客。简单地说,若电梯处于上行状态,则在该过程中响应不同顾客的优先级(或者电梯响应的先后顺序)为:高层呼叫上行顾客高层呼叫下行顾客底层呼叫下行顾客底层呼叫上行顾客。那么,当电梯通过程序运行得知到相应状态后,又是如何具体的判断当天所锁定的
29、目标楼层是否要变更呢?现以上行为例,加以详细说明:若上行,且是送人,比如电梯当前在一层,四楼有人呼叫上楼,那么它就要响应这一呼叫,从而把自己的目标楼层锁定为四楼并向上运行,而在四楼呼叫后不久,三楼也有人呼叫上楼(且电梯此刻还未运行到三楼),那么在电梯运行中,没经过一个楼层,会做一次判决,因为三楼也有人呼叫,所以正常情况下,它应该在判决后将目标楼层定位三楼。而若三楼的顾客按下的是下行键,或者二楼的人按下呼叫键,电梯此时都会暂时不予理会。部分程序代码见附录。由程序可以看出,当四楼有上行键呼叫时,状态变量shang4便会被置位,但电梯依然在判断按键状况,此时程序的检测依据两个标准:第一,由低层向高层
30、开始检查;第二,对于电梯已经过的楼层和按下下行键所发出的请求,电梯暂时是不予理会的。这也是很明显的,因为上行送人状态中,低层的优先权大于高层的。程序就是靠着上面这些if语句的嵌套,来完成这种优先级设置的。至于上行接人状态时,所坚持的标准是由高层到底层的顺序进行排查,而对于上行键的呼叫暂时不予理会。下行的状态,恰好与上行相反,在此不再赘述。同时,我们设计了flag标志位,当flag=0表示电梯停止运行,当flag=1表示电梯向上运行,当flag=2表示电梯向下运行。4.4源程序设计#include #define uchar unsigned char#define uint unsigned
31、int sbit alarm1=P10; sbit alarm2=P20; sbit fz=P11;sbit zz=P12;sbit L1=P13; sbit L2=P14; sbit L3=P15; sbit L4=P16; sbit L5=P17; uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x00;uint shang6=0,0,0,0,0,0;uint xia6=0,0,0,0,0,0;uint nei6=0,0,0,0,0,0; uint num,temp,flag=0,lc=1,i,n; /函数声明语句void delay(uint z); void delay3();void delay5(); void keyscan(); void display(uint aa);void init(); void zhishideng(); /主函数 void main() init();/端口初始化 while(1) keyscan(); /键盘扫描 zhishideng(); /有请求楼层亮对应的指示灯 if(flag=0) zz=fz=0;/电梯停止运行 shanglc=0;/置位 xialc=0; neilc=0; n=lc; for
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1