电梯控制器单片机_第1页
电梯控制器单片机_第2页
电梯控制器单片机_第3页
电梯控制器单片机_第4页
电梯控制器单片机_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上基于单片机控制的电梯控制器机电113 杨硕1 引言随着现代高科技的发展,住房和办公用楼都已经逐渐向高层发展。电梯是高层宾馆、商店、住宅、多层仓库等高层建筑不可缺少的垂直方向的交通运输工具。1889年美国奥梯斯升降机公司推出的世界上第一部以电动机为动力的升降机,同年在纽约市马累特大厦安装成功。随着建筑物规模越来越大,楼层也越来越高,对电梯的调速精度、调速范围等静态和动态特性都提出了更高的要求。由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。而由单片机设计的控制系统可以随着设备的更新而不断

2、修改完善,更完美的实现设备的升级,且有价格便宜,电路简单,出现故障容易维护等优点。2 总体设计方案 电梯控制系统由外部呼叫,内部呼叫电机部分组成。电梯在各楼层的定位本应采用行程开关或者传感器,由于条件限制,采用延时控制。相邻楼层间升降时间设为3秒。2.1 设计思路 本设计是六层电梯的单片机控制系统。在电梯停靠的每一层都有上下呼叫按钮(六楼只有向下呼叫按钮,一楼只有向上呼叫按钮),需要电梯的乘客只需按一下呼叫按钮,然后等待电梯,进入电梯后电梯有六个楼层的内部呼叫按钮,乘客要到哪一层只需按下其按钮,轿厢内有一个由数码管组成的显示屏,它用来显示轿厢的楼层,在每一层厅站的门外有两个发光二极管用来显示轿

3、厢此刻的上下行。2.2 设计方框图楼层电梯呼叫按键电梯内部呼叫按键楼层显示数码管电机控制电路单片机图1 设计方框图3电梯控制系统原理分析3.1硬件系统实现 硬件由单片机最小系统、电梯内外呼叫电路、显示电路、电机控制电路等组成。3.1.1AT89C51简介本设计主要采用AT89S51芯片,如图2所示。AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了

4、通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作。掉电模式冻结振荡器而

5、保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。图2 AT89C513.1.2电梯内部呼叫电路电梯内电路如图3所示,六个目标楼层选择按键K1、K2、K3、K4、K5、K6与单片机P0口的P0.0、P0.1、P0.2、P0.3、P0.4、P0.5连接(P0口作为输出端驱动外部电路时须外界上拉电阻)。人进入轿厢内按下要去的楼层对应的按键,就会控制电机转动,达到相应楼层。若按下的外部呼叫按键为上升的,则在轿厢内按比该楼层低的按键,电梯不会响应;反之亦然。图3 电梯内部呼叫电路3.1.3 电梯外部呼叫电路 电

6、梯外部呼叫电路如图4所示,按键UP1、UP2、DOWN2、UP3、DOWN3、UP4、DOWN4、UP5、DOWN5、DOWN6接单片机的P2口和P1.0、P1.1。若按下上升键,则电梯在上升过程中不响应下降键;反之亦然。图4 电梯外部呼叫电路3.1.4 显示楼层电路 显示电路的作用是实时显示电梯所在楼层,用一个八段数码管来实现。电路如图5所示。图5 显示楼层电路3.1.5 电机控制电路 电机采用普通直流电机,直流电机具有优良的调速特性,调速平滑、方便,调整范围广;过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转;能满足生产自动化系统各种不同的特殊运行要求。用电机驱动芯片

7、L298来驱动。电机控制电路用来控制电机的正反转,当按下上升键时,电机正转,按下下降键时,电机反转。电路如图6所示。图6 电机控制电路3.2 软件系统的实现 调用选择当前要去的停留3s电梯未运行或虽运行但还没停止电梯已到目的层?是否是否启动电梯显示在一楼图7 主程序流程图电梯改为上升电梯改为下降电梯到达最顶层电梯到达最底层电梯在下降当前楼层=目的楼层继续下行查找下一个要去的楼层若无下行需求,则反向查询向上查找下一个要去的楼层若无按键需求则停止当前楼层=目的楼层延时等待3s开始是24是24是24是24是24延时等待3s否否否否图8 选择当前要去的楼层子程序流程图4 总电路工作原理分析 电路通电,

8、显示器显示1,当按下相应的外部呼叫按键时,电梯运行到目的楼层,显示器实时显示所在楼层。当人进入轿箱内,按下要去的楼层对应的按键,电梯就会运行到相应位置。电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。两相邻楼层之间电机运行时间为3秒。5 总结与体会 这次单片机实习已经结束,我们学到了很多东西。查资料对于学习是很重要的,又快又好的查到想要的资料,可以提高工作效率。我们设计的电梯自动控制用到了电机,实物出来时,没能成功控制电机正反转,让我们知道了理论与实际的差距,也意识到理论与实际相结合的重要性。在写程序时需要极大的耐心,一点一点的改正,达到想要的效果。附录1 总体电路原

9、理附录2 PCB图附录3 源程序sbit k1=P00;sbit k2=P01;sbit k3=P02;sbit k4=P03;sbit k5=P04;sbit k6=P05;sbit km=P06;sbit gm=P07;sbit up1=P20;sbit up2=P21;sbit down2=P22;sbit up3=P23;sbit down3=P24;sbit up4=P25;sbit down4=P26;sbit up5=P27;sbit down5=P10;sbit down6=P11;sbit d11=P12;sbit d12=P13;sbit d21=P14;sbit d22=

10、P15;sbit pwm1=P16;sbit pwm2=P17;sbit LedUp=P37;sbit LedDown=P36;#include<reg51.h>#include"电梯.h"void DianTiKey(); #define uchar unsigned charchar KeyValueOld; /内部按键上次值char KeyValueOOld;/外部按键上次值char NowFloor;/当前所在楼层char KeyValue;/电梯内部按键暂存值char KeyValueO;/电梯外部按键暂存值char GoFloor5;/要去楼层暂存G

11、oFloor1=1 2楼在呼叫上升 GoFloor1=2 2楼在呼叫下降char t;/电梯 运行/停止标/上升/下降 志位 t=0电梯没有运行 t=11电梯在上升 t=10电梯下降uchar code play=0xff,0xd7,0x32,0x92,0xd4,0x98,0x18;/串口显示字型码unsigned int TimeValue;/ 定时器计数char Num;void delay(unsigned int a)/unsigned int i;TH0=(65535-10000)/256;TL0=(65535-10000)%256;TimeValue=0;TR0=1;while(T

12、imeValue<a)DianTiKey(); /多人电梯功能添加部分TR0=0;void ShangSheng()/驱动电机上升函数int i;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;delay(5);d11=0,d12=1,d21=0,d22=0;delay(5);d11=0,d12=1,d21=1,d22=0;delay(5);d11=0,d12=0,d21=1,d22=0;delay(5);d11=0,d12=0,d21=1

13、,d22=1;delay(5);d11=0,d12=0,d21=0,d22=1;delay(5);d11=1,d12=0,d21=0,d22=1;delay(5);t=0;/d11=1,d12=1,d21=1,d22=1;LedDown=1;LedUp=1;void XiaJiang()/驱动电机下降函数 int i;t=10;LedDown=0;LedUp=1;for(i=0;i<10;i+)d11=0,d12=0,d21=0,d22=1;delay(5);d11=0,d12=0,d21=1,d22=1;delay(5);d11=0,d12=0,d21=1,d22=0;delay(5)

14、;d11=0,d12=1,d21=1,d22=0;delay(5);d11=0,d12=1,d21=0,d22=0;delay(5);d11=1,d12=1,d21=0,d22=0;delay(5);d11=1,d12=0,d21=0,d22=0;delay(5);d11=1,d12=0,d21=0,d22=1;delay(5);t=0;/d11=1,d12=1,d21=1,d22=1;LedDown=1;LedUp=1;void Go() /电梯内部按键响应程序char temp;if(KeyValue!=KeyValueOld)KeyValueOld=KeyValue;temp=NowFl

15、oor-KeyValue;if(t=0)if(temp>0) /电梯执行上升 while(temp>0)ShangSheng();Num+;if(GoFloorNum!=0)if(GoFloorNum&0x01)+(GoFloorNum&0x04)>0);temp-;SBUF=play-NowFloor;while(!TI);TI=0;NowFloor=KeyValue;if(temp<0) /电梯执行下降while(temp<0)XiaJiang();temp+;SBUF=play+NowFloor;while(!TI);TI=0;NowFloo

16、r=KeyValue; /此电梯功能只适合一个人乘车 多人程序还没有实现 /*else /多人乘坐电梯处理部分KeyValue=GoFloori;temp=NowFloor-KeyValue;if(tt=11)if(temp>0)while(temp>0)ShangSheng();temp-NowFloor=KeyValue;else if(t=10)if(temp<0) /电梯执行下降while(temp<0)XiaJiang();temp+NowFloor=KeyValue; */void OutKey() /外部按键响应程序char temp;if(KeyValu

17、eO!=KeyValueOOld)/按键是否按下KeyValueOOld=KeyValueO;temp=NowFloor-KeyValueO;if(t=0) if(temp>0) /电梯执行上升while(temp>0)ShangSheng();temp-;SBUF=play-NowFloor;while(!TI);TI=0;NowFloor=KeyValueO;if(temp<0) /电梯执行下降while(temp<0)XiaJiang();temp+;SBUF=play+NowFloor;while(!TI);TI=0;NowFloor=KeyValueO; vo

18、id DianTiKey() /电梯按键扫描函数switch(P0)case 0x01:KeyValue=1;GoFloor0|=4;break;case 0x02:KeyValue=2;GoFloor1|=4;break;case 0x04:KeyValue=3;GoFloor2|=4;break;case 0x08:KeyValue=4;GoFloor3|=4;break;case 0x10:KeyValue=5;GoFloor4|=4;break;case 0x20:KeyValue=6;GoFloor5|=4;break;case 0x40:break;case 0x80:break;

19、if(t=0) switch(P2) /上升按键扫描case 0x01:GoFloor0|=1;KeyValueO=1;break;/1楼呼叫上升case 0x02:GoFloor1|=1;KeyValueO=2;break;/2楼呼叫上升case 0x04:GoFloor2|=1;KeyValueO=3;break;/3楼呼叫上升case 0x08:GoFloor3|=1;KeyValueO=4;break;/4楼呼叫上升case 0x10:GoFloor4|=1;KeyValueO=5;break;/5楼呼叫上升 case 0x20:GoFloor0|=2;KeyValueO=2;brea

20、k;/2楼呼叫下降case 0x40:GoFloor1|=2;KeyValueO=3;break;/3楼呼叫下降case 0x80:GoFloor2|=2;KeyValueO=4;break;/4楼呼叫下降 if(!down6)GoFloor4|=2; /6楼呼叫下降KeyValueO=6;if(!down5) /5楼呼叫下降GoFloor3|=2; KeyValueO=5;else if(t=11) /电梯在上升时响应上升呼叫switch(P2) /上升按键扫描case 0x01:GoFloor0|=1;KeyValueO=1;break;/1楼呼叫上升case 0x02:GoFloor1|=1;KeyValueO=2;break;/2楼呼叫上升case 0x04:GoFloor2|=1;KeyValueO=3;break;/3楼呼叫上升case 0x08:GoFloor3|=1;KeyValueO=4;break;/4楼呼叫上升case 0x10:GoFloor4|=1;KeyValueO=5;bre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论