基于单片机的6层电梯模拟控制系统设计课程设计报告单片机原理及系统课程设计报告
单片机的6层电梯模拟控制系统设计
1设计目的
这次设计给出了一种基于AT89C52单片机的电梯模型控制系统设计。以单片机为核心,再辅以适当的硬件电路和控制程序来检测和控制整个电梯的信号,具有成本低、通用性强、灵活性大、扩展容易及易于实现复杂控制等优点。
2 方案设计
2.1 设计要求
(1)设置电梯的内外按键,即电梯外都有上或下的按键,电梯内有楼层的选择按键。
(2)电梯状态要有指示灯显示,即电梯目前运行到达楼层的实时显示,电梯升降的状态显示等。
(3)电梯无人时,应默认停在第一层...
单片机原理及系统课程
单片机的6层电梯模拟控制系统设计
1设计目的
这次设计给出了一种基于AT89C52单片机的电梯模型控制系统设计。以单片机为核心,再辅以适当的硬件电路和控制程序来检测和控制整个电梯的信号,具有成本低、通用性强、灵活性大、扩展容易及易于实现复杂控制等优点。
2
设计
2.1 设计要求
(1)设置电梯的内外按键,即电梯外都有上或下的按键,电梯内有楼层的选择按键。
(2)电梯状态要有指示灯显示,即电梯目前运行到达楼层的实时显示,电梯升降的状态显示等。
(3)电梯无人时,应默认停在第一层。
2.2 系统的结构框图
图2-1 系统的结构框图
如上图2-1所示,楼层电梯呼叫按键就是楼层外面的上行、下行按键,有需求时即可按下;电梯内呼叫按键就是电梯内部的数字按键,它是内部按键需求的输入;单片机就是整个系统的核心,接收输入信息,经过处理后输出信息;楼层显示数码管就是接收单片机处理的信息,显示此时的楼层数;电梯状态指示灯就是接收单片机处理的信息,显示电梯的状态:上升、下降、停止。电动机的驱动和控制就是接收单片机的PWM脉冲信号来控制驱动器,进而控制电动机的正反转,使电动机牵引电梯做上下运动。
2.3 电动机的选择
我们选用Y100L24三相异步电动机,因为它还具有性能好、寿命长、可靠性高、维护方便、启动转矩大等优点,其功能参数为额定电压380V,额定频率50HZ,额定功率3000W,额定转速1400转/分。
2.4 AT89C52单片机
这次设计采用的是AT89C52单片机,AT89C52是一个低电压,高性能CMOS 8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。其外形及引脚排列如图2-2所示:
图2-2 AT89C52单片机外形及引脚排列
3 硬件系统的设计
3.1 硬件设计思路
电梯最底层为1楼,因此在1楼仅有上升按键,而电梯最高层为6楼,因此6楼
应仅有下降按键。其他楼层则既有上升按键,也有下降按键。在电梯内部按键设
置方面,则应有1~6楼的各层选择按键。按键的一端接地,另一端通过集成电路
芯片连至单片机引脚。 这里用五片双4输入与门74LS21实现16个按键对象的集
体与运算的最终结果,按键动作最终是送到单片机的
端。
无论哪一个按键有动作,低电平信号就会送到
端,从而引发外部中断0服务子程序运行。当定时器0中断时,单片机向电动机发送PWM脉冲信号,电动机接到脉冲信号后,经过驱动器的驱动,电动机便牵引电梯上下运动。
电梯的楼层显示用七段数码管完成显示。数码管的显示数据通过单片机的P0口来进行传送。
电梯升降的状态用上升和下降指示灯来进行显示,通过单片机的P3.7和P3.6引脚分别连接上升和下降指示灯的负极,其正极均连接至系统正电源处。
3.2 时钟电路
图3-1 时钟电路图
单片机的时钟电路有振荡电路和分频电路组成。其中振荡电路由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲。而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。这次设计选择频率为12MHz的晶振,当振荡脉冲频率为12MHz时,一个机器周期为1us。
3.3 复位电路
图3-2 复位电路图
复位是单片机的初始化操作,程序给单片机的复位引脚RST加大于2个机器周期(即24个时钟振荡周期)的高电平就可使单片机复位。我们采用电平方式的复位。如图3-2所示,我们通过RST端经由电阻与电源VCC接通而实现,当按键按下时,RST端为高电平复位。
3.4 中断电路
各中断的优先级:外部0中断、定时器T0中断、外部1中断、定时器T0中断、串行发送中断、串行接收中断、定时器T2中断。
图3-3 中断电路图
中断电路如上图3-3所示。图中外部0中断
与74LS21与门相接,低电平有效,所以当单片机接电源后,P1.0~P1.3引脚此时为高电平,当任一按键按下后,相应的中断输入口直接与地相接,高电平变为低电平,外部0中断立即响应,单片机系统进入中断控制子程序系统,在中断服务子程序中做出相应的执行指令。
3.5 电动机正反转控制电路
图3-4 带有联锁的正反控制电路
如上图3-4所示,继电接触控制电路,通过接触器、继电器之间的相互联锁,可以实现多台设备按生产工艺进行工作,是实现自动控制及保护的重要环节。当接通电源后,闭合负荷开关QM,按下开关SB1,线圈C1得电,使电动机启动,此时电动机正转。按下开关SB2,线圈C2得电,线圈C1断开,此时电机开始反转。
3.6 数码管显示模块
LED是Light Emiting Diode(发光二极管)的缩写,发光二极管是可以将电信号转换为光信号的电致发光器件。由条形发光二极管组成“8”字形的LED显示器称数码管。通过数码管中发光二极管的亮暗组合,可以显示多种数字,字母以及其他符号。这次设计采用七段数码管。外形如图3-5所示,即左边的7个引脚跟单片机P0口相接,下边的引脚连接地。
INCLUDEPICTURE "../AppData/Roaming/Microsoft/Application%20Data/Tencent/Users/847284516/QQ/WinTemp/RichOle/G%7d,SS%5b%60ET%5bY~KZUC3OM%7bA.jpg" \* MERGEFORMAT
图3-5 七段数码管
3.7 按钮控制电路模块
图3-6 电梯不同楼层的按钮
如图3-6所示,按键显示电路模块包括电梯内部的按钮和每层楼的上下按钮,这些按钮一端与地相接,一端又与单片机和与门74LS21相接,外部0中断低电平有效,这样可以实现模拟按键的自如操作。
3.8 模拟电路图
图3-7 模拟电路原理图
4 软件系统的设计
4.1 程序设计思路
首先,必须得合理考虑按键的响应问
。一段时间内可能有多个不同的按键有动作,程序必须记录每一个按键的动作,并根据电梯本身所处的楼层情况与按键楼层之间的位置关系,合理判断出电梯应当做出上升或下降的响应动作。
其次,电梯系统还有一个判断是否无人的情况。即电梯到达某楼层后,其他楼层无按键动作,且电梯内也无楼层选择按键动作,电梯应自动返回到1层等待。
然后,两个楼层之间应考虑有一段运行时间,而且也要设置在一个楼层的停留时间。本设计中两个楼层之间的运行时间设为1s,每层停留时间设为5s。另外,当电梯上升或者下降时,相应的状态指示灯应及时同步点亮。
4.2 程序流程图
图4-1 主程序流程图
图4-2 启动电梯子程序流程图
图4-3 选择当前要去楼层子程序流程图
本设计程序流程图主要包括主程序流程图、启动电梯子程序流程图、选择当前要去楼层子程序流程图。如上图所示。
5.电路仿真及调试
图5-1 电梯默认停在一楼
解析:
如上图5-1所示,电梯没有其他响应时,默认停在一楼,数码管显示1楼。此时各内外按键接地的一侧全部为低电平,接单片和74LS21与门一侧全部为高电平,一旦按钮按下,凡是按键所接的引脚全部为低电平,此时外部0中断低电平有效,外部0中断立即响应。当定时器0中断响应后,开始计时并向电动机发送PWM脉冲信号,经驱动器驱动后,电动机就会牵引电梯做上升或者下降运动,数码管收到单片机的控制信号后就会显示楼层的同步变化,相应的上升、下降指示灯会有所指示。
图5-2 电梯处于上行中,经过三楼,上行指示灯亮
解析:
如上图5-2所示,电梯在四楼及以上有响应,经过三楼,上升指示灯亮。按键按下后,外部0中断立即响应,去执行外部0中断服务子程序。当定时器T0开始计数时,并向电动机发送PWM脉冲信号,经驱动器驱动后,此时电机正转,就会牵引电梯做上升运动,电梯经过三楼,数码管同步显示3楼,上升指示灯亮,下降指示灯灭。
图5-3 电梯处于下行中,经过四楼,下行指示灯亮
解析:
如上图5-3所示,电梯可能没有响应,在四楼以上停了5s就返回一楼,或者是在四楼以下有响应,执行外部0中断服务子程序。当定时器T0开始计数时,并向电动机发送PWM脉冲信号,经驱动器驱动后,此时电机反转,就会牵引电梯做下降运动,电梯下行,经过四楼,数码管同步显示4楼,上升指示灯灭,下降指示灯亮。
6.总结
这次设计是对传统设计电梯的部分改进,可以降低电梯的设计成本,实现楼层快速通行的模拟控制。另外由于此次设计实现的功能简单,简化处理了一些实际情况,没有去考虑电梯在实际应用中的故障问题,以及一些更智能的硬件与软件的安装与调试。
由于时间紧迫,而我能力有限,还有许多功能可以在此基础上进行拓展,例如可以扩展单片机增加智能识别系统,增加电梯内部的温度控制、增加单片机的故障预警等一些智能控制系统。随着科技与经济的深入发展,单片机技术的不断进步,以后的电梯控制系统将会越来越智能化,这对提升人们的生活质量有着深远的意义。
此次设计中我也是遇到了各种各样的难题,经过我的努力以及同学的帮助也是解决了。通过这次的课程设计,使我认识到一个人的能力是有限的,但是一群人的能力是无限的,在以后的工作和学习中,要勤奋踏实,善于思考,这样才能在竞争激烈的社会中提升自我的实用价值。
最后我还要感谢老师的指点迷津以及细心答疑,这让我受益匪浅。
参考文献
[1] 王思明,张金敏,苟军年.单片机原理及应用系统设计[M].北京:人民邮电出版社,2008.
[2] 冯育长,邹小兵.单片机系统设计与实例指导[M]. 西安:西安电子科技大学出版社,2004.
附录:源程序代码
#include
#define MAXFLOOR 6
unsigned char code LED_CODES[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d};
//电梯外面的按键上下键
sbit F6D=P1^0;
sbit F1U=P1^1;
sbit F2D=P1^2;
sbit F2U=P1^3;
sbit F3D=P1^4;
sbit F3U=P1^5;
sbit F4D=P1^6;
sbit F4U=P1^7;
sbit F5D=P3^0;
sbit F5U=P3^1;
//电梯内的按键
sbit F1=P2^0;
sbit F2=P3^3;
sbit F3=P3^4;
sbit F4=P3^5;
sbit F5=P2^1;
sbit F6=P2^2;
//指示灯
sbit ledu=P3^7;
sbit ledd=P3^6;
sbit open=P2^3; //开门键
sbit close=P0^7; //关门键
//电动机的驱动接线
sbit a1=P2^4;
sbit a2=P2^5;
sbit a3=P2^6;
sbit a4=P2^7;
bit dir=1,stop=0; //dir表示1为向上,0为向下;stop表电梯是否停止
unsigned char nf=1; //当前楼层
unsigned char cf=1; //要去楼层
unsigned char df; //楼层差(电梯停止依据):df=|cf-nf|
unsigned char tf; //暂存当前楼层(显示码指针):tf=nf
unsigned char flag,count=0; //flag=1表示正在运行;count=乘坐时计数值
unsigned int timer1=0,timer2=0; //timer1为楼层间运行时间计数值,timer2为等待计数值
unsigned char call_floor[7]={0,0,0,0,0,0,0}; //存储每层楼的信息,1为有人呼叫或者有人前往
//主程序
void select_next();
void step(bit dir);
void delay(unsigned int z);
void main(void)
{P0=LED_CODES[1];
TH0=0x3C;
TL0=0xB0;
TMOD=0x01;//工作方式1
ET0=1;//允许定时器中断
EA=1;//中断总允许
EX0=1;//允许外部0中断
IT0=1;//为脉冲触发方式,下降沿有效
while(1)
{ if(!flag&&!stop)
{select_next();
// 决定电梯去哪一层
step(dir);
// 电梯启动
}
else if(stop)
{timer2=0;
TR0=1; //启动定时器/计数器工作
while(timer2<100&&stop);
TR0=0;
timer2=0;
stop=0;}
}
}
//选择当前要去的楼层子程序
void select_next()
{ char i;
if(nf==MAXFLOOR)
{
dir=0;
}
else if(nf==1)
{
dir=1;
}
if(dir==0)
{
if(call_floor[nf]==1) //要去的为当前层,即只需延时5s
{call_floor[nf]=0;
stop=1;
return;
}
for(i=nf-1;i>=1;i--)
//向下运行时查找下一个要去的楼层
if(call_floor[i])
{cf=i;return;}
dir=1;
for(i=nf+1;i<=MAXFLOOR;i++)
//没有向下走的人,即反向运行
if(call_floor[i])
{cf=i;return;}
dir=0;
cf=1; //经过上面的判断此处表示电梯没有人,默认停在一楼
}
if(call_floor[nf]==1)
{
call_floor[nf]=0;
stop=1;
return;
}
for(i=nf+1;i<=MAXFLOOR;i++)
if(call_floor[i])
{cf=i;return;}
if(i==7)
{dir=0;
}
}
//启动电梯子程序
void step(bit dir)
{
if(cf==nf)
return;
else if(!flag)
{flag=1;
delay(50);
if(dir==1)
{ledu=0;
ledd=1;
}
else
{ledd=0;
ledu=1;
}
timer1=0;
TR0=1;
}
}
void delay(unsigned int z) //延时程序
{
unsigned int x,y;
for(x=z;x>0;x--)
{
for(y=125;y>0;y--)
;
}
}
//定时0中断,可利用此发送电机PWM脉冲信号
void time0_int() interrupt 1
{
TH0=0x3C;
TL0=0xB0;
timer1++;
timer2++;
if(flag)
{
if(timer1==20) //到达一个楼层延时1s
{ timer1=0;
if(dir)
nf++;
else
nf--;
call_floor[nf]=0;
flag=0;
TR0=0;
P0=LED_CODES[nf]; //显示当前楼层
if(cf==nf)
//到达呼叫楼层,关电机
{TR0=0;
ledu=ledd=1;
stop=1;
return;
}
}
}
}
//外部中断0服务子程序
void int0() interrupt 0
{if(F6D==0)
call_floor[6]=1;
else if(F1U==0)
call_floor[1]=1;
else if(F2D==0||F2U==0)
call_floor[2]=1;
else if(F3D==0||F3U==0)
call_floor[3]=1;
else if(F4D==0||F4U==0)
call_floor[4]=1;
else if(F5D==0||F5U==0)
call_floor[5]=1;
else if(F6==0)
{call_floor[6]=1;stop=0;}
else if(F1==0)
{call_floor[1]=1;stop=0;}
else if(F2==0)
{call_floor[2]=1;stop=0;}
else if(F3==0)
{call_floor[3]=1;stop=0;}
else if(F4==0)
{call_floor[4]=1;stop=0;}
else if(F5==0)
{call_floor[5]=1;stop=0;}
}
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作 者 签 名: 日 期:
指导教师签名: 日 期:
使用授权说明
本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名: 日 期:
学位论文原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期: 年 月 日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期: 年 月 日
导师签名: 日期: 年 月 日
注 意 事 项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
PAGE
_1234567893.unknown
_1234567897.unknown
_1234567899.vsd
�
F6 下
F2 下
F3 下
F4 下
F5 下
F5 上
F4 上
F3 上
F2 上
F1 上
F1
F2
F3
F4
F5
F6
P10
P11
P12
P13
P14
P15
P16
P17
P30
P31
P20
P33
P34
P35
P21
P22
_1234567901.vsd
开始
电梯在当前层?
电梯未运行?
启动电梯
延时
电梯上升?
上升指示灯灭
下降指示灯亮
上升指示灯亮
下降指示灯灭
开定时器
启动电梯
返回
Y
Y
Y
N
N
N
_1234567902.vsd
电梯到达最顶层?
电梯到达最底层?
电梯改为下降
电梯改为上升
电梯在下降?
当前楼层=目的楼层?
延时等待5s
继续下行查找
下一个要去楼层
若无下行需求
则反向查询
当前楼层=目的楼层?
延时等待5s
向上查找下�
到最顶层,无按
键需求电梯下行
无人时电梯
停留在1楼
Y
Y
Y
Y
N
N
N
N
N
Y
_1234567900.vsd
启动电梯
显示在1楼
调用启动
电梯子程序
电梯未运行或虽
运行但还没停止?
调用选择当前
要去楼层子程序
电梯已到目的层?
停留5s
Y
Y
N
N
_1234567898.vsd
_1234567895.vsd
�
R1
10K
C1
10uF
VCC
RST
S
_1234567896.vsd
_1234567894.vsd
�
C1
C2
X1
XTAL1
XTAL2
30pF
30pF
_1234567891.vsd
1
2
3
4
5
6
7
8
10
11
12
13
14
15
16
17
21
22
23
24
25
26
27
32
33
34
35
36
37
38
39
19
18
9
29
30
31
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P1.0/T2
P1.1/T2EX
RST
TXAL1
TXAL2
PSEN
ALE
EA
AT98C52
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
28
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
_1234567892.unknown
_1234567890.vsd
楼层电梯
呼叫按键
电梯内呼叫按键
单
片
机
楼层显示
数码管
电梯状态
指示灯
电梯
控制
信息
楼层信息
电梯状
态信息
电机的驱动和控制
本文档为【基于单片机的6层电梯模拟控制系统设计课程设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。