A large number of embedded project require some type of user interface. This includes displaying numerical, textual and graphical data to user. For very simple numerical display we can use 7 segment displays. If the requirement is little more than that, like displaying some alphanumeric text, we can use LCD Modules. They are cheap enough to be used in low cost projects. They come in various sizes for different requirement. A very popular one is 16x2 model. It can display 2 lines of 16 characters. Other models are 16x4,20x4, 8x1,8x2 etc.
In this tutorial we will learn how we can use such modules withMicrochip PIC Microcontrollers. Here I will present my LCD library which you can use to create LCD based application/projects quickly. For demo I will use PIC18F4520 Microcontroller but you can use any PIC18 MCU. But you have to calculate the CONFIG values for correct setting and CPU clock selection etc. That means the chip should be configured correctly. See datasheet for more info on CONFIG bytes.
MPLAB Project Creation
First create a MPLAB project as described in this tutorial. Name the project LCD. Also add a main file called "lcd_test.c". To use my LCD library you need to add it to your project. Just copy/paste the following files to your project folder.
Header Files
- lcd.h
- myutils.h
Source File
- lcd.c
How to add files to MPLAB Project is described here.
Now you are ready to the library functions to interact with the LCD module.
Sample Program (lcd_test.c)
/********************************************************************
16X2 ALPHANEUMERIC LCD INTERFACING LIBRARY TEST PROGRAM
---------------------------------------------------------
A testing program for our LCD library.
Easy to use library for interfacing 16x2 lcd in 4 bit mode.
MCU: PIC18FXXXX Series from Microchip.
Compiler: HI-TECH C Compiler for PIC18 MCUs (http://www.htsoft.com/)
Copyrights 2008-2009 Avinash Gupta
eXtreme Electronics, India
For More Info visit
http://www.eXtremeElectronics.co.in
Mail: me@avinashgupta.com
********************************************************************/
#include <htc.h>
#include "lcd.h"
//Chip Settings
__CONFIG(1,0x0200);
__CONFIG(2,0X1E1F);
__CONFIG(3,0X8100);
__CONFIG(4,0X00C1);
__CONFIG(5,0XC00F);
//Simple Delay Routine
void Wait(unsigned int delay)
{
for(;delay;delay--)
__delay_us(100);
}
void main()
{
//Let the Module start up
Wait(100);
//Initialize the LCD Module
LCDInit(LS_BLINK);
//Clear the Module
LCDClear();
//Write a string at current cursor pos
LCDWriteString("Good Is Great !!");
Wait(20000);
//Now Clear the display
LCDClear();
LCDWriteString("God Bless all !!");
//Goto POS (X=0,Y=1 i.e. Line 2)
//And Write a string
LCDWriteStringXY(0,1,"<**************>");
Wait(20000);
//Write Some Numbers
for(char i=0;i<100;i++)
{
LCDClear();
LCDWriteInt(i,3);
Wait(3000);
}
LCDClear();
LCDWriteString(" The End ");
//Loop Forever
while(1);
}
The First thing you should do is to Initialize the LCD Module by calling the fuction LCDInit(). This will setup the LCD module. Now you can use the various functions like...
- LCDClear() - For Clearing the screen.
- LCDWriteString(unsigned char *) - For Writing Text Message at Current cursor position.
- LCDWriteStringXY(x,y,msg) - For Writing Text Message at position x,y
- LCDWriteInt() - For printing integer numbers at Current cursor position.
- LCDWriteIntXY() - For printing integer numbers at position x,y.
For detailed information on these functions please refer to this tutorial. It is for the AVR microcontrollers but the functions are same for PIC mcus also.
No comments:
Post a Comment