The BIG problem with your particular app is that LCDOUT is just too darn slow to keep up with a continuous incoming stream of serial data at 9600 bps. And were's why...

At 1200 baud it takes longer for the hardware USART FIFO buffer to fill. This gives you more time for LCDOUT to finish before the 3rd byte is clocked into the hardware USART, which causes a buffer overrun error, and the USART simply stops receiving data.

At 9600 baud it takes less time to overrun - so you end up with missed characters at the higher baud rate.

So - if your inbound serial data stream takes < time than it takes to output the string to your LCD, it's just not going to work.

A couple of options might be to wait until a serial data input array is filled, then send whatever's in the buffer to your LCD, or setup an interrupt to receive characters in the background, then output to the LCD.

Either way - you'll still want some control over the sending device so you have time to handle sending everything to your LCD, which is going to be a good deal slower than receiving serial data at 9600 bps.

Check the Receive Overrun Error section of the data sheet for a full explanation.