BASIC Stamp, Microchip PIC, 8051, and Remote Control Projects

Using the LCDOUT command with PicBasic Pro

Providing an interface for user data entry, terminal displays, and even using them to debug your applications during development is a must for any design.  Controlling an LCD using PicBasic is so incredibly simple that even the casual hobbyist can now fully integrate an LCD display into a new design with an absolute minimum of effort, and code requirements.  Below is the schematic, and simple PicBasic code to control the LCD module.

LCDOUT Item {,Item...}

Display Items on an intelligent Liquid Crystal Display. PBP supports LCD modules with a Hitachi 44780 controller or equivalent. These LCDs usually have a 14- or 16-pin single- or dual-row header at one edge.

If a pound sign (#) precedes an Item, the ASCII representation for each digit is sent to the LCD. LCDOUT can also use any of the modifiers used with SEROUT2. See the section on SEROUT2 for this information.

A program should wait for at least half a second before sending the first command to an LCD. It can take quite a while for an LCD to start up.

Commands are sent to the LCD by sending a $FE followed by the command. Some useful commands are listed in the following table:

Command Operation
$FE, 1 Clear display
$FE, 2 Return home (beginning of first line)
$FE, $0C Cursor off
$FE, $0E Underline cursor on
$FE, $0F Blinking cursor on
$FE, $10 Move cursor left one position
$FE, $14 Move cursor right one position
$FE, $C0 Move cursor to beginning of second line

Note that there is a command to move the cursor to the beginning of the second line of a 2-line display. For most LCDs, the displayed characters and lines are not consecutive in display memory - there can be a break in between locations. For most 16x2 displays, the first line starts at $0 and the second line starts at $40. The command:

LCDOUT $FE, $C0

sets the display to start writing characters at the beginning of the second line. 16x1 displays are usually formatted as 8x2 displays with a break between the memory locations for the first and second 8 characters. 4-line displays also have a mixed up memory map.

See the data sheet for the particular LCD device for the character memory locations and additional commands..

LCDOUT $FE, 1, "Hello" ‘ Clear display and show "Hello"

The LCD may be connected to the PICmicro using either a 4-bit bus or an 8-bit bus. If an 8-bit bus is used, all 8 bits must be on one port. If a 4-bit bus is used, it must be connected to either the bottom 4 or top 4 bits of one port. Enable and Register Select may be connected to any port pin. R/W should be tied to ground as the LCDOUT command is write only.

PBP assumes the LCD is connected to specific pins unless told otherwise. It assumes the LCD will be used with a 4-bit bus with data lines DB4 - DB7 connected to PICmicro PORTA.0 - PORTA.3, Register Select to PORTA.4 and Enable to PORTB.3.  It's also preset to initialize the LCD to a 2 line display.

That's it....!  Now try the same thing in assembly language, and you'll quickly begin to understand the real power & time savings you'll experience when you use PicBasic.

Looks pretty darn simple doesn't it..?  That's because PicBasic takes care of all the details for controlling the LCD for you.

Notice the spare I/O-pins left over on the PIC16F84..?  You have seven I/O-pins left to control additional circuitry, and if you're even just a little creative here you can design your very own Serial LCDs' at a fraction of the cost of purchasing them off the shelf..

Using the simple serin command in PicBasic you can receive serial data on any I/O-pin with the PIC16F84 controlling your LCD, and very easily create your own serial LCDs'.

Get PicBasic:

bullet

Click HERE to purchase PicBasic Compilers - and hardware.

bullet

Click HERE to learn more about the PicBasic compiler.

bullet

Click HERE to return to the PicBasic projects page.

| Contact Information |