I can't print values correctly in lcd, but, in serial it are good

Hey, I am new with arduino, I am having difficulty to print in a 16x2 LCD the variable percent, in serial it’s ok. Someone can explain it?

my code…:

/* use info from

#include <LiquidCrystal_I2C.h> // inclui biblioteca para comunicação I2C
#include<Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2); //Coloca o display no endereço I2c 0x27, tipo 16x2

/* Constantes LCD */
const int LCD_NB_ROWS = 2;
const int LCD_NB_COLUMNS = 16;

/* Caracteres personalizados */
byte DIV_0_OF_5[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000,
B00000
}; // 0 / 5

byte DIV_1_OF_5[8] = {
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000,
B10000
}; // 1 / 5

byte DIV_2_OF_5[8] = {
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000,
B11000
}; // 2 / 5

byte DIV_3_OF_5[8] = {
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100,
B11100
}; // 3 / 5

byte DIV_4_OF_5[8] = {
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110,
B11110
}; // 4 / 5

byte DIV_5_OF_5[8] = {
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111,
B11111
}; // 5 / 5

/**

  • Função de configuraçao barra de progressão.
  • Utilisa caracteres personalisados de 0 à 5 (6 et 7 disponiveis).
    */
    void setup(){

lcd.init();
lcd.backlight();
Serial.begin(9600);
setup_progressbar();
lcd.clear();
delay(2000);
}
void setup_progressbar() {

/*salva caracteres na memoria do LCD */
lcd.createChar(0, DIV_0_OF_5);
lcd.createChar(1, DIV_1_OF_5);
lcd.createChar(2, DIV_2_OF_5);
lcd.createChar(3, DIV_3_OF_5);
lcd.createChar(4, DIV_4_OF_5);
lcd.createChar(5, DIV_5_OF_5);
}

/**

  • Função desenhando a barra de progresso.
  • porcentagem a exibir.
    */
    void draw_progressbar(byte percent) {

/* Exibe o novo valor numericamente na primeira linha*/
lcd.setCursor(0, 0);
// if (percent < 100) lcd.print(" “);
// if (percent < 10) lcd.print(” ");

lcd.print(percent); // HERE IS THE PROBLEM, the percent only appears from 0 to 1% on display
Serial.print (percent);
lcd.print("% ");
// N.B. Os dois espaços no final da linha permitem excluir os valores da porcentagem
//anterior quando você muda de um valor de dois ou três dígitos para um valor de dois ou um número.

/* Mova o cursor para a segunda linha */
lcd.setCursor(0, 1);

/* Mapeie o intervalo (0 ~ 100) para o intervalo (0 ~ LCD_NB_COLUMNS * 5) */
byte nb_columns = map(percent, 0, 100, 0,80);

/* Desenhe cada caractere pessoal da linha */
for (byte i = 0; i < LCD_NB_COLUMNS; ++i) {

/* Dependendo do número de colunas restantes para exibir*/
if (nb_columns == 0) { // Caixa vazia
lcd.write((byte) 0);

} else if (nb_columns >= 5) { //Caso cheio
lcd.write(5);
nb_columns -= 5;

} else { // Última caixa não vazia
lcd.write(nb_columns);
nb_columns = 0;
}
}
}

void loop(){

/*Valor percentual da barra de progresso */
static byte percent;

/* mostra o valor */
draw_progressbar(percent);

/* incrementa a porcentagem */
if (++percent == 101) {
// Retorna para zero se a porcentagem exceder 100%
percent = 0;
delay(1000);
}

/* Petit temps d’attente */
delay(250);
}

I don't know what exactly your problem is but try to exchange the line

lcd.print(percent);

by

lcd.print((int)percent);

Do you mean the " % " character?