基于单片机的6层电梯模拟控制系统设计

单片机原理及系统课程设计

专 班 姓 学 号: 兰州交通大学自动化与电气工程学院

2015年1月7日

单片机的6层电梯模拟控制系统设计

1设计目的

这次设计给出了一种基于AT89C52单片机的电梯模型控制系统设计。以单片机为核心,再辅以适当的硬件电路和控制程序来检测和控制整个电梯的信号,具有成本低、通用性强、灵活性大、扩展容易及易于实现复杂控制等优点。

2 方案设计

2.1 设计要求

(1)设置电梯的内外按键,即电梯外都有上或下的按键,电梯内有楼层的选择按键。

(2)电梯状态要有指示灯显示,即电梯目前运行到达楼层的实时显示,电梯升降的状态显示等。

(3)电梯无人时,应默认停在第一层。

2.2 系统的结构框图

图2-1 系统的结构框图

如上图2-1所示,楼层电梯呼叫按键就是楼层外面的上行、下行按键,有需求时即可按下;电梯内呼叫按键就是电梯内部的数字按键,它是内部按键需求的输入;单片机就是整个系统的核心,接收输入信息,经过处理后输出信息;楼层显示数码管就是接收单片机处理的信息,显示此时的楼层数;电梯状态指示灯就是接收单片机处理的信息,显示电梯的状态:上升、下降、停止。电动机的驱动

1

和控制就是接收单片机的PWM 脉冲信号来控制驱动器,进而控制电动机的正反转,使电动机牵引电梯做上下运动。

2.3 电动机的选择

我们选用Y100L24三相异步电动机,因为它还具有性能好、寿命长、可靠性高、维护方便、启动转矩大等优点,其功能参数为额定电压380V ,额定频率50HZ ,额定功率3000W ,额定转速1400转/分。

2.4 AT89C52单片机

这次设计采用的是AT89C52单片机,AT89C52是一个低电压,高性能CMOS 8位单片机,器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash 存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。其外形及引脚排列如图2-2所示:

19189

TXAL2RST

P0.0/AD0

P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

AT98C52

P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

3921PSEN ALE 1P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7

P3.0/RXD10P3.1/TXDP3.4/T0P3.5/T1

图2-2 AT89C52单片机外形及引脚排列

3 硬件系统的设计

3.1 硬件设计思路

电梯最底层为1楼,因此在1楼仅有上升按键,而电梯最高层为6楼,因此6楼 应仅有下降按键。其他楼层则既有上升按键,也有下降按键。在电梯内部按键设

2

置方面,则应有1~6楼的各层选择按键。按键的一端接地,另一端通过集成电路 芯片连至单片机引脚。 这里用五片双4输入与门74LS21实现16个按键对象的集 体与运算的最终结果,按键动作最终是送到单片机的INT0端。

无论哪一个按键有动作,低电平信号就会送到INT0端,从而引发外部中断0服务子程序运行。当定时器0中断时,单片机向电动机发送PWM 脉冲信号,电动机接到脉冲信号后,经过驱动器的驱动,电动机便牵引电梯上下运动。

电梯的楼层显示用七段数码管完成显示。数码管的显示数据通过单片机的P0口来进行传送。

电梯升降的状态用上升和下降指示灯来进行显示,通过单片机的P3.7和P3.6引脚分别连接上升和下降指示灯的负极,其正极均连接至系统正电源处。

3.2 时钟电路

X1

图3-1 时钟电路图

单片机的时钟电路有振荡电路和分频电路组成。其中振荡电路由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲。而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。这次设计选择频率为12MHz 的晶振,当振荡脉冲频率为12MHz 时,一个机器周期为1us 。

3.3 复位电路

S

RST

图3-2 复位电路图

复位是单片机的初始化操作,程序给单片机的复位引脚RST 加大于2个机器

3

周期(即24个时钟振荡周期)的高电平就可使单片机复位。我们采用电平方式的复位。如图3-2所示,我们通过RST 端经由电阻与电源VCC 接通而实现,当按键按下时,RST 端为高电平复位。

3.4 中断电路

各中断的优先级:外部0中断、定时器T0中断、外部1中断、定时器T0中断、串行发送中断、串行接收中断、定时器T2中断。

图3-3 中断电路图

中断电路如上图3-3所示。图中外部0中断INT0与74LS21与门相接,低电平有效,所以当单片机接电源后,P1.0~P1.3引脚此时为高电平,当任一按键按下后,相应的中断输入口直接与地相接,高电平变为低电平,外部0中断立即响应,单片机系统进入中断控制子程序系统,在中断服务子程序中做出相应的执行指令。

3.5 电动机正反转控制电路

图3-4 带有联锁的正反控制电路

4

如上图3-4所示,继电接触控制电路,通过接触器、继电器之间的相互联锁,可以实现多台设备按生产工艺进行工作,是实现自动控制及保护的重要环节。当接通电源后,闭合负荷开关QM ,按下开关SB1,线圈C1得电,使电动机启动,此时电动机正转。按下开关SB2,线圈C2得电,线圈C1断开,此时电机开始反转。

3.6 数码管显示模块

LED 是Light Emiting Diode(发光二极管)的缩写,发光二极管是可以将电信号转换为光信号的电致发光器件。由条形发光二极管组成“8”字形的LED 显示器称数码管。通过数码管中发光二极管的亮暗组合,可以显示多种数字, 字母以及其他符号。这次设计采用七段数码管。外形如图3-5所示,即左边的7个引脚跟单片机P0口相接,下边的引脚连接地。

图3-5 七段数码管

3.7 按钮控制电路模块

图3-6 电梯不同楼层的按钮

如图3-6所示,按键显示电路模块包括电梯内部的按钮和每层楼的上下按钮,这些按钮一端与地相接,一端又与单片机和与门74LS21相接,外部0中断低电平有效,这样可以实现模拟按键的自如操作。

3.8 模拟电路图

5

图3-7 模拟电路原理图

4 软件系统的设计

4.1 程序设计思路

首先,必须得合理考虑按键的响应问题。一段时间内可能有多个不同的按键有动作,程序必须记录每一个按键的动作,并根据电梯本身所处的楼层情况与按键楼层之间的位置关系,合理判断出电梯应当做出上升或下降的响应动作。

其次,电梯系统还有一个判断是否无人的情况。即电梯到达某楼层后,其他楼层无按键动作,且电梯内也无楼层选择按键动作,电梯应自动返回到1层等待。

然后,两个楼层之间应考虑有一段运行时间,而且也要设置在一个楼层的停留时间。本设计中两个楼层之间的运行时间设为1s ,每层停留时间设为5s 。另外,当电梯上升或者下降时,相应的状态指示灯应及时同步点亮。

4.2 程序流程图

6

图4-1 主程序流程图

图4-2 启动电梯子程序流程图

7

图4-3 选择当前要去楼层子程序流程图

本设计程序流程图主要包括主程序流程图、启动电梯子程序流程图、选择当前要去楼层子程序流程图。如上图所示。

5. 电路仿真及调试

8

图5-1 电梯默认停在一楼

解析:

如上图5-1所示,电梯没有其他响应时,默认停在一楼,数码管显示1楼。此时各内外按键接地的一侧全部为低电平,接单片和74LS21与门一侧全部为高电平,一旦按钮按下,凡是按键所接的引脚全部为低电平,此时外部0中断低电平有效,外部0中断立即响应。当定时器0中断响应后,开始计时并向电动机发送PWM 脉冲信号,经驱动器驱动后,电动机就会牵引电梯做上升或者下降运动,数码管收到单片机的控制信号后就会显示楼层的同步变化,相应的上升、下降指示灯会有所指示。

9

图5-2 电梯处于上行中,经过三楼,上行指示灯亮

解析:

如上图5-2所示,电梯在四楼及以上有响应,经过三楼,上升指示灯亮。按键按下后,外部0中断立即响应,去执行外部0中断服务子程序。当定时器T0开始计数时,并向电动机发送PWM 脉冲信号,经驱动器驱动后,此时电机正转,就会牵引电梯做上升运动,电梯经过三楼,数码管同步显示3楼,上升指示灯亮,下降指示灯灭。

10

图5-3 电梯处于下行中,经过四楼,下行指示灯亮

解析:

如上图5-3所示,电梯可能没有响应,在四楼以上停了5s 就返回一楼,或者是在四楼以下有响应,执行外部0中断服务子程序。当定时器T0开始计数时,并向电动机发送PWM 脉冲信号,经驱动器驱动后,此时电机反转,就会牵引电梯做下降运动,电梯下行,经过四楼,数码管同步显示4楼,上升指示灯灭,下降指示灯亮。

6. 总结

这次设计是对传统设计电梯的部分改进,可以降低电梯的设计成本,实现楼层快速通行的模拟控制。另外由于此次设计实现的功能简单,简化处理了一些实际情况,没有去考虑电梯在实际应用中的故障问题,以及一些更智能的硬件与软件的安装与调试。

由于时间紧迫,而我能力有限,还有许多功能可以在此基础上进行拓展,例如可以扩展单片机增加智能识别系统,增加电梯内部的温度控制、增加单片机的故障预警等一些智能控制系统。随着科技与经济的深入发展,单片机技术的不断

11

进步,以后的电梯控制系统将会越来越智能化,这对提升人们的生活质量有着深远的意义。

此次设计中我也是遇到了各种各样的难题,经过我的努力以及同学的帮助也是解决了。通过这次的课程设计,使我认识到一个人的能力是有限的,但是一群人的能力是无限的,在以后的工作和学习中,要勤奋踏实,善于思考,这样才能在竞争激烈的社会中提升自我的实用价值。

最后我还要感谢老师的指点迷津以及细心答疑,这让我受益匪浅。

参考文献

[1] 王思明, 张金敏, 苟军年. 单片机原理及应用系统设计[M].北京:人民邮电出版社,2008. [2] 冯育长, 邹小兵. 单片机系统设计与实例指导[M]. 西安:西安电子科技大学出版社,2004.

12

附录:源程序代码

#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为等待

计数值

13

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

//选择当前要去的楼层子程序 void select_next() { char i;

if(nf==MAXFLOOR) {

dir=0; }

else if(nf==1) {

dir=1; }

if(dir==0)

14

{

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

cf=1; //经过上面的判断此处表示电梯没有人,默认停在一楼 }

if(call_floor[nf]==1) {

call_floor[nf]=0; stop=1; return; }

for(i=nf+1;i

//启动电梯子程序 void step(bit dir) {

if(cf==nf) return; else if(!flag) {flag=1; delay(50); if(dir==1) {ledu=0; ledd=1; }

15

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;

16

} } } }

//外部中断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;} }

17

单片机原理及系统课程设计

专 班 姓 学 号: 兰州交通大学自动化与电气工程学院

2015年1月7日

单片机的6层电梯模拟控制系统设计

1设计目的

这次设计给出了一种基于AT89C52单片机的电梯模型控制系统设计。以单片机为核心,再辅以适当的硬件电路和控制程序来检测和控制整个电梯的信号,具有成本低、通用性强、灵活性大、扩展容易及易于实现复杂控制等优点。

2 方案设计

2.1 设计要求

(1)设置电梯的内外按键,即电梯外都有上或下的按键,电梯内有楼层的选择按键。

(2)电梯状态要有指示灯显示,即电梯目前运行到达楼层的实时显示,电梯升降的状态显示等。

(3)电梯无人时,应默认停在第一层。

2.2 系统的结构框图

图2-1 系统的结构框图

如上图2-1所示,楼层电梯呼叫按键就是楼层外面的上行、下行按键,有需求时即可按下;电梯内呼叫按键就是电梯内部的数字按键,它是内部按键需求的输入;单片机就是整个系统的核心,接收输入信息,经过处理后输出信息;楼层显示数码管就是接收单片机处理的信息,显示此时的楼层数;电梯状态指示灯就是接收单片机处理的信息,显示电梯的状态:上升、下降、停止。电动机的驱动

1

和控制就是接收单片机的PWM 脉冲信号来控制驱动器,进而控制电动机的正反转,使电动机牵引电梯做上下运动。

2.3 电动机的选择

我们选用Y100L24三相异步电动机,因为它还具有性能好、寿命长、可靠性高、维护方便、启动转矩大等优点,其功能参数为额定电压380V ,额定频率50HZ ,额定功率3000W ,额定转速1400转/分。

2.4 AT89C52单片机

这次设计采用的是AT89C52单片机,AT89C52是一个低电压,高性能CMOS 8位单片机,器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash 存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。其外形及引脚排列如图2-2所示:

19189

TXAL2RST

P0.0/AD0

P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7

AT98C52

P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15

3921PSEN ALE 1P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7

P3.0/RXD10P3.1/TXDP3.4/T0P3.5/T1

图2-2 AT89C52单片机外形及引脚排列

3 硬件系统的设计

3.1 硬件设计思路

电梯最底层为1楼,因此在1楼仅有上升按键,而电梯最高层为6楼,因此6楼 应仅有下降按键。其他楼层则既有上升按键,也有下降按键。在电梯内部按键设

2

置方面,则应有1~6楼的各层选择按键。按键的一端接地,另一端通过集成电路 芯片连至单片机引脚。 这里用五片双4输入与门74LS21实现16个按键对象的集 体与运算的最终结果,按键动作最终是送到单片机的INT0端。

无论哪一个按键有动作,低电平信号就会送到INT0端,从而引发外部中断0服务子程序运行。当定时器0中断时,单片机向电动机发送PWM 脉冲信号,电动机接到脉冲信号后,经过驱动器的驱动,电动机便牵引电梯上下运动。

电梯的楼层显示用七段数码管完成显示。数码管的显示数据通过单片机的P0口来进行传送。

电梯升降的状态用上升和下降指示灯来进行显示,通过单片机的P3.7和P3.6引脚分别连接上升和下降指示灯的负极,其正极均连接至系统正电源处。

3.2 时钟电路

X1

图3-1 时钟电路图

单片机的时钟电路有振荡电路和分频电路组成。其中振荡电路由反相器以及并联外接的石英晶体和电容构成,用于产生振荡脉冲。而分频电路则用于把振荡脉冲分频,以得到所需要的时钟信号。这次设计选择频率为12MHz 的晶振,当振荡脉冲频率为12MHz 时,一个机器周期为1us 。

3.3 复位电路

S

RST

图3-2 复位电路图

复位是单片机的初始化操作,程序给单片机的复位引脚RST 加大于2个机器

3

周期(即24个时钟振荡周期)的高电平就可使单片机复位。我们采用电平方式的复位。如图3-2所示,我们通过RST 端经由电阻与电源VCC 接通而实现,当按键按下时,RST 端为高电平复位。

3.4 中断电路

各中断的优先级:外部0中断、定时器T0中断、外部1中断、定时器T0中断、串行发送中断、串行接收中断、定时器T2中断。

图3-3 中断电路图

中断电路如上图3-3所示。图中外部0中断INT0与74LS21与门相接,低电平有效,所以当单片机接电源后,P1.0~P1.3引脚此时为高电平,当任一按键按下后,相应的中断输入口直接与地相接,高电平变为低电平,外部0中断立即响应,单片机系统进入中断控制子程序系统,在中断服务子程序中做出相应的执行指令。

3.5 电动机正反转控制电路

图3-4 带有联锁的正反控制电路

4

如上图3-4所示,继电接触控制电路,通过接触器、继电器之间的相互联锁,可以实现多台设备按生产工艺进行工作,是实现自动控制及保护的重要环节。当接通电源后,闭合负荷开关QM ,按下开关SB1,线圈C1得电,使电动机启动,此时电动机正转。按下开关SB2,线圈C2得电,线圈C1断开,此时电机开始反转。

3.6 数码管显示模块

LED 是Light Emiting Diode(发光二极管)的缩写,发光二极管是可以将电信号转换为光信号的电致发光器件。由条形发光二极管组成“8”字形的LED 显示器称数码管。通过数码管中发光二极管的亮暗组合,可以显示多种数字, 字母以及其他符号。这次设计采用七段数码管。外形如图3-5所示,即左边的7个引脚跟单片机P0口相接,下边的引脚连接地。

图3-5 七段数码管

3.7 按钮控制电路模块

图3-6 电梯不同楼层的按钮

如图3-6所示,按键显示电路模块包括电梯内部的按钮和每层楼的上下按钮,这些按钮一端与地相接,一端又与单片机和与门74LS21相接,外部0中断低电平有效,这样可以实现模拟按键的自如操作。

3.8 模拟电路图

5

图3-7 模拟电路原理图

4 软件系统的设计

4.1 程序设计思路

首先,必须得合理考虑按键的响应问题。一段时间内可能有多个不同的按键有动作,程序必须记录每一个按键的动作,并根据电梯本身所处的楼层情况与按键楼层之间的位置关系,合理判断出电梯应当做出上升或下降的响应动作。

其次,电梯系统还有一个判断是否无人的情况。即电梯到达某楼层后,其他楼层无按键动作,且电梯内也无楼层选择按键动作,电梯应自动返回到1层等待。

然后,两个楼层之间应考虑有一段运行时间,而且也要设置在一个楼层的停留时间。本设计中两个楼层之间的运行时间设为1s ,每层停留时间设为5s 。另外,当电梯上升或者下降时,相应的状态指示灯应及时同步点亮。

4.2 程序流程图

6

图4-1 主程序流程图

图4-2 启动电梯子程序流程图

7

图4-3 选择当前要去楼层子程序流程图

本设计程序流程图主要包括主程序流程图、启动电梯子程序流程图、选择当前要去楼层子程序流程图。如上图所示。

5. 电路仿真及调试

8

图5-1 电梯默认停在一楼

解析:

如上图5-1所示,电梯没有其他响应时,默认停在一楼,数码管显示1楼。此时各内外按键接地的一侧全部为低电平,接单片和74LS21与门一侧全部为高电平,一旦按钮按下,凡是按键所接的引脚全部为低电平,此时外部0中断低电平有效,外部0中断立即响应。当定时器0中断响应后,开始计时并向电动机发送PWM 脉冲信号,经驱动器驱动后,电动机就会牵引电梯做上升或者下降运动,数码管收到单片机的控制信号后就会显示楼层的同步变化,相应的上升、下降指示灯会有所指示。

9

图5-2 电梯处于上行中,经过三楼,上行指示灯亮

解析:

如上图5-2所示,电梯在四楼及以上有响应,经过三楼,上升指示灯亮。按键按下后,外部0中断立即响应,去执行外部0中断服务子程序。当定时器T0开始计数时,并向电动机发送PWM 脉冲信号,经驱动器驱动后,此时电机正转,就会牵引电梯做上升运动,电梯经过三楼,数码管同步显示3楼,上升指示灯亮,下降指示灯灭。

10

图5-3 电梯处于下行中,经过四楼,下行指示灯亮

解析:

如上图5-3所示,电梯可能没有响应,在四楼以上停了5s 就返回一楼,或者是在四楼以下有响应,执行外部0中断服务子程序。当定时器T0开始计数时,并向电动机发送PWM 脉冲信号,经驱动器驱动后,此时电机反转,就会牵引电梯做下降运动,电梯下行,经过四楼,数码管同步显示4楼,上升指示灯灭,下降指示灯亮。

6. 总结

这次设计是对传统设计电梯的部分改进,可以降低电梯的设计成本,实现楼层快速通行的模拟控制。另外由于此次设计实现的功能简单,简化处理了一些实际情况,没有去考虑电梯在实际应用中的故障问题,以及一些更智能的硬件与软件的安装与调试。

由于时间紧迫,而我能力有限,还有许多功能可以在此基础上进行拓展,例如可以扩展单片机增加智能识别系统,增加电梯内部的温度控制、增加单片机的故障预警等一些智能控制系统。随着科技与经济的深入发展,单片机技术的不断

11

进步,以后的电梯控制系统将会越来越智能化,这对提升人们的生活质量有着深远的意义。

此次设计中我也是遇到了各种各样的难题,经过我的努力以及同学的帮助也是解决了。通过这次的课程设计,使我认识到一个人的能力是有限的,但是一群人的能力是无限的,在以后的工作和学习中,要勤奋踏实,善于思考,这样才能在竞争激烈的社会中提升自我的实用价值。

最后我还要感谢老师的指点迷津以及细心答疑,这让我受益匪浅。

参考文献

[1] 王思明, 张金敏, 苟军年. 单片机原理及应用系统设计[M].北京:人民邮电出版社,2008. [2] 冯育长, 邹小兵. 单片机系统设计与实例指导[M]. 西安:西安电子科技大学出版社,2004.

12

附录:源程序代码

#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为等待

计数值

13

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

//选择当前要去的楼层子程序 void select_next() { char i;

if(nf==MAXFLOOR) {

dir=0; }

else if(nf==1) {

dir=1; }

if(dir==0)

14

{

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

cf=1; //经过上面的判断此处表示电梯没有人,默认停在一楼 }

if(call_floor[nf]==1) {

call_floor[nf]=0; stop=1; return; }

for(i=nf+1;i

//启动电梯子程序 void step(bit dir) {

if(cf==nf) return; else if(!flag) {flag=1; delay(50); if(dir==1) {ledu=0; ledd=1; }

15

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;

16

} } } }

//外部中断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;} }

17


相关文章

  • 基于单片机的五层电梯课程设计
  • 课程设计报告 课程名称 微机课程设计 设计题目 电梯模拟运行设计 专业班级 自动化1041 姓 名 学 号 指导教师 刘文洲 蔡长青 起止时间 2013.12.23---2013.12.31 成 绩 评 定 电气与信息学院 课程设计考核和成 ...查看


  • 基于51单片机的模拟电梯控制系统
  • 目录 摘要 ............................................................................. II 目录 .............................. ...查看


  • 电子信息类毕业设计课题
  • 电子信息类毕业设计课题 [电子通讯] 出租车计价系统 [过程控制] 基于单片机实现单回路智能调节.. [电子通讯] 脉冲数字频率计 [机床仪表] 仪表机床数控系统的设计(论文.. 磁流体发电论文 [电子通讯] 基于VC++6.0的PC 机与 ...查看


  • 电子信息工程毕业设计题目大全
  • 1 压力容器液位测量 2 多功能遥控小车 3基于RS232的仓库多点温度.湿度.气 4压检测系统 5自动控制升降旗系统 6基于RS485的温度报警系统 7基于模糊算法的水温控制系统的设计 8多分机电话交换机 9简易火灾自动报警系统 10基于 ...查看


  • 机电一体化论文题目一览表
  • 1 毕 业 论 文(设计)题 目 2 基于AD9851的跳频控制电路设计 3 基于伪随机序列噪声发生器设计 4 基于FPGA的延时倍频电路PLL设计 5 基于FPGA的无线搜寻系统设计 6 基于FPGA的电机测速显示设计 7 基于FPGA的 ...查看


  • 新型虹吸式雨量测量仪的研制
  • 92新型虹吸式雨量测量仪的研制 新型虹吸式雨量测量仪的研制 Develop of New Siphon Rainfall Measuring Instrument 李弘洋 李 青 李 雄 童仁园(中国计量学院机电工程学院,浙江杭州31001 ...查看


  • 毕业设计范文
  • 河南职业技术学院 毕业设计(论文) 题 目 基于PLC电梯控制系统的设计 系(分院)河南职业技术学院 学生姓名 郭星星 学 号 10111003 专业名称 机电一体化 指导教师 周炯亮 2012 年 12 月 10 河南职业技术学院 机电工 ...查看


  • 广东海洋大学本科生毕业论文(设计)一览表
  • 广东海洋大学本科生毕业论文(设计)一览表 学院 :信息学院 专业:电子信息工程专业 班级:1031-1036 本班第 页共9页 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 学 ...查看


  • 电气自动化毕业论文参考题目
  • 电气自动化毕业论文参考题目 1. PLC控制花样喷泉 2. PLC在数控车床控制系统中的应用 3. PLC控制五层电梯设计 4. 超高压水射流机器人切割系统电气控制设计 5. 基于PLC的恒压供水系统设计 6. PLC交通灯设计 7. 双恒 ...查看


热门内容