ATMEL 89 Series Flash Microcontroller Programmer Ver 3.1

M Asim Khan,


This programmer was designed in view of to be flexible, economical and easy to built, the programmer hardware uses  the  standard  TTL  series  parts and no special components  are used. The  programmer is  interfaced with the PC parallel port and there is no  special  requirement for the PC parallel port, so the older computers can also be used with this programmer.

Supported Devices

The programmer software presently supports the following devices
AT89C51                AT89S51                AT89C1051U            D87C51
AT89C52                AT89S52                AT89C2051               D87C52
AT89C55                AT89S53                AT89C4051
AT89C55WD          AT89S8252
Note:  For 20 pin devices a simple interface adapter is required.


Figure 1 shows the circuit diagram of the Flash Programmer, the programmer  is  interfaced  with  the  standard parallel port of the PC. As shown in the diagram U2 is used to control the data flow between  the  controller  and the PC, U4 latched the low order address byte and U5 latched the high  order address  byte, while  U3 is used to generate the control signals for micro controller to be programmed. IC  U1  is  used  to  generate  the  program pulse for the u-controller. The power supply section uses U8 to generate the logic 5V supply while the U7 is used to  provide  the  programming  supply  voltage  to  controller.  IC U6 is used to generate the VCZ power supply voltage for the u-controller which is selectable either 5v or 6v5.

The  power  to  the  circuit  is  provided  by  a wall adapter of 18V output, or it can be powered by a 15V 100mA transformer.

For the adjustment of P1, P2 and P3 use a digital multimeter & follow the steps shown below,

1.  Connect power to the programmer & start the program, in the Help menu select the Adjust
     Voltages option, move to Vcz Setting menu.

2.  Select "Vcz  6V5" option, adjust Vcz voltage to 6.5v across pin 20 & 40 of ZIF using P1 variable.

3.  Also check the 5v output across pin 20 & 40 by selecting the 5v option .

4.  Move to Vpp setting options, select "Vpp  12V75" option, adjust Vpp voltage to 12.75v across
     pin 20 & 31 of ZIF socket using the P2 variable.

5.  Next select "Vpp  12V0" option, adjust Vpp voltage to 12.0v across pin 20 & 31 of ZIF using
     the P3 variable.

6.  Re-check all the options in Vpp Setting menu.

Figure 1:   Circuit Diagram of Flash Programmer V3.1

Figure 2 shows the circuit diagram of the interface adapter card required for programming the 20 pin Flash devices.

Figure 2:   Interface Adapter circuit diagram V3.1

Constructing the Board

The prototype board may be built using universal PCB with point-to-point wiring.

If you want to make your own PCBs, then download the file which contains the pcbs files in PDF format, if you have Orcad 9 then download the max files of the programmer,

For the bill of material of the project view the text file Pgm89v31PartsList.txt


Download the  file, this zip file contains the main program and the i/o port driver for windows  2000 & XP. Place all files in the same folder, for win 95/98 use the "Pgm89v31.exe" file, for win 2000 & XP
use the "Pgm89XP.bat" file. The main screen of the program is shown in figure 3.

Following are the main features of this software,

  • Read and Write the Intel Hex File
  • Read Chip info
  • Clear, Fill & Edit Program Buffer
  • Verify with Program Buffer
  • Reload current Hex File
  • Display Data Checksum
  • Program selected Lock Bits & ISP fuse
  • Parallel Port Selection LPT1, 2 & 3


    In  order to  insure safe  insertion  &  removal  of  the  u-controller from  programmer ZIF  socket  make  sure programmer power supply is turned on before starting the program and the red LED D1 must be  turned  off when the program is started. The u-controller should be placed or removed from the ZIF socket when the red LED D1 is off.

    The  software  does  not  provide  the  erase  command  because  this  function  is  performed automatically during device programming. If you are required to erase the controller first  use  the  clear  buffer command in
    edit menu then program the controller, this will erase the controller memory.

    Also note that the programmer may not work correctly with PCs and Laptops which uses the 3.3v supply for
    the parallel port operation, since the programmer is using the HC type cmos ics at 5v the minimum high level
    requirement is 3.5v for proper operation of the programmer. There are two solutions for this problem,

    1. use all ics of HCT type, they should work down to 2v high level. LS type ics are not recommended because
        of their very high current requirement.
    2. use a 74HCT541 buffer ic to convert the 3.3v level to 5v level, only D0 to D7 signals require conversion.

    Figure 3:   Main screen of the program PGM89v31

    This Flash Programmer was designed by M Asim Khan. Revised 09.july.2003
    Any bug reports or suggestion of using the Flash Programmer are welcome.