Оборазцы, но маркированы С ревизией (это еще более поздняя версия относительно текущих LPC2468).
Когда серия будет, пока не знаю (постоянно сроки переносили).
Код
#include "tft.h"
#include "lpc23xx.h"
#include "banner_1.h"
#include "banner_2.h"
#define BUFFER_ADDR 0xA0000000
//extern const unsigned char banner_1[70][800];
//extern const unsigned char banner_2[20][800];
void InitPanel(void)
{
int i;
PCONP |= 1<<20;
PINSEL11 = ( (5<<1) | 1);
PINSEL4 &= ~(3<<4);
PINSEL4 &= ~(3<<6);
PINSEL4 &= ~(3<<8);
PINSEL4 &= ~(3<<10);
PINSEL4 |= ((3<<4) | (3<<6) | (3<<8) | (3<<10));
PINSEL3 &= ~(3<<8);
PINSEL3 &= ~(3<<10);
PINSEL3 &= ~(3<<12);
PINSEL3 &= ~(3<<14);
PINSEL3 &= ~(3<<16);
PINSEL3 &= ~(3<<18);
PINSEL3 &= ~(3<<20);
PINSEL3 &= ~(3<<22);
PINSEL3 &= ~(3<<24);
PINSEL3 &= ~(3<<26);
PINSEL3 |= ( (1<<8) | (1<<10) | (1<<12) | (1<<14) | (1<<16) | (1<<18) | (1<<20) | (1<<22) | (1<<24) | (1<<26) );
PINSEL4 &= ~(3<<12);
PINSEL4 &= ~(3<<14);
PINSEL4 &= ~(3<<16);
PINSEL4 &= ~(3<<18);
PINSEL4 &= ~(3<<24);
PINSEL4 &= ~(3<<26);
PINSEL4 |= ((3<<12) | (3<<14) | (3<<16) | (3<<18) | (1<<24) | (1<<26));
LCD_CFG_REG = 2;
LCD_TIMH_REG = ( (0<<24) | (0<<16) | (50<<8) | (((800/16)-1)<<2));
LCD_TIMV_REG = ( (0<<24) | (0<<16) | (1<<10) | 480 );
LCD_POL_REG = ( (1<<26) | (((800/1)-1)<<16) | (1<<12) | (0<<5) );
LCD_CTRL_REG = ( (1<<5) | (6<<1) );
LCD_UPBASE_REG = BUFFER_ADDR;
LCD_LPBASE_REG = BUFFER_ADDR;
for(i=0;i<50000;i++);
LCD_CTRL_REG |= 1;
for(i=0;i<50000;i++);
LCD_CTRL_REG |= 1<<11;
}
void ShowTest_1(void)
{
int x,y,i;
unsigned short * Ptr16;
Ptr16 = (unsigned short *)BUFFER_ADDR;
for(y=0;y<(800*480);y++)
{
*Ptr16++=0xffff;
}
Ptr16 = (unsigned short *)BUFFER_ADDR+8000;
for(y=0;y<70;y++)
{
for(x=0;x<800;x++)
{
*Ptr16=(((banner_1[y][x]>>3)<<(5+6))) | ((((banner_1[y][x]>>2)&0x3f)<<5)) | ((banner_1[y][x]>>3)&0x1f);
Ptr16++;
}
}
Ptr16 = (unsigned short *)BUFFER_ADDR+(800*(70+15));
for(y=0;y<20;y++)
{
for(x=0;x<800;x++)
{
if(banner_2[y][x] < 150)
*Ptr16=(((233>>3)<<(5+6))) | ((((0>>2)&0x3f)<<5)) | ((5>>3)&0x1f);
else
*Ptr16=0xffff;
Ptr16++;
}
}
Ptr16 = (unsigned short *)BUFFER_ADDR+(800*(70+15+20+20))+30;
for(y=0;y<250;y++)
{
for(x=0;x<226;x++)
{
*Ptr16=(y/(260/32))<<(5+6);//blue
Ptr16++;
}
Ptr16+=574;
}
Ptr16 = (unsigned short *)BUFFER_ADDR+(800*(70+15+20+20))+30+226+30;
for(y=0;y<250;y++)
{
for(x=0;x<226;x++)
{
*Ptr16=(y/(260/64))<<(5);//green
Ptr16++;
}
Ptr16+=574;
}
Ptr16 = (unsigned short *)BUFFER_ADDR+(800*(70+15+20+20))+30+226+30+226+30;
for(y=0;y<250;y++)
{
for(x=0;x<226;x++)
{
*Ptr16=(y/(260/32));//red
Ptr16++;
}
Ptr16+=574;
}
Ptr16 = (unsigned short *)BUFFER_ADDR+(800*400)+30;
for(y=0;y<60;y++)
{
for(x=0;x<740;x++)
{
*Ptr16=((((x/3)>>3)<<(5+6))) | (((((x/3)>>2)&0x3f)<<5)) | (((x/3)>>3)&0x1f);
Ptr16++;
}
Ptr16+=60;
}
}