As Delta suggests, if you're using the 4-bit parallel interface with the LCD, the gibberish likely isn't gibberish at all. I saw that very frequently on my 3D printer. A missed or extra strobe detected by the LCD gets the nibbles in the 8-bit ASCII character transfers messed up and you can be unintenionally asking for characters in the extended ASCII character set for that display. What happens is the 2nd half of data for one character is combined with the first half of data for the next... Depending on the display, the extended character set has characters in another language, graphic symbols, greek symbols, etc. It'll look like gibberish, but the display is actually doing exactly what it is being instructed to do.
On my 3D printer, I found it is easier to live with this problem than prevent it. I added a few more places in the firmware that would reinitialize the LCD interface as a way to recover from it.
EDIT: On my printer, an unintentional static discharge was usually how the display would get confused. I've attached an image of a sample garbled screen resulting from the nibble issue.