点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87776511?spm=1001.2014.3001.5503
源码获取
主要内容:
采用单片AT89C51芯片进行电梯控制系统的设计方法,主要阐述如何使用单机进行编程来实现电子设计的方法,利用单片机编程实现功能,简洁而又多变的设计方法,缩短了研发周期,同时使电梯控制系统体积更小功能更强大。硬件部分主要由单片机的最小模块、电梯内外按钮控制模块、数码管显示楼层模块、发光二极管显示目的楼层模块、报警显示模块组成。软件部分使用kiel软件进行C语言程序编写,用proteus软件进行仿真调试。
基本要求:
1、电梯电路设计图;
2、电梯设计源程序;
2、keil运行源程序;
3、protus中仿真;
4、运行结果分析。
主要参考资料:
[1]楼然苗等, 51系列单片机设计实例北京航空航天出版社, 2003.3
[2]罗亚非,凌阳十六位单片机应用基础2003年北京航空航天大学出版社
[3]霍孟友等,郸机原理与应用,机械工业出版社,2004.1
[4]霍孟友等,郸机原理与应用学习概要及题解,机械工业出版社, 2005.3
[5]许泳龙等,单片机原理及应用,机械工业出版社, 2005.1
[6]马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社,2003修订版
完 成 期 限:12 月 11 日 - 12 月 26 日
指导教师签名:
课程负责人签名:
摘 要
本文介绍了一种采用单片AT89C51芯片进行电梯控制系统的设计方法,主要阐述如何使用单机进行编程来实现电子设计的方法,利用单片机编程实现功能,简洁而又多变的设计方法,缩短了研发周期,同时使电梯控制系统体积更小功能更强大。硬件部分主要由单片机的最小模块、电梯内外按钮控制模块、数码管显示楼层模块、发光二极管显示目的楼层模块、报警显示模块组成。软件部分使用kiel软件进行C语言程序编写,用proteus软件进行仿真调试。本设计具有电梯控制系统所需的一些基 本功能,能通过方向按键选择方向,能通过数字按键选择楼层,数码管显示实时楼层数,电动机控制部分采用直流电机及H桥驱动电路,使电梯箱能上下运动。硬件设计简单可靠,结合软件,基本实现了五层电梯运行的模拟仿真。
关 键 词:单片机;AT89C51;C语言;
目录
摘 要 1
1. 需求分析 1
1.1背景介绍 1
1.1.1我国电梯行业现状 1
1.1.2电梯管理系统的现状 1
1.2社会需求 1
1.3设计优点 2
1.4设计缺点 2
2.设计任务 3
2.1设计目的 3
2.2方案论证 3
2.2.1设计要求 3
2.2.2系统的结构框图 3
2.3实现单片机控制电梯的主要方法 4
3仿真图设计 5
3.1设计环境 5
3.2仿真图各个模块的设计 5
3.2.1电机的选取 5
3.2.2单片机的选择 5
3.3.3楼层的显示 6
3.3.4电梯各个楼层的按钮 6
4.系统的代码和仿真 7
4.1系统的代码 7
4.2系统仿真图 8
5.系统测试结果 9
5.1启动系统 9
5.2楼层间的移动 9
6.心得体会 11
参考文献 12
1.需求分析
1.1背景介绍
随着经济不断发展,科学技术日新月异,电梯作为日常生活不可缺少的交通具,电梯安全及管理问题已是人们关注的焦点。电梯关人、故障停梯、运行不正常、不能及时维修等问题已是生活在高层建筑中口头抱怨的话题,从抱怨、申诉、直到要求仲裁事例逐渐增多。于是,电梯故障已经成为城市安全的隐患,是城市安防急待解决的问题。因此,提高我国电梯安防管理水平、预防电梯事故发生已是迫在眉睫。
1.1.1我国电梯行业现状
目前,我国电梯在用量剧增,同时,各国电梯制造商纷纷在我国建立工厂,且国内电梯厂家也如雨后春笋般出现,使我国电梯产量跃居世界第一位。这种形势下造成我国在用电梯品牌多、型号复杂、技术水平参差不齐,为维保工作带来较大难度,多品牌、多型号、不同技术形式的电梯维修经验的共享等等问题也就成为电梯维修行业渴望解决的问题。
1.1.2电梯管理系统的现状
电梯管理技术是伴随着计算机控制技术和网络技术的发展而逐步发展起来的,目前国外大的电梯公司几乎都可提供与自己的系统配套的远程监控管理系统,并能提供比较完善的功能。然而,由于中国特殊的国情,这些国外大公司的远程监控管理系统在中国的实际应用过程中还存在着一定的局限性。 如只能监控本公司的电梯,对其他公司电梯的监控则无能为力,对电话网络的质量要求也比较高。另外远程监控系统的价格也比较昂贵,一般用户难以承受。
1.2社会需求
当今社会电梯需求:
1.很强的兼容性。
2.对原有控制系统无干扰。
3.优越的性价比。
4.强大的数据库功能。
5.障的及时报警及隐患的指导排查。
1.3设计优点
为了适应电梯的迅速发展,我用单片机开发了一套电梯控制系统。由于单片机的迅速发展和普及,而采用单片机构成控制系统,则可大大降低成本,而且做成专用控制系统,程序被固化,加强了保密性、提高了可靠性。.
1.4设计缺点
由于时间和个人能力的关系,本次使用AT89C51单片机系统设计的电梯控制系统是比较简单的电梯控制系统,该电梯是在每层楼都停下10s,然后上升或者下降,在现今实际生活当中不实用。
2.设计任务
2.1设计目的
目前电梯控制系统大多采用继电器或者可编程控制器(PLC) 的控制方式,存在着成本高,需要三相供电等缺点,本设计给出了一种基于单片机的电梯模型控制系统设计。以单片机为核心,再辅以适当的硬件电路和控制程序来检测和控制整个电梯的信号,具有成本低、通用性强、灵活性大、扩展容易及易于实现复杂控制等优点。本设计注重基本理论知识与实际情况的紧密结合,同时对学生独立创新和分析问题的能力进行培养,加深对知识的理解,为以后的工作和学习打下坚实的基础。
2.2方案论证
2.2.1设计要求
(1)设置电梯的内外按键,即电梯外都有上或下的按键,电梯内有楼层的选择按键。
(2)电梯状态要有指示灯显示,即电梯目前运行到达楼层的实时显示,电梯升降的状态显示等。
(3)电梯无人时,应默认停在第一层。
2.2.2系统的结构框图
图1.2.2系统的结构框图
如图1.2.2所示,楼层电梯呼叫按键就是楼层外面的上行、下行按键,有需求时即可按下;电梯内呼叫按键就是电梯内部的数字按键,它是内部按键需求的输入;单片机就是整个系统的核心,接收输入信息,经过处理后输出信息;楼层显示数码管就是接收单片机处理的信息,显示此时的楼层数;电梯状态指示灯就是接收单片机处理的信息,显示电梯的状态:上升、下降、停止。电动机的驱动和控制就是接收单片机的PWM脉冲信号来控制驱动器,进而控制电动机的正反转,使电动机牵引电梯做上下运动。
2.3实现单片机控制电梯的主要方法
首先,对实际的电梯系统进行模拟,一般情况下,一个电梯应该具备相关按键、显示二极管、数码管等,由于这是一个调度模块,故没有设计具体的轿厢等机械部分。然后,结合这些实物,选择恰当的芯片,并分成若干模块,安排好各自之间的关系。由于其有诸多按键和显示环节,而单片机的I/0口管脚资源实在有限,故需要I/0口扩展,用以管理二极管;同时要有专门的按键控制芯片,从而便于按键管理。接着,要完成电路图的设计,焊接相关器件后进行硬件调试,看是否好用并加以适当的更正,最终使硬件电路简单又实用。同时,如果每个选层按钮都采用独立的按键设置,可以很大程度上简化扫描按键程序,采集信号也容易得多,但是由于单片机接口有限,模拟电梯自动控制系统所需按键较多,如此会有接不足的问题,所以本设计采用4X4按键矩阵开关电路作为外呼内选呼叫控制。出于同样问题,显示楼层电路采用数码管从串口输出。为了更接近实际的电梯控制系统,设计中还应该添加电梯外上下行请求显示,可用五个发光二极管表示目的请求按键是否按下,有则亮,无则暗。软件方面至于采用中断方式还是采用查询的方式来检测用户的请求信息,可根据具体的设计方案来确定,同时要想准确地采集按键请求状态,就必须时时刻刻调用键盘矩阵扫描程序,也就增加了软件编程的难度。采用单片机作为核心,配以适当接口作为输入输出通道。实际电梯控制系统每层装有一个传感器,从而判断车厢所在位置,本模型使用延时函数对电梯运行楼层数进行控制。当电梯到达所选层,电梯开门延时等待进人并选层,然后延时关门执行请求,若无请求则停在本层等待请求。软件部分使用kiel作为开发环境,用C语言进行编程,采用查询方式来检测用户请求的按键信息并相应相应的函数。随着人类社会的不断发展,电梯在人们生活中越来越占着重要位置,如何使电梯发挥更大的作用关键在于电梯的控制方法的改进以及控制费用的降低。单片机之所以如此受欢迎在于其廉价的成本和可靠地运行性能。故应用单片机进行电梯的控制势必成为电梯今后发展的重要方向,最优化的程序设计以及更廉价的费用对促进电梯行业的发展用着重要的作用,通过对具体问题的分析和探讨,具体程序的优化与改良,本设计也致力于解决这一问题。
3仿真图设计
3.1设计环境
使用的是Proteus 8来制作的仿真图,其特点有:
(1)完善的电路仿真和单片机协同仿真;
(2)支持主流单片机类型;
(3)提供代码的编译与调试功能;
(4)智能、实用的原理图与PCB设计。
3.2仿真图各个模块的设计
3.2.1电机的选取
在此选择的是直流电机MOTOR-DC,如图所示:
图3.2.1 MOTOR-DC
运行系统后,当我们选择不同的楼层时,电机将带动电梯运转到达所需要去楼层。
3.2.2单片机的选择
该电梯楼层上下移动的系统是基于AT89C51下完成的,如图所示:
图3.2.2 AT89C51
3.3.3楼层的显示
为的方便而且直观的了解电梯到达的楼层是多少,在仿真图中选择的是7SEG-BCD数码管来显示楼层的层数,如图所示:
图3.3.3 7SEG-BCD
3.3.4电梯各个楼层的按钮
该电梯楼层上下移动的系统主要是为的实现楼层间的移动,所以在此仿真图中设计的4x4的按钮,分别对应着1-16楼,如图所示:
图3.3.4 电梯按钮的设计
4.系统的代码和仿真
4.1系统的代码
简易电梯楼层间上下移动的代码如下:
#include <reg51.h>
#define uchar unsigned char
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
sbit p30=P3^0;
sbit p31=P3^1;
void delay(int n)
{ int m,k;
for(m=0;m<n;m++)for(k=0;k<110;k++);
}
void main()
{ unsigned char i,xin,jiu;
P2=0x01;
jiu=1;
xin=1;
p30=0;
p31=0;
while(1)
{ P1=0xf0;
if((P1&0xf0)!=0xf0)
delay(20);
if((P1&0xf0)!=0xf0)
{ P1=0xfe;
if(p14==0)xin=1;
else if(p15==0)xin=2;
else if(p16==0)xin=3;
else if(p17==0)xin=4;
P1=0xfd;
if(p14==0)xin=5;
else if(p15==0)xin=6;
else if(p16==0)xin=7;
else if(p17==0)xin=8;
P1=0xfb;
if(p14==0)xin=9;
else if(p15==0)xin=10;
else if(p16==0)xin=11;
else if(p17==0)xin=12;
P1=0xf7;
if(p14==0)xin=13;
else if(p15==0)xin=14;
else if(p16==0)xin=15;
else if(p17==0)xin=16;
}
if(xin>jiu)
for(i=jiu;i<=xin;i++)
{ P2=(i/10)*16+i%10;
delay(1000);
p30=1;p31=0;
}
else if(xin<jiu)
for(i=jiu;i>=xin;i--)
{ P2=i/10*16+i%10;
delay(1000);
p30=0;p31=1;
}
jiu=xin;
p30=p31=0;
}
}
4.2系统仿真图
简易电梯楼层间上下移动仿真图如下:
图4.2 系统仿真图
5.系统测试结果
5.1启动系统
当开启系统后,楼层的初始位置为1楼,运行截图如下:
图4.1 启动系统
5.2楼层间的移动
当按楼层的控制按钮后楼层开始向指定层移动,截图如下:
图4.2.1 楼层向12层移动
图4.2.2 楼层由12层向6层移动
6.心得体会
这次的单片机课程设计做了实验是比较简洁的,但是在这次的实验过程中自身也学习到的不少的知识。在实验中多多少少会遇到一些麻烦与困难,刚一开始的时候就想着放弃或者是选择其他的实验重做,也可能跟我自身学的知识不太充足有关,遇到这种或是那种问题时,没能第一时间想到通过所学的知识去解决,所以在实验的前期对我整个的进展造成很大的影响。在对自身问题的深刻认知后我开始上网查资料,遇到不懂的地方向懂得人寻求帮助,那个时候我才意识到困难不是阻碍,也正是如此最终将实验成功的做完了。由于个人知识的限制这次的系统还有很多的地方没有完善,只是简单的实现的电梯的楼层间的上下移动,比如像是电梯的开门关门,电梯故障的提醒等等,我相信只要努力的学习知识就一定做出更好的成果。
参考文献
[1]楼然苗等, 51系列单片机设计实例北京航空航天出版社, 2003.3
[2]罗亚非,凌阳十六位单片机应用基础2003年北京航空航天大学出版社
[3]霍孟友等,郸机原理与应用,机械工业出版社,2004.1
[4]霍孟友等,郸机原理与应用学习概要及题解,机械工业出版社, 2005.3
[5]许泳龙等,单片机原理及应用,机械工业出版社, 2005.1
[6]马忠梅等,单片机的C语言应用程序设计,北京航空航天大学出版社,2003