电梯设计论文Word文档格式.docx
《电梯设计论文Word文档格式.docx》由会员分享,可在线阅读,更多相关《电梯设计论文Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
![电梯设计论文Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/3/0b1de32b-c12a-41fc-a58d-900a1889fd39/0b1de32b-c12a-41fc-a58d-900a1889fd391.gif)
实际生活中单片机具有成本低,通用性强,灵活性大以及易于实现复杂控制等优点。
因此得以被广泛应用于我们日常生活之中。
关键词:
AT89C52LED显示电机正反转控制楼层显示
1引言
随着人们生活水平的不断提高和国民经济的迅速发展。
各大城市建筑物在不断向高层化发展。
因此电梯在我们的生活中起着举足轻重的作用。
电梯已不仅是一种生产环节中的重要设备,更是一种人们生活中重要的的交通运输设备。
因此电梯控制技术也在不断的进步和完善,常用的控制技术主要的有两种技术:
基于PLC控制和基于单片机控制两大技术。
用PLC控制的电梯性能可靠、稳定,但是造价太高;
基于单片机控制的电梯可以大大的降低成本而且运行也较可靠,所以现在电梯控制中大多数采用单片机控制。
目前大型楼宇的电梯自动控制系统一般是基于PLC,但是在一些干扰较少、层数较少、控制精度要求不高、且人员不乘的情况下,使用单片机是十分适合的,虽然它的抗干扰及稳定性上比不上PLC,但是它的价格、体积及灵活性是PLC比不上的。
本文基于单片机89SC51来控制各部分电路,采用单片机构成控制系统,可大大降低成本,而且做成专用控制系统,程序被固化,加强了保密性,提高了可靠性。
2总体设计方案
2.1设计思路
本次设计的基本思想是采用AT89C52单片机作为核心,根据输出信号来控制电路的整体运行,同时利用其丰富的I/O接口与外围电路配合进行控制。
采用LED静态显示来实时显示电梯所在楼层,并用74LS245来驱动LED显示。
采用行列式键盘矩阵作为外呼内选电路,采用定时器延时来控制电梯的位置校验,当电梯到达目的楼层时电机停止运行,此时即可进、出乘客,乘客进入电梯之后可选择去哪一层,然后电梯根据乘客的选择判断去哪一层,继续运行。
通过单片机控制电梯,在上升过程中只响应上升呼叫,下降过程中只响应下降呼叫,只响应同方向的呼叫,反方向呼叫无效。
2.2总体设计框图
此电路方框图如图1所示,电路由键盘电路、单片机最小系统电路、楼层显示电路、电机状态显示电路、电机控制电路5部分构成。
其中单片机最小系统主要由复位电路和时钟电路组成。
电路复位后楼层显示数字1表示电梯此时在一楼,显示电路通过74ls164串入并出驱动8位数码管显示,如有操作者在厢外呼叫,由外呼叫电路把信号输入单片机,当车厢来到呼叫层(由定时器定时电路判断,电机控制电路控制电机的正反转),则打开电梯门,人进入后关门。
操作者通过选层电路把目的层告知单片机,控制电机把操作者送到目的楼层。
系统等待下次呼叫。
系统的正常工作由时钟电路来保证。
显示电路实时显示电梯所在的楼层位置,每层之间通过8秒延时控制即每延时8秒表示电梯走了一层。
电梯状态是通过两个发光管显示的,绿灯亮表示电梯在向上运行,黄灯亮表示电梯在向下运行。
键盘电路采用独立键盘(共12个按键),其中6个按键是各层楼外呼按键,6个表示电梯内部的选择键。
电梯的正常工作是通过对单片机写入程序控制的。
总体设计方框图如下所示:
图1.总体设计方框图
3电梯控制系统原理分析
3.1控制电路的设计
3.1.1电梯内部呼叫电路和电机状态显示电路
电梯设计原理是通过对按键的控制,从而显示相应的楼层,把人送到自己想去的楼层,而按键的控制分为内部按键和外部按键,一部分是电梯外部的人对电梯控制使电梯得到响应,一部分是电梯内部的人对其控制使其得到响应,如图2,六个目标楼层选择按键K1、K2、K3、K4、K5、K6与单片机P0口的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5连接(P0口作为输出端驱动外部电路时须外接上拉电阻)。
电机状态是通过两个发光管显示的,绿灯、红灯与单片的P1.6、P1.7连接(须外接上拉电阻),用于显示电梯的运行状态,人进入电梯内按下要去的楼层对应的按键,就会控制电机转动,达到相应楼层。
K1:
一楼内部向下呼叫按键,此键按下表示电梯中的人想去的目的楼层时1楼,单片机根据此信号控制电梯的运行以到达目的楼层。
K2:
二楼内部呼叫按键,当电梯处于上升状态时,表示此时一楼的人想要去二楼;
当电梯处于下降状态时,表示此时二楼以上中某个楼层的人想要到达二楼,单片机根据此信号控制电梯的运行以到达目的楼层。
K3:
三楼内部呼叫按键,当电梯处于上升状态时,表示此时一楼或者二楼的人想要去三楼;
当电梯处于下降状态时,表示此时三楼以上中某个楼层的人想要到达三楼,单片机根据此信号控制电梯的运行以到达目的楼层。
K4:
四楼内部呼叫按键,当电梯处于上升状态时,表示此时一楼,二楼和三楼的人想要去四楼;
当电梯处于下降状态时,表示此时五楼和六楼某个楼层的人想要到达四楼,单片机根据此信号控制电梯的运行以到达目的楼层。
K5:
五楼内部呼叫按键,当电梯处于上升状态时,表示此时一楼,二楼,三楼和四楼的人想要去五楼;
当电梯处于下降状态时,表示此时六楼的人想要到达五楼,单片机根据此信号控制电梯的运行以到达目的楼层。
K6:
六楼内部向上呼叫按键,此键按下表示电梯中的人想去的目的楼层时六楼,单片机根据此信号控制电梯的运行以到达目的楼层。
内部电梯呼叫按键如图所示:
图2.电梯内部呼叫电路和电机状态显示电路
3.1.2电梯外部呼叫电路
电梯外部呼叫电路如图3所示,按键s1out,s2out,s3out,s4out,s5out,分别与单片机的p2.4,p2.3,p2.2,p2.1,p2.0口相连,若按下上升键,则电梯在上升过程中只响应上升呼叫,下降按键呼叫无效;
反之亦然。
S1out:
此按键按下表示此时一楼有人呼叫,想要去以上楼层,单片机根据此信号控制电梯的运行以到达目的楼层
S2out:
此按键按下表示此时二楼有人呼叫,如若二楼向下按键,则表示二楼的人想要去一楼;
如若二楼向上按键,则表示二楼的人想要去二楼以上楼层,单片机根据此信号控制电梯的运行以到达目的楼层。
S3out:
此按键按下表示此时三楼有人呼叫,如若三楼向下按键,则表示三楼的人想要去一楼或者二楼;
如若三楼向上按键,则表示三楼的人想要去三楼以上楼层,单片机根据此信号控制电梯的运行以到达目的楼层。
S4out:
此按键按下表示此时四楼有人呼叫,如若四楼向下按键,则表示四楼的人想要向下;
如若四楼向上按键,则表示四楼的人想要去五楼或者六楼,单片机根据此信号控制电梯的运行以到达目的楼层。
S5out:
此按键按下表示此时五楼有人呼叫,如若五楼向下按键,则表示五楼的人想要向下;
如若五楼向上按键,则表示五楼的人想要六楼,单片机根据此信号控制电梯的运行以到达目的楼层。
S6out:
此按键按下表示此时六楼有人呼叫,表示想去以下楼层,单片机根据此信号控制电梯的运行以到达目的楼层。
本实验由于部分功能未能实现,在这里只列出了外部六个按键的设置。
外部电梯呼叫如图所示:
图3.电梯外部呼叫电路
3.1.3电机控制电路
电机采用普通直流电机,直流电机具有优良的调速特性,调速平滑、方便,调整范围广;
过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转。
用电机驱动芯片L298来驱动。
电机控制电路用来控制电机的正反转,当按下上升键时,电机正转,按下下降键时,电机反转。
电路如图4所示。
图4.电机控制电路
3.2楼层显示电路
显示电路是根据数码管的状态显示进而让我们知道电梯此刻的状态,本实验中我们用一个八段数码管来实现,根据数码管的数字显示让我们知道我们需要的目的楼层,我们用74ls164驱动数码管,其管脚1、2接单片机P3.0口,管脚8接P3.1口,通过3,4,5,10,11,12,13各个口的输出状态进而起到对数码管的显示控制作用。
数码管的9,10两个引脚接高电平用于保证数码管的工作。
电路如图5所示
图5.显示楼层电路
3.3单片机最小系统的设计
单片机的最小系统是控制单片机工作的核心部分,用于控制单片机的工作和脉冲的变化,进而实现对其设计功能的实现,而此电路组主要包括复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图6(左)所示:
其中9脚为单片机的复位端,接单片机的RST端,通过对按键的控制实现电路的复位。
时钟电路如图6(右)所示,主要由晶振和电容构成,此晶振采用的是12MHZ的,电容则为30PF,电路的XATL2和XATL1端分别与单片机的18和19脚相连.
图6.最小系统电路
4程序流程图
程序流程图是设计的核心部分,可以简单明了的反应出设计的思路,本实验是基于单片机的电梯控制设计,电梯共六层,通过对按键的扫描来判断是否有按键的按下,从而是单片机响应控制电机的转动,图7则为电梯设计流程图。
程序如下图:
图7.程序流程图
5总结与体会
实习已接近尾声,通过这次实习,让我明白了很多,也学会了很多,从最初刚刚拿到课题时的茫然,过度到每天都与图书馆打交道,查阅各种资料,将实习中遇到的难题各个击破,这其中充满了挑战和艰辛,可是这些都无所谓,因为更多的则是我们克服难题时的兴奋和获得知识的喜悦,我们的设计为电梯控制,从最初程序的编译到电路的仿真,以至于最后的实物成形,中间不仅融汇了我们对基础知识的应用还有对计算机软件的学习,当然期间也遗忘了很多东西,不过经过与同学之间的讨论和老师悉心的指导以及自己的细心摸索,总算是完成了制作,电梯的仿真结果功能实现了,可是等到实物出来测试时,并没有实现应有的结果,这让我认识到了理论与实际的差距,更让我懂得了在今后的学习生活中要认识到理论与实际结合的重要性,在学习基础理论的同时,要重视实际的应用,从而把知识学习的更加牢固。
参考文献
[1]刘瑞新.单片机原理及应用教程[M].机械工业出版社,2003.7
[2]赵晓安.MCS-51单片机原理及应用.天津大学出版社,2001.3
[3]夏继强.单片机实验与实践教程.北京:
北京航空航天大学出版社,2001
[4]李朝青.单片机原理及接口技术[M].北京:
北京航空航天出版社,2005.10
[5]肖洪兵.跟我学用单片机.北京:
北京航空航天大学出版社,2002.8
[6]曹巧媛.单片机原理及应用[M].大连.大连理工大学出版社,1996.5
[7]叶挺秀.应用电子学[M].杭州:
浙江大学出版社,1994
[8]朱承高.电工及电子技术手册[M].北京:
高等教育出版社,1990
[9]李朝青.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,2006
[11]唐俊翟.单片机原理与应用[M].冶金工业出版社,2003.9
[13]刘瑞新.单片机原理及应用教程[M].机械工业出版社,2003.7
[14]吴国经.单片机应用技术[M].中国电力出版社,2004.1
[15]何立民.单片机应用系统设计[M].北京航空航天出版社,1995
附录一:
电路总原理图
附录二:
PCB板
附录三:
程序清单
#include<
reg51.h>
#include"
电梯.h"
sbitk1=P0^0;
sbitk2=P0^1;
sbitk3=P0^2;
sbitk4=P0^3;
sbitk5=P0^4;
sbitk6=P0^5;
sbitLedDown=P0^6;
sbitLedUp=P0^7;
sbitup1=P2^0;
sbitup2=P2^1;
sbitdown2=P2^2;
sbitup3=P2^3;
sbitdown3=P2^4;
sbitup4=P2^5;
sbitdown4=P2^6;
sbitup5=P2^7;
sbitdown5=P1^0;
sbitdown6=P1^1;
sbitd11=P1^2;
sbitd12=P1^3;
sbitd21=P1^4;
sbitd22=P1^5;
sbitpwm1=P1^6;
sbitpwm2=P1^7;
voidDianTiKey();
#defineucharunsignedchar
charKeyValueOld;
//内部按键上次值
charKeyValueOOld;
//外部按键上次值
charNowFloor;
//当前所在楼层
charKeyValue;
//电梯内部按键暂存值
charKeyValueO;
//电梯外部按键暂存值
charGoFloor[5];
chart;
ucharcodeplay[]={0xff,0xd7,0x32,0x92,0xd4,0x98,0x18};
//串口显示字型码
unsignedintTimeValue;
//定时器计数
charNum;
voiddelay(unsignedinta)
{
//unsignedinti;
TH0=(65535-10000)/256;
TL0=(65535-10000)%256;
TimeValue=0;
TR0=1;
while(TimeValue<
a)
{
DianTiKey();
}
TR0=0;
}
voidShangSheng()//驱动电机上升函数
inti;
t=11;
LedUp=0;
LedDown=1;
for(i=0;
i<
10;
i++)
d11=1,d12=0,d21=0,d22=0;
delay(5);
d11=1,d12=1,d21=0,d22=0;
d11=0,d12=1,d21=0,d22=0;
d11=0,d12=1,d21=1,d22=0;
d11=0,d12=0,d21=1,d22=0;
d11=0,d12=0,d21=1,d22=1;
d11=0,d12=0,d21=0,d22=1;
d11=1,d12=0,d21=0,d22=1;
t=0;
//d11=1,d12=1,d21=1,d22=1;
LedUp=1;
voidXiaJiang()
inti;
t=10;
LedDown=0;
voidGo()//电梯内部按键响应程序
chartemp;
if(KeyValue!
=KeyValueOld)
KeyValueOld=KeyValue;
temp=NowFloor-KeyValue;
if(t==0)
{
if(temp>
0)//电梯执行上升
{
while(temp>
0)
{
ShangSheng();
Num++;
if(GoFloor[Num]!
=0)
if(((GoFloor[Num]&
0x01)+(GoFloor[Num]&
0x04))>
0);
}
temp--;
SBUF=play[--NowFloor];
while(!
TI);
TI=0;
}
NowFloor=KeyValue;
if(temp<
0)//电梯执行下降
while(temp<
{
XiaJiang();
temp++;
SBUF=play[++NowFloor];
while(!
TI=0;
}
}
voidOutKey()//外部按键响应程序
if(KeyValueO!
=KeyValueOOld)//按键是否按下
KeyValueOOld=KeyValueO;
temp=NowFloor-KeyValueO;
if(temp>
{
ShangSheng();
temp--;
SBUF=play[--NowFloor];
NowFloor=KeyValueO;
if(temp<
while(temp<
}
voidDianTiKey()//电梯按键扫描函数
switch(~P0)
case0x01:
KeyValue=1;
GoFloor[0]|=4;
break;
case0x02:
KeyValue=2;
GoFloor[1]|=4;
case0x04:
KeyValue=3;
GoFloor[2]|=4;
case0x08:
KeyValue=4;
GoFloor[3]|=4;
case0x10:
KeyValue=5;
GoFloor[4]|=4;
case0x20:
KeyValue=6;
GoFloor[5]|=4;
case0x40:
case0x80:
if(t==0)
{
switch(~P2)//上升按键扫描
case0x01:
GoFloor[0]|=1;
KeyValueO=1;
//1楼呼叫上升
case0x02:
GoFloor[1]|=1;
KeyValueO=2;
//2楼呼叫上升
case0x04:
GoFloor[2]|=1;
KeyValueO=3;
//3楼呼叫上升
case0x08:
GoFloor[3]|=1;
KeyValueO=4;
//4楼呼叫上升
case0x10:
GoFloor[4]|=1;
KeyValueO=5;
//5楼呼叫上升
case0x20:
GoFloor[0]|=2;
//2楼呼叫下降
case0x40:
GoFloor[1]|=2;
//3楼呼叫下降
case0x80:
GoFloor[2]|=2;
//4楼呼叫下降
if(!
down6)
GoFloor[4]|=2;
//6楼呼叫下降
KeyValueO=6;
}
down5)//5楼呼叫下降
GoFloor[3]|=2;
KeyValueO=5;
else
if(t==11)//电梯在上升时响应上升呼叫
//5楼呼叫上升
elseif(t==10)//电梯在下降时响应下降呼叫
switch(~P2)
case0x20:
KeyValueO=2