嵌入式系统程序设计实例[稻谷书屋]_第1页
嵌入式系统程序设计实例[稻谷书屋]_第2页
嵌入式系统程序设计实例[稻谷书屋]_第3页
嵌入式系统程序设计实例[稻谷书屋]_第4页
嵌入式系统程序设计实例[稻谷书屋]_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式系统程序设计嵌入式系统程序设计 1知识材料 嵌入式系统程序设计实例嵌入式系统程序设计实例 o 本章旨在使用英倍特本章旨在使用英倍特Embest Edukit-型教学实验平台和嵌入式型教学实验平台和嵌入式 Linux操作系统完成自动电梯模拟控操作系统完成自动电梯模拟控 制系统的设计和实现制系统的设计和实现 2知识材料知识材料 嵌入式系统程序设计实例嵌入式系统程序设计实例 o背景介绍背景介绍 o系统架构系统架构 o详细设计详细设计 o系统函数说明系统函数说明 o系统演示系统演示 3知识材料知识材料 一、背景介绍一、背景介绍 o 系统目标机硬件采用系统目标机硬件采用Embest EduKit-

2、 III型开发板,型开发板,S3C2410X处理器,目标处理器,目标 机系统软件采用机系统软件采用mizi Linux操作系统。方操作系统。方 便起见,宿主机软件使用便起见,宿主机软件使用Cygwin模拟模拟 Linux系统,交叉编译工具链采用系统,交叉编译工具链采用arm- linux-gcc,版本号为,版本号为2.95.3。Embest EduKit-III型开发板有分辨率为型开发板有分辨率为 320240的的LCD显示器,以及显示器,以及4行行5列小列小 键盘,键盘布局如下图所示:键盘,键盘布局如下图所示: 4知识材料知识材料 背景介绍(续)背景介绍(续) 5知识材料知识材料 背景介绍(

3、续)背景介绍(续) o本程序模拟本程序模拟8层楼间(地下层楼间(地下1层,层, 地上地上7层)单部电梯运送乘客的整层)单部电梯运送乘客的整 个工作过程。个工作过程。 o利用实验设备的键盘模拟电梯内部利用实验设备的键盘模拟电梯内部 和外部的按键,利用和外部的按键,利用LCD显示器显示器 绘制电梯运行过程以及状态和提示绘制电梯运行过程以及状态和提示 信息信息 6知识材料知识材料 背景介绍(续)背景介绍(续) o 系统功能:系统功能: n 每层电梯入口处设有上行、下行请求按钮,电梯每层电梯入口处设有上行、下行请求按钮,电梯 内设有乘客请求停战的楼层呼叫按钮内设有乘客请求停战的楼层呼叫按钮 n 有电梯

4、所处位置指示设置,电梯上行、下行状态有电梯所处位置指示设置,电梯上行、下行状态 指示装置,所有系统请求信息指示装置指示装置,所有系统请求信息指示装置 n 每隔一段时间,电梯上升或是下降一层楼,同时每隔一段时间,电梯上升或是下降一层楼,同时 显示电梯上升和下降的信息显示电梯上升和下降的信息 n 电梯到达有停站的楼层后,该楼层有指示装置表电梯到达有停站的楼层后,该楼层有指示装置表 明到达了停站请求楼层,电梯切换为开门状态明到达了停站请求楼层,电梯切换为开门状态 n 系统能够记忆电梯内、外部的所有请求信号,并系统能够记忆电梯内、外部的所有请求信号,并 按照电梯运行规则依次相应这些请求,每个请求按照电

5、梯运行规则依次相应这些请求,每个请求 信号保留至执行后撤除信号保留至执行后撤除 7知识材料知识材料 背景介绍(续)背景介绍(续) o 为了实现电梯运行的正确逻辑,制定以下规则:为了实现电梯运行的正确逻辑,制定以下规则: n电梯接通电源时,电梯必须停留在最底层电梯接通电源时,电梯必须停留在最底层 n电梯可以到达所在楼宇的每一层,但是电梯只能在该楼电梯可以到达所在楼宇的每一层,但是电梯只能在该楼 宇的最低层至最高层之间运行宇的最低层至最高层之间运行 n严格规定电梯内部的信号优先级高于电梯外部的请求信严格规定电梯内部的信号优先级高于电梯外部的请求信 号号 n电梯处于上升模式时,只响应比电梯所在位置高

6、的楼层电梯处于上升模式时,只响应比电梯所在位置高的楼层 的上楼请求信号,而保留下楼信号,由下而上逐个执行;的上楼请求信号,而保留下楼信号,由下而上逐个执行; 直到最后一个执行完毕,再执行下楼请求信号直到最后一个执行完毕,再执行下楼请求信号 n电梯处于下降模式时与上升模式相反电梯处于下降模式时与上升模式相反 n电梯执行完所有请求后,应保留在所在的楼层保持不动,电梯执行完所有请求后,应保留在所在的楼层保持不动, 等待新的请求等待新的请求 8知识材料知识材料 二、系统架构二、系统架构 o系统总体结构系统总体结构 n 初始化模块初始化模块 n 电梯控制模块电梯控制模块 n 按键输入模块按键输入模块 n

7、 LCD显示模块显示模块 9知识材料知识材料 系统架构(续)系统架构(续) o系统总体结构图系统总体结构图 10知识材料知识材料 系统架构(续)系统架构(续) o初始化模块初始化模块 n 基础模块,负责初始化电梯算法的数据结基础模块,负责初始化电梯算法的数据结 构,同时初始化显示界面,给用户提示信构,同时初始化显示界面,给用户提示信 息和操作说明:息和操作说明: 11知识材料知识材料 系统架构(续)系统架构(续) o电梯控制模块电梯控制模块 n 关键模块,负责电梯当前状态,根据电梯关键模块,负责电梯当前状态,根据电梯 状态派遣电梯执行停止、运行、开门、关状态派遣电梯执行停止、运行、开门、关 门

8、等任务;门等任务; o流程图流程图 12知识材料知识材料 13知识材料知识材料 系统架构(续)系统架构(续) o按键输入模块按键输入模块 n 4X5小键盘作为输入端,乘客通过按键小键盘作为输入端,乘客通过按键 模拟的电梯按钮向系统输入请求信息。系模拟的电梯按钮向系统输入请求信息。系 统使用统使用07这这8个按键模拟八个楼层按个按键模拟八个楼层按 钮,和这钮,和这2个按键模拟电梯外部的上、个按键模拟电梯外部的上、 下行请求按钮,下行请求按钮,A和和B按键用于指示发出按键用于指示发出 的请求来自于电梯内部还是外部,的请求来自于电梯内部还是外部,E代表代表 输入确认键,输入确认键,*键代表程序结束。

9、按键定键代表程序结束。按键定 义如下表所示:义如下表所示: 14知识材料知识材料 系统架构(续)系统架构(续) 15知识材料知识材料 系统架构(续)系统架构(续) o电梯内部电梯内部 n 0-7八个按键,模拟八个按键,模拟8个楼层,不设置开个楼层,不设置开 门和关门按钮;门和关门按钮; o电梯外部电梯外部 n 除地下一层和顶层之外,每层都有一个上除地下一层和顶层之外,每层都有一个上 行按钮和一个下行按钮;行按钮和一个下行按钮; o特殊使用规则特殊使用规则 n 系统用按键系统用按键A和和B判断乘客发出的请求是判断乘客发出的请求是 来自电梯内部还是电梯外部。来自电梯内部还是电梯外部。 16知识材料

10、知识材料 系统架构(续)系统架构(续) o使用步骤:使用步骤: n 输入输入A或是或是B; n 输入输入0-7:如果输入:如果输入A,0-7表示内部乘表示内部乘 客请求到达的楼层;如果输入客请求到达的楼层;如果输入B,表示外,表示外 部乘客发出请求时位于的楼层;部乘客发出请求时位于的楼层; n 第第2步中如输入步中如输入B,需要接着输入,需要接着输入+或,或, 表示外部乘客的上下行方向情况,第表示外部乘客的上下行方向情况,第2步步 输入输入0时不能输入,输入时不能输入,输入7时不能输入时不能输入 +; n 输入输入E确认。确认。 17知识材料知识材料 系统架构(续)系统架构(续) oLCD显示

11、模块显示模块 n 本模块通过本模块通过LCD显示电梯目前的运行信显示电梯目前的运行信 息息 o 电梯状态电梯状态 o 当前位置当前位置 o 电梯内部和外部请求信息电梯内部和外部请求信息 o 电梯运行的动态效果电梯运行的动态效果 o 乘客请求的英文缩写解释乘客请求的英文缩写解释 18知识材料知识材料 系统架构(续)系统架构(续) o系统运行界面系统运行界面 19知识材料知识材料 系统架构(续)系统架构(续) o程序主界面按照显示功能被划分为四程序主界面按照显示功能被划分为四 大区域,从左到右依次为:大区域,从左到右依次为: n 电梯信息显示区域,这个区域位于显示屏电梯信息显示区域,这个区域位于显

12、示屏 最左侧,显示电梯状态、电梯方向、电梯最左侧,显示电梯状态、电梯方向、电梯 位置等信息;位置等信息; n 乘客请求信息显示区域,这个区域位于屏乘客请求信息显示区域,这个区域位于屏 幕中部,该栏的字母和数字具体代表意义幕中部,该栏的字母和数字具体代表意义 参照下表;参照下表; 20知识材料知识材料 系统架构(续)系统架构(续) 21知识材料知识材料 系统架构(续)系统架构(续) n 电梯动态效果图,本图紧邻请求信息显示电梯动态效果图,本图紧邻请求信息显示 区域,图中方块代表一个楼层,当电梯运区域,图中方块代表一个楼层,当电梯运 行时,方块位置会发生相应的动态变化。行时,方块位置会发生相应的动

13、态变化。 n 主界面信息说明区域,这个区域位于屏幕主界面信息说明区域,这个区域位于屏幕 最右侧,列出了乘客请求信息显示区中字最右侧,列出了乘客请求信息显示区中字 母简写对应的英文单词。母简写对应的英文单词。 22知识材料知识材料 三、详细设计三、详细设计 o数据结构描述数据结构描述 o电梯运行算法设计电梯运行算法设计 o输入输出部分设计输入输出部分设计 23知识材料知识材料 1. 数据结构描述数据结构描述 o 自动电梯控制系统的自动电梯控制系统的4个模块中,因为初始化个模块中,因为初始化 部分工作较少,可以把它和算法模块合并在一部分工作较少,可以把它和算法模块合并在一 起,即包含主函数的模块(

14、起,即包含主函数的模块(Elevator.c、 Elevator.h);系统还包括按键输入模块);系统还包括按键输入模块 (Key.c、Key.h)、)、LCD显示模块(显示模块(Lcd.c、 Lcd.h),以及几个资源文件,分别为:),以及几个资源文件,分别为: 2424点阵字模文件(点阵字模文件(Hzk24.c)、)、ASC码码 88点阵字模文件(点阵字模文件(Font.c)、开机初始图)、开机初始图 片资源文件(片资源文件(Frame.c)、启动界面背景图片)、启动界面背景图片 资源文件(资源文件(Title.c)。)。 24知识材料知识材料 A. 电梯状态算法模块数据结构电梯状态算法模

15、块数据结构 /* Elevator.h*/ /* 电梯状态:开、关、运行、停止电梯状态:开、关、运行、停止*/ typedef enum Status open, close, run, stop STATUS; 25知识材料知识材料 /* 电梯外部请求:向上、向下、向上并且向下、无请求电梯外部请求:向上、向下、向上并且向下、无请求*/ typedef enum OUTReqType up_request, down_request, both_request, no_request, OUTREQTYPE; /* 电梯运行方向:向上、向下、无电梯运行方向:向上、向下、无*/ typedef

16、enum dir upward, downward, still, DIRECTION; 26知识材料知识材料 /* 当前电梯请求结构类型:内部请求、外部请求当前电梯请求结构类型:内部请求、外部请求 */ typedef struct Request int inReq; OUTREQTYPE outReq; REQUEST; /* 电梯信息结构类型:运行方向、当前层数、运行状态、长度为楼层数的电梯信息结构类型:运行方向、当前层数、运行状态、长度为楼层数的 请求数组请求数组*/ typedef struct ElevatorInfo DIRECTION Direction;/电梯方向电梯方向

17、int Floor;/电梯楼层电梯楼层 STATUS Status;/电梯状态电梯状态 REQUEST RequestMAX_FLOOR;/楼层请求数组楼层请求数组 ELEVATORINFO; 27知识材料知识材料 B. 按键输入模块数据结构按键输入模块数据结构 /* 当前乘客按键请求结构类型当前乘客按键请求结构类型*/ typedef struct key int judge; /按键类型:取值可为内部按键(按键类型:取值可为内部按键(A)、外部按键()、外部按键(B) /确认按键(确认按键(E)、退出按键()、退出按键(*) int floor; /内部按键请求到达的楼层:(内部按键请求到

18、达的楼层:(07) chardirection;/外部按键确定的电梯运行方向:上行外部按键确定的电梯运行方向:上行 /()、下行()()、下行() int location; /外部按键所处在的楼层:(外部按键所处在的楼层:(07) KEY; 28知识材料知识材料 C. LCD显示模块数据结构显示模块数据结构 typedef struct fbdev int fb; unsigned long fb_mem_offset; unsigned long fb_mem; struct fb_fix_screeninfo fb_fix;/设备无关的常值信息设备无关的常值信息 struct fb_va

19、r_screeninfo fb_var; /设备无关的数据信息设备无关的数据信息 char dev20; FBDEV, *PFBDEV; 29知识材料知识材料 C. 其他数据结构其他数据结构 const uint8_t title; /存放系统提示界面背景图片的数组存放系统提示界面背景图片的数组 extern const uint8_t frame;/存放系统欢迎界面和退出界存放系统欢迎界面和退出界 面面/图片的数组图片的数组 const uint8_t g_auc_hzk24;/存放一个汉字存放一个汉字2424点阵字点阵字 /模的数组模的数组 const uint8_t fontdata_8

20、x8;/存放一个存放一个ASC码码88点阵字点阵字 /模的数组模的数组 30知识材料知识材料 2. 电梯运行算法设计电梯运行算法设计 o根据电梯运行流程,把电梯分为停止、根据电梯运行流程,把电梯分为停止、 运行、开门、关门四种控制状态,如运行、开门、关门四种控制状态,如 下图所示。停止状态是指电梯在没有下图所示。停止状态是指电梯在没有 任何请求的情况下的静止状态,而不任何请求的情况下的静止状态,而不 是指电梯在运行过程中开门前的停顿是指电梯在运行过程中开门前的停顿 状况。我们忽略停顿状况,把电梯从状况。我们忽略停顿状况,把电梯从 运行状态直接迁移为开门状态。运行状态直接迁移为开门状态。 31知

21、识材料知识材料 电梯控制状态转移图电梯控制状态转移图 32知识材料知识材料 电梯控制状态转移图(续)电梯控制状态转移图(续) o系统初始时,电梯处于停止状态。系统初始时,电梯处于停止状态。 o电梯处于停止状态时,根据发出请求电梯处于停止状态时,根据发出请求 的楼层不同可以分别迁移到运行或者的楼层不同可以分别迁移到运行或者 开门两个不同状态。开门两个不同状态。 o电梯处于运行状态时,如果没有到达电梯处于运行状态时,如果没有到达 请求楼层发生自迁移,即保持运行状请求楼层发生自迁移,即保持运行状 态不变;当到达请求楼层时,迁移到态不变;当到达请求楼层时,迁移到 开门状态。开门状态。 33知识材料知识

22、材料 电梯控制状态转移图(续)电梯控制状态转移图(续) o电梯处于开门状态一段时间后必然迁电梯处于开门状态一段时间后必然迁 移到关门状态。移到关门状态。 o电梯处于关门状态时可以根据是否有电梯处于关门状态时可以根据是否有 请求迁移到运行状态或者迁移到停止请求迁移到运行状态或者迁移到停止 状态。状态。 34知识材料知识材料 电梯状态处理伪代码电梯状态处理伪代码 o电梯各个状态的处理过程,可以依靠电梯各个状态的处理过程,可以依靠 电梯派遣函数,根据通过判定电梯信电梯派遣函数,根据通过判定电梯信 息结构体中的电梯状态,调用相应控息结构体中的电梯状态,调用相应控 制状态的函数来控制电梯的运行,伪制状态

23、的函数来控制电梯的运行,伪 代码如下:代码如下: 派遣函数派遣函数(void) switch(电梯运行状态电梯运行状态) 35知识材料知识材料 case 停止状态停止状态: 停止处理函数停止处理函数; break; case 运行状态运行状态: 运行处理函数运行处理函数; break; case 开门状态开门状态: 开门处理函数开门处理函数; break; case 关门状态关门状态: 关门处理函数关门处理函数; break; default: break; 36知识材料知识材料 电梯停止状态流程图电梯停止状态流程图 37知识材料知识材料 电梯运行状态流程图电梯运行状态流程图 38知识材料知识

24、材料 电梯开门状态流程图电梯开门状态流程图 39知识材料知识材料 电梯关门状态流程图电梯关门状态流程图 40知识材料知识材料 3. 输入输出部分设计输入输出部分设计 oLCD输出模块负责显示系统的输出模块负责显示系统的4个图形个图形 界面:系统欢迎界面、系统提示界面、界面:系统欢迎界面、系统提示界面、 系统运行界面和系统退出界面。系统运行界面和系统退出界面。 n 系统欢迎界面和系统退出界面分别显示一系统欢迎界面和系统退出界面分别显示一 幅图片及相关文字;幅图片及相关文字; n 系统主要工作在系统运行界面下。系统主要工作在系统运行界面下。 41知识材料知识材料 输入输出部分设计(续)输入输出部分

25、设计(续) o按键输入模块的主要功能有三个:设按键输入模块的主要功能有三个:设 置键盘键值;扫描键盘,采集按键信置键盘键值;扫描键盘,采集按键信 息;获取乘客请求结构体信息,并对息;获取乘客请求结构体信息,并对 这些信息进行封装、判断、转换等一这些信息进行封装、判断、转换等一 系列的处理。系列的处理。 42知识材料知识材料 输入输出部分设计(续)输入输出部分设计(续) o在设计当中,为了使键盘部分能够及在设计当中,为了使键盘部分能够及 时有效的响应,目标机上接有键盘专时有效的响应,目标机上接有键盘专 用芯片用芯片ZLG7290。键盘的动作由芯。键盘的动作由芯 片片ZLG7290检测,当键盘按下

26、时,检测,当键盘按下时, 芯片检测到后在芯片检测到后在INT引脚产生中断触引脚产生中断触 发电平通知处理器,处理器通过发电平通知处理器,处理器通过I2C 总线读取芯片总线读取芯片ZLG7290键值寄存器键值寄存器 中保留的键值。中保留的键值。 43知识材料知识材料 输入输出部分设计(续)输入输出部分设计(续) o在设计当中,为了使键盘部分能够及在设计当中,为了使键盘部分能够及 时有效的响应,目标机上接有键盘专时有效的响应,目标机上接有键盘专 用芯片用芯片ZLG7290。键盘的动作由芯。键盘的动作由芯 片片ZLG7290检测,当键盘按下时,检测,当键盘按下时, 芯片检测到后在芯片检测到后在INT

27、引脚产生中断触引脚产生中断触 发电平通知处理器,处理器通过发电平通知处理器,处理器通过I2C 总线读取芯片总线读取芯片ZLG7290键值寄存器键值寄存器 中保留的键值。中保留的键值。 44知识材料知识材料 输入输出部分设计(续)输入输出部分设计(续) o 键盘获得的输入信息繁多而复杂,需要对这键盘获得的输入信息繁多而复杂,需要对这 些信息进行处理,该过程分为两个步骤:些信息进行处理,该过程分为两个步骤: n 首先,对信息进行筛选和封装。由于键盘信息首先,对信息进行筛选和封装。由于键盘信息 扫描检测函数不断地等待按键被按下,而用户扫描检测函数不断地等待按键被按下,而用户 使用键盘输入信息是随机的

28、,所以需要对按键使用键盘输入信息是随机的,所以需要对按键 信息进行筛选,保留用户有效按键值。信息进行筛选,保留用户有效按键值。 n 由于系统使用规则的限制,每次用户发出的请由于系统使用规则的限制,每次用户发出的请 求,并不能由单个按键完成,需要组合使用按求,并不能由单个按键完成,需要组合使用按 键,所以需要把筛选出的多个有效键值一一封键,所以需要把筛选出的多个有效键值一一封 装在乘客请求信息结构体中存储。装在乘客请求信息结构体中存储。 45知识材料知识材料 四、系统函数说明四、系统函数说明 o电梯控制算法模块电梯控制算法模块 o按键输入模块按键输入模块 oLCD输出模块输出模块 o其他函数其他

29、函数 46知识材料知识材料 1. 电梯控制算法模块电梯控制算法模块 o main():主函数。首先完成设备初始化,主函数。首先完成设备初始化, 包括打开包括打开Framebuffer和和i2c设备,调用设备,调用 InitSystem()函数初始化系统数据结构函数初始化系统数据结构 和和LCD,然后在循环中不断检测按键组合,然后在循环中不断检测按键组合, 如有乘客请求则通过派遣函数处理请求,然如有乘客请求则通过派遣函数处理请求,然 后完成显示,当用户输入后完成显示,当用户输入*时循环结束,显时循环结束,显 示系统退出界面,完成系统清理工作退出程示系统退出界面,完成系统清理工作退出程 序。序。

30、o InitSystem():系统初始化函数。调用系统初始化函数。调用 InitElevator()函数初始化电梯信息结构函数初始化电梯信息结构 类型数据结构,调用类型数据结构,调用InitLcd()函数初始化函数初始化 LCD。 47知识材料知识材料 电梯控制算法模块(续)电梯控制算法模块(续) oInitElevator():电梯信息结构初始电梯信息结构初始 化函数。初始化电梯信息结构类型变化函数。初始化电梯信息结构类型变 量量ElevatorInfo。 oInitLcd():LCD初始化函数。通过写初始化函数。通过写 Framebuffer在在LCD绘制系统提示绘制系统提示 界面。界面。

31、 oDispatch():状态派遣函数。根据电状态派遣函数。根据电 梯当前状态,调用不同状态处理函数。梯当前状态,调用不同状态处理函数。 48知识材料知识材料 电梯控制算法模块(续)电梯控制算法模块(续) oElevatorStop():电梯停止状态处理电梯停止状态处理 函数。函数。 oElevatorRun():电梯运行状态处理电梯运行状态处理 函数。函数。 oElevatorOpen():电梯开门状态处电梯开门状态处 理函数。理函数。 oElevatorClose():电梯关门状态处电梯关门状态处 理函数。理函数。 49知识材料知识材料 电梯控制算法模块(续)电梯控制算法模块(续) oKeyCheck():用户信息转换函数。把用户信息转换函数。把 乘客按键请求信息结构体乘客按键请求信息结构体key中的信中的信 息映射至电梯信息结构体息映射至电梯信息结构体 ElevatorInfo,设置电梯运行状态。,设置电梯运行状态。 oDisplay():运行界面显示函数。显示运行界面显示函数。显示 系统运行界面。系统运行界面。 oExitShow():退出界面显示函数。显退出界面显示函数。显 示系统退出界面。示系统退出界面。 50知识材料知识材料 2. 按键输入模块按键输入模块 okey_set(char ucChar):键值转换键值转换 函数。把扫描码转换为键码。函数。把扫描码转

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论