📄 display.c
字号:
CMD(0x0010, 0x0000); // SAP, BT[3:0], AP, DSTB, SLP, STB
CMD(0x0011, 0x0007); // DC1[2:0], DC0[2:0], VC[2:0]
CMD(0x0012, 0x0000); // VREG1OUT voltage
CMD(0x0013, 0x0000); // VDV[4:0] for VCOM amplitude
delay10ms(200);
CMD(0x07,0x0101);
CMD(0x10,0x12B0);
CMD(0x11,0x0007);
delay10ms(0);
CMD(0x17,0x0001);
CMD(0x12,0x01BB);
delay10ms(50);
CMD(0x13,0x1300);
CMD(0x29,0x0010);
delay10ms(50);
CMD(0x30,0x0102);
CMD(0x31,0x0C18);
CMD(0x32,0x0F1C);
CMD(0x33,0x3617);
CMD(0x34,0x350B);
CMD(0x35,0x1004);
CMD(0x36,0x0D06);
CMD(0x37,0x0318);
CMD(0x38,0x0406);
CMD(0x39,0x0005);
CMD(0x3A,0x0A05);
CMD(0x3B,0x0A00);
CMD(0x3C,0x020F);
CMD(0x3D,0x050F);
CMD(0x3E,0x0303);
CMD(0x3F,0x0505);
CMD(0x50,0x0000);
CMD(0x51,0x00EF);
CMD(0x52,0x0000);
CMD(0x53,0x013F);
CMD(0x60,0x2700);
CMD(0X61, 0x0001);
CMD(0X6A, 0x0000);
CMD(0X80, 0x0000);
CMD(0X81, 0x0000);
CMD(0X82, 0x0000);
CMD(0X83, 0x0000);
CMD(0X84, 0x0000);
CMD(0X85, 0x0000);
CMD(0X90, 0x0010);
CMD(0X92, 0x0000);
CMD(0X93, 0x0103);
CMD(0X95, 0x0210);
CMD(0X97, 0x0000);
CMD(0X98, 0x0000);
CMD(0XF0, 0x5408);
CMD(0XF3, 0x0007);
CMD(0XF4, 0x001F);
CMD(0XF0, 0x0000);
CMD(0X07, 0x0173);
}
#elif R61505U
void LCM_init()
{
LCM_RES=0;
delay10ms(500);
LCM_RES=1;
delay10ms(500);
W_C(0x07);
W_D_HL(0x00,0x00);
delay10ms(50);
W_C(0x00);
W_C(0x00);
W_C(0x00);
W_C(0x00);
delay10ms(50);
W_C(0xa4);
W_D_HL(0x00,0x01);
delay10ms(10);
W_C(0x08);
W_D_HL(0x08,0x08);
//**********Adjust the Gamma Curve***********//
W_C(0x30); W_D_HL(0x07,0x07);
W_C(0x31); W_D_HL(0x06,0x07);
W_C(0x32); W_D_HL(0x02,0x00);
W_C(0x33); W_D_HL(0x03,0x01);
W_C(0x34); W_D_HL(0x01,0x01);
W_C(0x35); W_D_HL(0x04,0x04);
W_C(0x36); W_D_HL(0x0a,0x00);
W_C(0x37); W_D_HL(0x07,0x07);
W_C(0x38); W_D_HL(0x06,0x07);
W_C(0x39); W_D_HL(0x02,0x00);
W_C(0x3A); W_D_HL(0x03,0x01); //
W_C(0x3B); W_D_HL(0x01,0x01); // //
W_C(0x3C); W_D_HL(0x04,0x04); //
W_C(0x3D); W_D_HL(0x0a,0x00); // //
//******** Gamma ***********//
// *********************************************************//
//**********Power On sequence************//
W_C(0x07);
W_D_HL(0x00,0x01);
W_C(0x17);
W_D_HL(0x00,0x01);
W_C(0x10);
W_D_HL(0x16,0xb0);
W_C(0x11);
W_D_HL(0x00,0x07);
W_C(0x12);
W_D_HL(0x01,0x1b);
W_C(0x13);
W_D_HL(0x0f,0x00);
W_C(0x29);
W_D_HL(0x00,0x10); //(0x00,0x01);
W_C(0x2a);
W_D_HL(0x00,0x95);
W_C(0x12);
W_D_HL(0x01,0x39); //(0x01,0x3b);
//***********************************************************//
W_C(0x01);
W_D_HL(0x05,0x00);
W_C(0x02);
W_D_HL(0x07,0x00);
W_C(0x03);
W_D_HL(0x00,0x10);
W_C(0x04);
W_D_HL(0x00,0x00);
W_C(0x09);
W_D_HL(0x00,0x21);
W_C(0x0a);
W_D_HL(0x00,0x08);
W_C(0x50); //Window address control instruction
W_D_HL(0x00,0x00);
W_C(0x51);
W_D_HL(0x00,0xef);
W_C(0x52);
W_D_HL(0x00,0x00);
W_C(0x53);
W_D_HL(0x01,0x3F);
W_C(0x60); //Driver Output Control
W_D_HL(0xa7,0x00);
W_C(0x61); //Base image display control
W_D_HL(0x00,0x00);
W_C(0x95); //RAM Address Set (Vertical Address)
W_D_HL(0x03,0x10);
W_C(0x14); //RAM Address Set (Vertical Address)
W_D_HL(0x30,0x00);
W_C(0x90); //Panel interface control
W_D_HL(0x00,0x10);
W_C(0x92);
W_D_HL(0x00,0x00);
W_C(0x93);
W_D_HL(0x00,0x00);
W_C(0x07);
W_D_HL(0x00,0x21);
delay10ms(10);
W_C(0x07);
W_D_HL(0x00,0x61);
delay10ms(10);
W_C(0x07);
W_D_HL(0x01,0x73);
W_C(0x20); //RAM Address Set (Horizontal Address)
W_D_HL(0x00,0x00);
W_C(0x21); //RAM Address Set (Vertical Address)
W_D_HL(0x00,0x00);
W_C(0x22);
}
#else
#error DON'T SET DISPLAY INIT SERIES
#endif
/*----------------------------------------------------------------
RGB sub program
-----------------------------------------------------------------*/
uint RGB(uchar r,uchar g,uchar b)
{
uint rgb,rgb2;
rgb2=r>>3;
rgb=rgb2<<11;
rgb2=g>>2;
rgb=rgb|rgb2<<5;
rgb2=b>>3;
rgb=rgb|rgb2;
return rgb;
}
/*----------------------------------------------------------------
SET WHOLE SCREEN sub program
-----------------------------------------------------------------*/
void set_whole_screen()
{
D0=0;
D8=0;
W_C(0x4E);
W_D(0x00);
W_C(0x4F);
W_D(0x0000);
W_C(0X22);
}
/*----------------------------------------------------------------
DISPLAY RED sub program
-----------------------------------------------------------------*/
void display_red()//red
{
uchar i;
unsigned int k;
set_whole_screen();
D0=0;
D8=0;
for(k=0;k<320;k++)
for(i=0;i<240;i++)
{
W_D(0xfc00);
}
D0=0;
D8=0;
}
/*----------------------------------------------------------------
DISPLAY GREEN sub program
-----------------------------------------------------------------*/
void display_green()//green
{
uchar i;
unsigned int k;
set_whole_screen();
D0=0;
D8=1;
for(k=0;k<320;k++)
for(i=0;i<240;i++)
{
W_D(0x03e0);
}
D0=0;
D8=0;
}
/*----------------------------------------------------------------
DISPLAY BLUE sub program
-----------------------------------------------------------------*/
void display_blue()//blue
{
uchar i;
unsigned int k;
set_whole_screen();
D0=1;
D8=0;
for(k=0;k<320;k++)
for(i=0;i<240;i++)
{
W_D(0x1f);
}
D0=0;
D8=0;
}//end sub
/*----------------------------------------------------------------
DISPLAY WHITE sub program
-----------------------------------------------------------------*/
void display_white()//white
{
uchar i;
unsigned int k;
set_whole_screen();
for(k=0;k<320;k++)
for(i=0;i<240;i++)
{
W_D(0xffff);
}
}//end sub
/*----------------------------------------------------------------
DISPLAY BLACK+SHAPE sub program
-----------------------------------------------------------------*/
void display_black()//black+绿色的框,作为边界确认
{
uchar i;
unsigned int k;
set_whole_screen();
D0=0;
D8=0;
for(k=0;k<320;k++)
for(i=0;i<240;i++)
{
W_D(0x00);
}
}
/*----------------------------------------------------------------
CLEAR DISPLAY sub program
-----------------------------------------------------------------*/
void display_clear()//clear
{
unsigned char i,ii;
set_whole_screen();
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(254,0,0));//red
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(0,254,0));//g
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(0,0,254));//b
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(0,254,254));//b+g
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(254,0,254));//r+b
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(254,254,0));//r+g
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(0,0,0));//black
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(254,254,254));//white
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(0,0,0));//black
for(ii=0;ii<32;ii++)
for(i=0;i<240;i++)
W_D(RGB(254,254,254));//white
}//end sub
/*----------------------------------------------------------------
DISPLAY PIXEL sub program
-----------------------------------------------------------------*/
void set_pixel(unsigned int x,unsigned int y)
{
uint value;
value=x&0x00ff;
if(x>=240)x=240-1;
if(y>=320)y=320-1;
CMD(0x4E, x);
CMD(0x4F, y);
CMD(0x22, 0xffff);
}
/*----------------------------------------------------------------
TEST PIXEL sub program
-----------------------------------------------------------------*/
void test_pixel2()
{
unsigned int a;
for(a=0;a<320;a++)
{
if(a<240)
{
W_C(0x4e);
W_D(a);
}
else
{
W_C(0x4e);
W_D(120);
}
W_C(0x4f);
W_D(a);
W_C(0X22);
W_D(0xffFF);
}
}
void write_picdata(uint value)
{
W_D(value);
}
#if INTERFACE_16BIT
void write_picdata1(uchar vdata1,uchar vdata2)
{
LCM_RS=1;
lcm_cs(0);
OUTPORT_H=vdata2;
OUTPORT_L=vdata1;
LCM_WR=0;
LCM_WR=1;
lcm_cs(1);
}
#elif INTERFACE_8BIT
void write_picdata1(uchar vdata1,uchar vdata2)
{
LCM_RS=1;
lcm_cs(0);
OUTPORT_L=vdata2;
LCM_WR=0;
LCM_WR=1;
OUTPORT_L=vdata1;
LCM_WR=0;
LCM_WR=1;
lcm_cs(1);
}
#else
#error write_picdata1(uchar vdata1,uchar vdata2) DON'T SET INTERFACE
#endif
void dis_RGB(void)
{
display_green();//
delay10ms(2200);
// display_blue();//
// delay10ms(2000);
// display_red();//
// delay10ms(2000);
// display_white();//
// delay10ms(2000);
display_black();//
delay10ms(2000);
// display_clear();//
}
uchar LCM_SETUP_REG(uchar *p)
{
if((*(p+2)<0x100)&&*(p+2)>=0)
{ W_C(*(p+2));
W_D_HL(*(p+6),*(p+7));
}
else
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -