电梯控制程序源代码(带流程图-功能分解、源代码)

合集下载

电梯程序源代码

电梯程序源代码
{
OuterUpButton[floor-LowerLayers-1] = 1;//没有楼
}
}
}
}
cout<<endl;
//电梯外部各楼层输入下楼信号
cout<<"请电梯外部乘客输入下楼信号,"<<endl;
cout<<"多个楼层用空格隔开,结束输入0:";
while(true)
{
cin>>floor;
{
}
void CElevator::PressOuterButton(int direction, int floor)
{
if(direction==0)
OuterUpButton[floor-LowerLayers-1] = 1;
else
OuterDownButton[floor-LowerLayers-1] = 1;
#ifndef CELEVATOR_H
#define CELEVATOR_H
const int MostLayers = 100;
class CElevator
{
public:
CElevator();//构造函数
CElevator(int uLayers, int lLayers);//构造函数
CElevator(CElevator &myElevator);//拷贝构造函数
}
}
CElevator::CElevator(CElevator &myElevator):UpperLayers(myElevator.UpperLayers),LowerLayers( myElevator.LowerLayers)

五层电梯PLC控制源程序

五层电梯PLC控制源程序
项目1_lzfwhytest12 / 主程序 (OB1)
块:
主程序
作者:
创建时间: 2010.11.30
修改时间: 2010.12.10
15:48:59 11:33:54
L0.0 L0.1 LB1
符号 电梯上行状态 电梯下行状态 测试
变量类型
数据类型
注释
TEMP
BOOL
TEMP
BOOL
TEMP
BYTE
限位开关五层 S1.5
M0.0 /
M0.1
M0.1 /
S0.2
S0.3
S0.4
S0.5
S0.6
S2.1
S2.2
S2.3
S2.4
限位开关四层 S1.4
M0.0 /
M0.1
M0.1 /
S0.0 S0.1
S0.2
S0.3
S0.4
M0.1 S 1
M0.0 R 1
14 / 37
限位开关三层 S1.3
限位开关二层 S1.2
限位开关一层
S1.1 S 1
S1.2 R 1
S1.3 R 1
S1.4 R 1
S1.5 R 1
符号 限位开关一层
地址 I1.0
注释
网络 4
电梯下降到一层, 如果有外呼需求。则一层外呼指示灯灭 如果有内呼需求则一层内呼指示灯灭 (M0.0表示电梯下降,M0.2表示停下)
限位开关一层
S0.0 S2.1
S0.0 R 1
外呼选层三上
限位开关三层 /
符号 外呼选层三上 限位开关三层
地址 I0.4 I1.2
S0.4 S 1
注释
4 / 37
项目1_lzfwhytest12 / 主程序 (OB1)

电梯控制流程图

电梯控制流程图

4.4 流程图电梯上下行流程图见图4-4。

假设电梯停在N(N=1,2,3,4)楼,M楼有信号,M >N时,电梯上行;M<N时,电梯下行。

图4-4 电梯上下行流程图在电梯运行过程中,电梯上升(或下降)途中,任何反方向下降(或上升)的外呼梯信号均不响应,但如果反向外呼梯信号前方向无其它内、外呼梯信号时,则电梯响应该外号。

电梯应具有最远反向外梯响应功能。

例如:电梯在一楼,而同时有二层向下外呼梯,三层向下外呼梯,四层向下外呼梯,则电梯先去四楼响应四层向下外呼梯信号。

电梯响应流程图见图4-5。

图4-5 电梯响应流程图当电梯到达系统控制的目标楼层时,控制系统发出开门信号,电梯门开,当门开到开门限位时,计时3秒钟,然后关门,直到关门限位产生信号。

此过程期间,按开门按钮电梯门打开,按关门电梯门关闭,并且当门关闭动作时,门间来人会使光电传感器产生信号,控制系统发出开门信号,电梯开关门流程图见图4-6。

图4-6 电梯开关门流程图4.5 操作原理简要说明电梯由安装在各楼层厅门口的上升和下降呼叫按钮进行呼叫操纵,其操纵内容为电梯运行方向。

电梯轿箱内设有楼层内选按钮S1~S4,用以选择需停靠的楼层。

L1为一层指示、L2为二层指示、L3为三层指示、L4为四层指示,SQ1~SQ4为到位行程开关。

具体如下:1、开始时,电梯处于任意一层。

2、当有外呼梯信号到来时,电梯响应该呼梯信号,到达该楼层时,电梯停止运行,电梯门打开,延时3S后自动关门。

3、当有内呼梯信号到来时,电梯响应该呼梯信号,到达该楼层时,电梯停止运行,电梯门打开,延时3S后自动关门。

4、在电梯运行过程中,电梯上升(或下降)途中,任何反方向下降(或上升)的外呼梯信号均不响应,但如果反向外呼梯信号前方向无其它内、外呼梯信号时,则电梯响应该外号。

5、电梯应具有最远反向外梯响应功能。

例如:电梯在一楼,而同时有二层向下外呼梯,三层向下外呼梯,四层向下外呼梯,则电梯先去四楼响应四层向下外呼梯信号。

三层电梯控制系统程序设计 基于plc程序控制

三层电梯控制系统程序设计 基于plc程序控制

三层电梯控制系统plc课程设计一、内容摘要可编程控制器作为一种工业控制微型计算机,它以其编程方便、操作简单尤其是它的高可控性等优点,在工业生产过程中得到了广泛的应用。

它应用大规模集成电路,微型机技术和通讯技术的发展成果,逐步形成了具有多种优点和微型,中型,大型,超大型等各种规格的系列产品,应用于从继电器控制系统到监控计算机之间的许多控制领域。

随着社会的不断发展,楼房越来越高,而电梯成为了高层楼房的必须设备。

电梯从手柄开关操纵电梯、按钮控制电梯发展到了现在的群控电梯,为高层运输做出了不可磨灭的贡献。

PLC在电梯升降控制上的应用主要体现在它的逻辑开关控制功能。

由于PLC具有逻辑运算,计数和定时以及数据输入输出的功能。

在电梯升降过程中,各种逻辑开关控制与PLC很好的结合,很好的实现了对电梯的控制。

在PLC课程设计中,我组设计了一个三层电梯控制系统,并且将西门子公司S7-200系列可编程控制器与其结合并应用起来,在学完《电气控制与PLC应用》课程后,我们在设计过程中较为得心应手,不至于从头开始。

整个过程包括了方案讨论,程序设计,程序修改,上机调试等,在程序设计方面花了比较多的时间,主要考虑到电梯分别停在一层、二层和三层时在其他楼层呼叫等各种情况。

每当遇到困难时,我组都积极与老师联系讨论,深入分析研究问题,在整个过程中,我与我的组员都相互配合,相互学习。

二、目录1. 概述-------------------------------------------------------------2. 硬件电路设计及描述----------------------------------------3. 软件设计流程及描述----------------------------------------4. 源程序代码----------------------------------------------------5. 课程设计体会-------------------------------------------------6. 参考文献-------------------------------------------------------1. 概述我组设计的三层电梯控制系统的主要功能有:①楼层指示灯亮时表示停在相应的楼层,②每当停在各楼层时其楼层指示灯闪烁1秒接着常亮,③有呼叫的楼层有响应,反之没有,④电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向的呼叫均无效。

51单片机模拟智能电梯系统代码及注释

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;}。

电梯控制程序源代码(带流程图-功能分解、源代码)

电梯控制程序源代码(带流程图-功能分解、源代码)

电梯控制程序源代码(带流程图-功能分解、源代码)《综合电子创新训练》研究报告研究题目:CTS1600-1控制技术综合试验院系名称:专业名称:学生姓名:指导教师:xxxx年 xx月 xx日xxxxxxxxxx目录第一章绪论 (1)1.1课题背景与目的 (1)1.2课题研究方法 (1)第二章电梯模型硬件设备 (2)2.1 实验单片机模型与接口定义 (2)2.1.1 实验用单片机 (2)2.1.2 单片机接口定义 (3)2.1.3 I/O接口DATA控制命令表 (4)2.2 电梯控制命令说明 (6)2.3 实验用电梯模型 (8)第三章与电梯模型相关的实验程序 (10)3.1数码管连续显示 (10)3.1.1 程序流程图 (10)3.1.2 功能简介 (10)3.1.3 功能实现过程 (11)3.1.4 问题的解决及收获 (11)3.2 外部按键灯连续闪烁 (12)3.2.1 程序流程图 (12)3.2.2 功能简介 (12)3.2.3 功能实现过程 (12)3.2.4 问题的解决及收获 (13)3.3 键、灯、数码管 (14)3.3.2 功能简介 (14)3.3.3 功能实现过程 (14)3.3.4 问题的解决及收获 (15)3.4 外部按键上下行 (16)3.4.1 程序流程图 (16)3.4.2 功能简介 (16)3.4.3 功能实现过程 (17)3.4.4 问题的解决及收获 (18)3.5 计算器 (19)3.5.1 程序流程图 (19)3.5.2 功能简介 (21)3.5.3 功能实现过程 (21)3.5.4 问题的解决及收获 (22)3.6 密码锁 (23)3.6.1程序流程图 (23)3.6.2功能简介 (23)3.6.3实现功能过程 (24)3.6.4问题的解决及收获 (24)3.7逐层停自动开关门循环 (25)3.7.1程序流程图 (25)3.7.2功能简介 (27)3.7.3实现功能过程 (27)3.7.4问题的解决及收获 (27)3.8 可记录顺序逐层停自动开关门 (28) 3.8.2功能简介 (28)3.8.3实现功能过程 (29)3.8.4问题的解决及收获 (29)3.9 外部按键电梯 (30)3.9.1 主程序 (30)3.9.2 开关门模块 (31)3.9.3 上下行模块 (32)3.9.4 LED模块 (34)第四章电梯模型完整控制程序 (36)4.1 完整控制程序(main函数) (36)4.1.1 功能说明 (36)4.1.2 功能实现过程 (37)4.1.3 问题的解决及收获 (37)4.2 按键扫描模块(getto函数) (37)4.2.1功能简介 (38)4.2.2 问题的解决及收获 (38)4.3 当前层判断模块(getat函数) (38)4.3.1 功能简介 (38)4.3.2 问题的解决及收获 (38)4.4 电梯门的选通、禁止模块(DoorEnable函数) (38) 4.4.1 功能简介 (38)4.4.2 问题的解决及收获 (38)4.5 电梯开关门模块(openandclose函数) (39)4.5.2 功能实现过程 (39)4.5.3 问题的解决及收获 (39)第五章总结与致谢 (41)5.1 总结 (41)5.2 致谢 (41)附录控制电梯模型相关程序 (42)附录一数码管连续显示 (42)附录二外部按键灯连续闪烁 (43)附录三外部按键逐个亮灭 (45)附录四键、灯、数码管 (47)附录五外部按键上下行 (49)附录六计算器 (51)附录七密码锁 (56)附录八逐层停开关门循环 (59)附录九可记录顺序逐层停自动开关门 (64)附录十外部按键电梯 (70)附录十一完整电梯程序 (77)图目录Figure 1 凌阳单片机 (2)Figure 2 凌阳单片机接口定义 (3)Figure 3 实验用电梯模型 (9)Figure 4 数码管连续显示流程图 (10)Figure 5 外部按键灯连续闪烁流程图 (12)Figure 6 LED1to7流程图 (13)Figure 7 键、灯、数码管流程图 (14)Figure 8 外部按键上下行流程图 (16)Figure 9 计算器数字扫描函数流程图 (19)Figure 10 计算器主函数流程图 (20)Figure 11 密码锁流程图 (23)Figure 12 逐层停自动开关门循环main函数 (25)Figure 13 逐层停自动开关门循环AtAndTo函数 (26) Figure 14 逐层停自动开关门循环OpenAndClose函数 (26) Figure 15 可记录顺序逐层停自动开关门 (28)Figure 16 外部按键电梯主函数流程图 (30)Figure 17 外部按键电梯开关门函数流程图 (31)Figure 18 外部按键电梯上下行函数流程图 (32)Figure 19 外部按键电梯LED函数流程图 (34)Figure 20 外部按键电梯btLED函数流程图 (35)Figure 21 电梯完整程序主函数 (36)Figure 22 电梯完整程序openandclose函数流程图 (39)第一章绪论1.1课题背景与目的现代社会中,电梯已经成为不可缺少的运输设备。

PLC控制电梯程序

PLC控制电梯程序

可编程控制器控制电梯系统的设计[摘要]: 随着微电子技术和计算机技术的迅速发展,PLC(即可编程控制器)在工业控制领域内得到十分广泛地应用。

PLC是一种基于数字计算机技术、专为在工业环境下应用而设计的电子控制装置,它采用可编程序的存储器,用来存储用户指令,通过数字或模拟的输入/输出,完成一系列逻辑、顺序、定时、记数、运算等确定的功能,来控制各种类型的机电一体化设备和生产过程。

[关键词]: 可编程控制器自动控制计算机技术电梯PLC AUTOMATIVE CONTROLCOMPUTER TECNOLOGY ELEV ATOR目录前言PLC控制电梯的意义 (3)第一章概述 (4)1.1 PLC的由来 (4)1.2 PLC的分类与特点 (5)1.3 PLC的应用领域与发展趋势 ..............................5. 1.4 PLC的结构和工作原理 .. (5)1.5 PLC程序的表达方式 (6)1.6 PLC的工作方式 (6)1.7 PLC应用系统的设计步骤 (6)1.8 研究目标 (9)第二章 PLC控制电梯的设计 (9)2.1 工艺要求 (9)2.2 方案与控制流程 (10)2.3 梯形图设计与程序指令 (11)2.4 说明部分 (20)第三章讨论 (22)参考文献 (23)编后语 (24)附图1 (25)前言———PLC控制电梯的意义电梯是随着高层建筑的兴建而发展起来的一种垂直运输工具。

多层厂房和多层仓库需要有货梯;高层住宅需要有住宅梯;百货大楼和宾馆需要有客梯,自动扶梯……。

在现代社会,电梯已像汽车、轮船一样,成为人类不可缺少的交通运输工具。

据统计,美国每天乘电梯的人次多于乘载其它交通工具的人数。

当今世界,电梯的使用量已成为衡量现代化程度的标志之一。

追溯电梯这种升降设备的历史,据说它起源于公元前236年的古希腊。

当时有个叫阿基米德的人设计出-----人力驱动的卷筒式卷扬机。

电梯控制代码

电梯控制代码

#include"reg52.h"#define uchar unsigned char#define uint unsigned intuchar DZ1[]={0x08,0x14,0x2a,0x08,0x08,0x08};uchar DZ2[]={0xbf,0xdf,0xef,0xf7,0xfd,0xfb};uchar DZ3[]={0x08,0x08,0x08,0x2a,0x14,0x08};uchar shuma[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};ucharLC[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xedb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77}; //楼层编码uchar key,dir,floor,zancun,s,x,p2;sbit DA=P0^0;sbit DB=P0^1;sbit DC=P0^2;sbit DD=P0^3;sbit w1=P0^4;//数码管位选1sbit w2=P0^5;//数码管位选2sbit wa=P0^6;//点阵阳极使能sbit wb=P0^7;//点阵阴极使能sbit EN=P3^0;//电机使能sbit CW=P3^1;//方向控制sbit clock=P3^2;//速度控制sbit red=P3^3;//上键显示sbit green=P3^4;//下键显示sbit beep=P3^5;//报警void delay1(uchar z){uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void delay2(uchar z){uchar i,j;for(i=z;i>0;i--){if(key==0)//减短代码运行时间,使用更多时间扫描键盘break;elsefor(j=110;j>0;j--);}}uchar key_scan(void){uchar scode,recode;P1=0xf0;if((P1&0xf0)!=0xf0){delay1(2);if((P1&0xf0)!=0xf0)//有键按下{scode=0xfe;//辅助变量,设定行while((scode&0x10)!=0){P1=scode;//将某一行设为0,从而判断是否为该行if((P1&0xf0)!=0xf0){recode=P1&0xf0;//列码scode=scode&0x0f;//行码return(scode+recode);//按键坐标}elsescode=(scode<<1)|0x01;//下一行判断}}}return 0;}void display1(void)//上箭头显示{uchar i,j;for(i=0;i<1;i++){wa=1;P2=DZ1[i];for(j=500;j>0;j--);wa=0;wb=1;P2=DZ2[i];for(j=500;j>0;j--);wb=0;}}void display2(void)//下箭头显示uchar i,j;for(i=0;i<1;i++){wa=1;P2=DZ3[i];for(j=500;j>0;j--);wa=0;wb=1;P2=DZ2[i];for(j=500;j>0;j--);wb=0;}}void shuxian(uchar z)//数码管显示{uchar temp;w1=0;P0=shuma[z/10];temp=P0;P0=P0|temp;w1=1;w2=0;P0=shuma[z%10];temp=P0;P0=P0|temp;w2=1;}void init(void)//初始化{dir=0;w1=1;w2=1;wa=0;wb=0;floor=0;zancun=1;beep=1;EN=0;EA=1;ET1=1;//T1中断允许TMOD=0x10;//T1的8位计数TH1=(65536-50000)/256;TL1=(65536-50000)%256;void main(void){init();while(1){key=key_scan();if(key!=0){delay2(10);if(key!=0){TR1=1;switch(key){case 14:dir=1;//按键储存上键值break;case 15:dir=2;//按键储存下键值break;// default ;}if(dir==1){shuxian(s);display1();if((zancun-floor)>=0){switch(key){case 1:floor=1;break;case 2:floor=2;break;case 3:floor=3;break;case 4:floor=4;break;case 5:floor=5;break;case 6:floor=6;break;case 7:floor=7;break;case 8:floor=8;break;case 9:floor=9;break;case 10:floor=10;break;case 11:floor=11;break;case 12:floor=12;break;case 13:floor=13;break;case 14:floor=14;break;}}else //不符逻辑报警停止电机转动beep=0;EN=0;TR1=0;}if(dir==0){shuxian(x);display2();if((zancun-floor)<=0){switch(key){case 1:floor=1;break;case 2:floor=2;break;case 3:floor=3;break;case 4:floor=4;break;case 5:floor=5;break;case 6:floor=6;break;case 7:floor=7;break;case 8:floor=8;break;case 9:floor=9;break;case 10:floor=10;break;case 11:floor=11;break;case 12:floor=12;break;case 13:floor=13;break;case 14:floor=14;break;}}else //不符逻辑报警停止电机转动EN=0;TR1=0;beep=0;}}TR1=0;}}}void timer1(void) interrupt 3 using 0{uchar t;uint i;TH1=(65536-50000);TL1=(65536-50000);if(t==20){clock=~clock;//调节电机速度i++;}if(i==1000){if(dir==1){s++;zancun++;//上键值暂存}if(dir==2){x--;zancun--;//下键值暂存}}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《综合电子创新训练》研究报告研究题目:CTS1600-1控制技术综合试验院系名称:专业名称:学生姓名:指导教师:xxxx年 xx月 xx日xxxxxxxxxx目录第一章绪论 (1)1.1课题背景与目的 (1)1.2课题研究方法 (1)第二章电梯模型硬件设备 (2)2.1 实验单片机模型与接口定义 (2)2.1.1 实验用单片机 (2)2.1.2 单片机接口定义 (3)2.1.3 I/O接口DATA控制命令表 (4)2.2 电梯控制命令说明 (6)2.3 实验用电梯模型 (8)第三章与电梯模型相关的实验程序 (10)3.1数码管连续显示 (10)3.1.1 程序流程图 (10)3.1.2 功能简介 (10)3.1.3 功能实现过程 (11)3.1.4 问题的解决及收获 (11)3.2 外部按键灯连续闪烁 (12)3.2.1 程序流程图 (12)3.2.2 功能简介 (12)3.2.3 功能实现过程 (12)3.2.4 问题的解决及收获 (13)3.3 键、灯、数码管 (14)3.3.2 功能简介 (14)3.3.3 功能实现过程 (14)3.3.4 问题的解决及收获 (15)3.4 外部按键上下行 (16)3.4.1 程序流程图 (16)3.4.2 功能简介 (16)3.4.3 功能实现过程 (17)3.4.4 问题的解决及收获 (18)3.5 计算器 (19)3.5.1 程序流程图 (19)3.5.2 功能简介 (21)3.5.3 功能实现过程 (21)3.5.4 问题的解决及收获 (22)3.6 密码锁 (23)3.6.1程序流程图 (23)3.6.2功能简介 (23)3.6.3实现功能过程 (24)3.6.4问题的解决及收获 (24)3.7逐层停自动开关门循环 (25)3.7.1程序流程图 (25)3.7.2功能简介 (27)3.7.3实现功能过程 (27)3.7.4问题的解决及收获 (27)3.8 可记录顺序逐层停自动开关门 (28)3.8.2功能简介 (28)3.8.3实现功能过程 (29)3.8.4问题的解决及收获 (29)3.9 外部按键电梯 (30)3.9.1 主程序 (30)3.9.2 开关门模块 (31)3.9.3 上下行模块 (32)3.9.4 LED模块 (34)第四章电梯模型完整控制程序 (36)4.1 完整控制程序(main函数) (36)4.1.1 功能说明 (36)4.1.2 功能实现过程 (37)4.1.3 问题的解决及收获 (37)4.2 按键扫描模块(getto函数) (37)4.2.1功能简介 (38)4.2.2 问题的解决及收获 (38)4.3 当前层判断模块(getat函数) (38)4.3.1 功能简介 (38)4.3.2 问题的解决及收获 (38)4.4 电梯门的选通、禁止模块(DoorEnable函数) (38)4.4.1 功能简介 (38)4.4.2 问题的解决及收获 (38)4.5 电梯开关门模块(openandclose函数) (39)4.5.2 功能实现过程 (39)4.5.3 问题的解决及收获 (39)第五章总结与致谢 (41)5.1 总结 (41)5.2 致谢 (41)附录控制电梯模型相关程序 (42)附录一数码管连续显示 (42)附录二外部按键灯连续闪烁 (43)附录三外部按键逐个亮灭 (45)附录四键、灯、数码管 (47)附录五外部按键上下行 (49)附录六计算器 (51)附录七密码锁 (56)附录八逐层停开关门循环 (59)附录九可记录顺序逐层停自动开关门 (64)附录十外部按键电梯 (70)附录十一完整电梯程序 (77)图目录Figure 1 凌阳单片机 (2)Figure 2 凌阳单片机接口定义 (3)Figure 3 实验用电梯模型 (9)Figure 4 数码管连续显示流程图 (10)Figure 5 外部按键灯连续闪烁流程图 (12)Figure 6 LED1to7流程图 (13)Figure 7 键、灯、数码管流程图 (14)Figure 8 外部按键上下行流程图 (16)Figure 9 计算器数字扫描函数流程图 (19)Figure 10 计算器主函数流程图 (20)Figure 11 密码锁流程图 (23)Figure 12 逐层停自动开关门循环main函数 (25)Figure 13 逐层停自动开关门循环AtAndTo函数 (26)Figure 14 逐层停自动开关门循环OpenAndClose函数 (26)Figure 15 可记录顺序逐层停自动开关门 (28)Figure 16 外部按键电梯主函数流程图 (30)Figure 17 外部按键电梯开关门函数流程图 (31)Figure 18 外部按键电梯上下行函数流程图 (32)Figure 19 外部按键电梯LED函数流程图 (34)Figure 20 外部按键电梯btLED函数流程图 (35)Figure 21 电梯完整程序主函数 (36)Figure 22 电梯完整程序openandclose函数流程图 (39)第一章绪论1.1课题背景与目的现代社会中,电梯已经成为不可缺少的运输设备。

电梯的存在使得每幢高层建筑的交通更为便利。

电梯控制技术的发展主要经历了三个阶段:继电器控制阶段,微机控制阶段,现场总线控制阶段。

随着经济的高速发展,微电子技术、计算机技术和自动控制技术也得到了迅速发展,交流变频调速技术已经进入一个崭新的时代,其应用越来越广。

电梯是现代高层建筑的垂直交通工具,其设计要求稳定性、安全性及高。

随着人们生活水平的不断提高,对电梯的要求的也相应提高,电梯得到了快速发展。

电梯模型将机械和电气两方面有机地结合起来,充分体现了机电结合的特点,同时微机控制即单片机控制的电梯在成本上较低,同时还有着较高的精度,非常适合在学生机电实验方面得到广泛的应用,可以提高大家的编程能力,加深对单片机的理解和应用,同时增强创新精神和团队合作精神。

1.2课题研究方法参照凌阳SPCE061A开发的相关资料,加深对控制电梯模型的单片机的了解,进行61板的相关实验,掌握单片机实现基本功能的技术。

对单片机编写程序,以达到控制电梯模型的目的。

第二章电梯模型硬件设备2.1 实验单片机模型与接口定义2.1.1 实验用单片机实验用单片机为凌阳SPCE061A微控制器(简称61板),是以凌阳16位单片机SPCE061A为核心的精简开发-仿真-电路板。

61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路、复位电路等,采用电池供电,方便携带。

SPCE061A 是继u’nSP™系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。

跟市面上常见的avr、51等单片机相比,这款单片机具有一个绝招:语言功能。

与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。

较高的处理速度使u’nSP™能够非常容易地、快速地处理复杂的数字信号。

SPCE061A主要包括输入/输出端口、定时/计数器、数/模转换、模/数转换、串行设备输入/输出、通用异步串行接口、低电压检测和复位等部分,且内置在线仿真电路ICE接口,较高的处理速度使其能够快速地处理复杂的数字信号。

本电梯模型就是采用此单片机进行程序编写和实现电梯的运行控制。

Figure 1 凌阳单片机2.1.2 单片机接口定义实验用单片机接口定义如图,其中A 口为输入,B 口为输出。

+—三层下四层下 一层到达二层到达 三层到达 四层到达开门关门+ —— +三层下灯四层下灯开门到位关门到位— — Figure 2 凌阳单片机接口定义2.1.3 I/O接口DATA控制命令表单片机A口DATA控制命令表单片机A口DATA控制命令表单片机接口属性设置:*P_IOA_Dir=0*P_IOA_Attrib=0*P_IOA_Data=0 (设A0-A15口为输入)*P_IOB_Dir=0xf3ff*P_IOB_Attrib=0xf3ff (设B0-B9口为输出,B10、B11口为输入)*P_IOB_Data=0;2.2 电梯控制命令说明1.一层上按钮按下,*P_IOA_Data输入值为0x0010;使一层上按键灯亮起的命令为:*P_IOB_Data=0x0010,同时其它层按键灯熄灭;如果要使其它层按键灯不受此按键灯影响,保持原来的状态,则输入的命令应为:*P_IOB_Data=0x0010| P_IOB_Data;2.二层上按钮按下,*P_IOA_Data输入值为0x0020使二层上按键灯亮起的命令为:*P_IOB_Data=0x0020同时其它层按键灯熄灭;如果要使其它层按键灯不受此按键灯影响,保持原来的状态,则输入的命令应为:*P_IOB_Data=0x0020|P_IOB_Data;3.二层下按钮按下,*P_IOA_Data输入值为0x0040使二层下按键灯亮起的命令为:*P_IOB_Data=0x0040时其它层按键灯熄灭;如果要使其它层按键灯不受此按键灯影响,保持原来的状态,则输入的命令应为:*P_IOB_Data=0x0040|P_IOB_Data;4.三层上按钮按下,*P_IOA_Data输入值为0x0080使三层上按键灯亮起的命令为:*P_IOB_Data=0x0080;同时其它层按键灯熄灭;如果要使其它层按键灯不受此按键灯影响,保持原来的状态,则输入的命令应为:*P_IOB_Data=0x0080| P_IOB_Data;5.三层下按钮按下,*P_IOA_Data输入值为0x0100,使三层下按键灯亮起的命令为:*P_IOB_Data=0x0100,同时其它层按键灯熄灭;如果要使其它层按键灯不受此按键灯影响,保持原来的状态,则输入的命令应为:*P_IOB_Data=0x0100| P_IOB_Data;6.四层下按钮按下,*P_IOA_Data输入值为0x0200,使四层上按键灯亮起的命令为:*P_IOB_Data=0x0200,同时其它层按键灯熄灭;如果要使其它层按键灯不受此按键灯影响,保持原来的状态,则输入的命令应为:*P_IOB_Data=0x0200| P_IOB_Data;7.电梯内部开门按钮按下,*P_IOA_Data输入值为0x4000,使电梯开门的命令为:*P_IOB_Data=0x000c;8.电梯内部关门按钮按下,*P_IOA_Data输入值为0x8000;使电梯关门的命令为:*P_IOB_Data=0x0008。

我们为了能够简化我们的程序,我们在头文件define.h中定义了直观易懂的单词来表示数字指令,这样使得编程过程更加容易直观,并且使得程序的可读性更强,但是这种方法是在之前不断地尝试的基础上才逐渐摸索出来的,因而在后来编写的程序中普遍用到了这种方法,而在开始训练阶段编写的程序还往往是使用数字型的指令,具体的定义如下:#ifndef __DEFINE_h__#define __DEFINE_h__#define IOA *P_IOA_Data#define IOB *P_IOB_Data#define uint unsigned int#define uchar unsigned char#define ulong unsigned long#define stop 0x0000#define down 0x0002#define up 0x0003#define bt1up 0x0010#define bt2up 0x0020#define bt2down 0x0040#define bt3up 0x0080#define bt3down 0x0100#define bt4down 0x0200#define btin1 0x0001#define btin2 0x0002#define btin3 0x0004#define btin4 0x0008#define btopen 0x4000#define btclose 0x8000#define openok 0x0400#define closeok 0x0800#define down 0x0002#define up 0x0003#define close 0x0008#define open 0x000c#define L1 0x1000#define L2 0x2000#define L3 0x3000#define L4 0x4000#define L1up 0x0010#define L2up 0x0020#define L2down 0x0040#define L3up 0x0080#define L3down 0x0100#define L4down 0x0200#define at1 0x0400#define at2 0x0800#define at3 0x1000#define at4 0x2000#endif同时由于看门狗在程序中频繁出现,故定义看门狗函数dog方便使用:#include "spce061A.h"#include "dingyi.h"void dog(){*P_Watchdog_Clear=0x0001;}2.3 实验用电梯模型Figure 3 实验用电梯模型第三章与电梯模型相关的实验程序3.1数码管连续显示3.1.1 程序流程图Figure 4 数码管连续显示流程图3.1.2 功能简介程序初始化完成后,数码管从0连续变化到7,再从7连续变化到1。

相关文档
最新文档