基于51单片机的模拟电梯控制系统讲解
51单片机模拟智能电梯系统代码及注释

#include<>#define uint unsigned int#define uchar unsigned char〃延时程序,以毫秒为单位,用软件计时,输入的参数为毫秒数void Delay_ms( uint Time);〃电梯向上走void Up();I〃电梯向下走void Down();〃报警函数void Warnning();〃获取目的楼层void Destination();//显示某一楼层void Display( uchar n, uchar a);//闪烁显示到达的楼层void Flash( uchar a);//点阵键盘扫描uchar KBScan();//延时void dl_ms();//解析出按键所代表的楼层uchar Reprsent();#include ""uchar code TAB[16]= (0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71);sbit P0_0 = P0A0;sbit P0_1 = P0A1;sbit P0_2 = P0A2;sbit P0_3 = P0A3;sbit P0_4 = P0A4;sbit P0_5 = P0A5;sbit P0_6 = P0A6;s bit P0_7 = P0A7;sbit P1_0 = P1A0;uchar lift = 1;〃电梯所在的楼层uchar destination1 = 1;〃电梯的目的楼层uchar flag = 0;〃进入电梯程序的标志uchar key;〃按键的键码uchar request[] = {0, 0, 0, 0, 0, 0, 0, 0, 0);//1-8 楼有无请求,有请求为 1uchar status = 1;//电梯往上还是往下走,1为上,0为下//报警的响声的频率产生void Timer1() interrupt 3 { P1_0=-P1_0;TH1 = 0xfc;TL1 = 0x0c;) int main(){'uchar i;P0 = 0xff;P2 = 0x76; //数码管‘H’EA = 1; //开启外部中断INT0EX0 = 1;IT0 = 1;while(1) //检查flag 标志{ //flag初始化为0if(flag == 1) 〃在中断中将其置1break;P1 = 0x01; 〃数码管跑马显示HDelay_ms( 100); //flag置1后则进入电梯程序for(i = 0; i < 5; ++i) (P1 = P1 << 1;Delay_ms( 100);) 一)while(1) 〃电梯程序的循环(if( (key = KBscan()) == 0x77) 〃若点阵按键右下角的按键(其代码为0x77)按下(Warnning(); 〃则报警) else (Destination(); 〃查询有无楼层请求到达if( destination1 >= lift) 〃请求的楼层比要到达的楼层高(Up(); 〃电梯向上走) else (〃否则电梯向下走;Down();)))return 0;)〃中断请求,将flag置1,表示要进入电梯程序void Int0() interrupt 0(flag = 1;)〃延时程序,以毫秒为单位,用软件计时,输入的参数void Delay_ms( uint Time)( 一uint i = 0, j = 0;for(i = 0; i < Time; ++i) (for(j = 0; j < 125; ++j);〃电梯向上走void Up() (uchar n, m; //n为所在楼层,m 为存储查询有无楼层请求的变量( uchar i;〃循环控制status = 1;〃置1表示电梯向上走for( n = lift; n <= destination1; ++n) 〃电梯到达目的楼层之前往上走(Display( n, 1); //没到达一楼就显示该楼层数lift = n;m = Represent(); if( m == 9) (Warnning();) else (request[m] = 1;)for(i = 1; i <= 8; ++i)〃若请求到达的楼层在所在楼层和目的楼层之间{〃则停下闪烁显示if( request[i] == 1 && i == n) //并将其对应的 request 清零{request[i] = 0; Flash( 1); ))) --n; lift = n;( Flash( 1);〃到达目的楼层闪烁显示该楼层)//电梯向下走void Down() {uchar n, m; //n为所在楼层,m 为存储查询有无楼层请求的变量uchar i;//循环控制//读取点阵键盘//报警键按下则报警〃有楼层请求到达〃将对应的request 置1for(i = 1; i <= 8; ++i)〃若请求到达的楼层在所在楼层和目的楼层之间{〃则停下闪烁显示if( request[i] == 1 && i == n) //并将其对应的 request 清零{request[i] = 0; Flash( 0);))) ++n; lift = n; Flash( 0);〃到达目的楼层闪烁显示该楼层)〃报警函数void Warnning() {TMOD = 0x10; //T1定时器初始化ET1 = 1; TH1 = 0xfc; TL1 = 0x0c; TR1 = 1; while(1) {P1=0x04; P2=0x07; Delay_ms( 5); P1=0x08; P2 = 0x3f; Delay_ms( 5); P1=0x10;status = 0;〃置1表示电梯向上走for( n = lift; n >= destinationl; --n) 〃电梯到达目的楼层之前往下走(Display( n, 0);楼层数lift = n;m = Represent(); if( m == 9) (Warnning();) else%(request[m] = 1;)//没到达一楼就显示该〃读取点阵键盘//报警键按下则报警〃有楼层请求到达〃将对应的request 置1P1=0x02; P2 = 0x6D; Delay_ms( 5); //显示STOPP2=0x73;Delay_ms( 5);if( KBScan() != 0x77) 〃报警键没有按{ 〃则跳出,并停止喇叭响break;) ))¥〃获取目的楼层void Destination() {uchar j, n; 〃j循环控制变量,n存储度点阵键盘变量n = Represent(); 〃有键按下request[n] = 1; 〃其对应的楼层request 置 1if( status == 1) 〃若电梯向上走则从高楼层到低楼层扫描〃以此达到判断优先级的目的!{for(j = 8; j >= 1; --j) {if( request[j] == 1){request[j] = 0; 〃哪一层有请求destination1 = j; 〃则将目的楼层设为该楼break; 〃并将其对应的request置1,然后跳出)),)else if( status == 0) 〃若电梯向下走则从低楼层到高楼层扫描{ 〃以此达到判断优先级的目的for(j = 1; j <= 8; ++j){if( request[j] == 1){request[j] = 0;destination1 = j; break;))〃显示某一楼层void Display( uchar n, uchar a)( uchar i, b;" 一一if(a == 1)( b=0x73;)else if(a == 0)( b = 0x5E;)for(i = 0; i < 60; ++i)P1=0x20;P2 = b;Delay_ms( 10);P1 = 0x02;P2 = TAB[n];Delay_ms( 10);//闪烁显示到达的楼层void Flash( uchar a) (uchar i, j, b;uchar m;if(a == 1) //a=1 表示向上(b = 0x73; //七段码P)表示向下/ else if(a == 0) //a=0(b = 0x5E; //七段码 d) for(i = 0; i < 5; ++i) {m = Represent(); 〃闪烁时判断有无楼层请求到达 request[m] = 1; for(j = 0; j < 15; ++j) 〃闪烁显示楼层和P 或者d(P1=0x20; P2 = b; Delay_ms( 10); P1 = 0x02; P2 = TAB[lift];Delay_ms( 10);)一for(j = 0; j < 15; ++j) (P1 = 0x20; P2 = b; Delay_ms( 10); P1 = 0x02; P2 = 0x00;Delay_ms( 10);}一)}》#include ""〃延时void dl_ms()( 一uchar i;for(i = 0; i < 200; ++i);〃点阵键盘扫描uchar KBScan() (uchar sccode, recode; //sccode 低位,recode 高位uchar i, a; //i循环控制,a 读取P0 口P0 = 0x0f;if( (P0 & 0x0f) != 0x0f) //有无键按下(dl_ms();〃消抖延时 if( (P0 & 0x0f) != 0x0f)〃有键按下则继续recode = 0x7f; for(i = 1; i <= 4; ++i) (〃先显示P 或者d 以及楼层数〃再显示P 或者d 而不显示楼层数〃以此达到闪烁的目的P0 = recode; 〃从P0的最高位开始扫描,即点阵键盘第四行if( (P0 & 0x0f) != 0x0f)# {a = P0; 〃若该行有键按下,则返回其代码sccode = a & 0x0f;recode = recode & 0xf0;return (sccode + recode);)else{recode = (recode >> 1) | 0x80; //若没有则扫描其上面一行))))return 0; )//解析出按键所代表的楼层uchar Represent(){uchar key, n;key = KBScan();switch( key){case 0xee: n = 1; break; case 0xed: n = 2; break; case 0xeb: n = 3; break; case 0xe7: n = 4; break; case 0xde: n = 5; break; case0xdd: n = 6; break; case 0xdb: n = 7; break; case 0xd7: n = 8; break; case 0x77: n = 9; break; default: n = 0; break;)return n; )。
基于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电梯的研究背景及意义电梯是高层宾馆、商城、住宅、多层厂房和仓库等高层建筑不可缺少的垂直方向的交通工具。
随着社会的发展,建筑物规模越来越大,楼层越来越多,对电梯的可靠性、舒适感和美学等方面的要求也有了更高的要求。
电梯是集机电一体的复杂系统,涉及机械传动、电气控制和土建等工程领域,而对现代电梯而言,应具有高度的安全性。
基于51单片机的8层电梯模拟控制

基于51单片机的8层电梯模拟控制摘要:电梯控制本是一个比较复杂的系统,在这里我们只是对电梯的控制进行模拟,没有考虑某些因素。
如:我们没有应用现实中的行程开关,电动机等重要器件,我们用红外线.LED等器件来对其进行模拟,本设计主要涉及到低压电气,红外通讯,单片机开发,PROTEL软件,PROTEUS软件,电子电路等知识。
关键词:电梯红外电动机LCD一、系统概述1)输入系统输入系统在本设计中主要是体现在电梯呼叫信号的发起的元件上.本系统中主要的输入设备有BUTTON(按钮)和红外接收装置。
BUTTON:有外呼叫和内呼叫两种.简单来说就是电梯内的按钮和电梯外的按钮.电梯内的按钮要比电梯外的多一些,这个不用说相信大家都知道;电梯外的主要用于电梯的呼叫,当电梯到达该呼叫楼层时,电梯自动开门后该呼叫请求会自动清掉,保证下次呼叫的正确性。
红外接收装置:由于本系统只是对电梯控制进行模拟,所以我们就只用了两套红外收发装置进行模拟。
一套专门用于断电保护人身安全的:当电梯运行在中间楼层时,我们用红外装置来监测复位时,电梯的停放情况,如果电梯并没有在最底层,那么我的系统会自动将电梯运行到最底层,这样保证了人的安全,也保证了电梯不会因为断电而无法运行。
另一套红外装置其实是本系统8层楼中8套行程限位的代表,当电梯运行到某一楼层时该楼层发射装置发射的红外信号会传递到电梯本身身上的红外接收装置,如果CPU每12秒收到了一次这个信号,那么说明电梯运行无误,否则CPU 将自动报警,并停止电梯的运行,当检修人员发现电梯出现故障后,按下检修开关,电梯自动运行到最底层,并显示当前电梯处于修理中,等检修师傅检修好后在次按下检修开关电梯就可以再次投入使用了.2)输出系统本设计中作为输出系统的元件有LCD,蜂鸣器,发光二极管和继电器。
LCD:本设计采用的是LM1602B液晶显示器.与红外收发装置一样,LCD我们也只用了两套,一套用于电梯箱内的当前信息显示;另一套用于电梯箱外,主要是给需要呼叫电梯的人一个选择的权利,因为一般必须先响应同方向的呼叫,后处理反方向呼叫。
基于51单片机模拟电梯控制系统

基于51单片机模拟电梯控制系统电梯是现代城市生活的重要交通工具之一,已经成为日常生活中不可或缺的一部分。
在高楼大厦中,电梯控制系统的作用变得越来越重要。
在这种情况下,开发一种基于51单片机的模拟电梯控制系统就尤为重要。
电梯的控制系统是电梯中最重要的部分之一。
当一位乘客按下电梯按钮时,电梯控制系统会接收到乘客所在的楼层信息,然后根据这个信息来控制电梯的运行。
因此,电梯控制系统需要非常高的准确性和可靠性。
技术实现在实现基于51单片机的模拟电梯控制系统时,要考虑以下几个方面:1. 楼层的检测和显示为了使电梯正常运行,需要使用传感器来检测和显示电梯所在的楼层。
可以使用光电传感器来实现。
当电梯运行到一个楼层时,光电传感器会检测到楼层号并发送信号给51单片机,然后单片机将此楼层号显示在电梯内的显示器上。
2. 电梯门的控制电梯门是必须保证安全的重要因素之一。
当乘客进入或离开电梯时,电梯门必须正确地打开和关闭。
应该使用红外传感器来检测是否有人在电梯门口。
如果没有人,则电梯门可以关闭,否则等待直到所有人进入或离开电梯。
3. 故障检测为了确保电梯的正常运行,应该安装故障检测系统来检测和记录任何可能的故障和警报。
这样可以快速诊断问题并及时修复。
4. 操作控制在电梯内安装按钮,使乘客可以选择他们要去的楼层。
在51单片机上,选择按钮的信息输入,以控制电梯的运行。
为了提高效率,应该安装一种预测算法,以确定电梯应该在哪个楼层停靠。
实现此系统所需的硬件技术包括光电传感器,红外传感器,按键开关,高亮度LED,数字LED显示器,关键电路以及MCU编程技术。
总结基于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电梯的研究背景及意义电梯是高层宾馆、商城、住宅、多层厂房和仓库等高层建筑不可缺少的垂直方向的交通工具。
随着社会的发展,建筑物规模越来越大,楼层越来越多,对电梯的可靠性、舒适感和美学等方面的要求也有了更高的要求。
电梯是集机电一体的复杂系统,涉及机械传动、电气控制和土建等工程领域,而对现代电梯而言,应具有高度的安全性。
51单片机模拟智能电梯系统代码及注释

#include<reg51.h>#define uint unsigned int#define uchar unsigned char//延时程序,以毫秒为单位,用软件计时,输入的参数为毫秒数void Delay_ms( uint Time);//电梯向上走void Up();//电梯向下走void Down();//报警函数void Warnning();//获取目的楼层void Destination();//显示某一楼层void Display( uchar n, uchar a);//闪烁显示到达的楼层void Flash( uchar a);//点阵键盘扫描uchar KBScan();//延时void dl_ms();//解析出按键所代表的楼层uchar Reprsent();#include "settings.h"uchar code TAB[16] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};sbit P0_0 = P0^0;sbit P0_1 = P0^1;sbit P0_2 = P0^2;sbit P0_3 = P0^3;sbit P0_4 = P0^4;sbit P0_5 = P0^5;sbit P0_6 = P0^6;sbit P0_7 = P0^7;sbit P1_0 = P1^0;uchar lift = 1;//电梯所在的楼层uchar destination1 = 1;//电梯的目的楼层uchar flag = 0;//进入电梯程序的标志uchar key;//按键的键码uchar request[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};//1~8楼有无请求,有请求为1 uchar status = 1;//电梯往上还是往下走,1为上,0为下//报警的响声的频率产生void Timer1() interrupt 3{P1_0 = ~P1_0;TH1 = 0xfc;TL1 = 0x0c;}int main(){uchar i;P0 = 0xff;P2 = 0x76; //数码管‘H’EA = 1; //开启外部中断INT0EX0 = 1;IT0 = 1;while(1) //检查flag标志{ //flag初始化为0if(flag == 1) //在中断中将其置1{break;}P1 = 0x01; //数码管跑马显示HDelay_ms( 100); //flag置1后则进入电梯程序for(i = 0; i < 5; ++i){P1 = P1 << 1;Delay_ms( 100);}}while(1) //电梯程序的循环{if( (key = KBscan()) == 0x77) //若点阵按键右下角的按键(其代码为0x77)按下{Warnning(); //则报警}else{Destination(); //查询有无楼层请求到达if( destination1 >= lift) //请求的楼层比要到达的楼层高{Up(); //电梯向上走}else{Down(); //否则电梯向下走}}}return 0;}//中断请求,将flag置1,表示要进入电梯程序void Int0() interrupt 0{flag = 1;}//延时程序,以毫秒为单位,用软件计时,输入的参数void Delay_ms( uint Time){uint i = 0, j = 0;for(i = 0; i < Time; ++i){for(j = 0; j < 125; ++j);}}//电梯向上走void Up(){uchar n, m; //n为所在楼层,m为存储查询有无楼层请求的变量uchar i; //循环控制status = 1; //置1表示电梯向上走for( n = lift; n <= destination1; ++n) //电梯到达目的楼层之前往上走{Display( n, 1); //没到达一楼就显示该楼层数lift = n;m = Represent(); //读取点阵键盘if( m == 9) //报警键按下则报警{Warnning();}else //有楼层请求到达{ //将对应的request置1request[m] = 1;}for(i = 1; i <= 8; ++i) //若请求到达的楼层在所在楼层和目的楼层之间{ //则停下闪烁显示if( request[i] == 1 && i == n) //并将其对应的request清零{request[i] = 0;Flash( 1);}}}--n;lift = n;Flash( 1); //到达目的楼层闪烁显示该楼层}//电梯向下走void Down(){uchar n, m; //n为所在楼层,m为存储查询有无楼层请求的变量uchar i; //循环控制status = 0; //置1表示电梯向上走for( n = lift; n >= destination1; --n) //电梯到达目的楼层之前往下走{Display( n, 0); //没到达一楼就显示该楼层数lift = n;m = Represent(); //读取点阵键盘if( m == 9) //报警键按下则报警{Warnning();}else //有楼层请求到达{ //将对应的request置1request[m] = 1;}for(i = 1; i <= 8; ++i) //若请求到达的楼层在所在楼层和目的楼层之间{ //则停下闪烁显示if( request[i] == 1 && i == n) //并将其对应的request清零{request[i] = 0;Flash( 0);}}}++n;lift = n;Flash( 0); //到达目的楼层闪烁显示该楼层}//报警函数void Warnning(){TMOD = 0x10; //T1定时器初始化ET1 = 1;TH1 = 0xfc;TL1 = 0x0c;TR1 = 1;while(1){P1 = 0x02; //显示STOPP2 = 0x6D;Delay_ms( 5);P1 = 0x04;P2 = 0x07;Delay_ms( 5);P1 = 0x08;P2 = 0x3f;Delay_ms( 5);P1 = 0x10;P2 = 0x73;Delay_ms( 5);if( KBScan() != 0x77) //报警键没有按{ //则跳出,并停止喇叭响TR1 = 0;break;}}}//获取目的楼层void Destination(){uchar j, n; //j循环控制变量,n存储度点阵键盘变量n = Represent(); //有键按下request[n] = 1; //其对应的楼层request置1if( status == 1) //若电梯向上走则从高楼层到低楼层扫描{ //以此达到判断优先级的目的for(j = 8; j >= 1; --j){if( request[j] == 1){request[j] = 0; //哪一层有请求destination1 = j; //则将目的楼层设为该楼break; //并将其对应的request置1,然后跳出}}}else if( status == 0) //若电梯向下走则从低楼层到高楼层扫描{ //以此达到判断优先级的目的for(j = 1; j <= 8; ++j){if( request[j] == 1){request[j] = 0;destination1 = j;break;}}}}//显示某一楼层void Display( uchar n, uchar a){uchar i, b;if(a == 1){b = 0x73;}else if(a == 0){b = 0x5E;}for(i = 0; i < 60; ++i){P1 = 0x20;P2 = b;Delay_ms( 10);P1 = 0x02;P2 = TAB[n];Delay_ms( 10);}}//闪烁显示到达的楼层void Flash( uchar a){uchar i, j, b;uchar m;if(a == 1) //a=1表示向上{b = 0x73; //七段码P}else if(a == 0) //a=0表示向下{b = 0x5E; //七段码d}for(i = 0; i < 5; ++i){m = Represent(); //闪烁时判断有无楼层请求到达request[m] = 1;for(j = 0; j < 15; ++j) //闪烁显示楼层和P或者d{P1 = 0x20; //先显示P或者d以及楼层数P2 = b; //再显示P或者d而不显示楼层数Delay_ms( 10); //以此达到闪烁的目的P1 = 0x02;P2 = TAB[lift];Delay_ms( 10);}for(j = 0; j < 15; ++j){P1 = 0x20;P2 = b;Delay_ms( 10);P1 = 0x02;P2 = 0x00;Delay_ms( 10);}}OPERATIONS.C#include "settings.h"//延时void dl_ms(){uchar i;for(i = 0; i < 200; ++i);}//点阵键盘扫描uchar KBScan(){uchar sccode, recode; //sccode低位,recode高位uchar i, a; //i循环控制,a读取P0口P0 = 0x0f;if( (P0 & 0x0f) != 0x0f) //有无键按下{dl_ms(); //消抖延时if( (P0 & 0x0f) != 0x0f) //有键按下则继续{recode = 0x7f;for(i = 1; i <= 4; ++i){P0 = recode; //从P0的最高位开始扫描,即点阵键盘第四行if( (P0 & 0x0f) != 0x0f){a = P0; //若该行有键按下,则返回其代码sccode = a & 0x0f;recode = recode & 0xf0;return (sccode + recode);}else{recode = (recode >> 1) | 0x80; //若没有则扫描其上面一行}}}}return 0;}//解析出按键所代表的楼层uchar Represent(){uchar key, n;key = KBScan();switch( key){case 0xee: n = 1; break;case 0xed: n = 2; break;case 0xeb: n = 3; break;case 0xe7: n = 4; break;case 0xde: n = 5; break;case 0xdd: n = 6; break;case 0xdb: n = 7; break;case 0xd7: n = 8; break;case 0x77: n = 9; break;default: n = 0; break;}return n;}。
基于C51单片机的模拟电梯系统设计报告
单片机原理与应用技术课程设计报告基于C51单片机控制的电梯自动控制系统专业班级: _____计算机xx_____姓名: ___xxx__时间: ______2012年6月 __指导教师: ______xxx _____一、设计要求1.基本功能:(1)显示:本设计要求实现5层控制,实时显示电梯所在楼层位置。
(2)升降控制:采用一台步进电机的正反转来实现电梯的升降。
(3)具备不可逆响应的功能:电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。
2.设计内容:(1)基于功能进行初步设计;(2)编写代码,实现功能;(3)完成课程设计报告。
二、电梯控制系统原理1.系统总体实现原理:本电梯模拟系统是基于C51单片机、4*4矩阵式键盘、步进电机和LED数码管来实现的。
通过4*4矩阵式键盘输入控制信息,C51单片机程序处理后来直接控制步进电机转动、LED 数码管显示。
电梯运行基本过程是:电梯默认初始停在一楼,LED数码管显示1,当按键按下1~5中的数时,通过程序进行判断是否升降(即步进电机正转反转)、升降几层(转几圈)。
与此同时,LED 数码管显示当前所在楼层(1~5)。
电梯在升降过程中,按其他键无效,即只有在电梯停下后,才可以进行下一轮的升降。
另外,站在电梯外边的人可以通过按上下键(一层只有上键,五层只有下键)来控制电梯到人所在楼层,例如,你站在3层,你按了上键,电梯不论在1~5层的哪一层都会先升降到3层,然后你进电梯,向前面所说的进行控制电梯升降。
图1 设计电路总框图3938373635343332212223242526272829301110图2 单片机最小系统电路2.各组成部分原理: (1)信号输入电路现以呼叫信号的输入为例,来说明信号输入及单片机识别原理。
如图3所示,采用P0口外接上拉电阻的并行输入形式,来输入外呼叫信号,本电路采用4×4矩阵键盘,列扫描法识别键值的原理,具体原理如下:a) 判断键盘中有无键按下:将全部行线P0.0-P0.3置低电平,列线P0.4-P0.7置高电平,然后检测列线的状态。
基于51单片机模拟电梯控制系统
基于51单片机模拟电梯控制系统简介本文档介绍了基于51单片机的模拟电梯控制系统。
电梯是现代建筑中不可或缺的交通工具,其安全性和运行效率直接影响到建筑的使用体验。
本文档将详细描述电梯控制系统的设计和实现过程,以及关键的技术细节。
系统架构硬件设计基于51单片机的模拟电梯控制系统的硬件设计主要包括以下几个模块:1.电梯控制板:该板包含了51单片机、电梯按钮、电梯状态显示器等组件,用于控制电梯的运行和状态显示。
2.电梯驱动器:该模块负责控制电梯的电机和门的开关,通过与电梯控制板的通信来实现电梯的运行控制。
3.按键模块:该模块用于接收用户输入的目标楼层,并将数据传输给电梯控制板。
4.故障检测模块:该模块用于检测电梯运行时的故障情况,并通过与电梯控制板的通信来报告故障信息。
软件设计电梯控制系统的软件设计主要包括以下几个部分:1.电梯控制算法:该算法用于根据用户输入的目标楼层和电梯当前的状态,确定电梯的运行方向和下一个停靠楼层。
2.状态机设计:该设计用于实现电梯的状态转换和运行控制。
通过状态机设计,可以实现电梯的顺序运行、停靠和开关门等功能。
3.中断处理程序:该程序用于处理硬件中断,包括接收用户输入的目标楼层和监测电梯的故障情况。
功能实现电梯运行控制通过电梯控制算法和状态机设计,可以实现电梯的运行控制。
电梯可以根据用户输入的目标楼层确定运行方向,并在到达目标楼层时停靠。
电梯状态显示电梯状态显示器可以显示电梯当前的楼层和运行状态,如上行、下行、停靠等。
通过电梯状态显示器,用户可以清楚地了解电梯的运行情况。
故障检测与报告电梯控制系统可以监测电梯的故障情况,如电机故障、门开关故障等。
一旦检测到故障,系统会通过显示器或其他方式向维护人员报告故障信息,以便及时修复。
基于51单片机的模拟电梯控制系统通过硬件设计和软件设计实现了电梯的运行控制、状态显示和故障检测等功能。
该系统可以提供安全、高效的电梯运行体验,为建筑的使用者提供便利。
基于AT89C51单片机电梯控制系统的设计
基于AT89C51单片机电梯控制系统的设计电梯控制系统是一个非常常用且重要的系统,在现代的高层建筑中几乎无处不在。
在这篇文章中,我们将介绍一个基于AT89C51单片机的电梯控制系统的设计。
首先,让我们了解一下电梯系统的基本原理。
一个标准的电梯系统由电梯井、电梯、电梯按钮、电梯控制系统和相关的传感器组成。
电梯井是电梯运行的区域,电梯则负责在楼层之间垂直运行。
电梯按钮用来选择目标楼层,电梯控制系统接收按钮的输入,并根据指定的楼层来控制电梯的运行。
传感器则用于检测电梯是否到达了指定楼层。
在本设计中,我们将使用AT89C51单片机作为电梯控制系统的核心芯片。
AT89C51是一种8位微控制器,具有强大的处理能力和丰富的接口功能。
它可以与其他外部设备进行通信,接收和发送数据,并控制电梯的运行。
首先,我们需要对电梯系统进行建模和设计。
我们将电梯系统划分为几个模块,包括电梯井、电梯、电梯按钮、电梯控制系统和传感器。
在电梯井中,我们需要安装楼层传感器,以便控制系统能够准确地检测电梯的位置。
这些传感器可以是光电传感器、红外线传感器或其他类型的传感器。
当电梯到达指定的楼层时,传感器将发送信号给控制系统。
电梯按钮用于选择目标楼层。
每个楼层都安装有一个电梯按钮。
当乘客按下按钮时,按钮会发送信号给控制系统,控制系统将根据输入的楼层信息计算出电梯的运行方向。
电梯本身主要由电机和轿厢构成。
电梯电机用于驱动轿厢在不同楼层之间垂直运动。
控制系统将控制电机的转动方向和速度,以实现电梯的运行。
最后,我们来了解电梯控制系统的设计。
电梯控制系统由AT89C51单片机和其他外部设备组成。
AT89C51单片机将接收来自按钮和传感器的输入信号,并根据输入信号来控制电梯的运行。
为了实现这个设计,我们需要将单片机与按钮和传感器连接。
单片机的GPIO引脚将与按钮连接,以接收按钮输入的信号。
传感器将与单片机的引脚连接,在电梯到达指定楼层时发送信号给单片机。
基于51单片机的电梯模型控制系统设计
主要研究内容
本课题的主要任务是 完成一个电梯系统的 调度模块,即根据每 个楼层不同顾客的按 键需求,让电梯做出 合理的判断,正确高 效地知道电梯完成各 项载客任务。
基于51单片机的电梯模 型控制电梯出 现在上海,是由美国奥 的斯公司于1901年安装 的。而今我国电梯已进 入了告诉发展时期。如 何一座城市、商场、医 院等地方都有电梯被广 泛应用者,直接与人们 的生活息息相关,成为 人们生活不可缺少的垂 直运输交通工具。
单片机在我们的生活中触手可及,尤其是在智 能仪表,实时控制,机电一体化等方面有着广 泛应用,毕业设计注重于对单片机的理解与应 用,掌握接口技术,中断技术,存储方式,时 钟方式,和控制方式,通过模拟控制电梯来学 习这些,这样样才更好的利用单片机,提高自 身综合能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要本文介绍了基于单片机的电梯控制系统,硬件部分主要由单片机最小系统模块、电梯内外电路按键模拟检测模块、电梯外请求发光管显示模块、楼层显示数码管模块、电梯上下行模块及模拟传感器模块等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电梯的研究背景及意义电梯是高层宾馆、商城、住宅、多层厂房和仓库等高层建筑不可缺少的垂直方向的交通工具。
随着社会的发展,建筑物规模越来越大,楼层越来越多,对电梯的可靠性、舒适感和美学等方面的要求也有了更高的要求。
电梯是集机电一体的复杂系统,涉及机械传动、电气控制和土建等工程领域,而对现代电梯而言,应具有高度的安全性。
事实上,电梯上已经采用了多项安全保护措施。
在设计电梯的时候,对机械零部件和电器元件都采取了很大的安全系数和保险系数。
然而,只有电梯的制造,安装调试、售后服务和维修保养都达到高质量,才能全面保证电梯的最终高质量。
在国外,已“法规”实行电梯制造、安装和维修一体化,实行由各制造企业认可的、法规认证的专业安装队伍维修单位,承担安装调试、定期维修和检查试验,从而为电梯运行的可靠性和安全性提供了保证。
因此,可以说乘坐电梯更安全。
美国一家保险公司对电梯的安全性做过认真地调查和科学计算,其结论是:乘电梯比走楼梯安全5倍。
掘资料统计,在美国乘其他交通工具的人数每年约为80亿人次,而乘电梯的人数每年却有540亿人次之多。
1.2 电梯的国内外发展状况在经济不断发展,科学技术日新月异的今天,楼的高度已和经济发展同样的速度成长起来。
作为建筑的中枢神经,电梯起着不可或缺的作用,电梯作为建筑物内的主要运输工具,像其他的交通工具一样,已经成为我们日常生活的一个不可缺少的组成部分。
一个国家的电梯需求总量,主要受其经济增长速度、城市化水平、人口密度及数量、国家产业结构等综合因素的影响。
在全球经济持续低迷的情况下,我国国民经济仍然以较高的速度持续增长,城市化水平不断提高。
这从客观上导致了我国电梯行业的空前繁荣景象,我国已经成为全球最大的电梯市场。
上世纪80年代以来,随着经济建设的持续高速发展,我国电梯需求量越来越大。
总趋势是上升的,目自口进入了“第三次浪潮”,2004年总产量超过了8万台,而且目前还没有减速的迹象。
从1949年建国以来全国共生产安装了6l万多台电梯。
尽管如此,我国的电梯远未达到饱和的程度。
全世界平均1000人有l台电梯,我国如果要达到这个水准,还需要增加70万台。
到那时候,全国在用电梯将达到130万台,每年仅报废更新就需要6万台。
到2005年,中国电梯的年产量达到13.5万台,与1980年相比,25年增长了59倍,产量每年平均增长17.8%。
2005年安装验收电梯124465台,截至05年底,我国的在用电梯总数已达651794台。
如此庞大的市场需求为我国电梯行业的发展创造了广阔的舞台!许多新技术和新产品,如无机房电梯、无齿轮曳引机、永磁同步拖动技术、远程监控技术等,国际上也是刚刚出现,我国就有许多企业可以生产了。
国产电梯以其高质量,低成本的优势赢得了越来越多的国内外客户,为逐步进入国际市场创造了有利条件。
中国电梯在亚洲市场占有越来越重要的位置,每年销售量己达l万台左右,约占亚洲市场的1/50,一些合资企业在出口创汇方面也做出了贡献。
当今世界,电梯的生产情况与使用数量已经成为衡量一个国家工业现代化程度的标志之一。
在一些发达的工业国家,电梯的使用相当普遍。
世界上有名的几家电梯公司,诸如:美国奥的斯公司、瑞士讯达公司、日本三菱和日立公司、芬兰科恩等,其电梯的产量已占世界市场的51%。
其中,奥的斯公司和三菱公司是世界上最大的电梯生产企业。
目前,国外除了以交流电梯取代直流电梯以外,在低层楼房越来越多的使用液压电梯。
此外,家用小型电梯将成走电梯家族中新的组成部分,将为人们的生活带来更大的方便。
第2章 电梯设计任务与要求2.1设计任务设计并制作一个电梯控制模型,并可以通过程序控制步进电机,实现电梯的运行控制。
电梯模型示意图如下图所示图2-1电梯控制模型示意图2.2设计要求(1)用A T89C51单片机,实现用步进电机带动电梯的4层楼电梯运行控制系统。
(2)每层楼都具有显示和请求的功能。
(3)显示电梯的运行状态并实时显示电梯所在楼层位置。
2 B CA D3 4 F G E H DJ 1 M第3章总体设计方案3.1设计思路本次设计的总思想是,用开关作为电梯内外的请求按键,按键和单片机的口相连,按键按下为低电平,将信号传送到单片机,单片机根据各口的信号进行判断处理,处理完毕后控制步进电机运动,实现电梯的上下运动,采用传感器确定电梯所在的楼层数及电梯准确停止的位置,用七段数码管显示电梯所在楼层,用LED灯显示电梯的运行上下运行状态。
3.2总体设计框图图3-1电梯单片机控制系统结构框图第4章电梯控制系统4.1电梯控制系统电梯运行的基本过程是:由外部的呼叫信号给出呼叫,控制系统判断电梯目前所处的位置和显示当前电梯所在的楼层,并与呼叫楼层进行对照确定电梯的运行方向。
若反方向,则改变方向到呼叫层,若同方向直接运行到呼叫层。
整个设计由两块51单片机分别控制:图4-1是电梯控制系统的外部请求电路和内部显示电路及电机驱动的原理图,图4-2是电梯控制系统的电梯所在位置的外部显示电路和当前电梯所在楼层索定电路原理图。
具体分析如下:图4-1 电梯外部请求电路和内部显示电路及电机驱动原理图图4-1为电梯控制系统的外部请求电路和内部显示电路及电机驱动的原理图,整个设计清晰明了,连接说明如下:P0口:接七段数码管,显示下一目标楼层。
P1口:接步进电机。
P1.0-P1.3接电机的驱动模块IN1-IN4。
P2-P3口:P2.0-P2.3接电梯内部的1-4的楼层请求按键。
P2.4接四楼下的请求键,P2.5和P2.6接三楼外部的上下请求按键,P2.7、P3.0接二楼的上下请求按键,P3.1接一楼上的请求按键。
图4-2 电梯控制系统的电梯所在位置的外部显示电路和当前电梯所在楼层索定电路原理图图4-2 电梯控制系统的电梯所在位置的外部显示电路和当前电梯所在楼层索定电路原理图,具体分析如下:P0口接电梯所在位置显示的七段数码管。
P1.0 接指示电梯上行的显示灯,P1.1接指示电梯下行的显示灯。
P2.0-P2.4分别接索定电梯所在位置的1-4楼的电刷模拟传感器。
4.2主要硬件设计器件介绍电梯控制系统的软件在硬件支持下运行,指挥系统进行相应的控制。
软件均采用MCS—51汇编语言写成,约占内存35K左右.由于电梯控制系统实时采集数据量少,没有在系统中扩展随机RAM,只使用了8031片内RAM来安排呼叫信号的记录,判断输出状态,满足了程序调用的需要。
在整个的设计过程中,主要有两大硬件:51单片机和六线四相步进电机,51单片机作为电梯的大脑起控制作用,步进电机作为电梯的动力之源,在51单片机的控制下带动电梯运动。
两者结合再加上附加电路组成了完整的电梯系统。
51单片机的主要功能和各引脚功能如下所示:图4-3 51单片机的引脚分布图51单片机的主要特性:◆与MCS-51 兼容◆4K字节可编程闪烁存储器◆全静态工作:0Hz-24Hz ◆三级程序存储器锁定◆128*8位内部RAM ◆32可编程I/O线◆两个16位定时器/计数器◆5个中断源◆可编程串行通道◆低功耗的闲置和掉电模式◆片内振荡器和时钟电路◆寿命:1000写/擦循环◆数据保留时间:10年51单片机的管脚说明:VCC:供电电压。
GND:接地P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH 编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3口管脚备选功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。