基于单片机控制的电梯控制系统Word下载.docx
- 文档编号:16962480
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:19
- 大小:602.95KB
基于单片机控制的电梯控制系统Word下载.docx
《基于单片机控制的电梯控制系统Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机控制的电梯控制系统Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
采用定时器延时来控制电梯的位置校验,采用1位LED静态显示来实时显示电梯所在楼层,并用ULN2003和移位寄存器74ls595来驱动8×
8LED点阵显示电梯所处的状态。
采用行列式键盘矩阵作为外呼内选电路,由于是6层楼,故选用4×
4矩阵键盘。
当电梯到达目的楼层时电机停止,此时即可进、出乘客,乘客进入电梯之后可选择去哪一层,然后电梯根据乘客的选择判断去哪一层,继续运行。
通过单片机控制电梯在上升过程中只响应上升呼叫,下降过程中只响应下降呼叫。
电梯的正常运行通过单片机的控制来实现。
2.1.1方案比较
2.1.1.1键盘方案的比较与确定
方案一:
采用单片机AT89S52与地址译码器74LS138组成控制和扫描系统,并用AT89S52的串口对主电路的单片机进行通信,这种方案既能很好的控制键盘及显示又为主单片机大大的减少了程序的复杂性,而且具有体积小,价格便宜的特点。
但是该系统所接的按键数目有限,且占用了对应主CPU的串行端口,按键出现的抖动现象也比较难解决。
因此在使用时受到一定的限制。
方案二:
采用4×
4矩阵按键实现电梯内部六个选层按钮和电梯外十个上下行按钮,正好十六个按钮。
单片机采用行和列扫描法来判别这16个按键中哪个按键被按下,并将其标号读入累加器A里面,然后可根据每个按键的功能来通过单片机控制电梯的运行。
此方法占用的端口较少而且编程相对较简单,按键出现的抖动现象也比较容易解决。
方案一虽然也能很好的实现电路的要求,但考虑到电路设计实际需求和电路整体的性能,采用方案二。
2.1.1.2显示方案的比较与确定
采用数码管显示。
数码管具有低能耗、耐老化和精度比较高的优点,但数码管与单片机连接时,需要外接锁存器进行数据锁存,使用三极管进行驱动等,电路连接相对比较复杂。
但数码管只能显示少数的几个字符,显示的内容较少,基本上无法显示汉字。
采用LCD进行显示。
液晶显示屏(LCD)具有功耗低、无辐射危险、平面直角显示以及影像稳定等,可视面积大,画面效果好,既可显示图形,也可显示汉字,分辨率高,抗干扰能力强,显示内容多等特点。
此外,液晶显示器与单片机可直接相连,电路设计及连接简单。
基于以上分析,上述两种方案各有千秋,因为显示楼层部分在实际中基本都是采用大数码管来显示的,而且本次设计针对的只是六层楼,所以只需要显示楼层数即可,不需要显示其他复杂内容,故本次设计选用数码管作为显示楼层元件。
2.1.1.3驱动电路的比较与确定
采用与步进电机相匹配的成品驱动装置。
使用该方法实现步进电机驱动,其优点是工作可靠,节省制作和调试的时间,但成本很高。
其原理方框图如图1所示。
图1采用成品驱动器的原理方框图
采用互补硅功率达林顿晶体管TIP142T实现步进电机的驱动,采用该方法实现步进电机驱动,电路连接比较简单,工作相对也比较可靠,成本低廉,技术成熟。
此外,为提高电路的抗干扰能力,驱动电路与单片机接口可通过光耦元件连接。
该方法的原理方框图如图2所示。
其优点是直接利用电压控制,反应延迟短,稳定性好,由于工作在饱和状态,因此效率很高。
不足之处是由于使用分立元件,安装调试和维护相对麻烦,控制不当时MOS管容易烧毁,且管子参数不一致,导致驱动电流的不对称性,影响了控制精度。
图2采用TIP142T实现步进电机驱动的原理方框图
基于以上分析,方考虑到要制作出电梯小模型这种具有实体性的设计,在此采用方案一:
步进电机来实现。
(1)方案确立
本设计采用AT89S52单片机作为核心,配以适当接口作为输入输出通道。
并采用4×
4按键矩阵开关电路作为外呼内选呼叫控制。
实际电梯控制系统定时控制步进电机的运行时间,从而比较准确地确定车厢所在位置,本模型由4×
4矩阵键盘作为楼层选择信号传输给单片机,而后通过74LS164从串口驱动数码管显示楼层数。
当电梯到达所选层,电梯开门延时等待进人并选层,然后延时关门执行请求,若无请求则停在本层等待请求。
2.2设计方框图
此电路方框图如图3所示,电路由复位电路复位后,通过软件设置显示电路显示,楼层感应电路立即把电梯所在楼层通过单片机(AT89S52)通过显示电路显示出来;
如有操作者在厢外呼叫,由外呼叫电路把信号输入单片机(AT89S52),当车厢来到呼叫层(由定时器定时电路判断,电机控制电路控制电机正反转),则打开电梯门,人进入后关门。
操作者通过选层电路把目的层告知单片机(AT89S52),控制电机把操作者送至目标楼层。
系统等待下次呼叫。
系统的正常工作由时钟电路来保证。
显示电路实时显示电梯所在的楼层位置。
2.2.1本电路主要由5大部分电路组成:
键盘电路、单片机最小系统电路、楼层显示电路、电机状态显示电路、延时电路。
其中单片机最小系统主要由复位电路和时钟电路组成。
电路复位后楼层显示数字1
表示电梯此时在一楼,显示电路通过74ls245驱动1位数码管显示,电梯楼层位置是由延时电路控制的。
电梯状态是通过一个发光管显示的,红灯亮表示电梯正在运行,红灯灭表示电梯停止运行。
键盘电路采用4×
4键盘矩阵共16个按键,其中10个按键是各层楼外呼按键,6个表示电梯内部的选择键。
电梯的正常工作是通过对单片机写入程序控制的。
图3总体方框图
3设计原理分析
3.1时钟电路的设计
此电路主要是复位电路和时钟电路两部分,其中复位电路采用按键手动复位和上电自动复位组合,电路如图4(右)所示:
其中9脚为单片机的复位端。
时钟电路如图4(左)所示:
晶振采用的是11.0592MHZ的,XATL2和XATL1分别为单片机的18和19脚.
图4最小系统电路
3.2控制电路的设计
3.2.1键盘矩阵控制电路的设计
由于本电路所需按键较多为了节省单片机的I/O口,故选用行列式键盘矩阵。
本电路采用的是4×
4键盘矩阵。
电路如图5所示,P1.0-P1.7是接单片机的P1端口矩阵键盘的键号由行号及列号组成(行号从上到下依次为0、1、2、3,列号从左至右依次为0、1、2、3,如第一行的键号分别为00、01、02、03),单片机采用行和列扫描法来判别这16个按键中哪个键按下,并将其标号读入累加器A里面,然后可根据每个按键的功能来通过单片机控制电梯的运行。
下面将每个按键的功能说明一下:
S-0:
一楼向上呼叫按键,此键按下表示一楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-1:
二楼向上呼叫按键,此键按下表示二楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-2:
二楼向下呼叫按键,此键按下表示二楼有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-3:
三楼向上呼叫按键,此键按下表示三楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-4:
三楼向下呼叫按键,此键按下表示三楼有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-5:
四楼向上呼叫按键,此按键按下表示四楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-6:
四楼向下呼叫按键,此按键按下表示四楼有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-7:
五楼向上呼叫按键,此键按下表示四楼有人要乘坐电梯上楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-8:
五楼向下呼叫按键,此按键按下表示五楼有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-9:
六楼向上呼叫按键,此按键按下表示有人要乘坐电梯下楼,并且单片机将此信号存入固定单元,等到电梯运行到此楼层时判断是否该响应此呼叫;
S-A:
电梯内部选择去一楼按键,此按键按下表示电梯里的乘客要去一楼,单片机根据此信号控制电梯的运行;
S-B:
电梯内部选择去二楼按键,此按键按下表示电梯里的乘客要去二楼,单片机根据此信号控制电梯运行;
S-C:
电梯内部选择去三楼按键,此按键按下表示电梯里的乘客要去三楼,单片机根据此信号控制电梯运行;
S-D:
电梯内部选择去四楼按键,此按键按下表示电梯里的乘客要去四楼,单片机根据此信号控制电梯运行;
S-E:
电梯内部选择去五楼按键,此按键按下表示电梯里的乘客要去五楼,单片机根据此信号控制电梯运行;
S-F:
电梯内部选择去六楼按键,此按键按下表示电梯里的乘客要去六楼,单片机根据此信号控制电梯运行;
图5键盘矩阵电路图
3.2.2电机正反转及开关门控制电路的设计
在实际中,带动电梯上下的电机必须用三相电机,在本设计中为了方便实现,用步进电机来表示电梯上升或下降状态,若电梯处于上升状态,则步进电机正转,同时,当到达目的层之后,则步进电机停止运行,同样,当电梯处于下降状态时步进电机反转,其他的一样。
如图6所示,在AT89S52的P1.0、P1.1、P1.2、P1.3口驱动步进电机。
图6电机正反转及开关门控制电路图
3.2.3楼层显示控制电路
本电路采用一个8为数码管显示,楼层信号由单片机P2.0—P2.7担任,送给驱动74LS245。
当电梯到达指定楼层时,输出相应的BCD码,再由74LS48解码送给共阳八段数码管,从而显示正确的楼层。
如图7。
图7楼层显示控制电路
4结束语
通过这次单片机实习,使我在各方面都有了很大的提高。
我觉得查资料对于学习是非常重要的,又快又好的查找自己想要的资料,可以提高工作效率,在为期一周的课程设计里遇到的主要问题是在软件设计和制作电梯模型方面,经过和同学的讨论以及老师的指导、自己的细心摸索,总算是完成了制作。
我在编程过程中有了一个深刻的体会:
思路一定要很清晰,每一步的目的是什么。
我设计的电梯用到了步进电机,实物出来时,有些功能还是不是很理想,让我懂得了理论与实际的差距,也意识到理论与实际相结合的重要性。
在写程序时需要极大的耐心,一点一点的改正,达到想要的效果。
使自己的编程能力不断的提高!
参考文献
[1] 叶挺秀.应用电子学[M].杭州:
浙江大学出版社,1994
[2] 朱承高.电工及电子技术手册[M].北京:
高等教育出版社,1990
[3] 阎石.数字电子技术基础(第三版).北京:
高等教育出版社,1989
[4] 廖常初.现场总线概述[J].电工技术,1999.6
[5]郭天祥.51单片机C语言编程——入门、提高、开发、拓展全攻略.北京:
电子工业出版社,2009
附录
#include<
reg52.h>
#include<
74HC595.H>
intrins.h>
//内部包含延时函数_nop_();
#defineuintunsignedint
#defineucharunsignedchar
sbitled=P0^7;
unsignedcharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsignedcharcodedigittab[2][8]={
{0x00,0x10,0x20,0x7e,0x7e,0x20,0x10,0x00},/*"
↑"
↑*/
{0x00,0x08,0x04,0x7e,0x7e,0x04,0x08,0x00},/*"
↓"
↓*/
};
ucharcodeFFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};
ucharcodeREV[8]={0x09,0x08,0x0c,0x04,0x06,0x02,0x03,0x01};
ucharnum,num1,num2,floorin,floorstay,temp,cnta,cntb,rate;
uintdownin_flag,upin_flag,flag,timecount;
ucharcodetable[]={0xf9,0xa4,0xb0,0x99,0x92,0x82};
voidmotor_ffw();
voidmotor_ffz();
voidkeyscan();
voidmotor_turn1();
voidmotor_turn2();
voiddelay1(uintt)
{
uintk;
while(t--)
{
for(k=0;
k<
125;
k++)
{}
}
}
voidmain()
{
P2=0x7f;
TMOD=0X01;
TH0=(65526-1000)/256;
//定时1ms
TL0=(65536-1000)%256;
EA=1;
//开总中断
ET0=1;
//启动定时器0
floorstay=1;
P0=table[floorstay-1];
while
(1)
keyscan();
if(floorin<
floorstay&
downin_flag==1)
TR0=1;
while(!
flag);
flag=0;
}
if(floorin>
upin_flag==1)
led=1;
voidmotor_ffz()///步进电机反转
{
uchari;
uintj;
for(j=0;
j<
16;
j++)//转1*n圈
//退出此循环程序
for(i=0;
i<
8;
i++)//一个周期转45度
P1=REV[i];
//取数据
delay1
(1);
//调节转速
}
voidmotor_ffw()///步进电机正转
P1=FFW[i];
voidmotor_turn1()
ucharx;
while(floorin-floorstay)
{floorstay++;
x=0x20;
led=0;
cntb=0;
do
motor_ffw();
//匀速
x--;
}while(x!
=0x01);
P0=table[floorstay-1];
}
voidmotor_turn2()
while(floorstay-floorin)
{floorstay--;
led=0;
cntb=1;
motor_ffz();
voidkeyscan()
P1=0xfe;
if((P1&
0xf0)!
=0xf0)
delay1(10);
temp=P1;
switch(temp)
case0xee:
num=1;
floorin=1;
downin_flag=1;
upin_flag=1;
break;
case0xde:
num=2;
floorin=2;
case0xbe:
num=3;
floorin=3;
case0x7e:
num=4;
floorin=4;
while(temp!
=0xf0)
temp=temp&
0xf0;
P1=0xfd;
if(temp!
case0xed:
num=5;
floorin=5;
case0xdd:
num=6;
floorin=6;
case0xbd:
num=7;
case0x7d:
num=8;
P1=0xfb;
case0xeb:
num=9;
case0xdb:
num=10;
case0xbb:
num=11;
case0x7b:
num=12;
P1=0xf7;
case0xe7:
num=13;
case0xd7:
num=14;
case0xb7:
num=15;
case0x77:
num=16;
}//中断程序
voidtime0()interrupt1
TH0=(65536-1000)/256;
Ser_IN(tab[cnta]);
//8X8点阵列扫描
Ser_IN(digittab[cntb][cnta]);
//8X8点阵行送扫描数据
Par_OUT();
//74HC595输出显示
cnta++;
if(cnta==8)
cnta=0;
timecount++;
if(timecount==1000)
timecount=0;
downin_flag==1)//判断楼层下降
motor_turn2();
upin_flag==1)//判断楼层上升
motor_turn1();
if(floorstay==floorin)//判断楼层是否到目标层
upin_flag=0;
downin_flag=0;
flag=1;
//置位标志位
TR0=0;
//关中断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 控制 电梯 控制系统
![提示](https://static.bdocx.com/images/bang_tan.gif)