Buffering the display.
An example using a project of mine, a DDS Signal Source, see the attachment.
I reserve 16 general purpose registers for the display, starting at a place I call DISPLAY_BASE.
During initialisation I clear these registers and the write a decimal point at position DISPLAY_BASE+4, and then "M" "h" "z" at positions DISPLAY_BASE +13, +14, and +15 respectively.
As the program runs, it writes either a "T" or an "S" at DISPLAY_BASE+0 and the frequency information in the appropriate places.
At the end of the program, before it goes to sleep waiting for something to change it writes out the contents of the registers DISPLAY_BASE+0:15
to the LCD.
One write to the LCD for all the info to be displayed, no flickering or funny characters, at least not after I had debugged the rest of the program.
I assume that Ian (Barney) Rogers has a similar approach, I am interested to find out.
JimB