Recieving string and displaying it on a LCD screen

The above 2 statements are in a while loop

Each time you read a character from the PC, you set the cursor position, and print the character at that position.

So when the PC sends the 2 characters 8 and 7, you first print the first character (8) at location [4,0], and then you print the second character (7) at location [4,0]... right over top of the first character.

Try moving lcd.setCursor(4,0); to before the loop.