基于51单片机的五层电梯控制器:包括源代码与proteus仿真
1:外部五层楼各楼层分别有上下按键,按下后步进电机控制电梯去该楼层,每层楼都有一位数码管显示电梯当前楼层;1:外部五层楼各楼层分别有上下按键,按下后步进电机控制电梯去该楼层,每层楼都有一位数码管显示电梯当前楼层;4:电梯内部可按键紧急制动,此时电梯停止运行,电梯内部其他按键以及外部五层楼的上下按键将无法控制电梯。4:电梯内部可按键紧急制动,此时电梯停止运行,电梯内部其他按键以及外部五层楼的上下按键
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(假装有链接),拿去交课设记得改变量名!

更多推荐



所有评论(0)