




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
天津电子信息职业技术学院课 程 设 计课题名称 基于uCOS的LCD驱动编写 姓 名 王浩 学 号 35 班 级 电信S10-1 专 业 电子信息工程 成 绩 完成日期 2012-06-01 基于uCOSII的LCD驱动编写摘要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显示;驱动电路;目录一、系统设计51.课题目标及总体方案52.LCD驱动程序组成53.UCOSII操作系统下添加LCD驱动程序64.应用程序7二、实验结果测试8三、总结9四、心得体会9五、参考文献10六、附 录11一、系统设计1.课题目标及总体方案首先学习了解LCD的驱动程序,然后在移植好的UCOSII项目中添加LCD的驱动程序, 最后能够在uCOSII下,编写LCD应用任务的简单编程实例,来检验LCD驱动程序的完好度。本实验实例为在LCD屏上显示跑马灯,同时模拟CPU板上D7、D8灯的交替闪烁,闪烁周期为跑马灯周期。2.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 是供其他文件或自身调用的头文件。 3.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文件中编写。 4.应用程序本实验实例为在LCD屏上显示跑马灯,同时模拟CPU板上D7、D8灯的交替闪烁,闪烁周期为跑马灯周期。来检验LCD驱动程序是否能正常工作。实验流程图如下: 程序开始先进行各项初始化,包括开发板、GUI初始化、系统初始化,然后配置LCD屏幕设置,运行时先调用跑马灯延时程序Timedelay(),跑马灯运行一周后,置开发板上D7、D8灯亮灭,通过信号传递置LCD屏幕上模拟D7D8灯亮灭, 接着调用Timedelay()函数,循环任务。二、实验结果测试测试方法: 在移植好的UCOSII项目中添加LCD的驱动程序。(方法参见第一章 第二节) 在main.c文件中编写程序(源程序见附录),先使用画图函数绘出包含跑马灯,模拟D7、D8两灯在内的LCD界,用函数timedelay()控制跑马灯运行,timedelay()亦是延时函数。D7、D8两灯每交替闪说一次,调用一次timedelay()延时函数。 连接电脑和试验箱,编译程序,无错误,把程序下载到S3C44B0X,观察结果。 观察现象,有问题检查修改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 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 : 处理函数1; /省略,类似case 0处理函数 case 2 : 处理函数2; /省略,类似case 0处理函数 case 3 : 处理函数3; /省略,类似case 0处理函数case 4 : 处理函数4; /省略,类似case 0处理函数case 5 : 处理函数5; /省略,类似case 0处理函数case 6 : 处理函数6; /省略,类似case 0处理函数case 7 : 处理函数7; /省略,类似case 0处理函数3.控制CPU板上D7、D8和LCD模拟灯同步闪烁 部分程序for(;) OSSemPend(Send_D7light_Sem, 0, &err); if(flag=0)Set_Color(GUI_RED); Fill_Circle(60, 160, 20); /LCD模拟D7亮 Set_Color(GUI_BLACK); Fill_Circle(60, 100, 20); flag = 1; else Set_Color(GUI_BLACK); Fill_Circle(60, 160, 20); /LCD模拟D8亮 Set_Color(GUI_RED); Fill_Circle(60, 100, 20); flag = 0; OSSemPost(Send_LCD_Sem);void Task_1(void *pdata)INT8U err; INT32U flag=0; Rtc_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 的出租合同范本
- 生产与销售合同范本
- 上海出售民房合同范本
- 水泥制件销售合同范本
- 外包服务合同范本模板
- 寻找灵感创作委托合同
- 农民怎么写合同范本
- 020版租房合同范本
- 物业泳池转租合同范本
- 网络安全评估托管合同
- 水电运行培训课件
- 十一皮草活动方案
- 居家护理服务标准化操作手册
- 省级质控中心管理制度
- 诊所日常器械管理制度
- 新生儿42天体检要点解析
- 煤矿联网课题题目及答案
- 2025至2030中国安保服务市场现状动态与前景方向分析报告
- 2025内蒙古巴彦淖尔市能源(集团)有限公司招聘48人笔试参考题库附带答案详解析集合
- 林科院面试题库及答案
- T/CSIQ 8014.1-2018组串式光伏逆变器技术规范第1部分:总则
评论
0/150
提交评论