Best practicce to refresh data on LCD
The best approach for updating an LCD depends upon a variety of factors including how much RAM is available, the speed of communication to the LCD controller, what sorts of updates the controller can accommodate, and the extent to which the screen can be logically divided into non-overlapping rectangular regions which may be handled separately.  No single approach will be optimal for all situations.

The most important aspect of trying to get clean-looking updates is probably ensuring that any region which holds particular content before an update, and should hold that same content after the update, will hold that same content throughout the update.  If you erase a region of the screen and then draw in it the stuff that was already there, that's apt to be noticeable.  It's much better to either leave alone the parts of the screen that won't change, or else ensure that they are never drawn with anything other than their final content.

An approach that I've sometimes found helpful is to divide the screen into strips, and have a RAM buffer that's large enough to handle two strips.  Things can be drawn in chunks that are one strip high, overlapping the two buffers.  Then send one buffer, copy the lower one to the upper one and clear the lower one, and repeat.  The entire "draw screen" routine gets repeated for each strip, but functions whose effects are entirely outside the current strip return quickly.