51单片机电梯简单程序
基于51单片机的模拟电梯控制系统教材
摘要本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键模拟检测模块、电梯外请求发光管显示模块、楼层显示数码管模块、电梯上下行模块及模拟传感器模块等5部分组成。
该系统采用单片机(AT89C51)作为控制核心,内外均使用按键按下与否引起的单片机相应端口电平变化的原理,作为用户请求信息发送到单片机,单片机根据判断的结果最终驱动步进电机做相应的运动,在运动的过程中,单片机依照请求信息通过模拟的传感器使步进电机停止运动,并利用彩灯作为上升和下降的状况显示,七段数码管实时显示当前楼层,完成整个请求和响应的过程。
软件部分使用汇编语言实现,利用查询方式来检测用户请求的按键信息。
根据电梯运行到相应楼层时,模拟按键引起的电平变化,进行判断和执行实现电梯的控制,并且将程序模块化,方便了修改和调用。
硬件设计简单可靠,结合软件,基本实现了四层电梯的模拟运行。
关键词:单片机,AT89C51,电梯控制,步进电机目录摘要 (I)目录 (II)第1章绪论 (1)1.1电梯的研究背景及意义 (1)1.2 电梯的国内外发展状况 (1)第2章电梯设计任务与要求 (2)2.1设计任务 (2)2.2设计要求 (2)第3章总体设计方案 (3)3.1设计思路 (3)3.2总体设计框图 (3)第4章电梯控制系统 (4)4.1电梯控制系统 (4)4.2主要硬件设计器件介绍 (5)4.3 软件设计 (9)第5章个人心得体会 (12)参考文献 (13)致谢 (14)附录I: (15)附录II: (17)第1章绪论1.1电梯的研究背景及意义电梯是高层宾馆、商城、住宅、多层厂房和仓库等高层建筑不可缺少的垂直方向的交通工具。
随着社会的发展,建筑物规模越来越大,楼层越来越多,对电梯的可靠性、舒适感和美学等方面的要求也有了更高的要求。
电梯是集机电一体的复杂系统,涉及机械传动、电气控制和土建等工程领域,而对现代电梯而言,应具有高度的安全性。
基于单片机的电梯控制系统设计
基于单片机的电梯控制系统设计随着现代社会的快速发展,电梯已成为人们日常生活中不可或缺的运输工具。
为了提高电梯的运行效率,保证其安全可靠性,设计一种基于单片机的电梯控制系统。
该系统以单片机为核心,结合传感器、按键、显示等模块,实现对电梯的运行状态、楼层信号、呼梯信号的实时监控与显示。
一、系统硬件设计1、单片机选择本设计选用AT89S52单片机作为主控芯片,该芯片具有低功耗、高性能的特点,内部集成了丰富的外围设备,方便开发与调试。
2、输入模块设计输入模块主要包括楼层传感器和呼梯按钮。
楼层传感器采用光电式传感器,安装在各楼层,用于检测电梯的运行状态和位置;呼梯按钮安装在电梯轿厢内,用于收集用户的呼梯信号。
3、输出模块设计输出模块主要包括显示模块和驱动模块。
显示模块采用LED数码管,用于实时显示电梯的运行状态、楼层位置等信息;驱动模块包括继电器和指示灯,用于控制电梯的运行和指示状态。
4、通信模块设计通信模块采用RS485总线,实现单片机与上位机之间的数据传输与通信。
二、系统软件设计1、主程序流程图主程序主要实现电梯控制系统的初始化、数据采集、处理与输出等功能。
主程序流程图如图1所示。
图1主程序流程图2、中断处理程序中断处理程序主要包括外部中断0和定时器0的中断处理。
外部中断0用于处理楼层传感器的信号,定时器0用于计时和速度控制。
三、系统调试与性能分析1、硬件调试首先对电路板进行常规检查,包括元器件的焊接、电源的稳定性等;然后分别调试输入、输出、通信等模块,确保各部分功能正常。
2、软件调试在硬件调试的基础上,对软件进行调试。
通过编写调试程序,检查各模块的功能是否正常;利用串口调试工具,对通信模块进行调试。
3、性能分析经过调试后的电梯控制系统,其性能稳定、运行可靠。
该系统能够实现对电梯运行状态、楼层信号、呼梯信号的实时监控与显示,并且具有速度快、安全可靠等特点。
该系统还具有成本低、易于维护等优点,适用于各种场合的电梯控制。
基于51单片机的模拟电梯控制系统_毕业设计
摘要本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键模拟检测模块、电梯外请求发光管显示模块、楼层显示数码管模块、电梯上下行模块及模拟传感器模块等5部分组成。
该系统采用单片机(AT89C51)作为控制核心,内外均使用按键按下与否引起的单片机相应端口电平变化的原理,作为用户请求信息发送到单片机,单片机根据判断的结果最终驱动步进电机做相应的运动,在运动的过程中,单片机依照请求信息通过模拟的传感器使步进电机停止运动,并利用彩灯作为上升和下降的状况显示,七段数码管实时显示当前楼层,完成整个请求和响应的过程。
软件部分使用汇编语言实现,利用查询方式来检测用户请求的按键信息。
根据电梯运行到相应楼层时,模拟按键引起的电平变化,进行判断和执行实现电梯的控制,并且将程序模块化,方便了修改和调用。
硬件设计简单可靠,结合软件,基本实现了四层电梯的模拟运行。
关键词:单片机,AT89C51,电梯控制,步进电机目录摘要 (I)目录 (II)第1章绪论 (1)1.1电梯的研究背景及意义 (1)1.2 电梯的国内外发展状况 (1)第2章电梯设计任务与要求 (2)2.1设计任务 (2)2.2设计要求 (2)第3章总体设计方案 (3)3.1设计思路 (3)3.2总体设计框图 (3)第4章电梯控制系统 (4)4.1电梯控制系统 (4)4.2主要硬件设计器件介绍 (5)4.3 软件设计 (9)第5章个人心得体会 (12)参考文献 (14)致谢 (15)附录I: (16)附录II: (18)第1章绪论1.1电梯的研究背景及意义电梯是高层宾馆、商城、住宅、多层厂房和仓库等高层建筑不可缺少的垂直方向的交通工具。
随着社会的发展,建筑物规模越来越大,楼层越来越多,对电梯的可靠性、舒适感和美学等方面的要求也有了更高的要求。
电梯是集机电一体的复杂系统,涉及机械传动、电气控制和土建等工程领域,而对现代电梯而言,应具有高度的安全性。
基于AT89C51单片机电梯控制系统的设计
基于AT89C51单片机电梯控制系统的设计电梯控制系统是一个非常常用且重要的系统,在现代的高层建筑中几乎无处不在。
在这篇文章中,我们将介绍一个基于AT89C51单片机的电梯控制系统的设计。
首先,让我们了解一下电梯系统的基本原理。
一个标准的电梯系统由电梯井、电梯、电梯按钮、电梯控制系统和相关的传感器组成。
电梯井是电梯运行的区域,电梯则负责在楼层之间垂直运行。
电梯按钮用来选择目标楼层,电梯控制系统接收按钮的输入,并根据指定的楼层来控制电梯的运行。
传感器则用于检测电梯是否到达了指定楼层。
在本设计中,我们将使用AT89C51单片机作为电梯控制系统的核心芯片。
AT89C51是一种8位微控制器,具有强大的处理能力和丰富的接口功能。
它可以与其他外部设备进行通信,接收和发送数据,并控制电梯的运行。
首先,我们需要对电梯系统进行建模和设计。
我们将电梯系统划分为几个模块,包括电梯井、电梯、电梯按钮、电梯控制系统和传感器。
在电梯井中,我们需要安装楼层传感器,以便控制系统能够准确地检测电梯的位置。
这些传感器可以是光电传感器、红外线传感器或其他类型的传感器。
当电梯到达指定的楼层时,传感器将发送信号给控制系统。
电梯按钮用于选择目标楼层。
每个楼层都安装有一个电梯按钮。
当乘客按下按钮时,按钮会发送信号给控制系统,控制系统将根据输入的楼层信息计算出电梯的运行方向。
电梯本身主要由电机和轿厢构成。
电梯电机用于驱动轿厢在不同楼层之间垂直运动。
控制系统将控制电机的转动方向和速度,以实现电梯的运行。
最后,我们来了解电梯控制系统的设计。
电梯控制系统由AT89C51单片机和其他外部设备组成。
AT89C51单片机将接收来自按钮和传感器的输入信号,并根据输入信号来控制电梯的运行。
为了实现这个设计,我们需要将单片机与按钮和传感器连接。
单片机的GPIO引脚将与按钮连接,以接收按钮输入的信号。
传感器将与单片机的引脚连接,在电梯到达指定楼层时发送信号给单片机。
基于MCS-51单片机的电梯模拟系统设计
本科毕业设计论文题目基于MCS-51单片机的电梯模拟系统设计专业名称学生姓名指导教师毕业时间毕业一、题目:基于MCS-51单片机的电梯模拟系统设计二、指导思想和目的要求:通过毕业设计,使学生对所学电子工艺、传感器知识、电机控制技术、模电、数电、等电子基础课程的基本知识加深理解,在所学51八位单片机的基础上,学习更高级十六位单片机的基本指令及基本结构,并将其与实际工程应用紧密结合起来,培养创新意识,增强分析问题解决问题能力,为尽快进入社会角色,熟悉相关开发工作流程,提高基本工作技能,为即将踏入社会奠定理论和实践基础。
要求:认真复习有关基础理论和技术知识,查阅参考资料,参照下列设计思想,运用所学单片机知识独立设计电路、自行焊接、调试,直至预期结果方可。
要求实现:1. 通电后,系统默认电梯轿厢停在一层。
2. 如需上行,请按下所要到达楼层的上行呼叫按钮,轿厢显示开始上行,所经楼层号用LED进行短时显示,到达,楼层号持续显示,直至轿厢被呼叫离开,并有蜂鸣器鸣叫以示到达。
3. 当轿厢停留在中间楼层时,可实现上或下行呼叫,行进方向按呼叫顺序进行,如同时呼叫,则坚持先上行,后下行原则。
4. 由LED指示轿厢行进的方向。
5. 模拟楼层数要求五层及以上。
三、进度与要求:1.第一周~第三周在工作中收集各种相关资料,给出系统整体设计方案。
2.第四周~第五周进行器件选型,并用PROTEL设计硬件原理图。
3.第六周~第九周针对系统具体功能进行编程调试。
4.第十周~第十一周整理并组织论文。
6.第十二周~第十四周完成修改稿,定稿,打印,交评阅。
7.第十五周~第十六周评阅与答辩四、主要参考书及参考资料[1] 谢宜人主编,单片机实用技术问答, 北京人民邮电出版社 ; 2003[2] 靳达,单片机应用系统开发实例导航 , 北京人民邮电出版社 ; 2003[3] 流光斌等,单片机系统实用抗干扰技术,北京人民邮电出版社;2004[4] 余永权,ATMEL89系列单片机应用技术,北京航空航天大学出版社;2002[5] 陈瑾;智能小车运动控制系统的研究与实现[D];东南大学硕士论文;2005年[6] 韦巍;智能控制技术[M];北京:机械工业出版社;2000年[7] 蒋新松;机器人学导论[M];辽宁科学技术出版社;2003年[8] 孙迪生,王炎;机器人控制技术;北京:机械工业出版社;1997年[9] 陈明荧,8051单片机课程设计实训教材,清华大学出版社;2003年[10] 蔡美琴等,MCS-51系列单片机系统及其应用,高等教育出版社;2004年学生指导教师__ _ 系主任摘要电梯开始成为人们生活中不可缺少的一种便利工具。
基于51单片机的电梯智能控制系统设计与实现
基于51单片机的电梯智能控制系统设计与实现电梯智能控制系统是一种基于微控制器的设计,它的主要目的是帮助电梯自动化运行并保证运行的安全性。
本文将介绍基于51单片机的电梯智能控制系统的设计和实现。
一、电梯智能控制系统的设计思路若要设计一款电梯智能控制系统,我们需要考虑以下方面:1. 电梯的联动性:我们需要让电梯在呼叫系统和在楼层之间进行联动通信,从而实现自动化操作。
2. 速度控制器:电梯的电控系统中应该包括速度控制器以及对所有电动机和电脑设备的功率管理。
3. 安全保障:此类系统应该包括底层的传感器和控制器,以预防电梯陷入危险的情况。
基于这些方面,我们可以设计出以下的电梯智能控制系统:1. 位于每个楼层的面板将包括两个按钮:上行/下行和电梯呼叫。
2. 每个电梯都有自己的控制器,可以预测每个乘客的目标楼层以及电梯运动的方向。
3. 运动速度应该根据电梯的位置或者方向进行控制。
当电梯靠近楼层之后,速度应该降低并使电梯到达目的地。
4. 当电梯遇到紧急情况,如被卡住或者有人挡住,控制器应该立即响应并阻止电梯运动,避免任何可能危险的事件发生。
二、电梯智能控制系统的硬件设计以下是电梯智能控制系统的基本硬件设计:1. 单片机:电梯智能控制系统需要恰当的单片机来控制每个电梯的速度和位置,同时实现通信功能。
在本例中,我们使用51单片机。
2. 传感器:控制电梯位置和速度的传感器包括霍尔传感器和光电传感器。
3. 驱动器:驱动器是一种组件,可以调节电器负载的功率流量。
在电梯中,我们使用电动机和变频器驱动器来控制电梯的运动。
4. LED 显示器:该显示器用于指示电梯的运动状态,例如方向的指示灯、上行/下行箭头、电梯当前位置的数字等。
5. 按钮面板:面板应该在每个楼层提供上行/下行按钮和呼叫按钮,以允许乘客控制电梯。
三、电梯智能控制系统的软件设计以下是电梯智能控制系统的基本软件设计:1. 定时器:使用定时器来控制每个电梯的位置和速度,例如电梯到达楼层时,应该停止电梯并允许乘客离开或进入电梯。
51单片机层电梯控制程序
51单片机层电梯控制程序随着科技的不断进步,电梯已经成为现代城市生活中不可或缺的一部分。
而电梯的安全性和效率则直接关系到人们的出行体验。
为了实现电梯的智能化控制,我们可以使用51单片机来设计一个层电梯控制程序。
我们需要了解电梯的基本原理。
电梯主要由电机、编码器、按钮、门禁系统等组成。
电梯的控制程序需要根据乘客的需求,通过按钮输入信号,来控制电机的运行方向和楼层的开关门。
而编码器则用于检测电梯当前所在楼层,以便进行准确的控制。
在设计层电梯控制程序时,我们首先需要定义电梯的各个状态。
电梯的状态可以分为停止状态、上升状态和下降状态。
在停止状态下,电梯等待乘客按下按钮来选择楼层。
一旦有乘客按下按钮,电梯将根据按钮所在楼层与当前楼层的比较来确定运行方向。
如果按钮所在楼层大于当前楼层,则电梯进入上升状态;如果按钮所在楼层小于当前楼层,则电梯进入下降状态。
在运行状态下,电梯需要不断检测当前楼层与目标楼层之间的差距,以便及时停止运行。
在达到目标楼层后,电梯将停止运行并开门,等待乘客出入。
如果在运行过程中有其他乘客按下按钮,则电梯将根据当前运行方向以及按钮所在楼层与当前楼层的比较来决定是否停在该楼层。
为了实现层电梯控制程序,我们需要编写相应的代码。
首先,我们需要定义各个状态的变量,并初始化电梯所在楼层为1楼,电梯运行方向为停止状态。
然后,我们可以使用中断来检测按钮输入信号,并根据按钮所在楼层与当前楼层的比较来确定电梯的运行方向。
在运行过程中,我们可以使用定时器中断来检测电梯与目标楼层之间的差距,并在达到目标楼层后停止运行并开门。
同时,我们需要考虑其他乘客按下按钮的情况,以便及时停在相应楼层。
除了基本的层控制功能外,我们还可以添加一些其他的功能来提升电梯的智能化程度。
例如,我们可以添加一个超载检测功能,当电梯超过一定重量时,禁止进入电梯;我们还可以添加一个故障检测功能,当电梯出现故障时,及时报警并停止运行。
这些功能可以通过添加相应的代码来实现。
基于51单片机的电梯仿真系统(仿真程序PPT)
结果分析
性能评估
根据仿真数据,评估电梯系统的性能,如运行稳定性、响应速度等 。
问题诊断
分析仿真过程中出现的问题,如电梯无法响应某些楼层请求、运行 异常等,定位并解决问题。
优化建议
根据分析结果,提出针对性的优化建议,如改进电梯控制算法、调 整电机驱动参数等,以提高电梯系统的性能。
05
电梯仿真系统优化
汇编语言是51单片机的底层编程语言,它直接对应着硬 件的操作。使用汇编语言编程需要对硬件有深入的了解 ,并且编程效率相对较低。但是,汇编语言具有代码紧 凑、执行效率高等优点,在一些对性能要求较高的场合 仍然有应用。
C语言
C语言是51单片机的主流编程语言之一,它具有语法简 单、易于学习、可移植性好等优点。使用C语言编程可 以大大提高开发效率,并且代码可读性较好。同时,C 语言具有丰富的库函数和强大的数据处理能力,可以满 足大多数应用的需求。
3
该仿真系统具有可视化界面,能够直观 地展示电梯的运行过程和状态变化,方 便用户进行操作和观察。同时,该系统 还具有可扩展性和可定制性,可以根据 实际需求进行功能扩展和定制开发。
02
51单片机基础知识
51单片机简介
51单片机的定义
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来 随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是 ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长 的一段时间内将占有大量市场。
运行仿真
启动仿真,观察电梯在接收到 不同输入信号时的运行状态和 输出动作。
51单片机简单程序实例
51单片机简单程序实例
51单片机是一种常用的微控制器,下面我将给出一个简单的LED闪烁程序作为示例。
c.
#include <reg51.h>。
void delay() {。
int i, j;
for (i = 0; i < 500; i++)。
for (j = 0; j < 500; j++);
}。
void main() {。
while (1) {。
P1 = 0x00; // 关闭LED.
delay();
P1 = 0xFF; // 打开LED.
delay();
}。
}。
这是一个使用C语言编写的简单的51单片机程序。
程序的功能是让单片机控制开发板上的一个LED灯以一定的频率闪烁。
程序的主要部分是一个无限循环(`while(1)`),在循环中LED先被关闭然后延时一段时间,再被打开然后再延时一段时间,如此循环。
在这个示例中,我们使用了`P1`端口来控制LED的开关,
`0x00`表示关闭LED,`0xFF`表示打开LED。
`delay`函数用来产生时间延迟,以控制LED闪烁的频率。
这只是一个非常简单的示例,51单片机的功能远不止于此。
它可以用来控制各种外围设备,比如数码管、液晶显示屏、电机等,也可以用来实现各种功能,比如定时器、计数器、通信接口等。
希望这个简单的示例能够帮助你初步了解51单片机的编程。
基于51单片机的模拟电梯实训
江苏师范大学单片机实训院系:电气工程及自动化班级:11电41姓名:学号:指导教师:实训时间:2013.12.9-12.27(15-17周)摘要本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、楼层显示数码管模块、电梯上下行模块及等3部分组成。
该系统采用单片机(AT89C51)作为控制核心,,发送到单片机,利用max232进行单片机与上位机串口通信,上位机使用VB控件提供端口单片机根据判断的结果最终驱动步进电机做相应的运动,在运动的过程中,七段数码管实时显示当前楼层。
如果有故障出现,就会出现报警。
这就是这个实验中电梯完成整个请求和响应的过程。
软件部分使用VB语言和c语言实现。
根据电梯运行到相应楼层时,由VB控件提供端口进行判断和执行实现电梯的控制,且并将程序模块化,方便了修改和调用。
硬件设计简单可靠,结合软件,基本实现了六层电梯的模拟运行。
AbstractThis paper introduces microcontroller based elevator control system, hardware is composed of MCU minimum system module, digital tube display module, floor elevator up and down module and 3 parts. The system uses SCM (AT89C51) as the control core,, sent to the microcontroller, SCM and PC serial communication using MAX232, VB using PC control provides a port of the single chip according to the judgment result to the final drive stepper motor as the corresponding motion, in the process of movement, seven digital tube real-time display of the current floor. If a fault occurs, there will be an alarm. This is the complete process of the elevator the experiment request and response.Software components use VB language and C language. According to the operation of the elevator to the appropriate floor, provided by a VB port for judgment and implementation of the elevator control, and modular program, convenient modification and calling. Hardware design is simple and reliable, combined with the software, the basic realization of the simulation run of six layer elevator.关键词:单片机,AT89C51,电梯控制,步进电机目录第1章前言31.1电梯的研究目的及意义 (3)第2章电梯设计任务与要求 (4)2.1设计任务 (4)2.2设计要求 (5)第3章总体设计方案 (6)3.1设计思路 (6)3.2总体设计框图 (6)第4章电梯控制系统 (7)4.1电梯控制系统 (7)4.2主要硬件设计器件介绍 (9)4.3 软件设计 (14)第5章结论............................................... 错误!未定义书签。
基于51单片机的六层电梯c语言矩阵键盘控制系统
#include〈reg51.h〉#define MAXFLOOR 6unsigned char code LEDCODES[]={0x3f,0x06, 0x5b, 0x4f,0x66,0x6d,0x7d}; sbit LEDUP=P3^6;sbit LEDDOWN=P3^7;bit DIRECTION=1,STOP=0;unsigned char CURFLOOR=1;unsigned char DESTFLOOR=1;unsigned char RUN=1;unsigned int timer1=0, timer2=0;unsigned char CALLFLOORUP[7]={0, 0,0, 0, 0, 0, 0};unsigned char CALLFLOORDOWN[7]={0, 0, 0, 0, 0,0,0};unsigned char CALLFLOOR[7]={0, 0,0, 0, 0, 0,0};unsigned char keyscan(void);unsigned char key;void readarray(void);void SELECTNEXT();void step(bit DIRECTION);void DELAY(unsigned int Z);void DELAY2(unsigned int S);void JUDGESIT();void main(void){P0=LEDCODES[1];TH0=0x3C;TL0=0xB0;TMOD=0x01;ET0=1;EA=1;EX0=1;IT0=1;while(1){if(! RUN&&! STOP){SELECTNEXT();step(DIRECTION);}else if(STOP){timer2=0;TR0=1;while(timer2<100&&STOP);TR0=0;timer2=0;STOP=0;}return;}}void SELECTNEXT(){ char n;if(CURFLOOR==MAXFLOOR){DIRECTION=0;}else if(CURFLOOR==1){DIRECTION=1;}if(DIRECTION==0){if(CALLFLOORDOWN[CURFLOOR]){CALLFLOORDOWN[CURFLOOR]=0;STOP=1;return;}for(n=CURFLOOR-1;n〉=1;n——)if(CALLFLOORDOWN[n]){DESTFLOOR=n;return;}for(n=0;n<CURFLOOR;n++)if(CALLFLOORUP[n]){DESTFLOOR=n;return;}DIRECTION=1;for(n=CURFLOOR+1;n<=MAXFLOOR;n++)if(CALLFLOORUP[n]){DESTFLOOR=n;return;}for(n=MAXFLOOR;n>CURFLOOR;n——)if(CALLFLOORDOWN[n]){DESTFLOOR=n;return;}}else{if(CALLFLOORUP[CURFLOOR]){CALLFLOORUP[CURFLOOR]=0;STOP=1;return;}for(n=CURFLOOR+1;n<=MAXFLOOR;n++)if(CALLFLOORUP[n]){DESTFLOOR=n;return;}for(n=MAXFLOOR;n〉CURFLOOR;n——)if(CALLFLOORDOWN[n]){DESTFLOOR=n;return;}DIRECTION=0;for(n=CURFLOOR-1;n〉=1;n——)if(CALLFLOORDOWN[n]){DESTFLOOR=n;return;}for(n=1;n〈=CURFLOOR;n++)if(CALLFLOORDOWN[n]){DESTFLOOR=n;return;}}}void step(bit DIRECTION){if(DESTFLOOR==CURFLOOR)return;else if(! RUN){RUN=1;DELAY(50);if(DIRECTION==1){LEDUP=0;LEDDOWN=1;}else{LEDUP=1;LEDDOWN=0;}timer1=0;TR0=1;}}void DELAY(unsigned int Z){unsigned int X, Y;for(X=Z;X〉0;X-—)for(Y=125;Y>0;Y—-);}void timer0_int() interrupt 1{TH0=0x3C;TL0=0xB0;timer1++;timer2++;if(RUN){if(timer1==20){timer1=0;if(DIRECTION){CURFLOOR++;CALLFLOORUP[CURFLOOR]=0;}else{CURFLOOR—-;CALLFLOORDOWN[CURFLOOR]=0;}RUN=0;TR0=0;P0=LEDCODES[CURFLOOR];if(DESTFLOOR==CURFLOOR){TR0=0;LEDUP=1;LEDDOWN=1;STOP=1;return;}}}}void readarray(void){unsigned char key;while(1){key=keyscan();switch(key){case 0xee:CALLFLOORDOWN[6]=1;break;case 0xed: CALLFLOORUP[5]=1;break;case 0xeb: CALLFLOORDOWN[5]=1;break;case 0xe7: CALLFLOORUP[4]=1;break;case 0xde: CALLFLOORDOWN[4]=1;break;case 0xdd:CALLFLOORUP[3]=1;break;case 0xdb: CALLFLOORDOWN[3]=1;break;case 0xd7: CALLFLOORUP[2]=1;break;case 0xbe: CALLFLOORDOWN[2]=1;break;case 0xbd:CALLFLOORUP[1]=1;break;case 0xbb:CALLFLOORDOWN[6]=1;JUDGESIT();break;case 0xb7:CALLFLOORDOWN[5]=1;JUDGESIT();break;case 0x7e:CALLFLOORDOWN[4]=1;JUDGESIT();break;case 0x7d: CALLFLOORDOWN[3]=1;JUDGESIT();break;case 0x7b:CALLFLOORDOWN[2]=1;JUDGESIT();break;case 0x77: CALLFLOORDOWN[1]=1;JUDGESIT();break;}}}unsigned char keyscan(void) //键盘扫描函数, 使用行列反转扫描法{unsigned char cord_h,cord_l;//行列值中间变量P1=0x0f; //行线输出全为0cord_h=P1&0x0f; //读入列线值if(cord_h!=0x0f) //先检测有无按键按下{DELAY2(100); //去抖if(cord_h! =0x0f){cord_h=P1&0x0f; //读入列线值P1=cord_h|0xf0; //输出当前列线值cord_l=P1&0xf0; //读入行线值return(cord_h+cord_l);//键盘最后组合码值}}return(0xff); //返回该值}void DELAY2(unsigned int S){while(S——);}void JUDGESIT(){char m;for(m=1;m<=MAXFLOOR;m++){if (CALLFLOOR[m]){if (CURFLOOR<=m){CALLFLOORUP[m]=1;CALLFLOOR[m]=0;return;}else{CALLFLOORDOWN[m]=1;CALLFLOOR[m]=0;return;}}}}。
51单片机简易电梯控制程序
51单片机简易电梯控制程序ORG 00HN1 EQU 0020H ;系统初始化ORG 0030HMOV R0,#8MOV R7,#0MOV N1,#0START: MOV R2,#15CALL XS ;显示数据JNB P3.5,$ ;检测急停键是否弹起CALL XIAODOUJNB P3.5,$CALL XINCENCALL ANJJMP STARTXINCEN: ;扫描急停键JB P3.5,B0CALL XIAODOUJB P3.5,B0CALL XIAODOUJB P3.5,B0CALL XIAODOUJB P3.5,B0CALL XIAODOUJB P3.5,B0SETB P0.7 ;关闭输出SETB P0.5MOV N1,#0 ;清空指令代码MOV R2,#0JMP START ;返回开始RETB0: JB P0.3,B1 ;扫描一楼行程,获取楼层信号CALL XIAODOUJB P0.3,B1CALL XIAODOUJB P0.3,B1CALL XIAODOUJB P0.3,B1CALL XIAODOUJB P0.3,B1MOV R0,#1 ;载入1层代码1,2表示1层半,3表示2层,4表示2层半,5表示3层,6表示3层半,7表示4层MOV R7,#1CALL XS ;显示数据RETB1: JB P0.2,B2 ;扫描2楼行程,获取楼层信号CALL XIAODOUJB P0.2,B2CALL XIAODOUJB P0.2,B2CALL XIAODOUJB P0.2,B2CALL XIAODOUJB P0.2,B2MOV R0,#3 ;载入2层代码MOV R7,#2CALL XSRETB2: JB P0.1,B3 ;扫描3楼行程,获取楼层信号CALL XIAODOUJB P0.1,B3CALL XIAODOUJB P0.1,B3CALL XIAODOUJB P0.1,B3CALL XIAODOUJB P0.1,B3MOV R0,#5 ;载入3层代码MOV R7,#3CALL XSRETB3: JB P0.0,ANJ ;扫描4楼行程,获取楼层信号CALL XIAODOUJB P0.0,ANJCALL XIAODOUJB P0.0,ANJCALL XIAODOUJB P0.0,ANJCALL XIAODOUJB P0.0,ANJMOV R0,#7 ;载入4层代码MOV R7,#4CALL XSRETANJ: JB P2.0,C1 ;扫描按键,获取目的层CALL XIAODOUJB P2.0,C1CALL XIAODOUJB P2.0,C1CALL XIAODOUJB P2.0,C1CALL XIAODOUJNB P2.0,$MOV N1,#1 ;载入目的1楼代码,R6为副寄存器MOV R6,#1MOV R2,#10CALL XSCALL BIJAORETC1: JB P2.1,C2CALL XIAODOUJB P2.1,C2CALL XIAODOUJB P2.1,C2CALL XIAODOUJB P2.1,C2CALL XIAODOUJNB P2.1,$MOV N1,#3 ;载入目的2楼代码,R6为副寄存器MOV R6,#3MOV R2,#11CALL XSCALL BIJAORETC2: JB P2.2,C3CALL XIAODOUJB P2.2,C3CALL XIAODOUJB P2.2,C3CALL XIAODOUJB P2.2,C3CALL XIAODOUJNB P2.2,$MOV N1,#5 ;载入目的3楼代码,R6为副寄存器MOV R6,#5MOV R2,#12CALL XSCALL BIJAORETC3: JB P2.3,TIAOCALL XIAODOUJB P2.3,TIAOCALL XIAODOUJB P2.3,TIAOCALL XIAODOUJB P2.3,TIAOCALL XIAODOUJNB P2.3,$MOV N1,#7 ;载入目的4楼代码,R6为副寄存器MOV R6,#7MOV R2,#4CALL XSCALL BIJAORETTIAO:JMP XINCENRETBIJAO: ;楼层比较子程序MOV A,R0 ;楼层数与目的层不相等则转到大小比较段,比较大小CJNE A,N1,DIFFJMP STARTDIFF: JNC NEXT ;没有进位,说明目的层小于楼层,转到下行段JMP UP ;有进位,说明目的层大于楼层,转到上行段RETNEXT: JMP DOWNRETUP: CLR P0.4 ;输出关门指令CALL OPEN ;关门时间延时SETB P0.4 ;关门完成CALL OPENDOORK1: SETB P0.5 ;上行子程序段,禁止向下动作,输出上行指令CLR P0.7CALL XINCEN ;扫描行程,按键CALL CUZUO ;检测否出错MOV A,R0CJNE A,N1,D1 ;判断是否到达指定层,没有则继续上行,到达则关闭上行,返回开始SETB P0.7CALL OPENDOORCLR P0.6 ;输出开门指令CALL OPEN ;关门时间延时SETB P0.6 ;关门完成JMP STARTD1: JNC K2INC R0JMP K1RETDOWN: CLR P0.4 ;输出关门指令CALL OPEN ;关门时间延时SETB P0.4 ;关门完成CALL OPENDOORK2: SETB P0.7 ;下行子程序段,禁止向上动作,输出下行指令CLR P0.5CALL XINCEN ;扫描行程,按键CALL CUZUO ;检测是否出错MOV A,R0CJNE A,N1,D2 ;判断是否到达指定层,没有则继续下行,到达则关闭下行,返回开始SETB P0.5CALL OPENDOORCLR P0.6 ;输出开门指令CALL OPEN ;关门时间延时SETB P0.6 ;关门完成JMP STARTD2: JC K1DEC R0JMP K2RETXS: ;显示数据子程序MOV A,R7SWAP AADD A,R2MOV P1,ARETCUZUO:MOV A,N1 ;出错比较子程序CJNE A,#1,Y1 ;出错更正,若目的数不是1,2,3,4层的代码,则将副寄存器R6的值写入主寄存器N1中RETY1: CJNE A,#3,Y2RETY2: CJNE A,#5,Y3RETY3: CJNE A,#7,Y4RETY4: MOV N1,R6RETXIAODOU: ;消抖动延时子程序MOV R3,#60F1: MOV R4,#248DJNZ R4,$DJNZ R3,F1RETOPEN: ;开门延时子程序MOV R3,#80L1:MOV R4,#200L2:MOV R5,#248DJNZ R5,$DJNZ R4,L2DJNZ R3,L1RETOPENDOOR: ;延时开门子程序MOV R3,#100L3:MOV R4,#20L4:MOV R5,#248DJNZ R5,$DJNZ R4,L4DJNZ R3,L3RETEND。
基于51单片机的8层电梯模拟控制
基于51单片机的8层电梯模拟控制摘要:电梯控制本是一个比较复杂的系统,在这里我们只是对电梯的控制进行模拟,没有考虑某些因素。
如:我们没有应用现实中的行程开关,电动机等重要器件,我们用红外线.LED等器件来对其进行模拟,本设计主要涉及到低压电气,红外通讯,单片机开发,PROTEL软件,PROTEUS软件,电子电路等知识。
关键词:电梯红外电动机LCD一、系统概述1)输入系统输入系统在本设计中主要是体现在电梯呼叫信号的发起的元件上.本系统中主要的输入设备有BUTTON(按钮)和红外接收装置。
BUTTON:有外呼叫和内呼叫两种.简单来说就是电梯内的按钮和电梯外的按钮.电梯内的按钮要比电梯外的多一些,这个不用说相信大家都知道;电梯外的主要用于电梯的呼叫,当电梯到达该呼叫楼层时,电梯自动开门后该呼叫请求会自动清掉,保证下次呼叫的正确性。
红外接收装置:由于本系统只是对电梯控制进行模拟,所以我们就只用了两套红外收发装置进行模拟。
一套专门用于断电保护人身安全的:当电梯运行在中间楼层时,我们用红外装置来监测复位时,电梯的停放情况,如果电梯并没有在最底层,那么我的系统会自动将电梯运行到最底层,这样保证了人的安全,也保证了电梯不会因为断电而无法运行。
另一套红外装置其实是本系统8层楼中8套行程限位的代表,当电梯运行到某一楼层时该楼层发射装置发射的红外信号会传递到电梯本身身上的红外接收装置,如果CPU每12秒收到了一次这个信号,那么说明电梯运行无误,否则CPU 将自动报警,并停止电梯的运行,当检修人员发现电梯出现故障后,按下检修开关,电梯自动运行到最底层,并显示当前电梯处于修理中,等检修师傅检修好后在次按下检修开关电梯就可以再次投入使用了.2)输出系统本设计中作为输出系统的元件有LCD,蜂鸣器,发光二极管和继电器。
LCD:本设计采用的是LM1602B液晶显示器.与红外收发装置一样,LCD我们也只用了两套,一套用于电梯箱内的当前信息显示;另一套用于电梯箱外,主要是给需要呼叫电梯的人一个选择的权利,因为一般必须先响应同方向的呼叫,后处理反方向呼叫。
基于51单片机实现的电梯模型设计
电梯模型设计报告学院:自动化学院队名:xxx队员:xxx日期:2009.11.20一、概述电梯模型以51为核心处理器,步进电机为控制电机,用L298N 搭建驱动电机模块,结合光电传感器实现对电梯的上升,下降,准确平层各种运行方式的控制。
利用矩阵键盘、ISD1760语音芯片,数码管等各种功能模块实现电梯的扩展功能及人机交互功能。
二、方案论证方案一:直流伺服电机+光电传感控制方式。
优点:直流电机速度可以平滑调节,自带编码盘可以记录电梯运行位移,速度调节范围大。
缺点:用编码盘测量位移误差较大,对CPU运算处理要求较高而且直流电机运行时带有一定惯性,对平层带来较大难度。
方案二:步进电机+光电传感控制。
优点:步进电机可以用脉冲方式控制轿厢位移,配合光电传感模块可以准确实现轿厢平层;步进电机为输入脉冲时,电机可以卡死不发生转动,使得电梯在楼层处安全停止,等待相应操作。
缺点:步进电机转速较慢,速度控制要通过该变脉冲频率来调节,控制电路要求较高。
由于本作品为电梯模型,速度要求不高,通过单片机可以方便输出电机所需脉冲,配合L298芯片可以实现对步进电机的完美控制,所以我们选择方案二。
三、详细设计方案1.楼层模型设计电梯模型采用易于加工的木材,选用1.2米长的木板作为模拟楼层,底座用三角架固定,确保电梯运行过程不会出现模型摇动现象。
电梯轨道处拉两根铁丝作为电梯导轨,保障电梯的运动轨迹。
轿厢用纸盒模拟代替,盒子敞开一面,可以放入物品,模拟乘客进出电梯。
2.驱动电路模块控制电机选用四相步进电机,步进角为1.8度。
步进电机可以通过直流斩波改变顺序控制电机正反传,51单片机的定时/计数器可以模拟输出4路直流斩波,通过步进电机驱动电路控制步进电机。
驱动电路以L298N驱动芯片为核心部件,L298N芯片的电平电压与51单片机兼容,驱动电压可达50V完全可以驱动电梯模型所用控制电机。
驱动电路如下图:四个输出端分别接步进电机的四个脉冲输入端,通过定时计数器模拟输出的四路直流斩波控制L298N的输出端口,从而可以方便的控制步进电机。