//***************************************************************
//
//*****    Focus LCDs     *****
//***** LCDs Made Simple  *****
//***** www.FocusLCDs.com *****
//
//***************************************************************
//
////NOTE:VCC=3.3V
//****************************************************************
void write_command (unsigned char y) // (uchar y,uchar x)
{
  unsigned char i;
csb=0;
sclb=0;
sdi=0;
sclb=1;
for(i=0;i<8;i++)
    {
     sclb=0;      
      if (y&0x80)
       {
          sdi=1;
        }
          else
         {
          sdi=0;
         }
       sclb=1;
      y=y<<1;
    }
csb=1;
}
//***************************************************************
void write_data(unsigned char w) // (uchar w, uchar v)
{
  unsigned char i;
csb=0;
sclb=0;
sdi=1;
sclb=1;
for(i=0;i<8;i++)
 {
  sclb=0;
     if (w&0x80)
     {
        sdi=1;
       }
          else
        {
         sdi=0;
        }
   sclb=1;
   w=w<<1;
    }
csb=1;
}

/*************************************************/
void initi(void)
{
   res=1;
   delay(1);
   res=0;
   delay(10);
   res=1;
   delay(120);
//--------------------------------ST7789S Frame rate setting----------------------------------//
write_command(0xb2);
write_data(0x0c);
write_data(0x0c);
write_data(0x00);
write_data(0x33);
write_data(0x33);

write_command(0xb7);
write_data(0x35);

write_command(0x36);
write_data(0x00);

write_command(0xbb);
write_data(0x2A);//VCOM

write_command(0xc3);
write_data(0x0A);//GVDD

write_command(0xc4);
write_data(0x20);

write_command(0xc6);
write_data(0x0f);

write_command(0xd0);
write_data(0xa4);
write_data(0xa2);

write_command(0xe0);
write_data(0xd0);
write_data(0x00);
write_data(0x02);
write_data(0x07);
write_data(0x0a);
write_data(0x28);
write_data(0x32);
write_data(0x44);
write_data(0x42);
write_data(0x06);
write_data(0x0e);
write_data(0x12);
write_data(0x14);
write_data(0x17);

write_command(0xe1);
write_data(0xd0);
write_data(0x00);
write_data(0x02);
write_data(0x07);
write_data(0x0a);
write_data(0x28);
write_data(0x31);
write_data(0x54);
write_data(0x47);
write_data(0x0e);
write_data(0x1c);
write_data(0x17);
write_data(0x1b);
write_data(0x1e);

//*********SET RGB Interfae***************
write_command(0xB0); 
write_data(0x11); //set RGB interface and DE mode.
write_data(0x00); 
write_data(0x00); 

write_command(0xB1); 
write_data(0x40); // set DE mode ; SET Hs,Vs,DE,DOTCLK signal polarity 
write_data(0x00); 
write_data(0x00); 

write_command(0x3a); 
write_data(0x55); //,55-16BIT RGB

//************************
write_command(0x11); 
delay(120);      //Delay 120ms 

write_command(0x29); //display on

write_command(0x2c); 

}
//***********************************************
void LCD_Enter_Standby(void)
{
   write_command(0x28);//display off
   delay(10);
  write_command(0x10);
  RGB_OFF();
 
   }
void LCD_Exit_Standby (void)
{
  RGB_ON();
  elay(100);
   write_command(0x11);// Exit Sleep/ Standby mode
   delay(120);
   write_command(0x29);
  }
//*****************************************************