基于51单片机的电梯控制系统

本文介绍了一个基于51单片机的六层电梯控制系统,系统启动后自动定位一楼,通过外部和内部按键控制电梯运行。采用L298驱动电机,74LS164驱动数码管显示楼层,每层停留3秒。项目包含原理图、PCB设计、C语言程序及产品说明书。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这一次的项目是前阵子发布的Altium designer ERROR系列链接
第一篇的项目,实现了51单片机控制电机,从而控制一台六层电梯。

具体说明:系统启动后自动定位到一楼。当外部按键按动时,电梯前往该楼层;内部按键共七个,其中六个对应六层,第七个为报警按键,按下后电梯停止工作,蜂鸣器鸣响报警,同时上行下行显示灯关闭,再次按下恢复正常。为保证电机运行正常和电梯舒适感,每层楼运行时间间隔为三秒。

原理图如下:
原理图
这里采用了L298来驱动电机,使用74LS164驱动数码管显示楼层。在层与层之间默认了电梯运行三秒钟,但是在具体实践中应根据现实楼层高度而定。

同时,由于这次项目更多的是模拟电梯运行,所以,我在PCB设计并没有把各个按键分开,而是画到了一块板子上,如下图:
在ad中,我并没有找到74LS164的芯片原理图,只有芯片封装,所以自己画了个164的芯片,为了后续方便使用,在新版的PCB中,将L298N小板集成到了整体电路板上。
在这里插入图片描述
在这里插入图片描述

部分代码如下所示:

void shangsheng()
{
 int i;
 t=11;
 ledup=0;
 leddown=1;
 for(i=0;i<10;i++)
 {
  stop();
  d11=1,d12=0,d21=0,d22=0;
  delay(5);
  d11=1,d12=1,d21=0,d22=0;
  delay(5);
  d11=0,d12=1,d21=0,d22=0;
  delay(5);
  d11=0,d12=1,d21=1,d22=0;
  delay(5);
  d11=0,d12=0,d21=1,d22=0;
  delay(5);
  d11=0,d12=0,d21=1,d22=1;
  delay(5);
  d11=0,d12=0,d21=0,d22=1;
  delay(5);
  d11=1,d12=0,d21=0,d22=1;
  delay(5);
 }
 t=0;
 leddown=1;
 ledup=1;
}
void xiajiang()
{
 int i;
 t=10;
 ledup=1;
 leddown=0;
 for(i=0;i<10;i++)
 {
  stop();
  d11=0,d12=0,d21=0,d22=1;
  delay(5);
  d11=0,d12=0,d21=1,d22=1;
  delay(5);
  d11=0,d12=0,d21=1,d22=0;
  delay(5);
  d11=0,d12=1,d21=1,d22=0;
  delay(5);
  d11=0,d12=1,d21=0,d22=0;
  delay(5);
  d11=1,d12=1,d21=0,d22=0;
  delay(5);
  d11=1,d12=0,d21=0,d22=0;
  delay(5);
  d11=1,d12=0,d21=0,d22=1;
  delay(5);
 }
 t=0;
 leddown=1;
 ledup=1;
}
void go()
{
 char temp;
 if(keyvalue!=keyvalue01d)
 {
  keyvalue01d=keyvalue;
  temp=nowfloor-keyvalue;
  if(t==0)
  {
   if(temp>0)
   {
    while(temp>0)
    {
     shangsheng();
     num++;
     if(gofloor[num]!=0)
     {
      if(((gofloor[num]&0x01)+(gofloor[num]&0x04))>0);
     }
     temp--;
     SBUF=play[--nowfloor];
     while(!TI);
     TI=0;
    }
    nowfloor=keyvalue;
   }
   if(temp<0)
   {
    while(temp<0)
    {
     xiajiang();
     temp++;
     SBUF=play[++nowfloor];
     while(!TI);
     TI=0;
    }
    nowfloor=keyvalue;
   }
  }
 }
}

富文本编辑器对于edge的适应和shit一模一样,上面三块代码整块粘贴就会卡死,也是醉了。

资源包含:proteus仿真+原理图;keil编写的C语言程序;ad原理图+PCB;产品说明书。

### 计方案概述 基于单片机电梯控制系统旨在模拟实际电梯运行情况,提供一种高效、可靠的运输解决方案。该系统不仅能够处理楼层请求,还能优化路径规划并保障乘客安全[^1]。 ### 功能计与实现 #### 一、概要 此系统采用模块化计理念,分为硬件电路搭建和软件编程两大部分。硬件部分负责信号采集与执行机构驱动;而软件则承担逻辑运算及状态管理的任务[^2]。 #### 二、功能特性描述 - **多层呼叫支持**:允许来自不同楼层的乘梯需求被记录下来。 - **自动门控机制**:当到达指定位置时会触发开门动作,在一定时间内无人进出即关闭舱门。 - **优先级调度算法**:对于紧急状况下的特殊指令给予更高权重处理。 - **实时监控反馈**:通过LED显示屏向外界展示当前所在层数及相关工作参数。 #### 三、软件架构解析 程序流程遵循初始化→等待事件→响应操作这一循环模。具体而言: ```c void main(void){ InitSystem(); // 初始化子函数调用 while(1){ CheckButtonStatus(); // 检测按钮状态变化 ProcessRequests(); // 处理各层站召唤请求 UpdateDisplayInfo(); // 刷新显示信息给用户看 ControlMotorDirection();// 控制电机转向以移动轿厢 AdjustSpeedAccordingToLoad();// 根据负载调整速度保持平稳行驶 } } ``` 上述代码片段展示了主函数如何协调各个组件之间的协作关系,确保整个过程有序进行。 ### 硬件选型说明 针对此类应用场合推荐选用STC89系列作为核心控制器单元,其具备丰富的外接口资源便于连接各类传感器和其他外围备。此外,还应配备必要的继电器用于开关量输出控制,光电耦合器隔离输入端口防止干扰等问题发生。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值