Hola, te cuento que para el LCD, se podría usar un shift, como el CD4094 o 74HC4094 que no es un shiht normal, sino que mediante el pin strobe se refrescan las salidas al momento de completar el shift internamente, es una buena opción, lo e visto funcionando, lo que si para eso ya no va a ser posible implementar el modulo para LCD`s del PIC Simulator IDE, pero se podría construir una librería para eso, y lo bueno que todo el LCD se controlaría con solo 3pines
También te cuento, que en un proyecto que tengo actualmente casi terminado, estos trabajando con un LCD y un teclado matricial conectados al mismo puerto, y no es tan complicado, para ahorrar pines se pueden poner los pulsadores en el mismo bus de datos, si es que se conecta el LCD directo al puerto usando el shift ya no es factible. En si consiste en el momento de leer el teclado, configurar las sólidas para el LCD como entradas y leer el teclado, luego a la hora de escribir en el LCD se conf nuevamente como entradas, eso si hay que ubicar por ahí unas resistencias para que si se presiona un pulsador o botón del teclado en mi caso cuando se esta escribiendo en el circuito no se produzca un corto, en realidad se produce igual, solo que al tener esa resistencia la corriente es insignificante, incluso ni se pierde el dato que se esta mandando al LCD.
Otra cosa, porque no usar un PIC un poquito mas grande, podria ser un 16F876, con ese andaria de sobra para implementar todo, o no es mucho mas caro, yo lo consigo poco menos de 2 dólares mas que el 16F88, y físicamente son solo 10 pines mas, el PCB no se incrementaría demasiado, y al poder conectar todo directo al PIC, va a ser posible implementar todos los módulos de control que trae este compilador.
Saludos