资源描述
课程名称:监控系统课程设计
设计题目: 基于单片机的电梯控制
院 系: 电气工程系
专 业: 电子信息工程
西南交通大学峨眉校区
课 程 设 计 任 务 书
专 业 电子信息工程 姓 名 学 号
开题日期: 年 月 日 完成日期: 2010年 12月 3日
题 目 基于单片机的电梯控制
一、设计的目的
现在的电梯控制系统主要还是由可编程控制器控制。但是由于PLC的针对性较强,每一台PLC都是根据一个设备而设计的,所以价格较昂贵。而单片机价格相当便宜,如果在抗干扰功能上有所提高的话完全可以代替PLC实现对工控设备的控制。当然单片机并不象PLC那么有针对性,所以由单片机设计的控制系统可以随着设备的更新而不断修改完善,更完美的实现设备的升级。
二、设计的内容及要求
本文主要是用51单片机来实现电梯控制系统,使其具备电梯基本升、降功能,并当多层对电梯呼叫时,能安排电梯停靠,从而实现电梯的基本运行情况的模拟。给出电梯控制系统的各个模块电路的设计和所需主要器件的主要参 数,并介绍硬件实现的详细方案,给出本次设计的 硬件原理电路图,并分点描述各模块功能;并给出软件实现的程序流程图,并介绍各模块所要实现的功能。第5章系统的仿真方法。
三、指导教师评语
四、成 绩
指导教师 (签章)
年 月 日
一 电梯控制系统组成框图及工作原理
该系统主要由MCU控制模块、电梯间电路模块、电梯内电路模块、控制台电路、楼层检测模块、电动机驱动模块、报警模块等7部分组成。如图1所示:
MCU控制模块
电梯内电路
电梯间电路
报警电路
电动机控制模块
楼层检测
控制台电路
图 1 系统总原理图
该系统以MCU控制模块核心,控制台电路主要是完成电梯的启动、停止以及楼层数的显示,电梯内电路是用来让电梯内用户选择目标楼层(作为内招信号),电梯间电路是同来让电梯外用户选择目标楼层(作为外招信号),内外招使用按键按下与否而引起的电平的改变作为用户请求信息发送到MCU,MCU控制电动机转动,到达目标楼层。楼层检测模块一般采用传感器,实时检测反馈给MCU,来确定的电机的转停。报警模块作为电梯的求救系统。
二 硬件设计
2.1单片机最小系统
图2.1 单片机最小系统
单片机最小系统电路如图2.1所示,单片机采用ATMEL公司的AT89C51,晶体振荡器选12MHz,C1、C2为30p瓷片电容,与晶体振荡器构成时钟电路。电容C3按键RESET构成上电复位和手动复位电路。
2.2各楼层电梯间电路
如下图所示,此部分电路是提供给处于各个楼层电梯外的用户发出上下楼请求。按键与单片机的P1.0~P1.5分别相连,指示灯通过P0.0~P0.5来控制。其中R52、R55、R56、R59、R60和R62是上拉电阻,其作用是保证按键未按下时,端口P1.0~P1.5为高电位。当按键按下时,端口P1.0~P1.5通过按键接地,使得P1.0~P1.5变为低电平。电容C51~C56的作用是消除抖动和抗干扰。各楼层电梯间的升降选择按键均与单片机P1口连接,上升按键与P1口的P1.0~P1.2连接,下降按键与P1口的P1.3~P1.5连接。即由P1口可以读到电梯间升、降按键的状态。每个上升、下降按键均有一只发光二极管作为指示灯与之配合,发光二极管与PO口的P0.0~P0.5连接。每个发光二极管通过一只阻值为470Ω的限流电阻接电源(VCC),这样流经发光二极管的电流约为7.5 mA,有适当的亮度,同时单片机的端口在不加驱动的情况下可以承受。
图2.2.1一层按键电路
图2.2.2二层按键电路
图2.2.4四层按键电路
图2.2.3三层按键电路
2.3 电梯内电路
电梯内电路如图2.3所示,提供给电梯内的乘客用户使用,四个目标楼层选择按键F1、F2、F3、F4和4个与之配合的发光二极管作为指示灯,即FS1、FS2、FS3和FS4。按键与P3口的P3.0~P3.3连接,指示灯与P2口的P2.0~P2.3相连。上拉电阻R11~R14和电容C41~C14的作用同上。
图2.3电梯内电路
2.4 控制台电路
控制台电路如图2.4.1所示。发光二极管Power是电源指示灯,用以显示供电是否正常。采用共阴极数码管来显示当前楼层,采用CD4511作译码器,LE接VCC,译码器处于锁存状态。经R31~R37(阻值为470Ω)对数码管限流。‘UP、DOWN’两只发光管用来显示电梯运行的方向。START与STOP分别与单片机的P1.6、P1.7连接,用来控制电梯的起停。如图2.4.2所示,CD4511的A0-A3分别与P3.4~P3.7相连,R31~R37为限流电阻。
图2.4.1电梯控制台电路
图2.4.2电梯控制台显示电路
2.5 楼层检测
在本设计中,光电传感器电路连接图如所2.5示。D1,T1组成红外发射-接受对管,D1通电后发出红外信号,光槽若未挡住,T1将导通,比较器LM339输出低电平,光槽光线若被挡,T1截止,LM339输出高电平。利用电梯行至楼层标志处光槽光线被电梯遮挡所带来的电平变化发送到单片机P2.6计数即可实现楼层检测。
图3.12 楼层检测电路
2.6 电动机驱动
直流电动机驱动电路主要是用来控制直流电动机的转动方向,通过改变直流电动机两端的电压可以控制电动机的转动方向。电路采用功率三级管8050和8550,以满足电动机启动的瞬间的大电流要求。
如图2.6所示输入端分别与单片机P2.4和P2.5相连,电梯上升时, P2.4输出为低电平,P2.5输出为高电平,晶体管功率放大器VT3,VT2导通,VT1,VT4截止。VT3,VT2与直流电动机一起形成回路,驱动电机正转。电梯下降时,P2.4输出为高电平,P2.5输出为低电平,晶体管功率放大器VT3,VT2截止,VT1,VT4导通,VT1,VT4与直流电动机形成回路,驱动电动机反转。4个二极管起到保护晶体管的作用。功率晶体管采用TP521光耦器驱动,将控制部分与电动机驱动部分隔离。光耦器的电源为+5V,H型驱动电路中的晶体管功率放大器VT3,VT1的发射极所加的电源为12V。
图2.6电动机驱动电路
2.7 报警部分
如图3.14所示,此处利用两个常用三极管CS9013,连接成达林顿管结构,此电路与单片机P2.7相连。其中R为限流电阻,当电梯运行过程中出现故障停止, P2.7输出高电平,蜂鸣器报警,另外用户在电梯中如果遇到紧急情况也可按“HELP”直接报警求救。
图2.7 报警电路
2.8电源部分
如图2.8所示
图2.8电源驱动电路
2.9 总电路图
如图2.9所示
图2.9总电路图
三 软件设计
由于本设计采用单片机实现控制,所以软件设计部份的程序编写用汇编语言来完成。其中主程序部分主要完成系统的初始化,如中断方式的设置,开中断,存储单元的清零等。在中断子程序中完成,按键查询等,其它的如数码管的显示,键盘的响应,转动电机的控制,延时等均由相应的子程序来完成。软件编程是实现多功能、智能化、操作方便的关键。在本设计中,可以把程序的各部分相互结合起来,达到完成各项设计的功能。
软件设计思想:采用模块化的分层次设计方法,将软件系统功能由多个实现单一功能的子程序实现。通过调用不同的子程序,实现了复杂功能控制。这样便于调试、修改。主流程图如图3所示.
初始化
调用按键子程序
控制电动机转动
楼层检测
到达后显示目标楼层
开始
按键查询
返回
Y
N
图 3 系统主流程图
3.1 按键查询部分
在本设计当中,键盘采用独立式按键,按键由P1口和P3.0-P3.3控制,采用定时器T1中断查询按键状态,当有键按下时,即转入相应功能程序。键盘程序流程图如图3.1所示:
开 始
读取所有按键键
Stop按下
取得电梯上升请求,并刷新指示灯
标志R3非0数
清除全部电梯上升请求
清除全部电梯下降请求
清除全部电梯内目标楼层请求
修改读入的按键状态使之为仅有电梯内目标为一楼
开关闭T1,不在读取按键
取得电梯下降请求,并刷新指示灯
返回
图 3.1 键盘查询程序流程图
程序清单如下:
定时器T1中断服务程序:按键状态检查
TIME1: MOV TH1,#0ECH ;每10s检查一次按键
MOV TL1,#78H
MOV 6EH,A
MOV 30H,P1 ;读入所有按键状态
MOV 31H,P3
JB P1.6,TIME11 ;若Stop键未按下,则正常运行
MOV R3,#0FFH ;Stop键按下,标志R3置非0数
MOV 20H, #0 ;清除全部电梯间上升请求
MOV 21H,#0 ;清除全部电梯间下降请求
MOV 22H,#0 ;清除全部电梯内目标楼层请求
MOV 30H,#0FFH ;修改读入的按键状态,使之为
电梯内目标为一楼
MOV 31H,#0FEH ;
CLR TR1 ;并关闭T1,不再读取按键TIME11:MOV A,30H
CPL A
ANL A,#07H ;取得电梯间上升请求
ORL 20H,A
MOV A,20H ;取得上升指示灯状态
CPL A
ANL A,#07H
MOV 32H,A
MOV A,30H
CPL A
ANL A,#38H ;取得电梯间下降请求
RR A
RR A
ORL 21H,A
MOV A,21H
CPL A
ANL A,#0EH
RL A
RL A
ORL 32H,A
MOV A,P0
ANL A,#0C0H
ORL A,32H
MOV P0,A ;刷新上升、下降请求指示灯
MOV A,31H
ANL A,#0FH ;取得电梯内目标楼层请求
ORL 22H,A
MOV A,22H
CPL A
MOV P2,A ;刷新电梯内目标楼层指示灯 TIME12: MOV A,6EH
RETI
3.2 楼层选择按键功能程序
3.2.1存储单元分配:
20H——电梯间上升请求:
20H.0——1楼;20H.1——2楼;20H.2——3楼,20H.3——4楼
21H——电梯间下降请求:
21H.0——1楼;21H.1——2楼;21H.2——3楼;21H.3——4楼。
22H——H电梯内目标楼层请求:
22H.0——1楼;22H.1——2楼;22H.2——3楼;21H.3——4楼。
20H——22H:0=无请求;1=有请求。
堆栈栈底:70H单元。
T1中断服务程序中6EH单元保护累加器A的内容。
30H,31H单元分别临时存放P1,P3按键状态。
32H作为单元按键及指示灯处理的中间单元。
R3作为Stop键曾经按下过的记录。
3.2.2电梯模型
电梯上电后,系统一直等待,电梯的起始位置为一楼,等待控制台Start按键按下,数码管显示“1”。当Start按键按下后,电梯开始向上运动,电动机开始转动,控制台的上升指示灯UP亮。到达二楼,电梯运行经过楼层检测传感器时,R4计数加1,送到数码管显示“2"并在二楼停留5 s,然后继续上升。每楼层停留5 s,直到四楼后,在四楼停留5 s后开始下降,控制台的下降指示灯DOWN亮。每层楼停留5 s,直到一楼。然后重复上述过程。
(1)如果按下过Stop键,强制电梯直接下降到一楼,然后电梯停止工作。直到再次按下Start键后重新恢复工作。
(2)中断服务程序每10ms一次检查所有按键状态,并记录在相应存储单元,同时控制相应指示灯。
(3)定时器T0定时100ms,R2作为5s定时的计数器。T0每中断一次R2加1,当R2=50时,5s计时完成。
程序清单如下:
;*********START启动程序***********
START: MOV TMOD,#11H
MOV IE,#8AH
MOV TH0,#3CH ;定时100ms
MOV TL0,#0B0H
MOV TH1,#0ECH ;定时10ms
MOV TL1,#78H
SETB TR0
MOV SP,#6FH
;*********STOP停止程序***********
STOP: CLR P0.6
CLR P0.7
MOV R3,#0
MOV P3,#1FH ;数码管显示“1”
JB P1.7,$ ;等待开始工作指令
SETB P0.6
SETB TR1 ;启动T1
;10ms一次读取按键
;*********一楼上升按键选择程序***********
UP1: MOV A,20H ;目前在1楼
ORL A,21H ;取得>1楼请求情况
ORL A,22H
ANL A,#0EH
JZ UP1 ;无请求,则等待
CLR P0.7 ;上升指示灯亮
ACALL DLY ;上升2s
;*********二楼上升按键选择程序***********
UP2: MOV P3,#2FH ;到达2楼,数码管显示“2”
JB 20H.1,UP21 ;是2楼电梯间的上升请求,转UP21
JB 22H.1,UP21 ;是电梯内目标2楼请求,转UP21
SJMP UP22
UP21: CLR 20H.1 ;清二楼电梯间上升请求标志位
CLR 22H.1 ;清电梯内目标2楼请求标志位
SETB P0.7 ;上升指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
UP22: MOV A,20H
ORL A,21H
ORL A,22H
ANL A,#0CH ;取得>2楼请求情况
JNZ UP23
AJMP DOWN22 ;>2楼无请求,转2楼下降
UP23: CLR P0.7 ;上升指示灯亮
ACALL DLY ;上升2s
;*********三楼上升按键选择程序***********
UP3: MOV P3,#3FH ;到达3楼,数码管显示“3”
JB 20H.2,UP31 ;是3楼电梯间的上升请求,转UP31
JB 22H.2,UP31 ;是电梯内目标3楼请求,转UP31
SJMP UP32
UP31: CLR 20H.1 ;清3楼电梯间上升请求标志位
CLR 22H.1 ;清电梯内目标3楼请求标志位
SETB P0.7 ;上升指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
UP32: MOV A,20H
ORL A,21H
ORL A,22H
ANL A,#08H ;取得>3楼请求情况
JNZ UP33
AJMP DOWN32 ;>3楼无请求,转3楼下降
UP33: CLR P0.7 ;上升指示灯亮
ACALL DLY ;上升2s
UP34: MOV P3,#4FH ;到达4楼,数码管显示“4”
;*********四楼下降按键选择程序***********
UP41: CLR 20.H3 ;清4楼电梯间下降请求标志位
CLR 22H.3 ;清电梯内目标4楼请求标志位
SETB P0.7 ;上升指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
UD4: MOV A,50H
ORL A,21H
ORL A,22H
ANL A,#07H ;取得<4楼的请求情况
JNZ DOWN4
AJMP UD4
DOWN4: CLR P0.6 ;下降指示灯亮
ACALL DLY ;下降2s
;*********三楼下降按键选择程序***********
DOWN3: MOV P3,#3FH ;到达3楼,数码管显示“3”
JB 21H.2,DOWN31 ;是3楼电梯间的下降请求,转DOWN31
JB 22H.2,DOWN31 ;是电梯内目标3楼请求,转DOWN31
S JMP DOWN32
DOWN31:CLR 21H.2 ;清3楼电梯间下降请求标志位
CLR 22H.2 ;清电梯内目标3楼请求标志位
SETB P0.6 ;下降指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
DOWN32:MOV A,20H
ORL A,21H
ORL A,22H
ANL A,#03H ;取得<3楼的请求情况
JNZ DOWN33
AJMP UP32 ;<3无楼请求,转3楼上升
DOWN33: CLR P0.6 ;下降指示灯亮
ACALL DLY
;*********二楼下降按键选择程序***********
DOWN2: MOV P3,#2FH ;到达2楼,数码管显示“2”
JB 21H.1,DOWN21 ;是2电梯间的下降请求,转DOWN21
JB 22H.1,DOWN2 ;是电梯内目标3楼请求,转DOWN21
SJMP DOWN22
DOWN21:CLR 21H.1 ;清2楼电梯间下降请求标志位
CLR 22H.1 ;清电梯内目标2楼请求标志位
SETB P0.6 ;下降指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
DOWN22:MOV A,20H
ORL A,21H
ORL A,22H
ANL A,#02H ;取得<2的请求情况
JNZ DOWN23
AJMP UP22 ;<2楼请求,转2楼上升
DOWN23:CLR P0.6 ;下降指示灯亮
ACALL DLY
DOWN1: MOV P3,#1FH ;到达1,数码管显示“1”
DOWN11: CLR 21H.0 ;清电梯内目标1请求标志位
SETB P0.6 ;下降指示灯灭
MOV R2,#0 ;0 s定时开始
CJNE R2,#50,$ ;5s延时
CJNE R3,#0,DOWN12 ;Stop键是否按下过
AJMP UP1
DOWN12:CLR P0.6 ;若Stop键按下过,转S1停止工作
CLR P0.7
AJMP S1 ;定时器T0中断服务程序:5s计时
TIME: MOV TH0,#3CH
MOV TL0,#0B0H
INC R2 ;R2计数器
RETI
3.3 电机控制部分
本设计只是对电梯运行状况的简单模拟,对电机驱动这部分要求不是很严格,只需要实现电机的正反转就可以了,所以选择直流电机及常用的H桥式驱动。
如第三章中图3-13所示,当用户提出上升或下降要求时,单片机P2.4输出为低电平,P2.5输出为高电平,电机正转上升,反之电机反转下降。当到达目标楼层时,P2.4跟P2.5全部清零,则电动机停止。
3.4楼层检测及显示部分
利用光电传感器检测楼层,电梯行至楼层标志处(装有光电传感器)时,光槽光线被遮挡,引其电平变化,通过P2.6发送到单片机中R4计数,可实现楼层检测。并实时的,通过P3.4-P3.7,送到CD4511译码,用数码管显示当前楼层数。
3.5 报警部分
当电梯运行中发生故障停止时,P2.7置1,发出报警,另外还可以通过手动按“HELP”实现报警求救。
3.6总程序流程图
如图3.6所示
开始
初始化
在一楼
P1.7=0?
N
二,三,四楼有请求?
上升到达二楼
本楼层是否请求目标?
停留5秒
三,四楼是否有请求?
上升到达三楼
本楼层是否请求目标?
停留5秒
一楼是否有请求?
本楼层是否请求目标?
停留5秒
下降到达一楼
R3=0?
四楼是否有请求?
上升到达四楼
停留5秒
一,二.三楼是否有请求?
下降到达三楼楼
停留5秒
一,二楼是否有请求?
下降到达二楼
本楼层是请求目标?
停留5秒
N
Y
Y
N
Y
Y
Y
N
Y
Y
Y
Y
N
N
N
N
N
N
Y
Y
N
N
Y
图3.6系统流程图
3.7总程序清单
程序如下
ORG 0000H
AJMP START
ORG 000BH
AJMP TIME
ORG 001BH
AJMP TIME1
;*********START启动程序***********
START: MOV TMOD,#11H
MOV IE,#8AH
MOV TH0,#3CH ;定时100ms
MOV TL0,#0B0H
MOV TH1,#0ECH ;定时10ms
MOV TL1,#78H
SETB TR0
MOV SP,#6FH
;*********STOP停止程序***********
STOP: CLR P0.6
CLR P0.7
MOV R3,#0
MOV P3,#1FH ;数码管显示“1”
JB P1.7,$ ;等待开始工作指令
CLR P2.4
CLR P2.5 ;电动机制动
SETB P0.6
SEBT P2.7 ;蜂鸣器报警
SETB TR1 ;启动T1
;10ms一次读取按键
;*********一楼上升按键选择程序***********
UP1: CLR P2.7
MOV A,20H ;目前在1楼
ORL A,21H ;取得>1楼请求情况
ORL A,22H
ANL A,#0EH
JZ UP1 ;无请求,则等待
CLR P0.7 ;上升指示灯亮
CLR P2.4
SEBT P2.5 ;电动机正转上升
ACALL DLY ;上升2s
;*********二楼上升按键选择程序***********
UP2: MOV P3,#2FH ;到达2楼,数码管显示“2”
JB 20H.1,UP21 ;是2楼电梯间的上升请求,转UP21
JB 22H.1,UP21 ;是电梯内目标2楼请求,转UP21
SJMP UP22
UP21: CLR 20H.1 ;清二楼电梯间上升请求标志位
CLR 22H.1 ;清电梯内目标2楼请求标志位
SETB P0.7 ;上升指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
UP22: MOV A,20H
ORL A,21H
ORL A,22H
ANL A,#0CH ;取得>2楼请求情况
JNZ UP23
AJMP DOWN22 ;>2楼无请求,转2楼下降
UP23: CLR P0.7 ;上升指示灯亮
CLR P2.4
SEBT P2.5 ;电动机正转上升
ACALL DLY ;上升2s
;*********三楼上升按键选择程序***********
UP3: MOV P3,#3FH ;到达3楼,数码管显示“3”
JB 20H.2,UP31 ;是3楼电梯间的上升请求,转UP31
JB 22H.2,UP31 ;是电梯内目标3楼请求,转UP31
SJMP UP32
UP31: CLR 20H.1 ;清3楼电梯间上升请求标志位
CLR 22H.1 ;清电梯内目标3楼请求标志位
SETB P0.7 ;上升指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
UP32: MOV A,20H
ORL A,21H
ORL A,22H
ANL A,#08H ;取得>3楼请求情况
JNZ UP33
AJMP DOWN32 ;>3楼无请求,转3楼下降
UP33: CLR P0.7 ;上升指示灯亮
ACALL DLY ;上升2s
UP34: MOV P3,#4FH ;到达4楼,数码管显示“4”
;*********四楼下降按键选择程序***********
UP41: CLR 20H.3 ;清4楼电梯间下降请求标志位
CLR 22H.3 ;清电梯内目标4楼请求标志位
SETB P0.7 ;上升指示灯灭
MOV R2,#0 ;5s定时开始
CJNE R2,#50,$ ;等待5s延时
UD4: MOV A,50H
ORL A,21H
ORL A,22H
ANL A,#07H ;取得<4楼的请求情况
JNZ DO
展开阅读全文