I think you need to put a Dummy loop after writing to the LCD.
Dummy loop is a loop which does nothing but consume some amount of time; so a user have enough time to recognize the message on screen.
Use two or more nested loops to consume at least 1-2 seconds between consecutive LCD messages.
The LCD shows the same data until you send a new command, what you refer to seems to be more about the code flow than the LCD itself.
You can use a flag, for example value_shown, set it to 0 when the data has changed and the display needs to be updated and then set it to 1 so that the display is not updated until new data are available.
Code C - [expand]
1
2
3
4
5
6
7
8
9
10
11
12
while(1){if(!value_shown){// use the LCD routine here
value_shown=1;}// when the data changes in another part of the code then set
value_shown=0;}