📄 displaylib.c
字号:
else
Write_LDI_LTS222(0x9D,0x80); // 16 or 18bit RGB
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
/////////////////////////////////////////////////////////////////////
// Power Setting 2
/////////////////////////////////////////////////////////////////////
Write_LDI_LTS222(0x1D,0x08); //
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
Write_LDI_LTS222(0x23,0x00); // PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2
// delay about 50 us
delayLoop(LCD_DELAY_50US);
Write_LDI_LTS222(0x24,0x94); // POWER SUPPLY SYSTEM CONTROL REGISTER 1
// delay about 50 us
delayLoop(LCD_DELAY_50US);
Write_LDI_LTS222(0x25,0x6f); // POWER SUPPLY SYSTEM CONTROL REGISTER 2
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
/////////////////////////////////////////////////////////////////////
// Power Setting 3
/////////////////////////////////////////////////////////////////////
Write_LDI_LTS222(0x28,0x1e); //
Write_LDI_LTS222(0x1A,0x00); //
Write_LDI_LTS222(0x21,0x10); // PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2
Write_LDI_LTS222(0x18,0x25); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
Write_LDI_LTS222(0x19,0x48); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 2
Write_LDI_LTS222(0x18,0xe5); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
Write_LDI_LTS222(0x18,0xF7); // PARTIAL 2 DISPLAY AREA STARTING REGISTER 1
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
Write_LDI_LTS222(0x1B,0x07); // org
// Write_LDI_LTS222(0x1B,0x01); // 90 rotate
// Write_LDI_LTS222(0x1B,0x02); // 90 rotate
// Write_LDI_LTS222(0x1B,0x03); // 90 rotate
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
Write_LDI_LTS222(0x1F,0x5a); // org
// Write_LDI_LTS222(0x1F,0x5E); // 90 rotate
Write_LDI_LTS222(0x20,0x54); // org, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
// Write_LDI_LTS222(0x20,0x5F); // 90 rotate, PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
Write_LDI_LTS222(0x1E,0xc1); //
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
Write_LDI_LTS222(0x21,0x00); // PARTIAL 1 DISPLAY AREA RASTER-ROW NUMBER REGISTER 2
Write_LDI_LTS222(0x3B,0x01); //
// delay about 40ms
delayLoop(LCD_DELAY_1MS*40);
Write_LDI_LTS222(0x00,0x20); // CONTROL REGISTER 1
Write_LDI_LTS222(0x02,0x01); // RGB INTERFACE REGISTER
// delay about 10ms
delayLoop(LCD_DELAY_1MS*10);
// Reg16_OPCLK_DIV = 0x0201; // 6.4
}
//==========================================
// CPU Interface test
//==========================================
unsigned int main_sub=1;
void DISP_CMD_OUT(U16 CMD)
{
rSIFCCON0 &= ~(1<<1); // RS low
if(main_sub%2)
rSIFCCON0 |= (1<<8); // nCS0(Main) enable
else
rSIFCCON0 |= (1<<9); // nCS1(Sub) enable
Delay(1);
rSIFCCON0 |= (1<<6); // nWE enable
Delay(1);
rSIFCCON1 = CMD;
Delay(1);
rSIFCCON0 &= ~(1<<6); // nWE disable
Delay(1);
if(main_sub%2)
rSIFCCON0 &= ~(1<<8); // nCS0(Main) disable
else
rSIFCCON0 &= ~(1<<9); // nCS1(Sub) disable
if(!(main_sub%2))
{
main_sub++;
return;
}
main_sub++;
DISP_CMD_OUT(CMD);
}
void InitLDI_LTS222_CPUIF(void)
{
rVIDCON0 = rVIDCON0 & ~(0x3<<22) | (0x2<<22);
rSYSIFCON0 |= (1<<2);
rSIFCCON0 &= ~(1<<1); // RS low
rSIFCCON0 |= (1<<0); // command mode enable
// LCD module reset
rGPBDAT |= (1<<1);
rGPBDAT &= ~(1<<1); // goes to LOW
// delay about 5ms
delayLoop(LCD_DELAY_1MS*10);
rGPBDAT |= (1<<1); // goes to HIGH
// debug_continue = TRUE;
debug_continue = FALSE;
// delay about 10ms
delayLoop(LCD_DELAY_1MS*10);
// Power Setting1
DISP_CMD_OUT(0x2201);
Delay(1); //50us 弥家啊 1 捞扼辑....
DISP_CMD_OUT(0x0301);
Delay(42); //5ms
//Initializing Function1
DISP_CMD_OUT(0x00a0);
Delay(1);
DISP_CMD_OUT(0x0110);
Delay(1);
DISP_CMD_OUT(0x0200);
Delay(1);
DISP_CMD_OUT(0x0510);
// DISP_CMD_OUT(0x0500); //boaz.kim, datasheet
Delay(1);
DISP_CMD_OUT(0x0d00);
Delay(400); //boaz.kim // 40 ms 40000us/120us = 333.33 HCLK 20Mhz 扁霖
//Initializing Function2
DISP_CMD_OUT(0x0e00);
Delay(1);
// DISP_CMD_OUT(0x0f00);
DISP_CMD_OUT(0x0f01);
Delay(1);
DISP_CMD_OUT(0x1000);
Delay(1);
DISP_CMD_OUT(0x1100);
Delay(1);
DISP_CMD_OUT(0x1200);
Delay(1);
DISP_CMD_OUT(0x1300);
Delay(1);
DISP_CMD_OUT(0x1400);
Delay(1);
DISP_CMD_OUT(0x1500);
Delay(1);
DISP_CMD_OUT(0x1600);
Delay(1);
DISP_CMD_OUT(0x1700);
Delay(1);
DISP_CMD_OUT(0x3401);
Delay(1);
DISP_CMD_OUT(0x3500);
Delay(400); // 15 ms 15000us/120us = 120 HCLK 20Mhz 扁霖
//Initializing Function3
DISP_CMD_OUT(0x8d01);
Delay(1);
DISP_CMD_OUT(0x8b28);
Delay(1);
DISP_CMD_OUT(0x4b00);
Delay(1);
DISP_CMD_OUT(0x4c00);
Delay(1);
DISP_CMD_OUT(0x4d00);
Delay(1);
DISP_CMD_OUT(0x4e00);
Delay(1);
DISP_CMD_OUT(0x4f00);
Delay(1);
DISP_CMD_OUT(0x5000);
Delay(1);
DISP_CMD_OUT(0x8600);
Delay(1);
DISP_CMD_OUT(0x8726);
Delay(1);
DISP_CMD_OUT(0x8802);
Delay(1);
DISP_CMD_OUT(0x8905);
Delay(1);
DISP_CMD_OUT(0x3301);
Delay(1);
// DISP_CMD_OUT(0x3706);
DISP_CMD_OUT(0x3701); //modified by kwan. letter
Delay(1);
DISP_CMD_OUT(0x7600);
Delay(400); // 15 ms 15000us/120us = 120 HCLK 20Mhz 扁霖
//Initializaing Function4
DISP_CMD_OUT(0x4200);
Delay(1);
DISP_CMD_OUT(0x4300);
Delay(1);
DISP_CMD_OUT(0x4400);
Delay(1);
DISP_CMD_OUT(0x4500);
Delay(1);
DISP_CMD_OUT(0x46ef);
Delay(1);
DISP_CMD_OUT(0x4700);
Delay(1);
DISP_CMD_OUT(0x4800);
Delay(1);
DISP_CMD_OUT(0x4901);
Delay(1);
DISP_CMD_OUT(0x4a3f);
Delay(1);
DISP_CMD_OUT(0x3c00);
Delay(1);
DISP_CMD_OUT(0x3d00);
Delay(1);
DISP_CMD_OUT(0x3e01);
Delay(1);
DISP_CMD_OUT(0x3f3f);
Delay(1);
// DISP_CMD_OUT(0x4001);
DISP_CMD_OUT(0x4003); //modified by kwan. letter
Delay(1);
DISP_CMD_OUT(0x410a);
// Delay(1);
// DISP_CMD_OUT(0x8f05);
Delay(400);
//Initializing funtion5
DISP_CMD_OUT(0x8f00); //?????
Delay(1);
DISP_CMD_OUT(0x903f);
Delay(1);
DISP_CMD_OUT(0x9133);
Delay(1);
DISP_CMD_OUT(0x9277);
Delay(1);
DISP_CMD_OUT(0x9377);
Delay(1);
DISP_CMD_OUT(0x9417);
Delay(1);
DISP_CMD_OUT(0x9500);
Delay(1);
DISP_CMD_OUT(0x9600);
Delay(1);
DISP_CMD_OUT(0x9733);
Delay(1);
DISP_CMD_OUT(0x9877);
Delay(1);
DISP_CMD_OUT(0x9977);
Delay(1);
DISP_CMD_OUT(0x9a17);
Delay(1);
DISP_CMD_OUT(0x9b00);
Delay(1);
DISP_CMD_OUT(0x9c00);
Delay(1);
DISP_CMD_OUT(0x9d80);
Delay(400);
// DISP_CMD_OUT(0x1d0f);
//Power Setting2
DISP_CMD_OUT(0x1d08);
Delay(400);
DISP_CMD_OUT(0x2300);
Delay(5);
DISP_CMD_OUT(0x2494);
Delay(5);
DISP_CMD_OUT(0x256f);
Delay(400); // 40ms
//Power Setting3
// DISP_CMD_OUT(0x281e);
DISP_CMD_OUT(0x2810); //modified by kwan. letter
Delay(1);
DISP_CMD_OUT(0x1a00);
Delay(1);
DISP_CMD_OUT(0x2110);
Delay(1);
DISP_CMD_OUT(0x1825);
Delay(400);
// DISP_CMD_OUT(0x1948);
DISP_CMD_OUT(0x1994); //modified by kwan. letter
Delay(1);
DISP_CMD_OUT(0x18e5);
Delay(334); //5ms
DISP_CMD_OUT(0x18f7);
Delay(400);
// DISP_CMD_OUT(0x1b07);
DISP_CMD_OUT(0x1b09); //modified by kwan. letter
Delay(400); //40ms
// DISP_CMD_OUT(0x1f5a);
// DISP_CMD_OUT(0x2054);
DISP_CMD_OUT(0x1f78); //modified by kwan. letter
Delay(1);
DISP_CMD_OUT(0x2045);
Delay(1);
DISP_CMD_OUT(0x1ec1);
Delay(400);
DISP_CMD_OUT(0x2100);
Delay(1);
DISP_CMD_OUT(0x3b01);
Delay(334); //10ms
DISP_CMD_OUT(0x0020);
// DISP_CMD_OUT(0x0201);
Delay(400); //40ms
rSIFCCON0 |= (1<<1); // RS high
rSIFCCON0 &= ~(1<<0); // command mode enable
main_sub=1;
}
// SPI emulation... Tark(need to modify)
void Write_LDI_LTS222(int address, int data)
{
int j;
unsigned char DELAY=20;
if(debug_continue)
{
Temp_forDebug(address,data);
}
LCD_DEN_Hi; // EN = High CS high
LCD_DCLK_Hi; // SCL High
LCD_DSERI_Lo; // Data Low
delayLoop(DELAY);
LCD_DEN_Lo; // EN = Low CS Low
delayLoop(DELAY);
LCD_DCLK_Lo; // SCL Low
delayLoop(DELAY);
for (j = 7; j >= 0; j--)
{
if ((address >> j) & 0x0001) // DATA HIGH or LOW
{
LCD_DSERI_Hi;
}
else
{
LCD_DSERI_Lo;
}
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
if(j != 0)
{
LCD_DCLK_Lo;
delayLoop(DELAY); // CLOCK = Low
}
}
LCD_DSERI_Lo; // Data Low
delayLoop(DELAY);
LCD_DEN_Hi; // EN = High
delayLoop(DELAY);
LCD_DEN_Lo; // EN = Low
delayLoop(DELAY);
LCD_DCLK_Lo;
delayLoop(DELAY); // CLOCK = Low
for (j = 7; j >= 0; j--)
{
if ((data >> j) & 0x0001) // DATA HIGH or LOW
{
LCD_DSERI_Hi;
}
else
{
LCD_DSERI_Lo;
}
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
if(j != 0)
{
LCD_DCLK_Lo;
delayLoop(DELAY); // CLOCK = Low
}
}
LCD_DEN_Hi; // EN = High
delayLoop(DELAY);
}
#define LTV350 (TRUE)
void InitLDI_LTV350(void)
{
// LCD module reset
rGPBDAT |= (1<<1);
rGPBDAT &= ~(1<<1); // goes to LOW
// delay about 5ms
delayLoop(LCD_DELAY_1MS*10);
rGPBDAT |= (1<<1); // goes to HIGH
//debug_continue = TRUE;
debug_continue = FALSE;
//SET_CONFIG_PORT( spi1)
rGPLCON &= ~(((3<<(LCD_DEN_BIT*2))) | ((3<<(LCD_DCLK_BIT*2))) | ((3<<(LCD_DSERI_BIT*2))));
rGPLCON |= (((1<<(LCD_DEN_BIT*2))) | ((1<<(LCD_DCLK_BIT*2))) | ((1<<(LCD_DSERI_BIT*2))));
// pull-up pull-down disable
rGPLUDP &= ~(((3<<(LCD_DEN_BIT*2))) | ((3<<(LCD_DCLK_BIT*2))) | ((3<<(LCD_DSERI_BIT*2))));
rGPLUDP |= (((2<<(LCD_DEN_BIT*2))) | ((2<<(LCD_DCLK_BIT*2))) | ((2<<(LCD_DSERI_BIT*2))));
// delay about 5ms
delayLoop(LCD_DELAY_1MS*10);
LCD_DEN_Hi;
LCD_DCLK_Hi;
LCD_DSERI_Hi;
///////////////////////////////////////////////////////////////////
// Init_Lcd_Function
//////////////////////////////////////////////////////////////////
#if LTV350
Write_LDI_LTV350(0x01,0x001d);
Write_LDI_LTV350(0x02,0x0000);
Write_LDI_LTV350(0x03,0x0000);
Write_LDI_LTV350(0x04,0x0000);
Write_LDI_LTV350(0x05,0x50a3);
Write_LDI_LTV350(0x06,0x0000);
Write_LDI_LTV350(0x07,0x0000);
Write_LDI_LTV350(0x08,0x0000);
Write_LDI_LTV350(0x09,0x0000);
Write_LDI_LTV350(0x0a,0x0000);
Write_LDI_LTV350(0x10,0x0000);
Write_LDI_LTV350(0x11,0x0000);
Write_LDI_LTV350(0x12,0x0000);
Write_LDI_LTV350(0x13,0x0000);
Write_LDI_LTV350(0x14,0x0000);
Write_LDI_LTV350(0x15,0x0000);
Write_LDI_LTV350(0x16,0x0000);
Write_LDI_LTV350(0x17,0x0000);
Write_LDI_LTV350(0x18,0x0000);
Write_LDI_LTV350(0x19,0x0000);
#else
Write_LDI_LTV350(0x09,0x0000);
#endif
///////////////////////////////////////////////////////////////////
// Power On Reset Display off State
//////////////////////////////////////////////////////////////////
//Write_LDI_LTV350(0x09,0x0000);
// delay about 10ms
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -