16 x 2 lcd garbled

Hi,
had the same problem, the display went bananas after 2 seconds (serial output OK). The cause was a 1 meter long 1-wire cable with a temperature sensor at the end (a vital part of the system so I couldn't get rid of it). That shoudn't be a problem, but it was.
Tried everything - short wires, shielded 1-wire cable, all power and GND lines hooked at the same spot, capacitors here and there, alternative LiquidCrystal library, and then I just gave up.

SOLUTION (or workaround, to be precise):
My program outputs data to the display once every 1 second. I put the init command lcd.begin(16, 2) just before the lcd.print() block in loop(), and... solved! Not a neat solution probably, but it does the job - no problems in 2 weeks so far.

DRAWBACK - the LCD flickers slightly during the execution of the lcd.begin command, but it's barely visible (may vary depending on your display model), and the whole device is hidden in a closet, checked like once a week, so I really don't care, and it's surely far better than garbage on the screen.

FYI, my LCD is not a "true" 16x2, it's a big 16x1 but organized as 8x2, but the controller is standard, so this solution should help.
System config: Arduino nano, RTC, 1-wire temp sensor, 4 relay module, LCD, rotary encoder, 9V power supply.