1、 嵌入式微处理器结构与应用课程设计报告 题目:电子菜单 一、课程设计的目的和主要内容: 目的:嵌入式微处理器结构与应用课程设计是软件工程本科专业的专业实践课程,结合在课程中学到的嵌入式系统的开发和调试方法,对学生在嵌入式系统设计和应用开发的基本技能方面进行综合的检验和实践。是学生在学习完嵌入式微处理器结构与应用课程之后的一个重要的实践环节。要求学生在教师的指导下,综合运用已学过的嵌入式微处理器相关的各种知识和技能,以小组协作的方式完成一项较为完整、并具有一定难度的课程设计任务。使学 生总结本课程的主要知识点,提高学生的实际动手能力,为学生今后进一步学习和从事嵌入式系统相关的研究与开发打下坚实的
2、基础。 内容 : 基于实时操作系统,学会复杂应用程序的基本开发方法,结合课程实验学到的知识,编写一个能综合应用液晶屏、触摸屏、键盘并结合简单文件系统 API 函数的界面应用。要求具备基本的三个界面:初始界面、点菜界面、结束界面,基本实现点菜的全过程。 二、基本的设计思路或程序流程图描述 : 基于 MVC 的设计模式,将程序分成三大独立的部分:模型(逻辑)部分、视图部分、控制部分。这三大部分的关系如下: 程序总流程图: 控制部分 : 消息循环(); 触摸屏响应(); 键盘响应(); 逻辑部分: 选择菜 (); 取消菜 (); 获取总价 (); 视图部分 : 标志菜单条目(); 取消标志条目();
3、 滚动菜单(); 更新逻辑 更新视图 编程部分 1. 定义一个名为 menuEntry 的结构体,结构体里面包括两个整型变量,一个是价格变量,另一个是表示菜单状态的变量。 关闭线程 打开线程 点菜结束按钮 关闭按钮 翻页按钮 界面控件 菜单条目 拉动 单击 初始化程序, 打开启动画面线程 显示启动动画 加载菜单数据 关闭启动画面线程, 显示点菜画面 等待系统消息 判断消息类型 判断该菜单条目的状态,进行相应的逻辑和视图更新 键盘消息 判断操作类型 触摸屏消息 判断单击内容 进行菜单的上下滚动 判断控件类型 进行菜单的翻页 结束程序 显示点菜结束画面和总价 重 置 逻 辑 数据,显示最初的点菜界
4、面 显示程序结束画面 2. 定义一个数组 entry,数组有三十个元素,均为 struct menuEntry 类型数据。 3. 定义整型变量 totalPrice,并赋初值为 0. 4. 初始化函数 void InitModel( ):用于初始化 25 个菜的价格。并且把这 25个菜的状态和 所点菜的总价 totalPrice 赋初值为 0. 5. 取消点菜函数 void Cancal(int index):当取消所点的一个菜时,总价totalPrice 减去所取消的菜的价格 entryindex.price。所取消的菜的状态entryindex.state 设为 0. 6. 选择点菜函数
5、void Cancal(int index):当点一个菜时,总价 totalPrice加上所选择的菜的价格 entryindex.price 。所点的菜的状态entryindex.state 设为 1. 7. 计算总价函数 int getTotalPrice() :返回总价变量的值 totalPrice。 8. 返回状态函数 int getState(int index):返回状态值 entryindex.state。 收集图片 在百度上收集了 50 幅关于食品的图片,然后选择出其中的 25 张,把这些图片剪切成了大小像素想吐的图片,以方便使用者的使用。 调试部分 在一开始我们只做了五道菜在菜
6、谱里,经过调试正确之后才增加到 25 道。 在调试中出现了一下的一些问题: 1. 问题:得到总价为负数或者与所点菜的真实总价不同。 解决:经过检查发现造成以上问题的原因是:当 我们点菜或取消点菜时,相应的菜的状态没有改变。 2. 问题:滚动菜单时,图片会只看到一部分,滚出界了。 解决:在界面函数里需要设置限制。 三、交叉开发环境的建立和主要的调试步骤及其遇到的主要问题和解决的方法: 交叉开发环境的建立,在宿主机上运行 ADS 开发软件来编译源程序,再通过串口将目标程序下载到 ARM2410-S 开发板上运行。主要通过 JTAG 来调试程序,用 ADS 的调试工具来查看寄存器和变量的变化。 遇到
7、的问题有: 1.触摸屏没有反应,程序并没有错误。解决方法:用一个较新的库文件代替原来的库文件。 2.一些图片 显示不正常,可能是驱动的问题。解决方法:改变图片的尺寸就可以正常显示了。 3.加载较大的数据到内存出现内存错误。解决方法:采用动态内存分配。 四、主要的设计结果和设计的总结,和需要进一步完善的问题: 设计结果: 程序在 ARM2410-S 开发板上运行: 启动画面: 点菜界面: 点菜结束界面: 设计总结: 通过电子菜单的综合试验,掌握了开发嵌入式应用程序的流程,了解了嵌入式系统及其编程的一些特点。 1对嵌入式操作系统 UC/OS-II 系统有了一定的了 解。 UC/OS-II 系统的核
8、心是任务调度,用户可以定义不同的任务及优先级, UC/OS-II 来负责进行调度。这使得用户应用编程比较方便,把精力更多地放在程序功能的分析以及任务的设计与实现,发挥的空间非常大。 2嵌入式系统的另一个特点是不明显把应用程序和操作系统区分开,它们是融合在一起的。在 UC/OS-II 系统中编写综合实验时,程序结构是比较清晰的,因为 UC/OS-II 是一个多任务系统。可以将一个综合的功能分为几个简单的小功能,每一个小功能具体表现为程序运行时的一个任务,但是程序编写时要谨慎处理任务与任务之间 的通信,以及任务交出或占有 CPU 的时机等细节。 0 进一步完善方案: 1使用多任务,可以加上动态图片,可以使界面更加美观。 2一般情况下,菜的种类较多,需要定义多个点菜界面,同时要协调好各个界面之间的关系以及正确响应键盘和触摸屏。