I2C LCD (PCF8574A)

void system_init(void)
{
  TWSR=0x00;                //--- Presclar = 1=4^0 
  TWBR=0x20;                //--- F_CPU=8MHz and Prescaler=1
  TWCR=(1<<TWEN);           //--- TWI Initialazion
  TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWSTA); //--- TWI Interrupt desable, TWI enable, TWI Start
  while(!(TWCR&(1<<TWINT)));             //--- Wait untial start condition is executed
  twi_write(0x3F<<1 | 0);  //PCF8574A---- Device ID-- 0b0111 1110
  LCD_INIT();              //LCD Initializion
  _delay_ms(100);          //Some delay for LCD initialization
}
void LCD_cmd(unsigned char cmd)
{
  twi_write(cmd|0b00001100); // EN = 1 and Backlight ON(Pin –P3)
  _delay_ms(2);             
  twi_write(cmd|0b00001000); //EN = 0 and Backlight ON
}
void nibble_cmd(unsigned char LCD_value)
{
  unsigned char display_nibble;
  display_nibble=LCD_value&0xF0;                 //mask lower nibble because DD4-DD7 
  pins are used
  LCD_cmd(display_nibble);                       //Send upper Nibble
  display_nibble=((LCD_value<<4) & 0xF0);       //mask the upper Nibble
  LCD_cmd(display_nibble); 
}
void LCD_write(unsigned char data)
{
  twi_write(data|0b00001101); // EN = 1, R/S=1 and Backlight ON
  _delay_ms(2);
  twi_write(data|0b00001001); // EN = 0, R/S=1 and Backlight ON
}
void nibble_data(unsigned char LCD_data)
{
  unsigned char data_nibble;
  data_nibble=LCD_data&0xF0;                   //mask lower nibble because DD4-DD7 pins are used
  LCD_write(data_nibble);                      //Send upper Nibble
  data_nibble=((LCD_data<<4) & 0xF0);         //mask the upper Nibble
  LCD_write(data_nibble); 
}
  #include<avr/io.h>
  #include<util/delay.h>
  #include<util/twi.h>
  #include"I2CLCD.h"
int main(void)
  {
   system_init();
   LCD_write_string(1,2,"RUET EEE 091109");
   while(1)
     {
       LCD_write_string(1,1,"Subeer kumar Sarkar");
       _delay_ms(500);
       LCD_Display_Right();
     }
 return 0;
}