




免费预览已结束,剩余10页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
*大学课程设计报告 题 目 基于uCOSII的LCD驱动程序专 业 学 号 授课班号 学生姓名 指导教师 完成时间 课程设计(报告)任务书(理 工 科 类)、课程设计(报告)题目:基于uCOSII的LCD驱动编写、课程设计(论文)工作内容一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力;2、掌握基于uCOSII的LCD驱动编写开发过程;3、掌握在UCOSII操作系统下添加LCD驱动程序的基本方法;4、使用做好的驱动程序做一些简单的应用实例。二、研究方法及手段应用1、将任务分成若干模块,组员有侧重点的研究学习讨论,并最终加以整合完成;2、查阅相关论文资料,学习优秀应用实例编写开发过程,找出其成功经验;3、和其他组同学讨论,对各自实验存在问题讨论并交流经验。三、课程设计预期效果1、掌握基于uCOSII的LCD驱动编写开发过程;2、在移植好的UCOSII项目中添加LCD的驱动程序;3、学习在UCOSII下,LCD应用任务的简单编程实例,在LCD屏上模拟D7、D8灯的闪烁。学生姓名: 专业年级: 目 录前 言 .3第一章 系统设计 . 4第一节 课题目标及总体方案4第二节 驱动程序组成4第三节 UCOSII操作系统下添加LCD驱动程序.5第四节 应用程序.6第二章 实验结果测试及讨论7第三章 总结8心得体会8参考文献9附录9 源程序.9前 言LCD是嵌入式操作系统的重要组成部分,是系统和用户之间进行交互和信息交换的媒介,它实现信息的内部形式与人类可以接受形式之间的转换。用户可以只通过LCD监测系统内部运行状态,然后作出相应的处理。因而具有良好的人机界面的嵌入式操作系统能过很好的完成系统开发、生产生活的需要!S3C44B0X 中具有内置的LCD 控制器,它能将显示缓存(在SDRAM存储器中)中的LCD图像数据传输到外部的LCD驱动电路上的逻辑功能。它支持单色、4级、16级灰度LCD显示,以及256彩色LCD显示。在显示灰度时,它采用时间抖动算法(time-based dithering algorithm)和帧率控制 (Frame Rate Control)方法,在显示彩色时,它采用RGB的格式,即RED、GREEN、BLUE,三色混合调色。通过软件编程,可以实现233或332的RGB调色的格式。对于不同尺寸的LCD显示器,它们会有不同的垂直和水平象素点、不同的数据宽度、不同的接口时间及刷新率,通过对LCD 控制器中的相应寄存器写入不同的值,来配置不同的LCD 显示板。LCD能够正常工作得益于软硬件的协同工作,S3C44B0X集成了LCD的控制器,即不带驱动电路的LCD显示模块,驱动程序需要根据用户需要来自行添加。u C / O S 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统,在具体应用中稳定可靠,并且支持uIP TCP/IP协议栈、ucGUI等,可扩展性强,功能强大。因此,在uC/OS II下写的LCD驱动具有较好的实时性和稳定性,功能强大。第一章 系统设计第一节 课题目标及总体方案首先学习了解LCD的驱动程序,然后在移植好的UCOSII项目中添加LCD的驱动程序, 最后能够在uCOSII下,编写LCD应用任务的简单编程实例,来检验LCD驱动程序的完好度。本实验实例为在LCD屏上显示跑马灯,同时模拟CPU板上D7、D8灯的交替闪烁,闪烁周期为跑马灯周期。第一节 LCD驱动程序组成LCD驱动程序的文件夹Gui(如图1所示),其中,包括四个文件夹:图1Font中存放的是字体文件,存放四个文件,Font_Cn12.c为调用汉字库12X12汉字的引用文件;Font_Cn16.c为调用汉字库16X16汉字的引用文件;Font8X16为调用ASCII码的源文件,它的大小为8X16;Gchar.c为显示字符的源程序库。Glib中存放绘图的中层和上层的函数,上层函数是直接供用户调用的API,。Glib文件夹内存放两个文件,Glib.c是图形显示库的源代码,它主要实现LCD的中层和上层供用户调用的API函数,Glib.h则是供其他文件或自身调用的头文件。Init中存放GUI初始化的函数,Init文件夹内存放两个文件,data.h是数据类型重定义的文件,GUI_Init.c是GUI系统的初始化文件。Lcddriver中存放的是LCD的底层驱动函数,以及对LCD控制器的初始化函数。Lcddriver文件内存放两个文件,Lcddriver.c包括LCD的底层读写内存用来绘图的函数,以及初始化LCD控制寄存器的初始化硬件的函数。Lcddrive 是供其他文件或自身调用的头文件。 第三节 UCOSII操作系统下添加LCD驱动程序 在UCOSII操作系统下添加LCD驱动程序,也就是把整个GUI文件夹加入该项目里。同时,还要在ApplicationINC目录下的config.h文件中,加入GUI程序的头文件,#include .GuiGlibGlib.h,这是为了在应用中方便调用画图的API函数。如果,要在LCD上显示英文或汉字,还要在ApplicationSRCMain.c中声明引用的是extern GUI_FONT CHINESE_FONT12;等外部定义过的字体。这样,编译就能通过,就把LCD的驱动程序以及小型的GUI图形库,加载到了UCOSII操作系统上了。在UCOSII操作系统下,要单独开辟一个GUI任务,进行画图,一般这个任务的优先级很低,一般它仅比空闲任务的优先级高,这样做是为了可以使更多的任务等级显示在屏上。在Application/SRC下的MAIN.C文件,有GUI的应用任务,绘图的API函数即放在这里,或者作一个应用函数的文件,在此任务里调用。所有的对LCD显示操作内容要在MAIN.C文件中编写。第四节 应用程序本实验实例为在LCD屏上显示跑马灯,同时模拟CPU板上D7、D8灯的交替闪烁,闪烁周期为跑马灯周期。来检验LCD驱动程序是否能正常工作。实验流程图如下: 程序开始先进行各项初始化,包括开发板、GUI初始化、系统初始化,然后配置LCD屏幕设置,运行时先调用跑马灯延时程序Timedelay(),跑马灯运行一周后,置开发板上D7、D8灯亮灭,通过信号传递置LCD屏幕上模拟D7D8灯亮灭, 接着调用Timedelay()函数,循环任务。第二章 实验结果测试测试方法:1. 在移植好的UCOSII项目中添加LCD的驱动程序。(方法参见第一章 第二节)2. 在main.c文件中编写程序(源程序见附录),先使用画图函数绘出包含跑马灯,模拟D7,D8两灯在内的LCD界,用函数timedelay()控制跑马灯运行,timedelay()亦是延时函数。D7,D8两灯每交替闪说一次,调用一次timedelay()延时函数。3. 连接电脑和试验箱,编译程序,无错误,把程序下载到S3C44B0X,观察结果。4. 观察现象,有问题检查修改MAIN.C文件。LCD界面显示如下: 图 2第三章 总结实验结果显示出预期的LCD界面,LCD屏幕显示预定图案(如图2)。屏幕上D7、D8随CPU板上的D7,D8两灯同步闪烁,而且跑马灯每转一周,两个等交替闪烁一次。说明LCD驱动即添加到内核中没有问题,系统工作正常。心得体会课程设计完成了,在这个过程中我学到了很多东西。我对嵌入式系统有了更加深入的了解,对书本上的知识也有了更加深刻的理解,对以前有些含糊不理解的地方也有了新的认识。学会使用嵌入式系统实现问题解决的一般过程,在UCOSII下,LCD驱动程序的结构,以及LCD驱动程序怎样添加道内核中去,也能够使用嵌入式系统设计制作一些简单实例。这次课程设计给我们理论联系实际的机会,书本上的东西很抽象,通过这次课程设计,能够把自己的想法和设计实现是一件很开心的事情,而依靠自己独立思考发现并解决一个问题也更是一件开心的事情。课程设计中也遇到了许多问题,比如:老师给的参考程序并不能是LCD屏幕和CPU实验板上的灯同步闪烁,最后多次检查并和同学讨论才发现问题所在,问题程序代码如下:for(i=0;i100000;i+);rPCONB = 0x7cf;rPDATB = 0x7ef;for(i=0;i100000;i+); /*问题所在* 处理函数当设置CPU板D7、D8灯亮灭后,又通过for(i=0;i100000;i+);延时一段时间,才去修改LCD屏幕上的LCD两个灯,当去掉第二行延时代码时,LCD屏幕模拟的灯泡和CPU实验板上的D7、D8等同步闪烁。课程设计让我认识到个人的力量是渺小的,依靠一个人的努力也是不够的,许多事情只有靠大家精诚合作,一起思考讨论,分工协作,才能完成。大家之间要默契配合,相互理解,阐述各自对问题不同看法、不同理解的相互交流是发现问题学的新知的良好契机。课程设计很快就结束了,我觉得最大的收获就是能够理论联系实际,把书本上的知识活学活用道实际中来解决一些实际问题,这样才能发挥用途。独立思考解决问题,并能够接受他人意见来修正完善自己的想法,最终付诸于实现。参考文献:1. 王永,何立民嵌入式系统原理与设计M浙江:浙江大学出版社2. 百度百科 ucos ii/view/3123947.htm3. 美Jean J. Labrosse著 ; 邵贝贝等译嵌入式实时操作系统C/OS- 第2版M 北京:北京航空航天大学出版社附 录一、部分源程序:1.主函数void Main(void) Target_Init(); / ARMII实验系统的初始化,包括CPU板 GUI_Init(); OSInit(); / 操作系统的初始化Send_D7light_Sem = OSSemCreate(0); /创建信号量Send_LCD_Sem = OSSemCreate(0);OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1STACKSIZE - 1, 5); OSTaskCreate(Task_2, (void *)0, (OS_STK *)&Stack_Task_2STACKSIZE*3 - 1, 6);OSSemPost(Send_LCD_Sem); OSStart();2.跑马灯闪烁程序(即延时程序)void timedelay() INT32U i,k ; for(i=0;i8;i+) k=i%8; switch(k) case 0 : Set_Color(GUI_RED); Fill_Circle (220, 80, 20); /跑马灯1 亮 Set_Color(GUI_GREEN); Fill_Circle (262, 98, 20); /跑马灯2灭 Fill_Circle (280, 140, 20); /跑马灯3灭 Fill_Circle (262, 182, 20); /跑马灯4灭 Fill_Circle (220, 200, 20); /跑马灯5灭 Fill_Circle (178, 182, 20); /跑马灯6灭 Fill_Circle (160, 140, 20); /跑马灯 7灭 Fill_Circle (178, 98, 20); /跑马灯 8灭 break; case 1 : Set_Color(GUI_RED); Fill_Circle (262,98, 20); Set_Color(GUI_GREEN); Fill_Circle (280, 140, 20); Fill_Circle (262, 182, 20); Fill_Circle (220, 200, 20); Fill_Circle (178, 182, 20); Fill_Circle (160, 140, 20); Fill_Circle (178, 98, 20); Fill_Circle (220,80, 20); break; case 2 : Set_Color(GUI_RED); Fill_Circle (280, 140, 20); Set_Color(GUI_GREEN); Fill_Circle (262, 182, 20); Fill_Circle (220, 200, 20); Fill_Circle (178, 182, 20); Fill_Circle (160, 140, 20); Fill_Circle (178, 98, 20);Fill_Circle (220, 80, 20);Fill_Circle (262, 98, 20);break; case 3 : Set_Color(GUI_RED); Fill_Circle (262, 182, 20); Set_Color(GUI_GREEN); Fill_Circle (220, 200, 20); Fill_Circle (178, 182, 20); Fill_Circle (160, 140, 20); Fill_Circle (178, 98, 20);Fill_Circle (220, 80, 20);Fill_Circle (262, 98, 20) ;Fill_Circle (280, 140, 20);break; case 4 : Set_Color(GUI_RED); Fill_Circle (262, 182, 20); Set_Color(GUI_GREEN); Fill_Circle (220, 200, 20); Fill_Circle (178, 182, 20); Fill_Circle (160, 140, 20); Fill_Circle (178, 98, 20);Fill_Circle (220, 80, 20);Fill_Circle (262, 98, 20) ;Fill_Circle (280, 140, 20); break; case 5 : Set_Color(GUI_RED); Fill_Circle (220, 200, 20); Set_Color(GUI_GREEN); Fill_Circle (178, 182, 20); Fill_Circle (160, 140, 20); Fill_Circle (178, 98, 20);Fill_Circle (220, 80, 20);Fill_Circle (262, 98, 20) ;Fill_Circle (280, 140, 20); Fill_Circle (262, 182, 20);break;case 6 : Set_Color(GUI_RED); Fill_Circle (178, 182, 20); Set_Color(GUI_GREEN); Fill_Circle (160, 140, 20); Fill_Circle (178, 98, 20);Fill_Circle (220, 80, 20);Fill_Circle (262, 98, 20) ;Fill_Circle (280, 140, 20); Fill_Circle (262, 182, 20);Fill_Circle (220, 200, 20);break;case 7 : Set_Color(GUI_RED); Fill_Circle (160, 140, 20); Set_Color(GUI_GREEN); Fill_Circle (178, 98, 20);Fill_Circle (220, 80, 20);Fill_Circle (262, 98, 20) ;Fill_Circle (280, 140, 20); Fill_Circle (262, 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年碳保险方向产品经理笔试指南及预测题解析
- 2025年国有企业项目经理招聘考试模拟题详解
- 桑树坪煤矿安全知识培训课件
- 2025年注册验船师资格考试(B级船舶检验专业基础安全)模拟题及答案一
- 2025年篮球考试试题及答案
- 2025年注册验船师资格考试(C级船舶检验专业能力)全真冲刺试题及答案一
- 2025年检测工程师桥隧工程考试真题(附答案)
- 2025年公务员考试国考全科目预测试题集
- 2025年地理信息系统应用实战与预测题集
- 2025年建筑装饰设计师高级实务操作指南及模拟题集
- 《RWA 技术规范》标准草案
- 庭院围墙整治方案(3篇)
- 2025年高考物理真题完全解读(广西卷)
- 教师课件的制作培训
- 质量成本控制与管理考核试卷
- 《探索正多边形镶嵌艺术》课件
- 乙方配合甲方管理制度
- 供热公司工具管理制度
- 第24部分:铁量的测定 硫氰酸盐分光光度法(报批稿)
- T/CIE 168-2023企业级固态硬盘测试规范第4部分:兼容性测试
- 小区施工押金协议书
评论
0/150
提交评论