This project provides an open-source hardware design for a JDM-style programmer compatible with many PIC microcontrollers.
It uses a serial COM port (RS-232) for communication and supports high-voltage programming (VPP ≈ 12–14 V) via the ICSP interface.
- Supports a wide range of PIC10F, PIC12F, PIC16F/C, and PIC18F series microcontrollers
- Powered directly from the RS-232 serial port
- Uses standard ICSP signals: VDD, VPP/MCLR, VSS, PGD, and PGC
- Simple through-hole (THT) design, easy to solder
- Can be used with IC-Prog, PICPgm, or PicProg on Windows and Linux
- Fully documented pinouts and programming table
- PCB available for purchase via PCBWay
Buy the PCB here:
👉 JDM PIC Programmer – PCBWay Project Page
PIC10F200, PIC10F202, PIC10F204, PIC10F206
PIC12F508, PIC12F509, PIC12F510, PIC12F629, PIC12F635,
PIC12F675, PIC12F683
PIC16F627, PIC16F627A, PIC16F628, PIC16F628A, PIC16F630, PIC16F636, PIC16F639,
PIC16F648A, PIC16F676, PIC16F684, PIC16F685, PIC16F687, PIC16F688, PIC16F689,
PIC16F690, PIC16F73, PIC16F74, PIC16F76, PIC16F77, PIC16F716, PIC16F737,
PIC16F747, PIC16F767, PIC16F777, PIC16F83, PIC16F84, PIC16F84A, PIC16F87,
PIC16F88, PIC16F818, PIC16F819, PIC16F870, PIC16F871, PIC16F872, PIC16F873,
PIC16F873A, PIC16F874, PIC16F874A, PIC16F876, PIC16F876A, PIC16F877, PIC16F877A,
PIC16C61, PIC16C62, PIC16C62A/B, PIC16C63, PIC16C63A, PIC16C64, PIC16C64A,
PIC16C65, PIC16C65A/B, PIC16C66, PIC16C67, PIC16C620/A, PIC16C621/A, PIC16C622/A,
PIC16CE623, PIC16CE624, PIC16CE625, PIC16C71, PIC16C72, PIC16C72A, PIC16C73,
PIC16C73A/B, PIC16C74, PIC16C74A/B, PIC16C76, PIC16C77, PIC16C710, PIC16C711,
PIC16C712, PIC16C716, PIC16C745, PIC16C765, PIC16C773, PIC16C774, PIC16C923,
PIC16C924, PIC16C925, PIC16C926
PIC18F1220, PIC18F2220, PIC18F2320, PIC18F2331, PIC18F2410, PIC18F242-2439,
PIC18F2420, PIC18F2431, PIC18F2455, PIC18F248, PIC18F2480, PIC18F2510, PIC18F2515,
PIC18F252-2539, PIC18F2520, PIC18F2525, PIC18F2550, PIC18F258, PIC18F2580,
PIC18F2585, PIC18F2610, PIC18F2620, PIC18F2680, PIC18F4220, PIC18F4320, PIC18F4331,
PIC18F4410, PIC18F442-4439, PIC18F4420, PIC18F4431, PIC18F4455, PIC18F448,
PIC18F4480, PIC18F4510, PIC18F4515, PIC18F452-4539, PIC18F4520, PIC18F4525,
PIC18F4550, PIC18F458, PIC18F4580, PIC18F4585, PIC18F4610, PIC18F4620, PIC18F4680
| 12F629 / 12F675 | 16F630 / 16F676 | 16F627 / 16F628 | 16F84A | 16F877A | |
|---|---|---|---|---|---|
| VDD | 1 | 1 | 14 | 14 | 32 |
| VPP | 4 | 4 | 4 | 4 | 1 |
| VSS | 8 | 14 | 5 | 5 | 31 |
| DATA / PGD | 7 | 13 | 13 | 13 | 40 |
| CLOCK / PGC | 6 | 12 | 12 | 12 | 39 |
- Transistors: BC337
- Zener Diodes: 5.1 V and 13 V for voltage protection
- Resistors: 4.7 kΩ, 1 kΩ
- Capacitors: 100 nF, 220 µF
- Connector: DB9 (RS-232) + 6-pin ICSP header
- Board Size: 39 × 62 mm
- PCB: Through-hole, single-sided, easy to assemble
| Software | Platform | Notes |
|---|---|---|
| IC-Prog | Windows | Classic JDM support |
| PICPgm | Windows, Linux | Supports command line and GUI |
| PicProg | Linux | Example: picprog --pic-serial-port=/dev/ttyS0 --erase --burn --input-hexfile=<file>.HEX --device=<device> |
- Assemble the programmer using the provided schematic and BOM.
- Connect your target PIC via the ICSP header.
- Plug the programmer into a COM (RS-232) port.
- Open your programming software (e.g. IC-Prog or PicProg).
- Select the correct device type and COM port.
- Load your
.HEXfile and start programming.
The PCB design and documentation are shared publicly under the CC BY-SA license.
You can freely reproduce or modify the design as long as credit is given and derivatives are shared alike.
2013 Marcin Filipiak
