版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统程序设计实例本章旨在使用英倍特Embest Edukit-型教学实验平台和嵌入式Linux操作系统完成自动电梯模拟控制系统的设计和实现第1页/共57页嵌入式系统程序设计实例 背景介绍 系统架构 详细设计 系统函数说明 系统演示第2页/共57页一、背景介绍 系统目标机硬件采用Embest EduKit-III型开发板,S3C2410X处理器,目标机系统软件采用mizi Linux操作系统。方便起见,宿主机软件使用Cygwin模拟Linux系统,交叉编译工具链采用arm-linux-gcc,版本号为。Embest EduKit-III型开发板有分辨率为320240的LCD显示器,以及4行
2、5列小键盘,键盘布局如下图所示:第3页/共57页背景介绍(续)第4页/共57页背景介绍(续)本程序模拟8层楼间(地下1层,地上7层)单部电梯运送乘客的整个工作过程。利用实验设备的键盘模拟电梯内部和外部的按键,利用LCD显示器绘制电梯运行过程以及状态和提示信息第5页/共57页背景介绍(续) 系统功能: 每层电梯入口处设有上行、下行请求按钮,电梯内设有乘客请求停战的楼层呼叫按钮 有电梯所处位置指示设置,电梯上行、下行状态指示装置,所有系统请求信息指示装置 每隔一段时间,电梯上升或是下降一层楼,同时显示电梯上升和下降的信息 电梯到达有停站的楼层后,该楼层有指示装置表明到达了停站请求楼层,电梯切换为开
3、门状态 系统能够记忆电梯内、外部的所有请求信号,并按照电梯运行规则依次相应这些请求,每个请求信号保留至执行后撤除第6页/共57页背景介绍(续) 为了实现电梯运行的正确逻辑,制定以下规则: 电梯接通电源时,电梯必须停留在最底层 电梯可以到达所在楼宇的每一层,但是电梯只能在该楼宇的最低层至最高层之间运行 严格规定电梯内部的信号优先级高于电梯外部的请求信号 电梯处于上升模式时,只响应比电梯所在位置高的楼层的上楼请求信号,而保留下楼信号,由下而上逐个执行;直到最后一个执行完毕,再执行下楼请求信号 电梯处于下降模式时与上升模式相反 电梯执行完所有请求后,应保留在所在的楼层保持不动,等待新的请求第7页/共
4、57页二、系统架构 系统总体结构 初始化模块 电梯控制模块 按键输入模块 LCD显示模块第8页/共57页系统架构(续) 系统总体结构图第9页/共57页系统架构(续) 初始化模块 基础模块,负责初始化电梯算法的数据结构,同时初始化显示界面,给用户提示信息和操作说明:第10页/共57页系统架构(续) 电梯控制模块 关键模块,负责电梯当前状态,根据电梯状态派遣电梯执行停止、运行、开门、关门等任务; 流程图第11页/共57页 第12页/共57页系统架构(续) 按键输入模块 4X5小键盘作为输入端,乘客通过按键模拟的电梯按钮向系统输入请求信息。系统使用07这8个按键模拟八个楼层按钮,和这2个按键模拟电梯
5、外部的上、下行请求按钮,A和B按键用于指示发出的请求来自于电梯内部还是外部,E代表输入确认键,*键代表程序结束。按键定义如下表所示:第13页/共57页系统架构(续)第14页/共57页系统架构(续) 电梯内部 0-7八个按键,模拟8个楼层,不设置开门和关门按钮; 电梯外部 除地下一层和顶层之外,每层都有一个上行按钮和一个下行按钮; 特殊使用规则 系统用按键A和B判断乘客发出的请求是来自电梯内部还是电梯外部。第15页/共57页系统架构(续) 使用步骤: 输入A或是B; 输入0-7:如果输入A,0-7表示内部乘客请求到达的楼层;如果输入B,表示外部乘客发出请求时位于的楼层; 第2步中如输入B,需要接
6、着输入+或,表示外部乘客的上下行方向情况,第2步输入0时不能输入,输入7时不能输入+; 输入E确认。第16页/共57页系统架构(续) LCD显示模块 本模块通过LCD显示电梯目前的运行信息 电梯状态 当前位置 电梯内部和外部请求信息 电梯运行的动态效果 乘客请求的英文缩写解释第17页/共57页系统架构(续)系统运行界面第18页/共57页系统架构(续) 程序主界面按照显示功能被划分为四大区域,从左到右依次为: 电梯信息显示区域,这个区域位于显示屏最左侧,显示电梯状态、电梯方向、电梯位置等信息; 乘客请求信息显示区域,这个区域位于屏幕中部,该栏的字母和数字具体代表意义参照下表;第19页/共57页系
7、统架构(续)第20页/共57页系统架构(续) 电梯动态效果图,本图紧邻请求信息显示区域,图中方块代表一个楼层,当电梯运行时,方块位置会发生相应的动态变化。 主界面信息说明区域,这个区域位于屏幕最右侧,列出了乘客请求信息显示区中字母简写对应的英文单词。第21页/共57页三、详细设计 数据结构描述 电梯运行算法设计 输入输出部分设计第22页/共57页1. 数据结构描述 自动电梯控制系统的4个模块中,因为初始化部分工作较少,可以把它和算法模块合并在一起,即包含主函数的模块(Elevator.c、Elevator.h);系统还包括按键输入模块(Key.c、Key.h)、LCD显示模块(Lcd.c、Lc
8、d.h),以及几个资源文件,分别为:2424点阵字模文件(Hzk24.c)、ASC码88点阵字模文件(Font.c)、开机初始图片资源文件(Frame.c)、启动界面背景图片资源文件(Title.c)。第23页/共57页A. 电梯状态算法模块数据结构/* Elevator.h*/* 电梯状态:开、关、运行、停止*/typedef enum Status open, close, run, stopSTATUS;第24页/共57页/* 电梯外部请求:向上、向下、向上并且向下、无请求*/typedef enum OUTReqType up_request, down_request, both_r
9、equest, no_request,OUTREQTYPE;/* 电梯运行方向:向上、向下、无*/typedef enum dir upward, downward, still,DIRECTION;第25页/共57页/* 当前电梯请求结构类型:内部请求、外部请求 */typedef struct Requestint inReq; OUTREQTYPE outReq; REQUEST;/* 电梯信息结构类型:运行方向、当前层数、运行状态、长度为楼层数的请求数组*/typedef struct ElevatorInfoDIRECTION Direction;/电梯方向int Floor;/电梯
10、楼层STATUS Status;/电梯状态REQUEST RequestMAX_FLOOR;/楼层请求数组ELEVATORINFO;第26页/共57页B. 按键输入模块数据结构/* 当前乘客按键请求结构类型*/typedef struct keyint judge; /按键类型:取值可为内部按键(A)、外部按键(B)/确认按键(E)、退出按键(*)int floor; /内部按键请求到达的楼层:(07)chardirection;/外部按键确定的电梯运行方向:上行/()、下行()int location; /外部按键所处在的楼层:(07)KEY;第27页/共57页C. LCD显示模块数据结构t
11、ypedef struct fbdevint fb;unsigned long fb_mem_offset;unsigned long fb_mem;struct fb_fix_screeninfo fb_fix;/设备无关的常值信息struct fb_var_screeninfo fb_var; /设备无关的数据信息char dev20; FBDEV, *PFBDEV;第28页/共57页C. 其他数据结构const uint8_t title; /存放系统提示界面背景图片的数组extern const uint8_t frame;/存放系统欢迎界面和退出界面/图片的数组const uint8
12、_t g_auc_hzk24;/存放一个汉字2424点阵字/模的数组const uint8_t fontdata_8x8;/存放一个ASC码88点阵字/模的数组第29页/共57页2. 电梯运行算法设计 根据电梯运行流程,把电梯分为停止、运行、开门、关门四种控制状态,如下图所示。停止状态是指电梯在没有任何请求的情况下的静止状态,而不是指电梯在运行过程中开门前的停顿状况。我们忽略停顿状况,把电梯从运行状态直接迁移为开门状态。第30页/共57页电梯控制状态转移图第31页/共57页电梯控制状态转移图(续) 系统初始时,电梯处于停止状态。 电梯处于停止状态时,根据发出请求的楼层不同可以分别迁移到运行或者
13、开门两个不同状态。 电梯处于运行状态时,如果没有到达请求楼层发生自迁移,即保持运行状态不变;当到达请求楼层时,迁移到开门状态。第32页/共57页电梯控制状态转移图(续) 电梯处于开门状态一段时间后必然迁移到关门状态。 电梯处于关门状态时可以根据是否有请求迁移到运行状态或者迁移到停止状态。第33页/共57页电梯状态处理伪代码 电梯各个状态的处理过程,可以依靠电梯派遣函数,根据通过判定电梯信息结构体中的电梯状态,调用相应控制状态的函数来控制电梯的运行,伪代码如下:派遣函数(void)switch(电梯运行状态)第34页/共57页case 停止状态:停止处理函数; break;case 运行状态:运
14、行处理函数; break;case 开门状态:开门处理函数; break;case 关门状态:关门处理函数; break;default: break;第35页/共57页电梯停止状态流程图第36页/共57页电梯运行状态流程图第37页/共57页电梯开门状态流程图第38页/共57页电梯关门状态流程图第39页/共57页3. 输入输出部分设计 LCD输出模块负责显示系统的4个图形界面:系统欢迎界面、系统提示界面、系统运行界面和系统退出界面。 系统欢迎界面和系统退出界面分别显示一幅图片及相关文字; 系统主要工作在系统运行界面下。第40页/共57页输入输出部分设计(续) 按键输入模块的主要功能有三个:设置
15、键盘键值;扫描键盘,采集按键信息;获取乘客请求结构体信息,并对这些信息进行封装、判断、转换等一系列的处理。第41页/共57页输入输出部分设计(续) 在设计当中,为了使键盘部分能够及时有效的响应,目标机上接有键盘专用芯片ZLG7290。键盘的动作由芯片ZLG7290检测,当键盘按下时,芯片检测到后在INT引脚产生中断触发电平通知处理器,处理器通过I2C总线读取芯片ZLG7290键值寄存器中保留的键值。第42页/共57页输入输出部分设计(续) 在设计当中,为了使键盘部分能够及时有效的响应,目标机上接有键盘专用芯片ZLG7290。键盘的动作由芯片ZLG7290检测,当键盘按下时,芯片检测到后在INT
16、引脚产生中断触发电平通知处理器,处理器通过I2C总线读取芯片ZLG7290键值寄存器中保留的键值。第43页/共57页输入输出部分设计(续) 键盘获得的输入信息繁多而复杂,需要对这些信息进行处理,该过程分为两个步骤: 首先,对信息进行筛选和封装。由于键盘信息扫描检测函数不断地等待按键被按下,而用户使用键盘输入信息是随机的,所以需要对按键信息进行筛选,保留用户有效按键值。 由于系统使用规则的限制,每次用户发出的请求,并不能由单个按键完成,需要组合使用按键,所以需要把筛选出的多个有效键值一一封装在乘客请求信息结构体中存储。第44页/共57页四、系统函数说明 电梯控制算法模块 按键输入模块 LCD输出
17、模块 其他函数第45页/共57页1. 电梯控制算法模块 main():主函数。首先完成设备初始化,包括打开Framebuffer和i2c设备,调用InitSystem()函数初始化系统数据结构和LCD,然后在循环中不断检测按键组合,如有乘客请求则通过派遣函数处理请求,然后完成显示,当用户输入*时循环结束,显示系统退出界面,完成系统清理工作退出程序。 InitSystem():系统初始化函数。调用InitElevator()函数初始化电梯信息结构类型数据结构,调用InitLcd()函数初始化LCD。第46页/共57页电梯控制算法模块(续) InitElevator():电梯信息结构初始化函数。初
18、始化电梯信息结构类型变量ElevatorInfo。 InitLcd():LCD初始化函数。通过写Framebuffer在LCD绘制系统提示界面。 Dispatch():状态派遣函数。根据电梯当前状态,调用不同状态处理函数。第47页/共57页电梯控制算法模块(续) ElevatorStop():电梯停止状态处理函数。 ElevatorRun():电梯运行状态处理函数。 ElevatorOpen():电梯开门状态处理函数。 ElevatorClose():电梯关门状态处理函数。第48页/共57页电梯控制算法模块(续) KeyCheck():用户信息转换函数。把乘客按键请求信息结构体key中的信息映射至电梯信息结构体ElevatorInfo,设置电梯运行状态。 Display():运行界面显示函数。显示系统运行界面。 ExitShow():退出界面显示函数。显示系统退出界面。第49页/共57页2. 按键输入模块 key_set(char ucChar):键值转换函数。把扫描码转换为键码。 key():按键获取函数。读取i2c总线,获得用户按键。 GetKey():键值封装函数。把用户的有效按键组合为KEY类型结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版文具采购合同3篇
- 专用木结构工程承包合同书2024年版版B版
- 专业桥架施工包工协议范例(2024版)版B版
- 2025年4S店汽车销售及二手车置换服务合同范本3篇
- 2024跨国技术转让与合作合同
- 专业项目建议书编写委托协议简化版版B版
- 2025年度科研场地租赁合同终止及设备回收协议3篇
- 2025年度老旧小区墙体拆除及改造工程劳务分包合同范本4篇
- 2025年度酒店会议室租赁协议书(含全方位服务套餐)
- 二零二五年度食堂食堂食堂食堂员工餐厅食品安全监管合同
- 自来水质量提升技术方案
- 金色简约蛇年年终总结汇报模板
- 农用地土壤环境质量类别划分技术指南(试行)(环办土壤2017第97号)
- 反向开票政策解读课件
- 工程周工作计划
- 房地产销售任务及激励制度
- 六年级语文下册14文言文二则《学弈》课件
- 2024年内蒙古中考语文试卷五套合卷附答案
- 并购指南(如何发现好公司)
- 垃圾分类亭合同协议书
- 物权转移协议
评论
0/150
提交评论