PIC16F877 Development Board v. 1.2

The Development Board v. 1.1 connected to an LCD display. It is well visible (read further, in the description) the row of LEDs used to check the logic state of up to 8 I/O ports or external circuits’ pins. Of course, if you own an 8 trace oscilloscope, you can do without it. :-)) On the right bottom the programming cable.

Characteristics of the DB12

As I have done with the PIC 16F84 / C84 Evaluation Board, designed and built by myself according to my need, when approaching a higher level microcontroller I decided to design a circuit allowing easy development of applications. This board, in fact, allows the PIC to be interfaced with external circuits in a reliable and versatile way, making it possible to blame just the external circuits in case of electrical problems, and, of course, to concentrate just on the software.

Developing board

Supported microcontrollers: PIC 16F877, 16F874

Note: the PIC 16F877 pin-out is upwardly compatible with the pin-out of PIC 18F442, 18F452, 18F448, 18F458. This board have been designed for PIC16F877 and tested with it (and on this page we’ll always refer to it); the circuit should be anyway suitable for mentioned microcontrollers, too (18F4x2 and 18F4x8), with the following notes:

a) the OSC2 pin would be multiplexed with RA6
b) in the 16F877, LVP programming and LVP-mode working involve the RB3 pin, while in the 18F4x2 and 18F4x8 families the RB5 pin is involved, so, in these ones, the LVP mode is not selectable just through a dip-switch like you can do for the 16F877; LVP working (but not LVP programming) should be anyway possible connecting to the ground the proper pin, through a resistor, through the board’s connectors or through a wire
c) the values of capacitance adviced for the main crystal oscillator, in the range 1 MHz to 20 MHz, are the same in the datasheet of the 16F877 and of 18F4x2 and 18F4x8 families; the value of 15 pF choosen for this board (and tested with crystals from 4 MHz to 20 MHz with the 16F877) should therefore be suitable also for the two mentioned 18 families.

Let’s now describe the main characteristics of this circuit:

  • Clock generated by RC net or by crystal (XT,HS); clock frequency can be varied with a trimmer in RC mode and using different crystals in the XT and HS modes (without soldering them, but just inserting them into a connector)
  • Octal CMOS buffer driving eight small LEDs: you could connect to the buffer’s inputs, by convenient but affordable wires (red wires in some of the pictures above), PIC’s I/O pins and pins of any external circuit (external circuit and this board connected to the same ground reference), and you can do this without charging the sources; of course, signals being monitored can be carried to other points through another connector
  • Double connectors, both for plugs and for wires, to connect to the external world all the microcontroller’s pins (RESET and supply included)
  • Connector to connect the PIC to various kinds of programmers, allowing you not to remove the PIC from its own socket. NOTE: THIS BOARD IS NOT A PROGRAMMER.
  • LVP mode selected through a dip switch
  • Selection of working modes through 4 or 6-ways dip switches
  • Trimmer to experience on-chip A/D converters (you can connect it to any of the 8 A/D converters of the 16F877)
  • Reset switch; selection of connection of RESET pin to Vdd through a simple pull-up or through a RC Power On circuit; the RESET pin can be driven by a programmer or by external circuits
  • Supply modes: 5V sourced by the on board regulator (input about 7-15V), that can also be fed to external circuits, or supply to the PIC from external circuits
  • LEDs signaling presence of supply in different points of the board (you can disconnect one of the three LEDs)

As previously said, this circuit is not a PIC programmer, but it can be easily interfaced with one of the many programmers you can find, allowing you not to remove the microcontroller from the board (in-system programming).
Compared to the version 1.1, connection also to LVP programmers is now supported; besides this characteristic, it is of course possible to work both with chips with the LVP bit set (just a switch need to be set) and with the LVP bit not set; it is of course possible to interface the board with traditional programmers (12 V on /MCLR), the most part, I would say.
The D.B. is built on a double side board, so realizing it is not the simplest thing in the world; besides, taking a look at the layout, you can easily recognize that it was the only way to make it, unless one had decided to insert dozens bridges.

NOTE: the images of the layout and the schematics further on this page are at low resolution, for obvious problems concerning the time needed to load this page, but their links point to better resolution images. When you click on a link of an image (i.e. the layout) and a new window opens, I suggest you not to close it, as it could be useful to take a look at it while reading this page and in particular for the examples that are further described.

While designing this circuit I tried to realize a versatile circuit and, in the same time, I also pursued the possibility to mount only the components one wish, making this D.B. a not expensive one.
It is of course possible to mount later a part or all the components not soldered at first.
The version here described is the 1.2, completed in February 2003.

Images needed to realize the circuit

If you wish to realize the Development Board (after reading, in particular, the “Acknowledgement and disclaimers” section), you can find here the links to save the images you need (at 300 dpi), reachable anyway in other points of this page. Advices for printing in the layout printing section further.

Copper side layout at 300 dpi (316 KB)
Components side layout at 300 dpi (178 KB)
Components placement (silkscreen) at 300 dpi (131 KB)
Electrical schematic at 300 dpi (240 KB)
Components placement and track view at 300 dpi (465 KB) , or, still good quality,
Components placement and track view at 200 dpi (251 KB)

Why so many dip-switches?

I have choosen to use a switch for each pin that sometimes has to be insulated or connected to other particular pins (i.e., during programming), both to grant a safe insulation and because using 3-state buffers could not be so easy and they could have some electrical problems (i.e, /RESET and supply).

In any case, during the normal switch between use and programming, as an example when the software is being developed, to allow the chip to be programmed it is usually enough to carry out a few simple operations, not more than a few seconds, setting to OFF some switches of a few dip switches and those of another dip-switch to ON (others dip-switches can be left as they are). As soon as the chip is programmed, it is enough to carry out the inverse operation so having the PIC ready again and connected to the external world. In the section “Programming” operations to carry on are reported in details for the various kinds of programmers, their supply and the LVP bit of the PIC.


For more detail: PIC16F877 Development Board v. 1.2

About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us: