前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单片机毕设_模拟4层/8层电梯控制运行,急停按钮,Proteus仿真,C代码,论文,原理图

单片机毕设_模拟4层/8层电梯控制运行,急停按钮,Proteus仿真,C代码,论文,原理图

原创
作者头像
蒋宇智
发布2024-04-11 17:09:52
1660
发布2024-04-11 17:09:52

设计要求

1. 电梯设置内外键,按下任一键,电梯控制系统响应;

2. 电梯楼层和升降状态通过数码管、LED灯实时显示;

3. 具有紧急停止和声光报警功能,保护乘客安危;

4. 使用步进电机模拟电梯升降,顺时转动为升,逆时为降;

5. 电梯无人时,默认停留在一楼;

系统概述

本系统以51单片机作为控制核心,实时读取电梯内外部操作按键,及时响应乘坐要求。数码管和LED指示灯,分别表示当前电梯所在楼层和升降状态;步进电机则模拟电梯运行过程,电机顺时针转动为升,逆时针为降。

同时,电梯内部设计有报警和紧急停止功能。在电梯运行过程中,按下报警键,报警灯闪烁,蜂鸣器鸣叫,电梯停止运行;按下启动键后,可解除报警,让电梯恢复运行。

当乘客按下紧急停止键后,电梯急停,数码管显示当前急停楼层,上行灯和下行灯均熄灭,表明电梯处于不可用状态。

电梯内部的启动键用于模拟电梯关门,在电梯内部按下要去的楼层后,再按下启动键,电梯才会开始运行。

系统框架如下所示:

Proteus仿真电路

原理图

仿真分析

打开elevator.DSN仿真文件,双击单片机,加载位于C程序文件夹里的elevator.hex文件,运行仿真。结果如下,电梯停靠在1楼,绿色上行灯点亮,等待乘客乘坐。

电梯初始状态,停靠1楼位置
电梯初始状态,停靠1楼位置

假设4楼住户要到2楼,4楼住户在电梯外部按下“下”的按键后,电梯从1楼开始上升,上行灯点亮,步进电机顺时针转动,数码管依次显示楼层。

电梯上升过程中,到达3楼位置
电梯上升过程中,到达3楼位置

电梯到达4楼后,步进电机停止转动,数码管显示数字4,同时黄色下行灯点亮,表明电梯将开始下降;

电梯到达4楼位置
电梯到达4楼位置

4楼住户进入电梯,按下电梯内部按键2F后,再按下启动键(模拟电梯关门),电梯运行,步进电机逆时针转动。

电梯下行到达2楼位置
电梯下行到达2楼位置

在电梯运行的任何时刻,按下电梯内部报警按键,红色LED报警灯闪烁,蜂鸣器鸣叫,电梯停止在当前楼层,步进电机也停止转动;此时,按压启动键,即可解除警报,让电梯恢复运行;

电梯上行至2楼时,乘客按下报警键
电梯上行至2楼时,乘客按下报警键

出现意外情况时,按下紧急停止键后,电梯立即停止,数码管显示当前急停楼层,上行灯和下行灯都熄灭,表明电梯此时不可用,同时步进电机停转,此时只有重新运行系统才可解除急停。

电梯在3楼位置急停
电梯在3楼位置急停

部分C代码

代码语言:c
复制
void time(unsigned int ucMs);//延时单位:ms
void outPress();//按下电梯外按钮
unsigned char inPress();//按下电梯内楼层按钮
unsigned char elevator();//到达某一层返回1,否则返回0
void storeUP(unsigned char);//存储当前所有上行请求
void storeDOWN(unsigned char);//存储当前所有下行请求

//延时函数
void time(unsigned int ucMs);

//初始化所有灯
void initLights(void);

//设置当前楼层
void setFloor(int floor);

//设置电梯向上运行灯
void setUpLight();

//设置电梯向下运行灯
void setDownLight();

//设置电梯停止运行灯
void setStopLight();

//设置电梯向上运行灯
void setAlarmLight();

//设置电梯报警灯和喇叭
void setAlarmLight();

//关闭电梯报警灯和喇叭
void offAlarmLight();


//报警开关
int alarmSwitch=1;

unsigned char UP_req[5]={0,0,0,0,0}; //上行请求
unsigned char DOWN_req[5]={0,0,0,0,0}; //下行请求

//电机定位
void position(void)
{
  OUTPUT=0x01|(P2&0xf0);time(200);
  OUTPUT=0x02|(P2&0xf0);time(200);
  OUTPUT=0x04|(P2&0xf0);time(200);
  OUTPUT=0x08|(P2&0xf0);time(200);
  ucMotorDrvPuls=0x11;
  OUTPUT=0x01|(P2&0xf0);	
  
}

简易八层电梯设计

为给大家更多参考,附送另一套我设计的简易8层电梯控制系统,仿真电路如下。

八层电梯运行结果

按下电梯外部按键8F,模拟8层住户需要电梯,8F LED指示灯点亮,数码管从1到8依次显示,电梯上行箭头点亮。

电梯上行过程中
电梯上行过程中

电梯到达8楼后,上行箭头闪烁后熄灭,提示音哔两声,表示电梯到达8楼。

电梯到达8楼
电梯到达8楼

假设8楼住户要去5楼,按下电梯内部按键5F,5F LED指示灯点亮,数码管从8到5依次显示,模拟电梯下行,同时下行箭头点亮。

电梯下行过程中
电梯下行过程中

电梯到达5楼后,5F LED指示灯熄灭,同样,下行箭头闪烁后熄灭,提示音哔两声,表示电梯到达5楼。

电梯到达5楼
电梯到达5楼

资源内容

(1)基于51单片机的四层电梯控制系统设计论文;

(2)Proteus仿真文件;

(3)C程序;

(4)原理图;

(5)Visio流程图;

(6)参考资料;

(7)元器件清单;

(8)简易八层电梯设计;

资源截图

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档