PIC Programmer

Obsolete project for reference only
This project has an impossible requirement or uses parts that are no longer available. It is here for reference or inspiration only. Consider it “unsupported”.

This is my own version of the classic PIC 16C84/16F84 programmer. The design is originally by David Tait. I’ve made a few changes, redrawn the schematic and done a board layout. All the files you will need are linked below, including software you’ll need to operate it. The software is not by me, I’m just including it for your convenience, and you should follow any usage requests the authors have made.

Classic PIC Programmer

PICs are small microprocessors containing RAM, ROM, and some peripherals. Almost no other parts are required to make a complete “embedded system”. They are readily available and well supported by the manufacturer, third party developers, and most importantly, users. This has led to their immense popularity.

The PC board design is fairly straightforward and can be made by laser printing to special paper or a page from TIME magazine, then ironing the image onto copper-clad board, then etching with ferric chloride. There are a few jumper wires. The power source needs to be at least 15 volts. A 12 volt DC adapter usually produces about 17 volts, so that’s a good choice. Two 9-volt batteries in series will work too. Solder directly to the PC board or use a connector that mates with your power source. Pay attention to the direction of the voltage regulators because the plastic regulators are backward from the tab type. Substitute Japanese or European generic equivalents for the transistors and diodes, but remember that the pinouts will be different. A right angle PC mount DB-25M connector is specified, but a conventional solder-cup DB-25M connector works, see the picture how I did it.

The programmer connects to the parallel printer port of your computer and requires external power. If you want to program a PIC you’ll have a hex file created by your assembler or created by someone else(see my propeller clock). You will also need to drive the programmer with some software. Here are programs that run under DOS and Windows. Linux software for Intel-based computers is available elsewhere. Macintoshes do not have parallel ports and can’t use this programmer. Do not insert the PIC to be programmed until you have power applied and have run the software, and the programming LED is not lit. The DOS software requires command line switches for fuse settings(unless in the chip’s hex file)and also the environmental variable “set ppsetup=3” to be typed before running the program. The Windows software requires the driver “dtait.drv” to be in the \windows\system directory and also the line “PINAPI=DTAIT.DRV” added to the system.ini file. Tell the software you have 7407 chip and PNP transistors. These details are explained in the text files included with the software. If you get verify errors at location 000. You probably have the software initialized for the wrong polarity. I suggest a 7407 chip, it’s non-inverting, but a 7406 chip could also be used, and the software may think that’s what you used and set itself to that type of inverting buffer.

Programming newer PICs:
The whole “F” series can be programmed. You need to use newer software. I have had success with propic2. It adds a few new PICs. The PIC16F627 and PIC16F628 are 18 pin devices and fit right in the socket, but you must make a ground connection to pin 10 to prevent LVP programming, a new feature this programmer does not use. Some people suggest using a 10K resistor to ground, if you are doing in-circuit programming that probably makes sense. Programming the bigger PICs, including the PIC16F872 through 16F877 requires fitting the correct(28 or 40 pin) socket and wiring the pins to the corresponding function. Remember to ground the LVP pin on these, too. The bigger PICs also have extra power and ground pins. These must all be used. You must select the port your computer is using(usually 0378) and the type of programmer (P16PRO) and the type of buffers the programmer uses (non-inverting). The software is beta, but I have tested it and can testify it working on the 16F84 and 16F628 I tried. It only programs locations used in the hex file, so it is very fast. If your program is 250 bytes, only 250 bytes get programmed, but when I used my PicstartPlus to verify the chips I tried, it would show a verify error unless I blanked the chip first, although the chip functioned fine. Leaving those unused areas in the previously programmed state shouldn’t be a problem. Propic2 keeps the power to the chip on while idle. This can be useful for “burn and crash” in-circuit programming. You’ll see the LED is lit. I don’t like to insert or remove the PIC when power is present, so I pull the power cord before I insert or remove the PIC.

Terms of use:
The hardware is released into the public domain. Use of propic2, pic84v05 and picser subject to terms set forth by their authors.

Parts List:

Bill Of Materials for f84pgm.sch
Ref  Value     Part Name/Number  Description
U3             7407              HEX BUFF/DRIVER OC
C2   .1uF      CAPC              CERAMIC CAPACITOR
C3   .1uF      CAPC              CERAMIC CAPACITOR
C4   .1uF      CAPC              CERAMIC CAPACITOR
C5   .1uF      CAPC              CERAMIC CAPACITOR
C6   .1uF      CAPC              CERAMIC CAPACITOR
C1   10uF      CAPE              ELECTROLYTIC CAPACITOR
J2             DB25HM            DB25 RT ANGLE MALE PCB CON
D2             1N4148            GENERIC DIODE
D3             1N4148            GENERIC DIODE
D4             LED               LIGHT EMITTING DIODE
Q1             PN2907 or 2N3906  GENERIC PNP SILICON TRANSISTOR
Q2             PN2907 or 2N3906  GENERIC PNP SILICON TRANSISTOR
R1   4.7K      R1/4W             RESISTOR
R2   10K       R1/4W             RESISTOR
R3   10K       R1/4W             RESISTOR
R4   4.7K      R1/4W             RESISTOR
R5   10K       R1/4W             RESISTOR
R6   1K        R1/4W             RESISTOR
R7   10K       R1/4W             RESISTOR
R8   10K       R1/4W             RESISTOR
R9   10K       R1/4W             RESISTOR
R10  10K       R1/4W             RESISTOR
R11  10K       R1/4W             RESISTOR
D1             1N4001            AXIAL RECTIFIER
U1             7805 or 78L05     POSITIVE REGULATOR
U2             7812 or 78L12     POSITIVE REGULATOR

Schematic in pdf format “f84pgmsc.pdf”
Stuffing diagram in pdf format “f84pgmst.pdf”
Copper layout in pdf format “f84pgml2.pdf”, remember to uncheck “fit to page”