A pic programmer circuit based on AN589

AN589 is microchip's application note for a parallel port pic programmer circuit which I chose as I wanted something reliable to get up and running quickly.

Note: This page is left on site for legacy information that is applicable to older computers. These days PCs and laptops have only a USB interface so a parallel programming circuit is not useful. instead you should be using a PicKit3 (or maybe PicKit2) programmer which interfaces to the MPLAB X IDE and works well.

It is really quite a simple circuit and its main objective is to provide ICSP connections to your pic microcontroller.

Here is the pcb version (
click to enlarge):

pic programmer

Note: That the PGM signal is not provided - it's not really necessary anyway as you can turn off PGM mode by programming the chip.  For first use of a chip you will need to pull the PGM line low as PGM is enabled by the manufacturer.

PIC Programmer Circuit diagram

Click on the following diagram to open it as a PDF document.

pic parallel port programmer


Disclaimer : If you build this circuit you must double check each connection to the parallel port cable to avoid damage to your computer. This includes checking for shorts between each pin at the parallel port on your circuit. For initial testing it is best if you use a spare (old computer). Building this project is your own responsibility and I can not be held responsible for any damage to your computer.


It has a few modifications that are useful and easy to do:

    • Transmission line termination - lets it work over a long cable.
    • LM317 voltage regulator to get 11.6 volts and protect the circuit
    • Power supply steering diode (stops you reverse connecting the supply).
    • Changed LM340-5 to 3pin 100mA LM78L05.
    • ICSP connector.
    • An LED to show that power is applied.
    • Changed 74LS244 to 74HCT244 because I had one handy!
    • Standard 10k resistors instead of 2k - just easier if they are all the same.

Circuit notes

Transmission line termination

The transmission line termination lets you use the pic programmer circuit at the end of a long cable - I am using a normal parallel cable ~6 feet long. 

When I first tried to use it I got all kinds of random results so it is worth adding the termination.

Power supply regulators

The LM317 saves you needing an accurate bench power supply - you can use a dc power block - anything that supplies more than about 15V dc. If you don't use a 317 it's just too easy to accidentally apply the wrong voltage by turning the dial on a bench supply and frying your microchip. Using the 317 lets you put up to 35V into it (you shouldn't but you can).

Note: the LM317 and LM78L05 are standard components and are easy to find.

To save using odd resistor values I used a 10k and a 1k to set 317 output voltage. The equation for the LM317 is:

Vo = 1.25 * (1+R2/R1)

Vo = 1.25 * (1+10k/1k2) = 11.66V

5V power supply

Following on from this is the 5 volt regulator which is only used to power the LS244 buffer. Its just not worth using a Zener diode supply as the actual voltage at the Zener varies with the load (it's voltage is only specified for a constant current through it) you then need a transistor to isolate the Zener so its just easier to use the three pin regulator.

Note: The pin out of the LM78L05 is different to its larger counterpart the LM7805.

It is not a good idea to power the board from the programmer as :

    • The 5V regulator should be designed for the target board i.e. heatsinking etc.
    • You could get more noise into your circuit.

If you want to power your board from the programmer then change the 78L05 for a 7805 which can supply up to 1A but for higher current it will need a heatsink.


The pic programmer circuit is a bit wasteful as it only uses two gates from the eight available in the LS244 but it's a cheap part anyway.

Q1, Q2 and Q3 can be replaced with any standard general purpose transistors (two npn and one pnp).


You can use ICPROG with this pic programmer circuit. It erases, programs and verifies your pic microcontrollers.

ICPROG also controls resetting the microcontroller at the end of verify so after programming and verifying the program will start.

ICPROG is a good choice for programming software as it has many programming algorithms for many devices (not just PIC microcontrollers) and it is FREE. It also specifically supports this type of pic programmer circuit i.e. the AN589 pic programmer circuit.

Note: Double check the settings in ICPROG e.g. the HS setting for oscillator selection - otherwise you may find your microcontroller just sits there doing nothing!

Jump from pic programmer to
Best-microcontroller-projects home page

New! Comments

Have your say about what you just read! Leave me a comment in the box below.

Privacy Policy | Contact | About Me

Site Map | Terms of Use