嵌入式微处理器结构与应用课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《嵌入式微处理器结构与应用》
课程设计报告
题目:电子菜单
一、课程设计的目的和主要内容:
目的:《嵌入式微处理器结构与应用》课程设计是软件工程本科专业的专业实践课程,结合在课程中学到的嵌入式系统的开发和调试方法,对学生在嵌入式系统设计和应用开发的基本技能方面进行综合的检验和实践。是学生在学习完《嵌入式微处理器结构与应用》课程之后的一个重要的实践环节。
要求学生在教师的指导下,综合运用已学过的嵌入式微处理器相关的各种知识和技能,以小组协作的方式完成一项较为完整、并具有一定难度的课程设计任务。使学生总结本课程的主要知识点,提高学生的实际动手能力,为学生今后进一步学习和从事嵌入式系统相关的研究与开发打下坚实的基础。
内容:基于实时操作系统,学会复杂应用程序的基本开发方法,结合课程实验学到的知识,编写一个能综合应用液晶屏、触摸屏、键盘并结合简单文件系统API函数的界面应用。要求具备基本的三个界面:初始界面、点菜界面、结束界面,基本实现点菜的全过程。
二、基本的设计思路或程序流程图描述:
基于MVC的设计模式,将程序分成三大独立的部分:模型(逻辑)部分、视图部分、控制部分。这三大部分的关系如下:
程序总流程图:
控制部分: 消息循环(); 触摸屏响应(); 键盘响应(); ……
逻辑部分: 选择菜(); 取消菜(); 获取总价(); ……
视图部分:
标志菜单条目(); 取消标志条目(); 滚动菜单(); ……
更新逻辑
更新视图
本人负责:
二、视图部分:
关闭线程
打开线程
点菜结束按钮
关闭按钮
翻页按钮
界面控件
菜单条目
拉动
单击
初始化程序, 打开启动画面线程
显示启动动画
加载菜单数据
关闭启动画面线程, 显示点菜画面
等待系统消息
判断消息类型
判断该菜单条目的状态,进行相应的逻辑和视图更新
键盘消息
判断操作类型
触摸屏消息
判断单击内容
进行菜单的上下滚动
判断控件类型
进行菜单的翻页
结束程序
显示点菜结束画面和总价
重置逻辑数据,显示最初的点菜界面
显示程序结束画面
LCD驱动、绘图部分:
由于ucos提供的绘图API的效率每秒只有3至5幅图,而且不能直接操作LCD的后台缓冲区,满足不了流畅的菜单滚动效果,所以必须重写LCD驱动和绘图函数。重写之后:
pbuf:LCD后台缓冲区的指针,可以直接操作。
void kLCD_Refresh():LCD刷新函数,跟原驱动相差不大。
void kLCD_Part_Refresh(int Wnd_x1,int Wnd_y1,int Wnd_x2,int Wnd_y2):LCD 局部刷新函数,在局部绘图的情况下可以获得更高的效率。
只要调节LCD后台缓冲区指针pbuf的位置,再调用上面两个刷新程序,就可以实现快速滚动画面,可以达到每秒20至25幅图。
void LoadBMP(U16* pBMP,char* filename,int bmpWidth,int bmpHeight):加载图片的函数,加图片加载到内存加快系统的运行。
void PaintBMP(U16* screen,U16* pBMP,int bmpX,int bmpY,int bmpWidth,int bmpHeight):绘制图片函数,实现在任一缓冲区上绘制图片的功能。
void ClreaLCD():清屏函数。
三、交叉开发环境的建立和主要的调试步骤及其遇到的主要问题和解决的方法:
交叉开发环境的建立,在宿主机上运行ADS开发软件来编译源程序,再通过串口将目标程序下载到ARM2410-S开发板上运行。主要通过JTAG来调试程序,用ADS的调试工具来查看寄存器和变量的变化。
遇到的问题有:
1.触摸屏没有反应,程序并没有错误。解决方法:用一个较新的库文件代替原来的库文件。
2.一些图片显示不正常,可能是驱动的问题。解决方法:改变图片的尺寸就可以正常显示了。
3.加载较大的数据到内存出现内存错误。解决方法:采用动态内存分配。
四、主要的设计结果和设计的总结,和需要进一步完善的问题:设计结果:
程序在ARM2410-S开发板上运行:
启动画面:
点菜界面:
点菜结束界面:
设计总结:
通过电子菜单的综合试验,掌握了开发嵌入式应用程序的流程,了解了嵌入式系统及其编程的一些特点。
1.对嵌入式操作系统UC/OS-II系统有了一定的了解。UC/OS-II系统的核心是任务调度,用户可以定义不同的任务及优先级,UC/OS-II来负责进行调度。这使得用户应用编程比较方便,把精力更多地放在程序功能的分析以及任务的设计与实现,发挥的空间非常大。
2.嵌入式系统的另一个特点是不明显把应用程序和操作系统区分开,它们是融合在一起的。在UC/OS-II系统中编写综合实验时,程序结构是比较清晰的,因为UC/OS-II是一个多任务系统。可以将一个综合的功能分为几个简单的小功能,每一个小功能具体表现为程序运行时的一个任务,但是程序编写时要谨慎处理任务与任务之间的通信,以及任务交出或占有CPU的时机等细节。
进一步完善方案:
1.使用多任务,可以加上动态图片,可以使界面更加美观。
2.一般情况下,菜的种类较多,需要定义多个点菜界面,同时要协调好各个界面之间的关系以及正确响应键盘和触摸屏。