ATMEL 8051 Flash Based-Microcontroller Programmer DIY version 1.1

Shiao I-Lin,

Introduction :
The Atmel Flash devices are ideal for developing, since they can be reprogrammed easy and fast. If you need more code space for your application, particularly for developing 89Cxx projects with C language. Atmel offers a broad range of microcontrollers based on the 8051 architecture, with on-chip Flash program memory.
Reprogrammable Flash 
AT89C51  80C31 Microcontroller with 4K bytes Flash 
AT89LV51  2.7-Volt, 80C31 Microcontroller with 4K bytes Flash 
AT89C52  80C32 Microcontroller with 8K bytes Flash 
AT89LV52  2.7-Volt, 80C32 Microcontroller with 8K bytes Flash 
AT89C55  80C32 Microcontroller with 20K Bytes Flash 
AT89C55WD  80C32 Microcontroller with 20K Bytes Flash 
AT89LV55  2.7-Volt, 80C32 Microcontroller with 20K bytes Flash 

Devices :
Today following devices can be programmed:

Hardware : sketch circuit (similar to version 1.0)
updated 2000/09/13

System requirement :

Hardware : PC with Bi-directional 8-bits Parallel Port supporting ECP or EPP or PS/2 mode.
Software : DOS 6.0 or Win95/98

Appearance :
This figure shows the circuit diagram of the Programmer v1.1 
The advantage of this programmer is it doesn`t need the pre-programmed 89C51.
The 89C51/52/55 receives the 8-bits data from PC parallel port via 82C55A.

1. U1 : 82C55A is a Programmable Peripheral Interface :

2. U2 & U3 : 74LS373 or 74LS573 ( pinout are different ) : used for data latch.
3. U4 : AT89C51/52/55 : The chip you want to programming.

How does it work :

  1. Seting U1-8255 to basic mode (mode 0).
  2. Parallel Port output the Programming Adrress (2-bytes) of U4-8951 to 8255 data port, one byte each time.
  3. 8255 PortA output the Address to both 74373 (3-State Latches ).
  4. Parallel Port output the Programming Data (1-byte) to 8255 data port.
  5. 8255 PortB output the Data to 8951 directly.
  6. Seting 8951 prog mode ( P2.6 P2.7 P3.6 P3.7 ) by 8255 PortC ( bit7 ~ bit4).
  7. Seting 8951 prog Vpp by 8255 PortC ( bit2 ).
  8. Pulse ALE/PROG once by 8255 PortC ( bit3 ) to program a byte in the Flash array or the lock bits.
  9. Repeat steps 1 through 8, changing the address and data for the entire array or until the end of the object file is reached.

Features :

Function :

Software :

Note : 
This circuit is NOT a complete version but just a evaluation. I still investigate, and I hope that people who are interested will make it better. After all I just a student in school.
Note : (chinese)
FAQ : (Thanks for each mail from you ~~ )
  • Q: Wichit Sirichote : I saw your bigger drawing in gif file, you didn't provide the reset signal to 8255, I've never been used with this circuit, "tie to GND". Does it work properly? 

  • A: I have update something of the programmer page. U said that 8255 shall provide the reset signal to 8255. Is it necessary ? One of the reason is because parallel port don`t provide one more control line. I had try this circuit on the bread-board, and it works well.
    •  on the datasheet, it write " RESET: A high on this input clears the control register and all ports (A, B, C) are set to the input mode with the "Bus Hold" circuitry turned on." 

  • Q: Wichit Sirichote : Why don't try with simple RC reset, I suppose the reset signal is logic 'high' for a short period, and this will clear internal register. Please recheck with another PC. If it work fine. please provide me a description with your circuit.

  • A: The original ideal of this circuit was " As simple as possible." The portion of 82C55A, I referred to the book "Peripheral Application with Parallel Port." It don`t take any reset portion for 82C55A,but just used a pull-down resister about 10K ohm. Although I don`t know why, I just take the same concept as the book. 
  • Advice from Wichit Sirichote : Shiao, most of the peripheral chip with internal sequential logic (flip-flop function) must have such reset pin, the internal circuitry needs a short period to reset all internal not only control register, but also the latch of the port. In the past I have experience with 8035 single chip (father of the 8051) and interface with 8255 PPI, I forgot to connect reset pin of the 8255 to 8035, the 7-segment display and keypad didn't work. When I connect it, it works OK. I suppose with a simple pulldown resistor, and a stray or internal capacitance between reset pin and +Vcc, then would provide sufficient RC time to reset internal circuit when powering the chip with sudden change of DC supply. You may use the logic probe to measure the logic when turns the DC supply on, you should see a blib signal for a logic high then stay low. If this happen, the simple 10K pull down is OK. If can't see, try DSO with single short. Capture the transient, you will see the Reset pin go high then decay with RC constant. 

  • Q : Kevin (in Chinese Big5) ±zªººô­¶ÆZ±M·~ªº³á! §Ú¦³¤@­Ó°ÝÃD ¬O±z¬O·Q­n§Ú¦p¦ó³¹¶K±zªº¤å³¹ ? ¦]¬°±z¤w»s§@¦¨ºô­¶¤F ´N¦³³Ð§@Åv , ·Q½Ð°Ý¬O¥Î³sµ²ªº¤è¦¡ , ÁÙ¬O§Ú¥i¥H¥Î°Å¶K ªº¤è¦¡ ?? 

  • A : Thanks for your mail. ¥Ø«eªº³]­p,©|¦b´ú¸Õ¶¥¬q,¨ä¤¤¤]³\¦³¨ÇBug,§Ú·Q§A¯à¥ý¥Î³sµ²ªº¤è¦¡, Åý¤j®a¤@°_°Ñ»P¬ã¨s §Ú¬Û«H§ó·sªº§@«~ ±N¦b²³¤H§V¤O¤U½Ï¥Í .

Background :
This Atmel Programmer was designed by Shiao I-Lin. Update 2000/09/20