SP.710, Spring 2001: "Intro to Microcontrollers"
PIC to PC serial communications
For user interface, data transfer, and debugging purposes, it is often
useful to be able to connect a PIC-based circuit to a computer and
transfer data (such as text) back and forth. For example:
- A PIC-based remote weather station that stores data in memory, but
when you plug it into a computer and press a key, it downloads all the
stored sensor readings to the computer.
- A PIC-based circuit that your computer can control over the serial
port to turn on and off lights, motors, etc...
- A PIC that reads sensors and talks to a Palm Pilot over the serial
port, turning a Pilot into a digital multimeter.
To send data to and from a computer over the serial port, you need a
combination of hardware and software. The software deals with sending
and receiving a pattern of "ones" and "zeros" (5 volts or 0 volts) and
converting this to and from some useful format, like ASCII/text. In
PIC C, the commands KBHIT, PUTC, GETC, and PRINTF, and #USE RS232 are
useful commands for doing serial communications (look them up in the
manual).
The hardware deals with making sure the voltages are at the right
levels (computer serial ports use +12 and -12 volts ("RS-232 levels")
instead of 0 and 5 volts ("TTL/CMOS levels"). In your PIC circuit,
this hardware voltage conversion is handled by an external chip, the
MAX233 "RS232 Driver/Receiver".
Today:
- Using the attached data sheet, wire up the MAX233 chip to your PIC
circuit. This is intentionally vague, so ask if you have questions. As
a hint, you can ignore T2IN, T2OUT, R2IN, and R2OUT.
- Hook up a DB-9 serial connector to the RS-232 side of the MAX233
chip. You only need to use three of the pins on the connector: Pin 5
should connect to ground, Pin 2 is Receive for the computer (so should
be Transmit from the PIC), and Pin 3 is Transmit for the computer.
- Write a PIC program that prints a messages to the serial port from
the PIC. Test it.
[ To send and receive data on your laptop/PC, run a
terminal program such as Hyperterm, and set up your connection with No
parity, 8 data bits, 1 stop bit, and no handshaking. ]
- Write a PIC program that waits for a letter to be pressed on the
keyboard, then prints some message of your choosing based on the
letter ("I see you pressed the letter A", or "You pressed F. The next
letter in the alphabet is G", "You pressed a vowel", etc...)
- Continue with the Simon project.
Other references:
full MAX233 (and family) datasheet available at:
http://web.mit.edu/rec/datasheets/MAX220-249.pdf
(maxdavis@mit.edu, 2/21/2001)