【51单片机】【protues仿真】基于51单片机四层电梯系统

目录

一、主要功能

二、使用步骤

三、硬件资源

四、软件设计

五、实验现象

一、主要功能

1、数码管显示楼层号,上下方向

2、指示灯显示电梯运行状态

3、按键分为内外按键

二、使用步骤

核心控制器采用STC89C52单片机,搭配数码管显示楼层、矩阵按键输入指令、以及LED指示灯显示运行状态。外呼按键采用消抖电路设计。

三、硬件资源

1、51单片机核心模块

2、按键模块

3、8155芯片传感器

4、数码管显示模块

四、软件设计

#include "reg52.h"

#include "absacc.h"

#define uint unsigned int

#define uchar unsigned char

#define COM XBYTE0xFF20

#define PA XBYTE0xFF21

#define PB XBYTE0xFF22

#define PC XBYTE0xFF23

sbit lup1=P1^0;

sbit lup2=P1^1;

sbit ldown2=P1^2;

sbit lup3=P1^3;

sbit ldown3=P1^4;

sbit ldown4=P1^5;

sbit lopen=P1^7;

uchar state; //当前电梯状态

uchar statepre; //之前电梯状态

uchar flag; //电梯上下标志,0下,1上

bit flag1; //定时时间到标志

uchar counter; //计数器

bit in1=0, in2=0, in3=0, in4=0, up1=0, up2=0, up3=0, down2=0, down3=0, down4=0;op=0;

uchar code table\[\]={0xf9, 0xa4,0xb0,0x99, 0xa1, 0xc1, 0xff};

void T0_time()interrupt 1

{

TH0=(65536-50000)/256; TL0=(65536-50000)%256; //重赋初值

counter++; //定时器中断次数加1

if(counter==60) //三秒钟执行一次

{

counter=0;

flag1=1; //三秒钟定时到标志

}

}void delay(uint xms) //简单延时0.1ms

{

uint o,j;

for(o=xms;o>0;o--)

for(j=11;j>0;j--);

}

void main()

{

state=1;

statepre=1;

flag=1;

flag1=0;

COM=0x43; //intialize 8155

TMOD=0x01; //定义定时器0/1为定时器模式

EA=1; //开中断

while(1){

switch(state){ //扫描电梯所在位置

case(1):{

if(state!=statepre){ //上次的状态和本次不一样说明电梯 需要开门

lopen=0;

run(); //按键扫描三秒钟

lopen=1;

in1=0; //如果in1和up1被按下则无效

up1=0;

lup1=1;

}

else{

if(up1){

up1=0;

lup1=1;

lopen=0;

run();

lopen=1;

}

}

in1=0;

if(up2|down2|up3|down3|down4|in2|in3|in4){

flag=1; //说明上行

run(); //按键扫描三秒钟

state=2; //更新状态

statepre=1;

}

else{

statepre=state;

flag=2;

keyscan();

display();

}

break;

}

case(2):{

if(state!=statepre)

{

if(!(

((flag==1)&&(in3|up3|down3)&&(~down2)&&(~in2))

||((flag==1)&&(in4|down4)&&(~up2)&&(~in2))

||((flag==0)&&(in1||up1)&&(~down2)&&(~in2))

)

)

{

lopen=0;

run(); //按键扫描三秒钟

lopen=1;

in2=0; //如果in2被按下则无效

if(flag==1){ //如果上行,电梯外上行指示灯按下无效

up2=0;

lup2=1;

}

else{ //如果下行,电梯外下行指示灯按下无效

down2=0;

ldown2=1;

}

}

}

else{

if(down2|up2){

down2=0;

up2=0;

lopen=0;

run();

lopen=1;

ldown2=1;

lup2=1;

}

}

in2=0;

if(flag)

up2=0;

else

down2=0;

if(flag==1){

if(down3|in3|up3|down4|in4){

flag=1;

run();

state=3;

statepre=2;

}

else if(in1|up1){

flag=0;

run();

state=1;

statepre=2;

}

else{

statepre=state;

flag=2;

keyscan();

display();

}

}

else {

if(up1|in1){

flag=0;

run();

state=1;

statepre=2;

}

else if(in3|down3|up3|in4|down4){

flag=1;

run();

state=3;

statepre=2;

}

else{

statepre=state;

flag=2;

keyscan();

display();

}

}

break;

}

}

}

五、实验现象

演示视频:

【51单片机-B060】【protues仿真】基于51单片机四层电梯仿真

相关推荐
俊基科技6 小时前
A-59U工业级多模语音处理模块在矿山矿井通信与呼叫报警系统中的应用
嵌入式硬件·嵌入式开发·硬件开发·ai降噪·回音消除·拾音降噪
周周记笔记8 小时前
GD32F450xx MCU Datasheet 解读:硬件测试工程师的测试方法论
单片机·嵌入式硬件
潘潘的嵌入式日记9 小时前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
AOI小白新手上路11 小时前
江科协51单片机16-1 AD/DA ADC 三通道综合显示(LCD1602 版)改造说明
单片机·嵌入式硬件·51单片机
HUI-47412 小时前
EG1135|SSOP‑16 同步整流降压控制器,大功率外置 MOS 降压优选
单片机·嵌入式硬件·硬件工程
单片机仿真设计12 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
国科安芯12 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
新晨单片机设计14 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
AOI小白新手上路14 小时前
江科协51单片机16-1 DA数模转换实验(PWM 呼吸灯)
单片机·嵌入式硬件·51单片机
hongmai66688815 小时前
告别Wi-Fi,专注Mesh:ESP32-H2-MINI-1U-H2S模组规格与应用
单片机·嵌入式硬件·物联网·5g·h.265