基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改
基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改
仿真图proteus 8.9
程序编译器:keil 4/5
编程语言:C语言
设计编号:S0027
视频演示
基于51单片机的多层电梯(1-16层)运行系统仿真设计演示视频
主要功能:
结合实际情况,基于51单片机设计一个多层电梯单片机控制系统。该系统应满足的功能要求为:
1-16层电梯运行控制,轿内外呼叫,运行状态显示。独立键盘、LED显示楼层、指示灯。
1.通电后,系统默认电梯停在一层。
2.按下不同的按键电梯可以到达不同的楼层,如果电梯在上行,下面的楼层有呼叫电梯会继续上行,直到上行完了才会下行。同样如果电梯在下行,上面的楼层有呼叫 电梯会继续上行 ,直到下行完了才会上行。
3.如需上行,请按下所要到达楼层的上行呼叫按钮,电梯显示开始上行,所经楼层号用数码管进行显示,到达,楼层号持续显示。
4.当轿厢停留在中间楼层时,可实现上或下行呼叫,行进方向按呼叫顺序进行。
5.由LED箭头指示电梯是上行和下行的方向。
6.硬件软件可以兼容2-16层电梯,如果需要做8层10层电梯,可以用改设计快速修改。
主要硬件设备:51单片机、74HC595位移缓存器、数码管显示、按键、NSL-32SR3、电机。
资料下载链接(可点击):
【腾讯文档】S0027 网盘链接
以下为本设计资料展示图:
仿真
电梯停在一楼
按下电梯完按钮16楼,上行指示灯电路,电梯电机开始工作。此时显示栏会显示经过的楼层。
到达16层后,按下电梯完按钮1楼,下行指示灯电路,电梯电机开始工作。此时显示栏会显示经过的楼层。
程序:
//系统初使化
void SYSYEM_INIT(void)
{u8 i;ElevState.CurrentFloor=1;ElevState.Direction=UP; //初使化方向为向上ElevState.FloorTimerCount=0; //定时器版计时清0ElevState.FreeFlag=TRUE; //初使化为空闲状态ElevState.ElevRunning=FALSE; //运行标志置FALSE 表示暂停运行Uart.RX_COUNT=0; //串口接收计数清0for(i=0;i<=MaxFloor;i++) {ElevState.FloorCallTable[i]=Null; //初使化呼叫列表为Null}DOOR_Close; //关门
}void EXTI0_IRQHandler(void) interrupt 0 //楼层传感器中断
{ #if (USE_MODE==1)ElevState.ArriveFlag=TRUE;//触发中断后表示到达楼层,让到达楼层标志置TRUE#endif
}
void EXTI1_IRQHandler(void) interrupt 2 //矩阵按键中断
{KeyDatHandle(KeyScan()); //把KeyScan()按键扫描函数返回的按键值带入到KeyDatHandle()处理按键
}
void TIM0_IRQHandler(void) interrupt 1 //定时模拟电梯上升和下降
{TH0=(65536-50000)/256;//定时50msTL0=(65536-50000)%256;//定时50msTimerCount++;if(TimerCount==20) //1秒{TimerCount=0;Timer_Second++;} if(DelNullCheck()==FALSE) ElevState.FloorTimerCount++; //非空闲状态计时累加else ElevState.FloorTimerCount=0; //空闲状态计时清0
}void Uart_IRQHandler(void) interrupt 4 //用于电梯之间的通信
{ if(RI==1) //判断是否为接收中断(串口中断分为发送中断和接收中断,均用同一个中断服务函数入口){RI = 0; //清除RI接收中断标志 Uart.RX_BUFF[Uart.RX_COUNT++]=SBUF;if(Uart.RX_COUNT==Uart_RX_LEN) Uart.RX_COUNT=0;}
}void main(void) //主函数
{u8 SendTick1S=0;SYSYEM_INIT();EXTI0_Init();EXTI1_Init();TIMER0_Init();UART_Config(9600);Uart_SendStr("Welcome to use elevator program \r\n");while(1){ KeyPort_Y=0x00; //不可删除FloorCallCheck(); Elevator(); if(SendTick1S!=Timer_Second){SendTick1S=Timer_Second;Uart_SendBytes((u8*)(&ElevState),sizeof(ElevState)); }}
}
资料清单(提供资料清单所有文件):
资料下载链接见文章开头
基于51单片机的多层电梯(1-16层)运行系统仿真设计_层数可改相关推荐
- 51单片机五层电梯控制器 基于51单片机的五层电梯控制系统
51单片机五层电梯控制器 基于51单片机的五层电梯控制系统 包括源代码和proteus仿真 系统硬件由51单片机最小系统.蜂鸣器电路.指示灯电路.内部按键电路.外部按键电路.直流电机.内部显示电路.外 ...
- 【038】基于51单片机的土壤湿度自动浇花系统Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的土壤湿度自动浇花系统proteus仿真设计一份: (2).基于51单片机的土壤湿度自动浇花系统proteus仿真设计keli源代码一份: (3).基于51单 ...
- 基于51单片机的简易电容值测量仪proteus仿真设计
51单片机简易电感测量仪仿真设计( proteus仿真+程序+讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0039 51单片机简 ...
- 【011】基于51单片机的低频信号发生proteus仿真与实物设计
一.资料内容 (1).基于51单片机的低频信号发生proteus仿真设计一份: (2).基于51单片机的低频信号发生proteus仿真设计keli源代码一份: (3).基于51单片机的低频信号发生A ...
- 基于51单片机的光照强度检测c语言程序,智能仪器课程设计-基于51单片机的光照强度检测报告.doc...
该设计论文已经通过各大高校老师审核认可并通过答辩,.欢迎大家下载学习交流.如有疑问可随时联系店主,竭诚为您解答!! 课程设计报告 课程名称: 智能仪器课程设计 题 目: 基于51单片机的光照强度 摘要 ...
- 基于51单片机的简易电梯系统的设计
系统概述 设计要求 根据所学的知识以及技能,利用MCS-51系列单片机为中心设计一个简易电梯系统,实现四层电梯的无故障运行,并用数码管和指示灯显示对应楼层和运行方向等基本信息.设计所用的单片机为STC ...
- 51开发实例 基于51单片机的模拟电梯系统
一.系统设计 电梯的控制对于我们来说既陌生又显得格外亲切,本次基于52单片机开发的模拟电梯系统,系统没有通过电机模拟电梯运转,按键可以设置楼层,一共设置了3个楼层按键,按下对应的楼层按键就会直接向指定 ...
- Protues 基于51单片机的DS18B20温度采集:键盘输入温度上下限_超出设定温度范围报警_8数码管显示
功能实现: 1.设计单片机与16按键的矩阵式键盘接口以及8数码管的接口电路,测试显示和按键功能. 2.设计单片机与DS18B20的接口电路,实现数字温度信息的采集,然后编程处理采集到的数据,得到温度值 ...
- 111、基于51单片机的电磁感应无线充电系统 手机无线充电器设计(程序+原理图+Proteus仿真+程序流程图+论文参考资料等)
方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度.非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通 ...
最新文章
- centos6 rpm安装mysql_Centos6下rpm安装MySQL5.6
- Linux 主要的发行系统版本介绍
- 2016年11月13日周工作知识点总结
- C语言的main函数,究竟有几种写法?
- ajax获取返回随机数,AJAX
- debian 7 mysql_debian7.2+nginx+mysql
- TypeScript学习(三):联合类型及推论
- 解析《富爸爸财务自由之路》
- Visual Studio Code快捷指令
- 关于电脑使用的实用技巧
- 同步模式之保护性暂停
- ISO SAE 21434-2021 要求、建议、允许(RQ、RC、PM)整理
- IOS之 点击链接跳转到App Store指定App(应用程序)
- Unity3D官方教程爬坑
- 如何学习一门计算机语言?
- 上微信 找不到服务器,【微信连接不上服务器】微信连接不上服务器怎么办?...
- Docker - 使用Docker Compose部署应用
- 微信小程序 vant 样式覆盖与定制主题
- 快充协议和充电插头、充电宝
- Android操作系统版本代号与对应的targetSdkVersion