Atmega2560 with PCF8567 LCD Driver is not working properly with i2c protocol

Hello !

I'm working on a customize circuit which has atmega2560 microcontroller and a PCF8576 lcd driver which is interfaced with i2c protocol and a 40 segment monochromatic LCD. I have uploaded a simple program which is working very well on arduino uno but works only once with atmega2560 customized board. more over some points to remember that the customized board of atmega2560 has a 8mhz crystal and operationg voltages are 3.3v. Once i programs the atmega2560 board the LCD shows the digits but when i cut off the power and again powers the system, the display goes forever, then if i again program the atmega2560 the lcd don't shows the digits (But controller is powered on and working well as it shows serial data on serial monitor) and i have to wait a long time e.g 10 to 15 mins to program it again to make it work (only if the power is cut off of the microcontroller ). further more if i program the arduino uno with the same code and uses it's SDA and SCL pins and jumper them with atmega2560's SCL SDA pins it starts work and keep working if i also remove the SCL and SDA connections from Arduino uno and also i could program it as many as time i want from atmega2560 the code works until power is cut off again.

I have attached the code below for the reference, In debugging i found that either there is some capacitor on the atmega2560 board which is not allowing the PCF8576 driver to initialize after power cut off or reset or either their is a issue of frequency because i'm using 8mhz crystal and arduino uno is working fine because it has 16 mhz crystal.

#define ADDRESS            B0111000      //  I2C Address of PCF8576
#define MODE_SET           B11001001   //  MODE SET      [C]   [10]   [LowPower]   [Enable]   [Bias]   [Mux]
#define DEVICE_SELECT      B11100000   //  Device select   [Command]    [1100]    [A2 A1 A0]
#define BANK_SELECT        B11111010      //  no effect in 1:4 multiplex mode

#define eight             B11111110 

#define pointer_digit1     B00000000 

#include <Wire.h>

void setup()
{
  Wire.begin();
  Serial.begin(9600);
  delay(3000);
  Clear_Screen();
  delay(3000);
}

void loop() {
  Digit_1(eight);
  Serial.println("Hello World");
  delay(1000);
}


void Clear_Screen() {
  Wire.beginTransmission (ADDRESS);
  Wire.write (MODE_SET) ;
  Wire.write (DEVICE_SELECT);
  Wire.write (BANK_SELECT) ;
  Wire.write (pointer_digit1) ;
  for (int i = 0; i <  20; i++) {
    Wire.write(0x00);
  }
  Wire.endTransmission () ;
}

void Digit_1 (int digit)
{
  Wire.beginTransmission (ADDRESS) ;
  Wire.write (MODE_SET) ;
  Wire.write (DEVICE_SELECT) ;
  Wire.write (BANK_SELECT) ;
  Wire.write (pointer_digit1) ;
  Wire.write (digit) ;
  Wire.endTransmission () ;
}

Look at your LCD and driver specification, the ones I have require 5 Volts to power the Display.
Good Luck & Have Fun!
Gil