【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单片机四层电梯仿真

相关推荐
FreakStudio2 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘7 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u152109648497 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd8451015007 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼7 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi7 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘7 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展7 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司7 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑7 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习