LCD based on Hitachi HD44780 - strange behavior

now Im not sure because I've the display that is half with all the pixel busy and the other half with pixel free.

If you are talking about the right and left halves of the display then you may have a problem with the display itself being bad.

If you are talking about the top and bottom halves of the display then your LCD is not being properly initialized. This is almost always due to improper connections and/or improper programming.

I suggest that you go back to the beginning and start again. Get the display working with a simple sketch such as the one below and then start implementing your other features, one at a time.

#include <LiquidCrystal.h>

//LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);      // put your pin numbers here

void setup()
  {
  lcd.begin(16, 2);                          // this will work for all displays except some rare 16x1's
  lcd.print("hello, world!");
  lcd.setCursor(0,1)
  lcd.print("it works!");
  }

void loop()
  {
  }

Don