Become a subscriber (Free)

Join 29,000 other subscribers to receive subscriber sale discounts and other free resources.
Don't worry -- your e-mail address is totally secure. I promise to use it only to send you MicroZine.

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. If you want to know more about transmission line terminations then follow this link.

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

Visit our Facebook Page:

   Click Here

Recent Articles

  1. 12F675 OSCCAL Calibration

    12F675 OSCCAL Calibration: How to reprogram the OSCCAl value.

    Read more

  2. Arduino Battery Charger: How to save the planet one battery at a time; Recycle and re-use Alkaline battries

    Arduino Battery Charger: A very useful project that lets you charge 'un-rechargeable' alkaline batteries!

    Read more

  3. [Arduino Tutorial] : How to use the 74HC595 shift register.

    The Essential Guide to the 74HC595; What it is and how you can easily use one in any of your projects.

    Read more

Sign up for MicroZine
''The'' Microcontroller Newsletter

Enter your first Name and primary email address in the form below:

And receive absolutely FREE a full project for:

"Measuring Analogue Voltages
Without An ADC"

(Using only one pin).

Instant Download:
You Can
Get It Right Now

Warning: This project could be  Removed 
at any time.  

It will  NOT be 
available indefinitely SO
To avoid 
disappointment  get it:


Don't worry -- your e-mail address is totally secure. I promise to use it only to send you MicroZine
Remember this is a project with full description and fully debugged C Source code - and it's not available from the main website.

You can only get it through this newsletter.

To get exclusive access Enter your first name Name and primary email address Now in the form above.:

But wait !

There's more...

You'll receive more
free and exclusive reports as well as site information and site product updates

Scroll up to the form above and sign up NOW. Don't forget it's FREE and if you don't like it, you can unsubscribe at any time.

Click Here Now to use the form above to get your Valuable information absolutely free.

Readers Comments

"I wanted to thank
you so so so much
for all the information
you have provided in
your site it's


- Ranish Pottath

"This site really is
the best and my favorite.
I find here many useful
projects and tips."

- Milan


"Awesome site,
very, very easy and nice
to navigate!"

- Matt

Learn Microcontrollers

"Interested in

Sign up for The
Free 7 day guide:


"I am a newbie to PIC
and I wanted to say
 how great your
site has been for me."

- Dave


"Your site is a great
and perfect work.

- Suresh


"I couldn't find the correct
words to define
yourweb site.

Very useful, uncovered,
honest and clear.

Thanks so much for
your time and works.

- Anon

Back to Top