This is a guide for making an LCD that connects to your computer using USB, primarily intended to be external. You can see mine here. To make the board smaller, it doesn't have the GPOs.
This thread should also be used for suggestions on how to improve the circuit, add new features, and fix bugs in the firmware.
First of all, the schematic:

Next, the PCB layout:

(Note that the power for the LCD is labelled wrong: the 5V and 0V should be the other way round)
And a printable version for y'all:

Component list:
R1; R8; R9; R10: 10k
R2; R7: 4k7
C1; C2: 22pF
C3; C4; C5: 100nF
C6: 100uF
Q1; Q6: BC184L
RV2: 4k7 preset
LCD1: HD44780/KS0066U compatible
X1: 4MHz
T5: USB B (bought from Farnell)
J2: ALPS 11mm rotary encoder (from RS)
BUZ1: miniature buzzer
U1: PIC18F2550 DIP28
For firmware, see post #6 in this thread.
Note that I've used a transistor for the buzzer, so you can connect someting else there instead... mod on!
The connection to the rotary encoder works like this: (diagram)
Pin 2 on encoder goes to pin 1 on J2
Pin 3 on encoder goes to pin 2 on J2
Pin 5 on encoder goes to pin 3 on J2
Pins 1 and 4 on encoder go to pin 4 on J2
Any questions, feel free to ask!
ch424