Microcontrollers have a limited number of I/O pins. And sometimes you need more than you can get. But there is always a solution. For instance, is this simple project Arduino board controls an LCD via 3 wires.
The technique isn’t new. I bet many projects are already using this technique. The solution is simple – Arduino sends serial data to shift register that sends it to LCD via parallel lines. Of course, when doing such modifications – standard LCD control libraries won’t be useful any more. For this particular case use this one.