//NOTE:VCC=3.3V,IOVCC=1.8V-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 write_DISPdata(unsigned char data_l,data_h)
{
byte a,i,b;
csb=0;
sclb=0;
sdi=1;
sclb=1;
a=data_l;
for(i=0;i<8;i++)
 {
    sclb=0;
     if (a&0x80) 
      {
        sdi=1; 
         }
          else
       { 
         sdi=0;
         }
  sclb=1;
   a=a<<1;
    }
csb=0;
sclb=0;
sdi=1;
sclb=1;
b=data_h;
for(i=0;i<8;i++)
 {
  sclb=0;
     if (b&0x80)
  {
        sdi=1;
}
          else
{
         sdi=0;
}
  sclb=1;
   b=b<<1;
    }
csb=1;
}
/*************************************************/
void initi(void)
{
   res=1;
   delay(1);
   res=0;
   delay(10);
   res=1;
   delay(120);
//	************* Start Initial Sequence **********
write_command(0xB1); 
write_data(0x02); 
write_data(0x35); 
write_data(0x36); 

write_command(0xB2); 
write_data(0x02); 
write_data(0x35); 
write_data(0x36); 

write_command(0xB3); 
write_data(0x02); 
write_data(0x35); 
write_data(0x36); 
write_data(0x02); 
write_data(0x35); 
write_data(0x36); 
//------------------------------------End ST7735 Frame Rate-----------------------------------------// 
write_command(0xB4); //Column inversion 
write_data(0x03); 
//------------------------------------ST7735Power Sequence-----------------------------------------// 
write_command(0xC0); 
write_data(0xA2); 
write_data(0x02); 
write_data(0x84); 

write_command(0xC1); 
write_data(0xC5); 

write_command(0xC2); 
write_data(0x0D); 
write_data(0x00); 

write_command(0xC3); 
write_data(0x8D); 
write_data(0x2A); 

write_command(0xC4); 
write_data(0x8D); 
write_data(0xEE); 
//---------------------------------End ST7735 Power Sequence-------------------------------------// 
write_command(0xC5); //VCOM 
write_data(0x03); 

write_command(0x36); //MX, MY, RGB mode 
write_data(0xC8); 
//------------------------------------ST7735 Gamma Sequence-----------------------------------------// 
write_command(0xe0); 
write_data(0x12); 
write_data(0x1C); 
write_data(0x10); 
write_data(0x18); 
write_data(0x33); 
write_data(0x2C); 
write_data(0x25); 
write_data(0x28); 
write_data(0x28); 
write_data(0x27); 
write_data(0x2F); 
write_data(0x3C); 
write_data(0x00); 
write_data(0x03); 
write_data(0x03); 
write_data(0x10); 

write_command(0xe1); 
write_data(0x12); 
write_data(0x1C); 
write_data(0x10); 
write_data(0x18); 
write_data(0x2D); 
write_data(0x28); 
write_data(0x23); 
write_data(0x28); 
write_data(0x28); 
write_data(0x26); 
write_data(0x2F); 
write_data(0x3B); 
write_data(0x00); 
write_data(0x03); 
write_data(0x03); 
write_data(0x10); 

write_command(0xFC); 
write_data(0x8C);

write_command(0x3A); //65k mode 
write_data(0x05); 

write_command(0x2a);//Set Column Address//128
write_data(0x00); 
write_data(0x00); 
write_data(0x00); 
write_data(0x7F); 

write_command(0x2b);//Set Page Address //128
write_data(0x00); 
write_data(0x20); //����Ӳ�������128*160,��ҳ��ַ�����32?
write_data(0x00); 
write_data(0x9F); 

write_command(0x11); // Exit Sleep
delay(120);
write_command(0x29); // Display On
delay(25);
write_command(0x2C); 

}

//*********************************************************************************************
void EnterSleep (void)
{
    write_command(0x28);
    delay(20);
    write_command(0x10);
  
  }

//*********************************************************
void ExitSleep (void)

 {
    write_command(0x11);
    delay(120);
    write_command(0x29);

   }