No se porque mi contador no para de contar. Alguien me puede ayudar?

Hola
mi contador no para de contar rapidísimo del 0 al 20.

Esta es mi programación, agradecería la ayuda!!

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int entrada=6,cont=0,estado=0;

void setup() {
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Num. de objetos");
pinMode(entrada,INPUT);
delay(3000);
}

void loop() { //bucle infinito

estado = digitalRead(entrada);

if(estado == LOW){
cont++;

while(estado == LOW){ //antirebote
estado = digitalRead(entrada);
}
}
lcd.setCursor(7,1); //Coorddenadas LCD (x,y)
lcd.print(cont);

if(cont > 20){
lcd.clear();
lcd.print("Num. de objetos");
cont=0;
}
}

Lo primero que debes hacer es leer las Normas del foro y luego editar tu post inicial usando etiquetas para código.

Si lo que pretende hacer tu código es que con cada pulsación avance 1, entonces es mas fácil de este modo

Acá lo tienes

#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27,16,2);

int entrada=6,cont=0;
bool estado, estadoAnt = false;

void setup() {   
   lcd.init();
   lcd.backlight();
   lcd.clear();
   lcd.setCursor(0,0);
   lcd.print("Num. de objetos");
   pinMode(entrada,INPUT);   
   delay(3000);
}

void loop() {                 //bucle infinito

   estado = digitalRead(entrada);
   if (estado == LOW && estadoAnt == HIGH){
	   if (cont++ > 20)
	       cont = 0;
   }
   estadoAnt = estado;

   lcd.setCursor(7,1);         //Coorddenadas LCD (x,y)
   lcd.print(cont);
}

NOTA: observa como debe verse un código debidamente posteado.