电梯控制程序源代码带流程图功能分解源代码.docx
《电梯控制程序源代码带流程图功能分解源代码.docx》由会员分享,可在线阅读,更多相关《电梯控制程序源代码带流程图功能分解源代码.docx(93页珍藏版)》请在冰豆网上搜索。
电梯控制程序源代码带流程图功能分解源代码
电梯控制程序源代码(带流程图-功能分解、源代码)
————————————————————————————————作者:
————————————————————————————————日期:
《综合电子创新训练》研究报告
研究题目:
CTS1600-1控制技术综合试验
院系名称:
专业名称:
学生姓名:
指导教师:
xxxx年xx月xx日
xxxxxxxxxx
图目录
第一章绪论
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接口,较高的处理速度使其能够快速地处理复杂的数字信号。
本电梯模型就是采用此单片机进行程序编写和实现电梯的运行控制。
Figure1凌阳单片机
2.1.2单片机接口定义
实验用单片机接口定义如图,其中A口为输入,B口为输出。
+—
去一层三层下
去二层四层下
去三层一层到达
去四层二层到达
一层上三层到达
二层上四层到达
二层下开门
三层上关门
+—
—+
电梯上下运行(1上0下)三层下灯
电梯运行选通(1行0停)四层下灯
开关门运行(1开0关)开门到位
开关门选通(1行0禁)关门到位
一层上灯
二层上灯
二层下灯
三层上灯
——
Figure2凌阳单片机接口定义
2.1.3I/O接口DATA控制命令表
单片机A口DATA控制命令表
A口
(信号输入)
*P_IOA_Data
接口编号
电梯动作
0x0001
A0
去一层(内部按键)
0x0002
A1
去二层(内部按键)
0x0004
A2
去三层(内部按键)
0x0008
A3
去四层(内部按键)
0x0010
A4
一层上(外部按键)
0x0020
A5
二层上(外部按键)
0x0040
A6
二层下(外部按键)
0x0080
A7
三层上(外部按键)
0x0100
A8
三层下(外部按键)
0x0200
A9
四层下(外部按键)
0x0400
A10
一层到达(外部按键)
0x0800
A11
二层到达(外部按键)
0x1000
A12
三层到达(外部按键)
0x2000
A13
四层到达(外部按键)
0x4000
A14
开门(内部按键)
0x8000
A15
关门(内部按键)
单片机A口DATA控制命令表
A口
(信号输入)
*P_IOB_Data
接口编号
电梯动作
0x0001
B0
电梯上下运行(1上0下)
0x0002
B1
电梯运行选通(1行0停)
0x0004
B2
开关门运行(1开0关)
0x0008
B3
开关门选通(1行0禁)
0x0010
B4
一层上灯
0x0020
B5
二层上灯
0x0040
B6
二层下灯
0x0080
B7
三层上灯
0x0100
B8
三层下灯
0x0200
B9
四层下灯
0x0400
B10
开门到位
0x0800
B11
关门到位
0x1000
B12
数码管
0x2000
B13
数码管
0x4000
B14
数码管
0x8000
B15
单片机接口属性设置:
*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__
#defineIOA*P_IOA_Data
#defineIOB*P_IOB_Data
#defineuintunsignedint
#defineucharunsignedchar
#defineulongunsignedlong
#definestop0x0000
#definedown0x0002
#defineup0x0003
#definebt1up0x0010
#definebt2up0x0020
#definebt2down0x0040
#definebt3up0x0080
#definebt3down0x0100
#definebt4down0x0200
#definebtin10x0001
#definebtin20x0002
#definebtin30x0004
#definebtin40x0008
#definebtopen0x4000
#definebtclose0x8000
#defineopenok0x0400
#definecloseok0x0800
#definedown0x0002
#defineup0x0003
#defineclose0x0008
#defineopen0x000c
#defineL10x1000
#defineL20x2000
#defineL30x3000
#defineL40x4000
#defineL1up0x0010
#defineL2up0x0020
#defineL2down0x0040
#defineL3up0x0080
#defineL3down0x0100
#defineL4down0x0200
#defineat10x0400
#defineat20x0800
#defineat30x1000
#defineat40x2000
#endif
同时由于看门狗在程序中频繁出现,故定义看门狗函数dog方便使用:
#include"spce061A.h"
#include"dingyi.h"
voiddog()
{
*P_Watchdog_Clear=0x0001;
}
2.3实验用电梯模型
第三章与电梯模型相关的实验程序
3.1数码管连续显示
3.1.1程序流程图
Figure4数码管连续显示流程图
3.1.2功能简介
程序初始化完成后,数码管从0连续变化到7,再从7连续变化到1。
3.1.3功能实现过程
通过定义一个指示当前数码管显示数值的变量,以该变量为循环条件,每次循环结束后变量自动加1,即指示下一个数码管显示数值,并且通过延时函数使得输出持续一段时间一边观察现象。