📄 lcdlib.c
字号:
delayLoop(DELAY);
for (j = 7; j >= 0; j--)
{
if ((0x74>> 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_DCLK_Lo;
for (j = 15; 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_Hi; // Data Low
delayLoop(DELAY);
LCD_DCLK_Hi; // SCL Low
delayLoop(DELAY);
LCD_DEN_Hi; // EN = High
delayLoop(DELAY);
LCD_DEN_Lo; // EN = Low
delayLoop(DELAY);
LCD_DCLK_Lo; // SCL Low
delayLoop(DELAY);
for (j = 7; j >= 0; j--)
{
if ((0x76 >> 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_DCLK_Lo;
for (j = 15; 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_DSERI_Hi; // Data Low
delayLoop(DELAY);
LCD_DCLK_Hi; // SCL Low
delayLoop(DELAY);
LCD_DEN_Hi; // EN = High
delayLoop(DELAY);
}
#endif
void WriteLDI_LTS350(int address, int data)
{
unsigned char dev_id_code=0x1D;
int j;
unsigned char DELAY=50;
LCD_DEN_Hi; // EN = High CS high
LCD_DCLK_Hi; // SCL High
LCD_DSERI_Hi; // Data Low
delayLoop(DELAY);
LCD_DEN_Lo; // EN = Low CS Low
delayLoop(DELAY);
for (j = 5; j >= 0; j--)
{
LCD_DCLK_Lo; // SCL Low
if ((dev_id_code >> j) & 0x0001) // DATA HIGH or LOW
{
LCD_DSERI_Hi;
}
else
{
LCD_DSERI_Lo;
}
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
}
// RS = "0" : index data
LCD_DCLK_Lo; // CLOCK = Low
LCD_DSERI_Lo;
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
// Write
LCD_DCLK_Lo; // CLOCK = Low
LCD_DSERI_Lo;
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
for (j = 15; j >= 0; j--)
{
LCD_DCLK_Lo; // SCL Low
if ((address >> j) & 0x0001) // DATA HIGH or LOW
{
LCD_DSERI_Hi;
}
else
{
LCD_DSERI_Lo;
}
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
}
LCD_DSERI_Hi;
delayLoop(DELAY);
LCD_DEN_Hi; // EN = High
delayLoop(DELAY*10);
LCD_DEN_Lo; // EN = Low CS Low
delayLoop(DELAY);
for (j = 5; j >= 0; j--)
{
LCD_DCLK_Lo; // SCL Low
if ((dev_id_code >> j) & 0x0001) // DATA HIGH or LOW
{
LCD_DSERI_Hi;
}
else
{
LCD_DSERI_Lo;
}
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
}
// RS = "1" instruction data
LCD_DCLK_Lo; // CLOCK = Low
LCD_DSERI_Hi;
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
// Write
LCD_DCLK_Lo; // CLOCK = Low
LCD_DSERI_Lo;
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
for (j = 15; j >= 0; j--)
{
LCD_DCLK_Lo; // SCL Low
if ((data >> j) & 0x0001) // DATA HIGH or LOW
{
LCD_DSERI_Hi;
}
else
{
LCD_DSERI_Lo;
}
delayLoop(DELAY);
LCD_DCLK_Hi; // CLOCK = High
delayLoop(DELAY);
}
LCD_DEN_Hi; // EN = High
delayLoop(DELAY);
}
void WriteLDI_LTS222(int address, int data)
{
int j;
//unsigned char DELAY=100;
unsigned char DELAY=10;
LCD_DEN_Hi; // EN = High CS high
// LCD_DCLK_Lo;
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);
}
void InitLDI_LTV350(void)
{
SetGPIOforLDI();
LCD_DEN_Hi;
LCD_DCLK_Hi;
LCD_DSERI_Hi;
LCD_RESET_Hi;
LCD_RESET_Hi;
//Delay(200);
delayLoop(1800000);
///////////////////////////////////////////////////////////////////
// Init_Lcd_Function
//////////////////////////////////////////////////////////////////
WriteLDI_LTS350(0x01,0x001d);
WriteLDI_LTS350(0x02,0x0000);
WriteLDI_LTS350(0x03,0x0000);
WriteLDI_LTS350(0x04,0x0000);
WriteLDI_LTS350(0x05,0x50a3);
WriteLDI_LTS350(0x06,0x0000);
WriteLDI_LTS350(0x07,0x0000);
WriteLDI_LTS350(0x08,0x0000);
WriteLDI_LTS350(0x09,0x0000);
WriteLDI_LTS350(0x0a,0x0000);
WriteLDI_LTS350(0x10,0x0000);
WriteLDI_LTS350(0x11,0x0000);
WriteLDI_LTS350(0x12,0x0000);
WriteLDI_LTS350(0x13,0x0000);
WriteLDI_LTS350(0x14,0x0000);
WriteLDI_LTS350(0x15,0x0000);
WriteLDI_LTS350(0x16,0x0000);
WriteLDI_LTS350(0x17,0x0000);
WriteLDI_LTS350(0x18,0x0000);
WriteLDI_LTS350(0x19,0x0000);
//Delay(800);
delayLoop(1800000);
///////////////////////////////////////////////////////////////////
// Set_PwrOn_Function1
//////////////////////////////////////////////////////////////////
WriteLDI_LTS350(0x09,0x4055);
WriteLDI_LTS350(0x0a,0x0000);
//Delay(1000);
delayLoop(1800000);
///////////////////////////////////////////////////////////////////
// Set_PwrOn_Function2
//////////////////////////////////////////////////////////////////
WriteLDI_LTS350(0x0a,0x2000);
delayLoop(50*180000);
///////////////////////////////////////////////////////////////////
// Set_Disp_Function
//////////////////////////////////////////////////////////////////
WriteLDI_LTS350(0x01,0x409d); // note 1
WriteLDI_LTS350(0x02,0x0204); // note 2
WriteLDI_LTS350(0x03,0x2100);
WriteLDI_LTS350(0x04,0x1000);
WriteLDI_LTS350(0x05,0x5003);
WriteLDI_LTS350(0x06,0x0009); // note 3
WriteLDI_LTS350(0x07,0x000f); // note 3
WriteLDI_LTS350(0x08,0x0800);
WriteLDI_LTS350(0x10,0x0000);
WriteLDI_LTS350(0x11,0x0000);
WriteLDI_LTS350(0x12,0x000f);
WriteLDI_LTS350(0x13,0x1f00);
WriteLDI_LTS350(0x14,0x0000);
WriteLDI_LTS350(0x15,0x0000);
WriteLDI_LTS350(0x16,0x0000);
WriteLDI_LTS350(0x17,0x0000);
WriteLDI_LTS350(0x18,0x0000);
WriteLDI_LTS350(0x19,0x0000);
delayLoop(50*180000);
///////////////////////////////////////////////////////////////////
// On_Disp_Function
//////////////////////////////////////////////////////////////////
WriteLDI_LTS350(0x09,0x4a55);
WriteLDI_LTS350(0x0a,0x2000);
}
void InitLDI_LTS222(void)
{
SetGPIOforLDI();
LCD_DEN_Hi;
LCD_DCLK_Hi;
LCD_DSERI_Hi;
LCD_RESET_Hi;
//LCD CLK is about 4.05Mhz
//rDIRGBIFR1=(18<<0); //LCLK=HCLK/(CDR+2)=81/(18+2)=4.05Mhz
//rDIRGBIFR0|=(1<<12); //LCD panel on
// LCD Reset high
LCD_RESET_Hi;
// delayLoop(50000);
///////////////////////////////////////////////////////////////////
// Power Setting Function 1
//////////////////////////////////////////////////////////////////
WriteLDI_LTS222(0x22,0x01); // PARTIAL 2 DISPLAY AREA RASTER-ROW NUMBER REGISTER 1
WriteLDI_LTS222(0x03,0x01); // RESET REGISTER
///////////////////////////////////////////////////////////////////
// Initializing Function 1
///////////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -