Summary of Make your own USB LCD controller using PIC18F2550
This article provides a guide for building an external USB LCD controller using a PIC18F2550 microcontroller. It includes schematics, PCB layouts, and a detailed component list. The project features an HD44780-compatible LCD, a rotary encoder, and a buzzer, designed to connect directly to a computer via USB. The author also shares firmware details and Windows driver installation instructions for various operating systems, while inviting community feedback for circuit improvements and bug fixes.
Parts used in the USB LCD Controller:
- R1; R8; R9; R10: 10k
- R2; R7: 4k7
- C1; C2: 22pF
- C3; C5: 100nF
- C4: 220nF
- C6: 100uF
- Q1; Q6: BC184L
- RV2: 4k7 preset
- LCD1: HD44780/KS0066U compatible
- X1: 4MHz
- T5: USB B
- J2: ALPS 11mm rotary encoder
- BUZ1: miniature buzzer
- U1: PIC18F2550 DIP28
Hi everybody
Ages and ages ago, I posted this and many people said they’d like a guide. So here it is!
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.
Schematic and layout
First of all, the schematic.
The PCB layout in colour.
And a 300dpi printable version.
Component list:
R1; R8; R9; R10: 10k
R2; R7: 4k7
C1; C2: 22pF
C3; C5: 100nF
C4: 220nF
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, part 263-2930)
BUZ1: miniature buzzer
U1: PIC18F2550 DIP28
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
Firmware
Here.
Installing in Windows
XP/2000: Download this to your desktop and tell Windows to use that as a driver when it asks.
Vista 64-bit: see scorpia’s post
I think Vista 32-bit works with the XP/2000 method, I’m not sure though.
This is the required programmer config (assuming 4MHz crystal). The USB voltage regulator is critical, as the PIC won’t even try to start up without it.
For more detail: Make your own USB LCD controller using PIC18F2550
- What is the primary purpose of this project?
To make an LCD that connects to your computer using USB, primarily intended to be external. - Can I modify the buzzer connection?
Yes, because a transistor is used for the buzzer, you can connect something else there instead. - Why is the USB voltage regulator critical?
The PIC will not even try to start up without it. - How do I install the driver on Windows XP or 2000?
Download the driver to your desktop and tell Windows to use that as the driver when it asks. - Does this design include GPOs?
No, the board does not have the GPOs to make it smaller. - What crystal frequency is required for the programmer config?
A 4MHz crystal is assumed for the required programmer configuration. - Where can I find suggestions for improving the circuit?
This thread should be used for suggestions on how to improve the circuit, add new features, and fix bugs. - Which microcontroller is used in this build?
The project uses a PIC18F2550 DIP28.
