欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式系统程序设计实例.pptx

    • 资源ID:73011296       资源大小:2.39MB        全文页数:57页
    • 资源格式: PPTX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式系统程序设计实例.pptx

    会计学1嵌入式系统程序设计实例嵌入式系统程序设计实例嵌入式系统程序设计实例嵌入式系统程序设计实例n n本章旨在使用英倍特Embest Edukit-型教学实验平台和嵌入式Linux操作系统完成自动电梯模拟控制系统的设计和实现第1页/共57页嵌入式系统程序设计实例嵌入式系统程序设计实例n n背景介绍n n系统架构n n详细设计n n系统函数说明n n系统演示第2页/共57页一、背景介绍一、背景介绍n n系统目标机硬件采用系统目标机硬件采用Embest EduKit-IIIEmbest EduKit-III型开发板,型开发板,S3C2410XS3C2410X处处理器,目标机系统软件采用理器,目标机系统软件采用mizi Linuxmizi Linux操作系统。方便起见,操作系统。方便起见,宿主机软件使用宿主机软件使用CygwinCygwin模拟模拟LinuxLinux系统,交叉编译工具链采用系统,交叉编译工具链采用arm-linux-gccarm-linux-gcc,版本号为。,版本号为。Embest EduKit-IIIEmbest EduKit-III型开发板有分辨率型开发板有分辨率为为320240320240的的LCDLCD显示器,以及显示器,以及4 4行行5 5列小键盘,键盘布局如下列小键盘,键盘布局如下图所示:图所示:第3页/共57页背景介绍(续)背景介绍(续)第4页/共57页背景介绍(续)背景介绍(续)n n本程序模拟8层楼间(地下1层,地上7层)单部电梯运送乘客的整个工作过程。n n利用实验设备的键盘模拟电梯内部和外部的按键,利用LCD显示器绘制电梯运行过程以及状态和提示信息第5页/共57页背景介绍(续)背景介绍(续)n n系统功能:系统功能:n n每层电梯入口处设有上行、下行请求按钮,电梯内设有乘客请求停战每层电梯入口处设有上行、下行请求按钮,电梯内设有乘客请求停战的楼层呼叫按钮的楼层呼叫按钮 n n有电梯所处位置指示设置,电梯上行、下行状态指示装置,所有系统有电梯所处位置指示设置,电梯上行、下行状态指示装置,所有系统请求信息指示装置请求信息指示装置n n每隔一段时间,电梯上升或是下降一层楼,同时显示电梯上升和下降每隔一段时间,电梯上升或是下降一层楼,同时显示电梯上升和下降的信息的信息n n电梯到达有停站的楼层后,该楼层有指示装置表明到达了停站请求楼电梯到达有停站的楼层后,该楼层有指示装置表明到达了停站请求楼层,电梯切换为开门状态层,电梯切换为开门状态n n系统能够记忆电梯内、外部的所有请求信号,并按照电梯运行规则依系统能够记忆电梯内、外部的所有请求信号,并按照电梯运行规则依次相应这些请求,每个请求信号保留至执行后撤除次相应这些请求,每个请求信号保留至执行后撤除第6页/共57页背景介绍(续)背景介绍(续)n n为了实现电梯运行的正确逻辑,制定以下规则:为了实现电梯运行的正确逻辑,制定以下规则:n n电梯接通电源时,电梯必须停留在最底层电梯接通电源时,电梯必须停留在最底层n n电梯可以到达所在楼宇的每一层,但是电梯只能在该楼宇的最低层至最高层之电梯可以到达所在楼宇的每一层,但是电梯只能在该楼宇的最低层至最高层之间运行间运行n n严格规定电梯内部的信号优先级高于电梯外部的请求信号严格规定电梯内部的信号优先级高于电梯外部的请求信号n n电梯处于上升模式时,只响应比电梯所在位置高的楼层的上楼请求信号,而保电梯处于上升模式时,只响应比电梯所在位置高的楼层的上楼请求信号,而保留下楼信号,由下而上逐个执行;直到最后一个执行完毕,再执行下楼请求信留下楼信号,由下而上逐个执行;直到最后一个执行完毕,再执行下楼请求信号号n n电梯处于下降模式时与上升模式相反电梯处于下降模式时与上升模式相反n n电梯执行完所有请求后,应保留在所在的楼层保持不动,等待新的请求电梯执行完所有请求后,应保留在所在的楼层保持不动,等待新的请求第7页/共57页二、系统架构二、系统架构n n系统总体结构n n初始化模块初始化模块n n电梯控制模块电梯控制模块n n按键输入模块按键输入模块n nLCDLCD显示模块显示模块第8页/共57页系统架构(续)系统架构(续)n n系统总体结构图第9页/共57页系统架构(续)系统架构(续)n n初始化模块n n基础模块,负责初始化电梯算法的数据结构,基础模块,负责初始化电梯算法的数据结构,同时初始化显示界面,给用户提示信息和操作同时初始化显示界面,给用户提示信息和操作说明:说明:第10页/共57页系统架构(续)系统架构(续)n n电梯控制模块n n关键模块,负责电梯当前状态,根据电梯状态关键模块,负责电梯当前状态,根据电梯状态派遣电梯执行停止、运行、开门、关门等任务;派遣电梯执行停止、运行、开门、关门等任务;n n流程图第11页/共57页 第12页/共57页系统架构(续)系统架构(续)n n按键输入模块n n4X54X5小键盘作为输入端,乘客通过按键模拟的小键盘作为输入端,乘客通过按键模拟的电梯按钮向系统输入请求信息。系统使用电梯按钮向系统输入请求信息。系统使用0 07 7这这8 8个按键模拟八个楼层按钮,和这个按键模拟八个楼层按钮,和这2 2个按个按键模拟电梯外部的上、下行请求按钮,键模拟电梯外部的上、下行请求按钮,A A和和B B按按键用于指示发出的请求来自于电梯内部还是外键用于指示发出的请求来自于电梯内部还是外部,部,E E代表输入确认键,代表输入确认键,*键代表程序结束。按键代表程序结束。按键定义如下表所示:键定义如下表所示:第13页/共57页系统架构(续)系统架构(续)第14页/共57页系统架构(续)系统架构(续)n n电梯内部n n0-70-7八个按键,模拟八个按键,模拟8 8个楼层,不设置开门和关个楼层,不设置开门和关门按钮;门按钮;n n电梯外部n n除地下一层和顶层之外,每层都有一个上行按除地下一层和顶层之外,每层都有一个上行按钮和一个下行按钮;钮和一个下行按钮;n n特殊使用规则n n系统用按键系统用按键A A和和B B判断乘客发出的请求是来自电判断乘客发出的请求是来自电梯内部还是电梯外部。梯内部还是电梯外部。第15页/共57页系统架构(续)系统架构(续)n n使用步骤:n n输入输入A A或是或是B B;n n输入输入0-70-7:如果输入:如果输入A A,0-70-7表示内部乘客请求到表示内部乘客请求到达的楼层;如果输入达的楼层;如果输入B B,表示外部乘客发出请,表示外部乘客发出请求时位于的楼层;求时位于的楼层;n n第第2 2步中如输入步中如输入B B,需要接着输入,需要接着输入+或,表示或,表示外部乘客的上下行方向情况,第外部乘客的上下行方向情况,第2 2步输入步输入0 0时不时不能输入,输入能输入,输入7 7时不能输入时不能输入+;n n输入输入E E确认。确认。第16页/共57页系统架构(续)系统架构(续)n nLCD显示模块n n本模块通过本模块通过LCDLCD显示电梯目前的运行信息显示电梯目前的运行信息n n电梯状态电梯状态n n当前位置当前位置n n电梯内部和外部请求信息电梯内部和外部请求信息n n电梯运行的动态效果电梯运行的动态效果n n乘客请求的英文缩写解释乘客请求的英文缩写解释第17页/共57页系统架构(续)系统架构(续)n n系统运行界面第18页/共57页系统架构(续)系统架构(续)n n程序主界面按照显示功能被划分为四大区域,从左到右依次为:n n电梯信息显示区域,这个区域位于显示屏最左电梯信息显示区域,这个区域位于显示屏最左侧,显示电梯状态、电梯方向、电梯位置等信侧,显示电梯状态、电梯方向、电梯位置等信息;息;n n乘客请求信息显示区域,这个区域位于屏幕中乘客请求信息显示区域,这个区域位于屏幕中部,该栏的字母和数字具体代表意义参照下表;部,该栏的字母和数字具体代表意义参照下表;第19页/共57页系统架构(续)系统架构(续)第20页/共57页系统架构(续)系统架构(续)n n电梯动态效果图,本图紧邻请求信息显示区域,电梯动态效果图,本图紧邻请求信息显示区域,图中方块代表一个楼层,当电梯运行时,方块图中方块代表一个楼层,当电梯运行时,方块位置会发生相应的动态变化。位置会发生相应的动态变化。n n主界面信息说明区域,这个区域位于屏幕最右主界面信息说明区域,这个区域位于屏幕最右侧,列出了乘客请求信息显示区中字母简写对侧,列出了乘客请求信息显示区中字母简写对应的英文单词。应的英文单词。第21页/共57页三、详细设计三、详细设计n n数据结构描述n n电梯运行算法设计n n输入输出部分设计第22页/共57页1.数据结构描述数据结构描述n n自动电梯控制系统的自动电梯控制系统的4 4个模块中,因为初始化部分工作较少,可以个模块中,因为初始化部分工作较少,可以把它和算法模块合并在一起,即包含主函数的模块(把它和算法模块合并在一起,即包含主函数的模块(Elevator.cElevator.c、Elevator.hElevator.h);系统还包括按键输入模块();系统还包括按键输入模块(Key.cKey.c、Key.hKey.h)、)、LCDLCD显显示模块(示模块(Lcd.cLcd.c、Lcd.hLcd.h),以及几个资源文件,分别为:),以及几个资源文件,分别为:24242424点阵点阵字模文件(字模文件(Hzk24.cHzk24.c)、)、ASCASC码码8888点阵字模文件(点阵字模文件(Font.cFont.c)、开机)、开机初始图片资源文件(初始图片资源文件(Frame.cFrame.c)、启动界面背景图片资源文件)、启动界面背景图片资源文件(Title.cTitle.c)。)。第23页/共57页A.电梯状态算法模块数据结构电梯状态算法模块数据结构/*Elevator.h*/*电梯状态:开、关、运行、停止电梯状态:开、关、运行、停止*/typedef enum Status open,close,run,stopSTATUS;第24页/共57页/*电梯外部请求:向上、向下、向上并且向下、无请求电梯外部请求:向上、向下、向上并且向下、无请求*/typedef enum OUTReqType up_request,down_request,both_request,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;/电梯楼层电梯楼层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显示模块数据结构显示模块数据结构typedef 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_t g_auc_hzk24;/存放一个汉字存放一个汉字2424点点阵字阵字/模的数组模的数组const uint8_t fontdata_8x8;/存放一个存放一个ASC码码88点点阵字阵字/模的数组模的数组第29页/共57页2.电梯运行算法设计电梯运行算法设计n n根据电梯运行流程,把电梯分为停止、运行、开门、关门四种控制状态,如下图所示。停止状态是指电梯在没有任何请求的情况下的静止状态,而不是指电梯在运行过程中开门前的停顿状况。我们忽略停顿状况,把电梯从运行状态直接迁移为开门状态。第30页/共57页电梯控制状态转移图电梯控制状态转移图第31页/共57页电梯控制状态转移图(续)电梯控制状态转移图(续)n n系统初始时,电梯处于停止状态。n n电梯处于停止状态时,根据发出请求的楼层不同可以分别迁移到运行或者开门两个不同状态。n n电梯处于运行状态时,如果没有到达请求楼层发生自迁移,即保持运行状态不变;当到达请求楼层时,迁移到开门状态。第32页/共57页电梯控制状态转移图(续)电梯控制状态转移图(续)n n电梯处于开门状态一段时间后必然迁移到关门状态。n n电梯处于关门状态时可以根据是否有请求迁移到运行状态或者迁移到停止状态。第33页/共57页电梯状态处理伪代码电梯状态处理伪代码n n电梯各个状态的处理过程,可以依靠电梯派遣函数,根据通过判定电梯信息结构体中的电梯状态,调用相应控制状态的函数来控制电梯的运行,伪代码如下:派遣函数派遣函数(void)switch(电梯运行状态电梯运行状态)第34页/共57页case 停止状态停止状态:停止处理函数停止处理函数;break;case 运行状态运行状态:运行处理函数运行处理函数;break;case 开门状态开门状态:开门处理函数开门处理函数;break;case 关门状态关门状态:关门处理函数关门处理函数;break;default:break;第35页/共57页电梯停止状态流程图电梯停止状态流程图第36页/共57页电梯运行状态流程图电梯运行状态流程图第37页/共57页电梯开门状态流程图电梯开门状态流程图第38页/共57页电梯关门状态流程图电梯关门状态流程图第39页/共57页3.输入输出部分设计输入输出部分设计n nLCD输出模块负责显示系统的4个图形界面:系统欢迎界面、系统提示界面、系统运行界面和系统退出界面。n n系统欢迎界面和系统退出界面分别显示一幅图系统欢迎界面和系统退出界面分别显示一幅图片及相关文字;片及相关文字;n n系统主要工作在系统运行界面下。系统主要工作在系统运行界面下。第40页/共57页输入输出部分设计(续)输入输出部分设计(续)n n按键输入模块的主要功能有三个:设置键盘键值;扫描键盘,采集按键信息;获取乘客请求结构体信息,并对这些信息进行封装、判断、转换等一系列的处理。第41页/共57页输入输出部分设计(续)输入输出部分设计(续)n n在设计当中,为了使键盘部分能够及时有效的响应,目标机上接有键盘专用芯片ZLG7290。键盘的动作由芯片ZLG7290检测,当键盘按下时,芯片检测到后在INT引脚产生中断触发电平通知处理器,处理器通过I2C总线读取芯片ZLG7290键值寄存器中保留的键值。第42页/共57页输入输出部分设计(续)输入输出部分设计(续)n n在设计当中,为了使键盘部分能够及时有效的响应,目标机上接有键盘专用芯片ZLG7290。键盘的动作由芯片ZLG7290检测,当键盘按下时,芯片检测到后在INT引脚产生中断触发电平通知处理器,处理器通过I2C总线读取芯片ZLG7290键值寄存器中保留的键值。第43页/共57页输入输出部分设计(续)输入输出部分设计(续)n n键盘获得的输入信息繁多而复杂,需要对这些信息进行处理,键盘获得的输入信息繁多而复杂,需要对这些信息进行处理,该过程分为两个步骤:该过程分为两个步骤:n n首先,对信息进行筛选和封装。由于键盘信息扫描检测函数不断地首先,对信息进行筛选和封装。由于键盘信息扫描检测函数不断地等待按键被按下,而用户使用键盘输入信息是随机的,所以需要对等待按键被按下,而用户使用键盘输入信息是随机的,所以需要对按键信息进行筛选,保留用户有效按键值。按键信息进行筛选,保留用户有效按键值。n n由于系统使用规则的限制,每次用户发出的请求,并不能由单个按由于系统使用规则的限制,每次用户发出的请求,并不能由单个按键完成,需要组合使用按键,所以需要把筛选出的多个有效键值一键完成,需要组合使用按键,所以需要把筛选出的多个有效键值一一封装在乘客请求信息结构体中存储。一封装在乘客请求信息结构体中存储。第44页/共57页四、系统函数说明四、系统函数说明n n电梯控制算法模块n n按键输入模块n nLCD输出模块n n其他函数第45页/共57页1.电梯控制算法模块电梯控制算法模块n nmain():main():主函数。首先完成设备初始化,包括打开主函数。首先完成设备初始化,包括打开FramebufferFramebuffer和和i2ci2c设备,调用设备,调用InitSystem()InitSystem()函数初始化系统数据结构和函数初始化系统数据结构和LCDLCD,然,然后在循环中不断检测按键组合,如有乘客请求则通过派遣函后在循环中不断检测按键组合,如有乘客请求则通过派遣函数处理请求,然后完成显示,当用户输入数处理请求,然后完成显示,当用户输入*时循环结束,显示时循环结束,显示系统退出界面,完成系统清理工作退出程序。系统退出界面,完成系统清理工作退出程序。n nInitSystem():InitSystem():系统初始化函数。调用系统初始化函数。调用InitElevator()InitElevator()函数初始化电函数初始化电梯信息结构类型数据结构,调用梯信息结构类型数据结构,调用InitLcd()InitLcd()函数初始化函数初始化LCDLCD。第46页/共57页电梯控制算法模块(续)电梯控制算法模块(续)n nInitElevator():电梯信息结构初始化函数。初始化电梯信息结构类型变量ElevatorInfo。n nInitLcd():LCD初始化函数。通过写Framebuffer在LCD绘制系统提示界面。n nDispatch():状态派遣函数。根据电梯当前状态,调用不同状态处理函数。第47页/共57页电梯控制算法模块(续)电梯控制算法模块(续)n nElevatorStop():电梯停止状态处理函数。n nElevatorRun():电梯运行状态处理函数。n nElevatorOpen():电梯开门状态处理函数。n nElevatorClose():电梯关门状态处理函数。第48页/共57页电梯控制算法模块(续)电梯控制算法模块(续)n nKeyCheck():用户信息转换函数。把乘客按键请求信息结构体key中的信息映射至电梯信息结构体ElevatorInfo,设置电梯运行状态。n nDisplay():运行界面显示函数。显示系统运行界面。n nExitShow():退出界面显示函数。显示系统退出界面。第49页/共57页2.按键输入模块按键输入模块n nkey_set(char ucChar):键值转换函数。把扫描码转换为键码。n nkey():按键获取函数。读取i2c总线,获得用户按键。n nGetKey():键值封装函数。把用户的有效按键组合为KEY类型结构体变量keyboard并返回。第50页/共57页3.LCD输出模块输出模块n nfb_open():Framebuffer设备初始化函数。打开Framebuffer设备,把帧缓冲区映射到用户态内存空间。n nfb_close():关闭Framebuffer设备文件。n nfb_memcpy():Framebuffer缓冲区写入函数。把代表某颜色点的信息写入Framebuffer设备。第51页/共57页LCD输出模块(续)输出模块(续)n ndraw_dot():画点函数。调用fb_memcpy()在屏幕上画点。n nunfillrectangle():矩形填充函数。调用draw_dot()函数在屏幕上绘制矩形n nLcd_DsyHz24():汉字显示函数。在屏幕显示汉字字符串或ASC字符串。n nDrawPicture():图形显示函数。访问图形资源文件,在屏幕显示图形。第52页/共57页4.其他函数其他函数n nprintf():调试函数。输出信息会显示在宿主机超级终端,不会显示在LCD上。n nusleep():挂起进程若干微秒。n nsleep():挂起进程若干秒。n nmemset():把一段内存空间设为某值。n nmemcpy():复制某内存地址处的一段内容到另一地址。第53页/共57页五、系统演示五、系统演示n n下面是一些系统运行的截图。系统启动欢迎下面是一些系统运行的截图。系统启动欢迎界面:界面:第54页/共57页系统演示(续)系统演示(续)n n系统提示界面:系统提示界面:第55页/共57页系统演示(续)系统演示(续)n n系统运行界面:系统运行界面:第56页/共57页

    注意事项

    本文(嵌入式系统程序设计实例.pptx)为本站会员(莉***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开