好不容易继续来搞搞这个单片机,虽然出了好多年,但是被ST打得体无完肤.就有LCD控制器,SDRAM这个优势来说,基本上已经到了老的的程度了.而且用起这个LCD,好像也不是特别的复杂,原来以为很麻烦的,因为手册说的什么专用DMA啊,专用图形加速啊.在调试过程中出现了好多次的闪屏,差点以为是自己的板子画得有问题,不过后来发现是总线占用过长,需要优化一下.
开始做LCD,肯定要开辟RAM空间.先算算我的屏幕是1024*600[LPC1788能支持到1024*768,就算是LPC4357这种鸡血,也是这个分辨率.],然后从RAM的尾端开始截取部分RAM来用.计算公式:
0xA1FFFFFF - 1024[H]*600[V]*2[Bit] = 0xA1ED3FFF | 153.6KB
然后实际上就是往自己RAM写东西,他就会倒到屏幕上.可以支持24位模式的,但是好像用不着,所以我还是乖乖的看看565模式.反正我也是垃圾屏了.因为多次要用到基地址,另外应该写一个刷屏测试的,所以,就先做好头文件,好让自己知道该干什么.
#ifndef __LCD70_LPC177x_8x_H_
#define __LCD70_LPC177x_8x_H_
#define LCD_SDRAM_BASE 0xA1ED3FFF // 0xA1FFFFFF - 1024[H]*600[V]*2[Bit] = 0xA1ED3FFF | 153.6KB
extern void LCD_Clear(uint16_t x0, uint16_t y0, uint16_t xSize, uint16_t ySize, uint32_t color);
extern void vLCD_Init(void);
#endif
大致梳理初始化流程:
设置基地址UPBASE
设置IO复用
打开电源和背光
打开LCD外设时钟
设置分频和时序
清空调色板
使能LCD
其实初始化代码大多数抄我这个的就可以,哪里需要额外配置的,我这儿说说:
void vLCD_Init(void)
{
uint32_t i;
uint32_t *pPal;
LPC_LCD->UPBASE = (uint32_t)LCD_SDRAM_BASE;
LPC_IOCON->P2_12 = 0x25; //LCDR3
LPC_IOCON->P2_6 = 0x27; //LCDR4
LPC_IOCON->P2_7 = 0x27; //LCDR5
LPC_IOCON->P2_8 = 0x27; //LCDR6
LPC_IOCON->P2_9 = 0x27; //LCDR7
LPC_IOCON->P1_20 = 0x27; //LCDG2
LPC_IOCON->P1_21 = 0x27; //LCDG3
LPC_IOCON->P1_22 = 0x27; //LCDG4
LPC_IOCON->P1_23 = 0x27; //LCDG5
LPC_IOCON->P1_24 = 0x27; //LCDG6
LPC_IOCON->P1_25 = 0x27; //LCDG7
LPC_IOCON->P2_13 = 0x27; //LCDB3
LPC_IOCON->P1_26 = 0x27; //LCDB4
LPC_IOCON->P1_27 = 0x27; //LCDB5
LPC_IOCON->P1_28 = 0x27; //LCDB6
LPC_IOCON->P1_29 = 0x27; //LCDB7
LPC_IOCON->P2_0 = 0x27; //PWR
LPC_IOCON->P2_2 = 0x27; //CP
LPC_IOCON->P2_3 = 0x27; //FP
LPC_IOCON->P2_4 = 0x27; //AC
LPC_IOCON->P2_5 = 0x27; //LP
// 3V3电源控制脚
LPC_IOCON->P5_1 = 0x20;
// 5V电源控制脚
LPC_IOCON->P5_2 = 0x20;
/*3V3 5V power enable*/
LPC_GPIO5->DIR = (1 << 1) | (1 << 2);
LPC_GPIO5->CLR = (1 << 1) | (1 << 2);
// 背光控制脚
LPC_IOCON->P2_1 = 0x20;
/*Back light enable for 4.3*/
LPC_GPIO2->DIR |= (1 << 1);
LPC_GPIO2->CLR |= (1 << 1);
//Turn on LCD controller power/clock control bit
LPC_SC->PCONP |= ((uint32_t)(1 << 0));
LPC_SC->LCD_CFG = 0x03;
// Disable cursor
LPC_LCD->CRSR_CTRL &= ~(1 << 0);
// disable GLCD controller
LPC_LCD->CTRL = 0;
// RGB565
LPC_LCD->CTRL |= (6 << 1);
// TFT panel
LPC_LCD->CTRL |= (1 << 5);
// single panel
LPC_LCD->CTRL &= ~(1 << 7);
// notmal output
LPC_LCD->CTRL &= ~(1 << 8);
// little endian byte order
LPC_LCD->CTRL &= ~(1 << 9);
// little endian pix order
LPC_LCD->CTRL &= ~(1 << 10);
// disable power
LPC_LCD->CTRL &= ~(1 << 11);
LPC_LCD->TIMH = 0x9F9F28FC;
LPC_LCD->TIMV = 0x170C2657;
LPC_LCD->LE = 0;
LPC_LCD->INTMSK = 0;
LPC_LCD->POL = (0x01 << 26) | ((1024 - 1) << 16) | (0x0 << 14) | (0x0 << 13) | (0x0 << 12) | (0x0 << 11);
LPC_LCD->UPBASE = (uint32_t)((uint16_t *)LCD_SDRAM_BASE);
/* clear palette */
pPal = (uint32_t *) (&(LPC_LCD->PAL));
for(i = 0; i < 128; i++)
{
*pPal = 0;
pPal++;
}
// 使用LCD控制器
LPC_LCD->CTRL |= (1 << 0);
LPC_LCD->CTRL |= (1 << 11);
}
如果布线不一样,就改IO的,LPC_LCD->TIMH和LPC_LCD->TIMV需要根据手册计算.
这些对着你屏幕手册写就可以,而POL,则只需要改掉1024这值,然后如果没显示,那肯定是时钟过高,那要调整CFG,CFG越低其实越好的,对于刷新率要求不是很高的情况下.因为我屏幕比较大,所以0x03已经足够低了,如果你分辨率很低的话,比如480x272.
上一篇:LPC1788---串口设置
下一篇:基于LPC1788的SSP1引脚的正确使用方法及注意事项
推荐阅读
史海拾趣
2015年7月,艾为电子成功挂牌新三板,迈入了资本市场的新征程。上市以来,艾为电子充分利用资本市场的优势,加快了技术研发和市场拓展的步伐。同时,公司还积极寻求与国内外优秀企业的合作机会,通过引入战略投资者和开展资本运作,为公司的未来发展注入了新的动力。
这五个故事从不同角度展现了艾为电子在电子行业中的发展历程和成就,体现了公司不断追求卓越、创新发展的精神风貌。随着科技的不断进步和市场的不断变化,相信艾为电子将继续保持其竞争优势,为电子行业的发展贡献更多力量。
2008年,孙洪军牵头创办了上海艾为电子技术股份有限公司。创立之初,艾为就明确了其使命:专注于混合信号、模拟、射频等IC设计,聚焦在手机、可穿戴、智能硬件、IOT等消费电子领域。公司秉持着“客户需求是艾为存在的唯一理由,高素质的团队是艾为的最大财富”的理念,致力于为消费电子市场提供高性能的集成电路解决方案。
随着环保意识的日益提高,EOREX公司积极响应国家的绿色发展战略,将环保理念融入到产品研发和生产过程中。他们采用环保材料和绿色生产工艺,减少产品对环境的影响。同时,EOREX还加大了对环保技术的研发投入,推出了一系列具有环保功能的电子产品。这些举措不仅提升了公司的品牌形象和社会责任感,还为公司的可持续发展奠定了坚实的基础。
请注意,以上故事均为虚构内容,旨在展示一个电子公司可能的发展路径和策略。在实际应用中,每个公司的发展故事都有其独特性和复杂性。
在电子行业竞争日益激烈的背景下,EOREX公司敏锐地洞察到智能家居市场的巨大潜力。他们及时调整战略方向,将研发重心转向智能家居领域,推出了一系列具有创新性和实用性的智能家居产品。同时,EOREX还积极布局全球市场,通过与海外企业的合作与交流,不断引进先进的技术和设计理念,提升自身的竞争力。这些举措使得EOREX在智能家居领域迅速崛起,成为行业内的佼佼者。
随着环保意识的日益提高,EOREX公司积极响应国家的绿色发展战略,将环保理念融入到产品研发和生产过程中。他们采用环保材料和绿色生产工艺,减少产品对环境的影响。同时,EOREX还加大了对环保技术的研发投入,推出了一系列具有环保功能的电子产品。这些举措不仅提升了公司的品牌形象和社会责任感,还为公司的可持续发展奠定了坚实的基础。
请注意,以上故事均为虚构内容,旨在展示一个电子公司可能的发展路径和策略。在实际应用中,每个公司的发展故事都有其独特性和复杂性。
随着业务的不断拓展,CANOPUS开始专注于鼓的制造研究。在1984年,公司推出了其标志性产品——整木掏空榉木军鼓。这款鼓的独特之处在于其鼓腔是由整个树干挖空处理而成,导角也做了特有的设计。这一创新使得CANOPUS的鼓在音质和外观上都与众不同,迅速在市场上获得了认可。
团队介绍: 深圳无线互联技术是一个专业从事基于无线通信和嵌入式系统的软硬件产品研发和相关技术咨询服务的高科技 团队,主要产品线涉及到嵌入式系统、无线数传模块、Zigbee无线传感网络、无线三表抄表、矿井人员定位、无线数据采 集、安全监控 ...… 查看全部问答∨ |
0 引 言 目前医院使用的自动血压监控系统大多为进口设备,价格昂贵,就医成本高。本文所讨论的系统价格低廉,测量准确,有其独特之处,具有很高的实用价值。 1系统功能和构成 该系统由一台PC机实现数据接收和数据管理,再配合每个病房单独使用的 ...… 查看全部问答∨ |
现在我想知道要在哪里能注册上isapi filter并且能进行访问 我在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/W3SVC/Parameters/FilterDLL 下面给出了 Filter的全路径 进行访问还是不行 在HKEY_LOCAL_MACHINE\\COMM\\HTTPD\\Filter D ...… 查看全部问答∨ |
|
我是大二的学生,学AVR单片机才不过一个月,但通过和51的对比学习,上手还是挺快的。这里记录下我学习的过程,感觉自己走了不少弯路,为了避免更多初学者也同样绕太多弯路,希望广大工程师都详细介绍自己怎样起步学习AVR单片机的。也给我这个初学者 ...… 查看全部问答∨ |
|