- 1、本文档共77页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
应用系统设计(东北大学嵌入式)研讨
ARM 应用系统设计应用实例 佘黎煌 东北大学信息科学与工程学院 电子信息工程研究所 应用实例 LCD显示控制 UCOS简介 应用案例 LCD显示控制 LCD上的点的如何表示及控制? LCD的缓冲区(Framebuffer)是如何设置的? 如何在LCD上显示一张图片? TFT LCD显示控制 W90P710 实验教学系统使用的是AUO 3.0 TFT A030DL01(960 × 240,8 位数据总线)数字式TFT 液晶屏, 它需要在内存中开辟出一片缓冲区,将要显示的数据先存放到缓冲区中,即存在SDRAM 中,一般按照一维数组的形式进行存储然后把存储数据的SDRAM 的地址送给FIFO,再送给颜色生成器,进而实现在屏幕上的显示 TFT LCD显示控制 设置复用功能 REG_GPIO_CFG6 = 0x555555; LCD的控制寄存器 LCD控制器 LCD中断控制器 LCD预处理 LCD FIFO控制 颜色生成器 LCD后加工 LCD定时发生器 LCD SRAM装入自检 通过LCD控制器设置系统LCD的信息 通过LCD FIFO控制设置系统缓冲区的信息 通过LCD定时发生器设置系统的刷新时序 LCD的控制寄存器 REG_LCD_LCDCON = 0x30c05;//tft 16bpp 缓冲传送的方式 REG_LCD_FIFO1PRM = 0xa; 设定缓冲区的地址, REG_LCD_F1SADDR = (U32) Buffer; 请求传送计数寄存器(大小) REG_LCD_F1DREQCNT = (Size.width 16 ) + Size.height; 实际传送的行点数 REG_LCD_FIFO1RELACOLCNT = (Size.width); LCD的控制寄存器 LCD功能的实现 1.设置LCD控制寄存器,配制为TFT LCD,16bpp 2.设置LCD缓冲区寄存器,配制为480*240像素 3.设置显示的缓冲区, 4.自动刷新显示 LCD显示主函数 int main(void) { LCD_IMAGE_T LCD_Size; LCD_LOCATION_T LCD_Location; LCD_Size.width = 480; LCD_Size.height = 240; LCD_Location.StartX = 0; LCD_Location.StartY = 0; LCD_Location.EndX = 960; LCD_Location.EndY = 240; LCDInit(); LCDShow(LCD_Size, LCD_Location); LCDFIFOBufferSet(image_NEU); LCDDisplayOn(); while(1) { } return 0; } void LCDInit(void) { REG_GPIO_CFG6 = 0x555555; REG_LCD_LCDCON = 0x30c05;//设置为16bpp,TFT LCD控制 REG_LCD_FIFO1PRM = 0xa;//设置FIFO长度为16字,每次传输1字 REG_LCD_F1DREQCNT = 0x1e000f0;//设置屏大小为480*240 REG_LCD_FIFO1RELACOLCNT = 0x1e0;//设置实际显示的宽度 //LCD CLK //以下为刷新的时序设置 REG_LCD_LCDTCON1 = 0x3b166; REG_LCD_LCDTCON2 = 0x3bf00f1; REG_LCD_LCDTCON3 = 0x105401; REG_LCD_LCDTCON4 = 0x20101; REG_LCD_LCDTCON5 = 0xe; } 显示设置,位置,大小 void LCDShow(LCD_IMAGE_T Size, LCD_LOCATION_T Location) { //设置宽度和高度的像素 REG_LCD_F1DREQCNT = (Size.width 15 ) + Size.height; //设置实际显示的宽度 REG_LCD_FIFO1RELACOLCNT = (Size.width 1); //设置显示起始的位置 REG_LCD_DISPWINS = (Location.StartY 16) + Location.StartX; //设置显示结束的位置 REG_LCD_DISPWINE = (Location.EndY 16) + Location.EndX; } 显示数据的地址设置 void LCDFIFOBuffer
文档评论(0)