This section describes additional materials and howtos that may be useful while following tutorials.
In this tutorial, we're going to build a serial port that can connect your PIC's TX and RX pins to your pc or other hardware using a max232 chip.
Many circuits will require some serial port communication, you may buy yourself a rs232 to TTL adapter off the net for as little as $10, or you can build one yourself. The max232 is a very popular chip. It converts your 5v circuit to the 12v required for serial communication to things like your PC. Many microcontrollers have RX and TX output pins. Here is a image of the max232 adapter I purchased. It has input pins for RX, TX, CT, RT as well as GND and 5v. The RX and TX pins can be directly connected to your PIC.
Now, lets build our own!
First get yourself a RS232 port, you can cut up one of your serial port cords, or buy a port from the store for a dollar or two.


I am going to use a cut serial port cord since it already has leads on it, and is long enough to reach my pc. Use your multi-meter to find the pin numbers, and touch up the wires with solder so they’ll go into your breadboard easily.
Now build the circuit, As you can see, you will need the max232 chip from your local electronics store and a few 1uf capacitors.


Great job, now connect the RX and TX pins to your circuit, and plug the rs232 port directly your pc, or to a usb-to-serial adapter, or even to a bluetooth-to-serial adapter for short range wireless.
I strongly suggest you make this on a PCB with pins that will plug to your breadboard. you’ll use it a lot!
In this image, I did not complete my PIC circuit, but I think you get the idea:

You can use serial_hardware lib or serial_software lib to transmit data to your pc, check for it in the other jallib projects. I suggest the software realterm for sending/receiving data to your PIC
Open Source REALTERM http://realterm.sourceforge.net/
It can be downloaded for free from http://sourceforge.net/projects/realterm/files/
Open the software, click “Port”, choose your speed and port number and press “open”
Hex output

Ascii output

| Attachment | Size |
|---|---|
| serialboard_purchased1.jpg | 75.04 KB |
| serialboard_purchased2.jpg | 83.66 KB |
| serialboard_purchased3.jpg | 88.73 KB |
| serialboard_port.jpg | 4.8 KB |
| serialboard_port2.jpg | 5.31 KB |
| serialboard_max232.jpg | 20.1 KB |
| serialboard_breadboard.jpg | 26.16 KB |
| serialboard_serial-board.jpg | 24.83 KB |
| serialboard_realterm.jpg | 68.24 KB |
| serialboard_realterm2.jpg | 41.9 KB |
Intro to in-circuit programming & ICSP
ICSP stands for In-Circuit Serial Programming. More information can be found at http://ww1.microchip.com/downloads/en/DeviceDoc/30277d.pdf
When I got started in micro-controllers and JAL, I needed to choose a programmer. At the time, I did not know anything about choosing a programmer, so I just went on ebay and bought one that is able to program many different PIC's.
For years, I used this programmer by putting my 16f877 chip into it, programming it, and putting it into my circuit. I broke pins and wasted a lot of time. Little did I know, my programmer has an ICSP output for in-circuit programming. My programmer even says ICSP on it, but I did not know what ICSP is.
Eventually I got sick and tired of moving my micro-controller back and forth from the breadboard to the programmer, and I had herd some talk about ICSP. I found a ICSP circuit on the net, and I took a harder look at my programmer, it has 6 pins sticking up labeled ICSP. However, I did not know what pin was what, they where not marked well, and I could not find info about my programmer. One of the pins was marked pin 1 on the programmer. If you know your ICSP pinouts already, you may skip to the circuit diagram.
I searched for 6-pin ICSP in Google and found that pinouts are different depending on the programmer. So, I took out my volt-meter and logic probe (and oscilloscope, although it is not needed) and measured the voltages off each pin while programming a chip and while not. I could see on the PCB that pin 3 is connected to ground and pin 6 is connected to nothing. Here's what I got:
| PIN # | While Idle | While Programming |
|---|---|---|
| 1 | 0v | 12v |
| 2 | 0v | 5v |
| 3 | 0v | 0v |
| 4 | 5v | Pulsing 0v to 5v (random) |
| 5 | 0v | Pulsing 0v to 5v (square wave) |
| 6 | not connected | 0v - can see no connection on PCB |
The pin names for ICSP are VPP1, LOW, DATA, CLK, VCC, GND. So lets match them up:
0v pin 6 must be pin “AUX”, I think this one is actually not connected
0v pin 3 must be pin “GND”
pin 1 is a programming enable pin, VPP1
pin 2 is 5v, mostly used to power a not powered circuit during programming.
pin 4/5 are pulsing pins. They must be “CLK” and “DATA” (you may have to guess which is which if you don't ave a oscilloscope.
Lets make a new chart. I believe most ICSP ports have pins in this order:
| PIN # | PIN NAME | While idle | While Programming |
|---|---|---|---|
| 1 | VPP1 | 0v | 12v |
| 2 | VDD | 0v | 5v |
| 3 | GND | 0v | 0v |
| 4 | DATA | 5v | Pulsing 0v to 5v (random) |
| 5 | CLK | 0v | Pulsing 0v to 5v (square wave) |
| 6 | AUX | not connected | not connected |
VDD can be connected to your PIC’s 5v supply (as seen in the schematic below), but many programmers do not need this pin. If you do not need it you can disconnect it. I feel that it is more safe to disconnect it if you are not going to use it. You can test disconnecting this wire after you get ICSP working.
VDD is for power-off programming. Power-off programming does not work in my circuit because there is too much current drain. In my projects, I do use the VCC pin, and I will program my chips while my circuit power supply is ON.
GND must be connected to your circuits ground. Follow this circuit diagram:
Your done! Turn on your power supply and try to program your chip!
| Attachment | Size |
|---|---|
| icsp_circuit.jpg | 68.68 KB |
Jallib Tutorial Book Changes & Updates
| Date | Comments |
|---|---|
| 2011/05/23 | Added print & format library. |
| 2011/05/19 | Added FAT32 tutorial |
| 2010/04/22 | Fixed English and integrate Youtube flash object in HTML output |
| 2010/04/06 | Alphabetical TOC |
| 2010/04/05 | Added RC servo & motor speed control tutorial |
| 2010/04/01 | Changed hard disk tutorial schematic |
| 2010/03/25 | Updated ICSP schematic and tutorial to reflect PIC Kit 2 pinouts. ICSP schematic matches Microchip Specification |
| 2010/03/12 | Updated SD Card schematic. Added pull-up resistor on chip-select line, changed resistor values for 5v-3v conversion |
| Date | Comments |
|---|---|
| 2010/01/27 | Fixed I²C bus schematic and modified I²C titles |
| 2010/01/21 | Added ADC introduction, re-organized PWM tutorials and titles |
| 2010/01/20 | Better quality Images on Getting Started, serial board, blink a led tutorials. |
| 2010/01/19 | Added serial & rs-232 tutorial |
| 2010/01/15 | New ICSP Schematic |
| Date | Comments |
|---|---|
| 2009/12/06 | Added SD Card tutorial |
| 2009/12/06 | Added PATA Hard Disk tutorial |
| 2009/12/06 | Added ICSP tutorial |
| Date | Comments |
|---|---|
| 2009/11/22 | Initial Release |