LCD with interrupts

    sbi (ADCSRA, 1);

cbi (ADCSRA, 0);
  cbi (ADCSRA, 0);

This appears to set 2 of the 3 analog clock prescaler bits. One of them twice. Why?

attachInterrupt(digitalPinToInterrupt(interruptPin), piezo, RISING);

...
detachInterrupt(1);

These are different interrupts. It fails to disengage the interrupt you are actually using and that is why the LCD is messed up.