




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式系统程序设计 嵌入式系统程序设计实例 本章旨在使用英倍特EmbestEdukit 型教学实验平台和嵌入式Linux操作系统完成自动电梯模拟控制系统的设计和实现 嵌入式系统程序设计实例 背景介绍系统架构详细设计系统函数说明系统演示 一 背景介绍 系统目标机硬件采用EmbestEduKit III型开发板 S3C2410X处理器 目标机系统软件采用miziLinux操作系统 方便起见 宿主机软件使用Cygwin模拟Linux系统 交叉编译工具链采用arm linux gcc 版本号为2 95 3 EmbestEduKit III型开发板有分辨率为320 240的LCD显示器 以及4行5列小键盘 键盘布局如下图所示 背景介绍 续 背景介绍 续 本程序模拟8层楼间 地下1层 地上7层 单部电梯运送乘客的整个工作过程 利用实验设备的键盘模拟电梯内部和外部的按键 利用LCD显示器绘制电梯运行过程以及状态和提示信息 背景介绍 续 系统功能 每层电梯入口处设有上行 下行请求按钮 电梯内设有乘客请求停战的楼层呼叫按钮有电梯所处位置指示设置 电梯上行 下行状态指示装置 所有系统请求信息指示装置每隔一段时间 电梯上升或是下降一层楼 同时显示电梯上升和下降的信息电梯到达有停站的楼层后 该楼层有指示装置表明到达了停站请求楼层 电梯切换为开门状态系统能够记忆电梯内 外部的所有请求信号 并按照电梯运行规则依次相应这些请求 每个请求信号保留至执行后撤除 背景介绍 续 为了实现电梯运行的正确逻辑 制定以下规则 电梯接通电源时 电梯必须停留在最底层电梯可以到达所在楼宇的每一层 但是电梯只能在该楼宇的最低层至最高层之间运行严格规定电梯内部的信号优先级高于电梯外部的请求信号电梯处于上升模式时 只响应比电梯所在位置高的楼层的上楼请求信号 而保留下楼信号 由下而上逐个执行 直到最后一个执行完毕 再执行下楼请求信号电梯处于下降模式时与上升模式相反电梯执行完所有请求后 应保留在所在的楼层保持不动 等待新的请求 二 系统架构 系统总体结构初始化模块电梯控制模块按键输入模块LCD显示模块 系统架构 续 系统总体结构图 系统架构 续 初始化模块基础模块 负责初始化电梯算法的数据结构 同时初始化显示界面 给用户提示信息和操作说明 系统架构 续 电梯控制模块关键模块 负责电梯当前状态 根据电梯状态派遣电梯执行停止 运行 开门 关门等任务 流程图 系统架构 续 按键输入模块4X5小键盘作为输入端 乘客通过按键模拟的电梯按钮向系统输入请求信息 系统使用0 7这8个按键模拟八个楼层按钮 和 这2个按键模拟电梯外部的上 下行请求按钮 A和B按键用于指示发出的请求来自于电梯内部还是外部 E代表输入确认键 键代表程序结束 按键定义如下表所示 系统架构 续 系统架构 续 电梯内部0 7八个按键 模拟8个楼层 不设置开门和关门按钮 电梯外部除地下一层和顶层之外 每层都有一个上行按钮和一个下行按钮 特殊使用规则系统用按键A和B判断乘客发出的请求是来自电梯内部还是电梯外部 系统架构 续 使用步骤 输入A或是B 输入0 7 如果输入A 0 7表示内部乘客请求到达的楼层 如果输入B 表示外部乘客发出请求时位于的楼层 第2步中如输入B 需要接着输入 或 表示外部乘客的上下行方向情况 第2步输入0时不能输入 输入7时不能输入 输入E确认 系统架构 续 LCD显示模块本模块通过LCD显示电梯目前的运行信息电梯状态当前位置电梯内部和外部请求信息电梯运行的动态效果乘客请求的英文缩写解释 系统架构 续 系统运行界面 系统架构 续 程序主界面按照显示功能被划分为四大区域 从左到右依次为 电梯信息显示区域 这个区域位于显示屏最左侧 显示电梯状态 电梯方向 电梯位置等信息 乘客请求信息显示区域 这个区域位于屏幕中部 该栏的字母和数字具体代表意义参照下表 系统架构 续 系统架构 续 电梯动态效果图 本图紧邻请求信息显示区域 图中方块代表一个楼层 当电梯运行时 方块位置会发生相应的动态变化 主界面信息说明区域 这个区域位于屏幕最右侧 列出了乘客请求信息显示区中字母简写对应的英文单词 三 详细设计 数据结构描述电梯运行算法设计输入输出部分设计 1 数据结构描述 自动电梯控制系统的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 A 电梯状态算法模块数据结构 Elevator h 电梯状态 开 关 运行 停止 typedefenumStatus open close run stop STATUS 电梯外部请求 向上 向下 向上并且向下 无请求 typedefenumOUTReqType up request down request both request no request OUTREQTYPE 电梯运行方向 向上 向下 无 typedefenumdir upward downward still DIRECTION 当前电梯请求结构类型 内部请求 外部请求 typedefstructRequest intinReq OUTREQTYPEoutReq REQUEST 电梯信息结构类型 运行方向 当前层数 运行状态 长度为楼层数的请求数组 typedefstructElevatorInfo DIRECTIONDirection 电梯方向intFloor 电梯楼层STATUSStatus 电梯状态REQUESTRequest MAX FLOOR 楼层请求数组 ELEVATORINFO B 按键输入模块数据结构 当前乘客按键请求结构类型 typedefstructkey intjudge 按键类型 取值可为内部按键 A 外部按键 B 确认按键 E 退出按键 intfloor 内部按键请求到达的楼层 0 7 chardirection 外部按键确定的电梯运行方向 上行 下行 intlocation 外部按键所处在的楼层 0 7 KEY C LCD显示模块数据结构 typedefstructfbdev intfb unsignedlongfb mem offset unsignedlongfb mem structfb fix screeninfofb fix 设备无关的常值信息structfb var screeninfofb var 设备无关的数据信息chardev 20 FBDEV PFBDEV C 其他数据结构 constuint8 ttitle 存放系统提示界面背景图片的数组externconstuint8 tframe 存放系统欢迎界面和退出界面 图片的数组constuint8 tg auc hzk24 存放一个汉字24 24点阵字 模的数组constuint8 tfontdata 8x8 存放一个ASC码8 8点阵字 模的数组 2 电梯运行算法设计 根据电梯运行流程 把电梯分为停止 运行 开门 关门四种控制状态 如下图所示 停止状态是指电梯在没有任何请求的情况下的静止状态 而不是指电梯在运行过程中开门前的停顿状况 我们忽略停顿状况 把电梯从运行状态直接迁移为开门状态 电梯控制状态转移图 电梯控制状态转移图 续 系统初始时 电梯处于停止状态 电梯处于停止状态时 根据发出请求的楼层不同可以分别迁移到运行或者开门两个不同状态 电梯处于运行状态时 如果没有到达请求楼层发生自迁移 即保持运行状态不变 当到达请求楼层时 迁移到开门状态 电梯控制状态转移图 续 电梯处于开门状态一段时间后必然迁移到关门状态 电梯处于关门状态时可以根据是否有请求迁移到运行状态或者迁移到停止状态 电梯状态处理伪代码 电梯各个状态的处理过程 可以依靠电梯派遣函数 根据通过判定电梯信息结构体中的电梯状态 调用相应控制状态的函数来控制电梯的运行 伪代码如下 派遣函数 void switch 电梯运行状态 case停止状态 停止处理函数 break case运行状态 运行处理函数 break case开门状态 开门处理函数 break case关门状态 关门处理函数 break default break 电梯停止状态流程图 电梯运行状态流程图 电梯开门状态流程图 电梯关门状态流程图 3 输入输出部分设计 LCD输出模块负责显示系统的4个图形界面 系统欢迎界面 系统提示界面 系统运行界面和系统退出界面 系统欢迎界面和系统退出界面分别显示一幅图片及相关文字 系统主要工作在系统运行界面下 输入输出部分设计 续 按键输入模块的主要功能有三个 设置键盘键值 扫描键盘 采集按键信息 获取乘客请求结构体信息 并对这些信息进行封装 判断 转换等一系列的处理 输入输出部分设计 续 在设计当中 为了使键盘部分能够及时有效的响应 目标机上接有键盘专用芯片ZLG7290 键盘的动作由芯片ZLG7290检测 当键盘按下时 芯片检测到后在INT引脚产生中断触发电平通知处理器 处理器通过I2C总线读取芯片ZLG7290键值寄存器中保留的键值 输入输出部分设计 续 在设计当中 为了使键盘部分能够及时有效的响应 目标机上接有键盘专用芯片ZLG7290 键盘的动作由芯片ZLG7290检测 当键盘按下时 芯片检测到后在INT引脚产生中断触发电平通知处理器 处理器通过I2C总线读取芯片ZLG7290键值寄存器中保留的键值 输入输出部分设计 续 键盘获得的输入信息繁多而复杂 需要对这些信息进行处理 该过程分为两个步骤 首先 对信息进行筛选和封装 由于键盘信息扫描检测函数不断地等待按键被按下 而用户使用键盘输入信息是随机的 所以需要对按键信息进行筛选 保留用户有效按键值 由于系统使用规则的限制 每次用户发出的请求 并不能由单个按键完成 需要组合使用按键 所以需要把筛选出的多个有效键值一一封装在乘客请求信息结构体中存储 四 系统函数说明 电梯控制算法模块按键输入模块LCD输出模块其他函数 1 电梯控制算法模块 main 主函数 首先完成设备初始化 包括打开Framebuffer和i2c设备 调用InitSystem 函数初始化系统数据结构和LCD 然后在循环中不断检测按键组合 如有乘客请求则通过派遣函数处理请求 然后完成显示 当用户输入 时循环结束 显示系统退出界面 完成系统清理工作退出程序 InitSystem 系统初始化函数 调用InitElevator 函数初始化电梯信息结构类型数据结构 调用InitLcd 函数初始化LCD 电梯控制算法模块 续 InitElevator 电梯信息结构初始化函数 初始化电梯信息结构类型变量ElevatorInfo InitLcd LCD初始化函数 通过写Framebuffer在LCD绘制系统提示界面 Dispatch 状态派遣函数 根据电梯当前状态 调用不同状态处理函数 电梯控制算法模块 续 ElevatorStop 电梯停止状态处理函数 ElevatorRun 电梯运行状态处理函数 ElevatorOpen 电梯开门状态处理函数 ElevatorClose 电梯关门状态处理函数 电梯控制算法模块 续 KeyCheck 用户信息转换函数 把乘客按键请求信息结构体key中的信息映射至电梯信息结构体ElevatorInfo 设置电梯运行状态 Display 运行界面显示函数 显示系统运行界面 ExitShow 退出界面显示函数 显示系统退出界面 2 按键输入模块 key set charucChar 键值转换函数 把扫描码转换为键码 key 按键获取函数 读取i2c总线 获得用户按键 GetKey 键值封装函数 把用户的有效按键组合为KEY类型结构体变量keyboard并返回 3 LCD输出模块 fb open Framebuffer设备初始化函数 打开Framebuffer设备 把帧缓冲区映射到用户态内存空间 fb close 关闭Framebuffer设备文件 fb memcpy Framebuffer缓冲区写入函数 把代表某颜色点的信息写入Framebuffer设备 LCD输出模块 续 draw dot 画点函数 调用fb memcpy 在屏幕上画点 unfillrectangle 矩形填充函
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年日语能力测试N级阅读专项试卷(健身塑形篇)
- 2025年山西省长治市国家公务员公共基础知识模拟题(附答案)
- 2025年人防知识试题及答案
- 贵州省黔东南苗族侗族自治州2024-2025学年八年级下学期期末道德与法治试题(含答案)
- 2025年上海市事业单位招聘考试卫生类护理学专业知识试卷(护理遗传学)
- 湘南学院《细胞与分子生物学》2024-2025学年第一学期期末试卷
- 重庆智能工程职业学院《生活中的市场营销学》2024-2025学年第一学期期末试卷
- 重庆工程学院《工程材料与公差》2024-2025学年第一学期期末试卷
- 长沙医学院《建筑设计》2024-2025学年第一学期期末试卷
- 2025年把握机遇攻克难关国际发展合作署笔试预测试题攻略
- 2025安全生产法律法规专题知识培训
- 代建管理工作程序
- 血透护理文书书写规范
- 手术室安全细节管理
- 继发性颅脑损伤的护理
- 《保角变换法在求解电势中的应用研究》7500字(论文)
- TCHIA 47-2024 智慧重症病房建设规范
- 多模态技术在智能养鸡工厂中的研究现状与展望
- 征信知识专项培训课件
- 《基于深度强化学习在游戏上的应用》
- 中建给排水工程施工方案
评论
0/150
提交评论