嵌入式系统程序设计基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自动电梯控制系统的4个模块中,因为初始化部 分工作较少,可以把它和算法模块合并在一起, 即包含主函数的模块(Elevator.c、 Elevator.h);系统还包括按键输入模块 (Key.c、Key.h)、LCD显示模块(Lcd.c、 Lcd.h),以及几个资源文件,分别为: 24×24点阵字模文件(Hzk24.c)、ASC码 8×8点阵字模文件(Font.c)、开机初始图片 资源文件(Frame.c)、启动界面背景图片资 源文件(Title.c)。
流程图
系统架构(续)
按键输入模块
4X5小键盘作为输入端,乘客通过按键模拟的 电梯按钮向系统输入请求信息。系统使用0-7 这8个按键模拟八个楼层按钮,+和-这2个按 键模拟电梯外部的上、下行请求按钮,A和B按 键用于指示发出的请求来自于电梯内部还是外 部,E代表输入确认键,*键代表程序结束。按 键定义如下表所示:
有电梯所处位置指示设置,电梯上行、下行状态 指示装置,所有系统请求信息指示装置
每隔一段时间,电梯上升或是下降一层楼,同时 显示电梯上升和下降的信息
电梯到达有停站的楼层后,该楼层有指示装置表 明到达了停站请求楼层,电梯切换为开门状态
系统能够记忆电梯内、外部的所有请求信号,并 按照电梯运行规则依次相应这些请求,每个请求 信号保留至执行后撤除
背景介绍(续)
01234 56780 ABCDE F + - * FUN
背景介绍(续)
本程序模拟8层楼间(地下1层, 地上7层)单部电梯运送乘客的整 个工作过程。
利用实验设备的键盘模拟电梯内部 和外部的按键,利用LCD显示器绘 制电梯运行过程以及状态和提示信 息
背景介绍(续)
系统功能:
每层电梯入口处设有上行、下行请求按钮,电梯பைடு நூலகம்内设有乘客请求停战的楼层呼叫按钮
嵌入式系统程序设计基础
嵌入式系统程序设计实例
本章旨在使用英倍特Embest Edukit-Ⅲ型 教学实验平台和嵌入式Linux操作系统完成 自动电梯模拟控制系统的设计和实现
嵌入式系统程序设计实例
背景介绍 系统架构 详细设计 系统函数说明 系统演示
一、背景介绍
系统目标机硬件采用Embest EduKit-III型 开发板,S3C2410X处理器,目标机系统软 件采用mizi Linux操作系统。方便起见,宿 主机软件使用Cygwin模拟Linux系统,交 叉编译工具链采用arm-linux-gcc,版本号 为2.95.3。Embest EduKit-III型开发板 有分辨率为320×240的LCD显示器,以及4 行5列小键盘,键盘布局如下图所示:
A. 电梯状态算法模块数据结构
/* Elevator.h */ /* 电梯状态:开、关、运行、停止 */ typedef enum Status {
open, close, run, stop }STATUS;
/* 电梯外部请求:向上、向下、向上并且向下、无请求 */ typedef enum OUTReqType {
背景介绍(续)
为了实现电梯运行的正确逻辑,制定以下规则:
电梯接通电源时,电梯必须停留在最底层 电梯可以到达所在楼宇的每一层,但是电梯只能在该楼
宇的最低层至最高层之间运行 严格规定电梯内部的信号优先级高于电梯外部的请求信
号 电梯处于上升模式时,只响应比电梯所在位置高的楼层
的上楼请求信号,而保留下楼信号,由下而上逐个执行; 直到最后一个执行完毕,再执行下楼请求信号 电梯处于下降模式时与上升模式相反 电梯执行完所有请求后,应保留在所在的楼层保持不动, 等待新的请求
二、系统架构
系统总体结构
初始化模块 电梯控制模块 按键输入模块 LCD显示模块
系统架构(续)
系统总体结构图
系统架构(续)
初始化模块
基础模块,负责初始化电梯算法的数据结构, 同时初始化显示界面,给用户提示信息和操作 说明:
系统架构(续)
电梯控制模块
关键模块,负责电梯当前状态,根据电梯状态 派遣电梯执行停止、运行、开门、关门等任务;
系统架构(续) 系统运行界面
系统架构(续)
程序主界面按照显示功能被划分为四大区域, 从左到右依次为:
电梯信息显示区域,这个区域位于显示屏最左 侧,显示电梯状态、电梯方向、电梯位置等信 息;
乘客请求信息显示区域,这个区域位于屏幕中 部,该栏的字母和数字具体代表意义参照下表;
系统架构(续)
到达的楼层;如果输入B,表示外部乘客发出请 求时位于的楼层; 第2步中如输入B,需要接着输入+或-,表示 外部乘客的上下行方向情况,第2步输入0时不 能输入-,输入7时不能输入+; 输入E确认。
系统架构(续)
LCD显示模块
本模块通过LCD显示电梯目前的运行信息 电梯状态 当前位置 电梯内部和外部请求信息 电梯运行的动态效果 乘客请求的英文缩写解释
系统架构(续)
系统架构(续)
电梯内部
0-7八个按键,模拟8个楼层,不设置开门和关 门按钮;
电梯外部
除地下一层和顶层之外,每层都有一个上行按 钮和一个下行按钮;
特殊使用规则
系统用按键A和B判断乘客发出的请求是来自电 梯内部还是电梯外部。
系统架构(续)
使用步骤:
输入A或是B; 输入0-7:如果输入A,0-7表示内部乘客请求
up_request, down_request, both_request, no_request, }OUTREQTYPE; /* 电梯运行方向:向上、向下、无 */ typedef enum dir { upward, downward, still, }DIRECTION;
/* 当前电梯请求结构类型:内部请求、外部请求 */
typedef struct Request
系统架构(续)
电梯动态效果图,本图紧邻请求信息显示区域, 图中方块代表一个楼层,当电梯运行时,方块 位置会发生相应的动态变化。
主界面信息说明区域,这个区域位于屏幕最右 侧,列出了乘客请求信息显示区中字母简写对 应的英文单词。
三、详细设计
数据结构描述 电梯运行算法设计 输入输出部分设计
1. 数据结构描述
相关文档
最新文档