Shift registers has been mention again and again to free pins for both input and output. This is just another example. I need a LCD display, some buttons, sd card and two extra pins for softSerial communication. I received my LCD and connected it according to the LiquidCrystal reference at Arduino.cc. 7 wires! Where should I put every ting else? I had previously used shift registers when I played with PICAXE years ago. So I started googling for such a solution. And this came up: http://code.google.com/p/arduinoshiftreglcd/ Only a 10K resistor and a diode, and 5 wires less. Bingo:
And this is not all. You can download the library ShiftRegLCD and use in your Arduino sketches instead of LiquidCrystal with minor changes.