51单片机五层电梯控制器 基于51单片机的五层电梯控制系统 包括源代码和proteus仿真 系统硬件由51单片机最小系统、蜂鸣器电路、指示灯电路、内部按键电路、外部按键电路、直流电机、内部显示电路、外部显示电路组成。 功能: 1:外部五层楼各楼层分别有上下按键,按下后步进电机控制电梯去该楼层,每层楼都有一位数码管显示电梯当前楼层; 2:电梯内部由数码管显示当前楼层,可按键选择楼层号来控制电梯; 3:电梯内部有报警按键,按下后蜂鸣器响; 4:电梯内部可按键紧急制动,此时电梯停止运行,电梯内部其他按键以及外部五层楼的上下按键将无法控制电梯。

搓了三天三夜的烙铁,终于把五层电梯控制器给肝出来了!这玩意儿用51单片机搭起来比想象中更有意思,尤其是电机控制那块的逻辑,简直像在玩俄罗斯方块。先上张proteus仿真图镇楼(假装有图.jpg),咱们直接看硬核代码。

主控用STC89C52,电机驱动用ULN2003搭的步进电机驱动板。核心逻辑其实就俩数组:currentfloor记录当前楼层,targetfloors用位标记记录所有目标楼层。每次电梯空闲时就找最近的待处理楼层,这算法我管它叫"饿狼捕食"模式。

unsigned char target_floors = 0x00; // 位标记 0001表示1楼有请求
sbit MOTOR_PUL = P1^0;   // 步进电机脉冲引脚

void motor_run(int target){
    int steps = abs(current_floor - target) * 100; // 每层100步
    while(steps--){
        MOTOR_PUL = 1;
        delay_ms(2);    // 控制转速
        MOTOR_PUL = 0;
        delay_ms(2);
        // 实时更新楼层显示
        if(steps % 100 == 0){
            current_floor += (target > current_floor) ? 1 : -1;
            update_display();
        }
    }
}

数码管显示用了动态扫描,这里有个坑:电机运行时扫描会闪。后来在定时器中断里加了显示刷新才解决。注意P0口要加上拉电阻,不然段码会暗得像没吃饱饭。

51单片机五层电梯控制器 基于51单片机的五层电梯控制系统 包括源代码和proteus仿真 系统硬件由51单片机最小系统、蜂鸣器电路、指示灯电路、内部按键电路、外部按键电路、直流电机、内部显示电路、外部显示电路组成。 功能: 1:外部五层楼各楼层分别有上下按键,按下后步进电机控制电梯去该楼层,每层楼都有一位数码管显示电梯当前楼层; 2:电梯内部由数码管显示当前楼层,可按键选择楼层号来控制电梯; 3:电梯内部有报警按键,按下后蜂鸣器响; 4:电梯内部可按键紧急制动,此时电梯停止运行,电梯内部其他按键以及外部五层楼的上下按键将无法控制电梯。

紧急制动功能其实是个全局开关,触发时直接切断控制逻辑:

bit emergency_stop = 0;

void emergency_handler() interrupt 2 {
    emergency_stop = 1;
    buzzer = 0;  // 蜂鸣器长鸣
    while(1){
        display_ERR();  // 显示Err
        if(emergency_reset) break;
    }
    // 复位操作...
}

外部按键矩阵用了三根地址线加查询法,这写法虽然土但稳如老狗:

unsigned char scan_external_keys(){
    unsigned char val = 0xFF;
    for(int i=0; i<5; i++){
        P2 = ~(1 << i); // 逐行拉低
        val &= P3;      // 读取列值
    }
    return ~val;  // 按位存储楼层请求
}

实测发现电梯响应时蜂鸣器要"滴"一声,但用delay会卡住电机。最后在定时器0塞了个哔声计数器,每次收到新请求就让计数器置20,中断里自动递减发声。这种"甩锅给中断"的套路还挺好使。

最后说个血泪教训:proteus里电机参数要调对!最开始加速度设太大,仿真时电梯直接飞出屏幕。后来把步进脉冲间隔拉到2ms才正常,差点以为代码见了鬼。完整代码已经扔Github(假装有链接),拿去交课设记得改变量名!

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐