The 16F88 has a hardware serial port on RB2 & RB5. RA2 can be internally tied to GND so that's a free I/O pin, same with RA6 (no need to tie it to GND) Moving S1 to port B allows use of the internal pullup and may also allow for interrupt on change (PORTB4..7)
Don't tie MCLR to GND but instead a 10K resistor to VDD (else this can cause problems if you enable MCLR & INTOSC for some programmers)
You could also use a spare I/O for R/W on the LCD (this will allow you to test the busy flag and run the LCD as fast as it can go)