You can use one of the I/O expander modules that are available (or just the MCP23017 chip in the following circuit) to control most HD44780-compatible LCD displays:
The I/O expander and a HD44780-compatible display
The D-Pad circuit, using Python-to-drive hardware, can also be connected to the remaining port A pins of the expander (PA0 to button 1, PA1 to right, PA2 to down, PA3 to up, PA4 to left, and PA5 to button 2). As in the previous example, the buttons will be PA0 to PA4 (WiringPi pin number 100 to 104); apart from these, we have the second button added to PA5 (WiringPi pin number 105).