Sunday, February 27, 2011

Display string in LCD with input from push buttons

/* to display the given char in LCD when pressing buttons*/
//LCD in 4-bit mode

#include <at89x51.H>
#include <lcd.h>

void initialization();
void main ()

{
LCD_init();
initialization();

while(1)
{
while (P0_0 ==1) //push button1
{
LCD_row1(); LCD_puts("Welcome");
}

while (P0_1 ==1)//push button2
{
LCD_row2(); LCD_puts("to 8051 world");
}
}
}

void initialization()
{
P0 = 0x00;
}

LCD interfacing with 8051

//Interfacing 16x2 LCD Display with 8051 micro controller in 4-Bit mode
//connect EN pin of LCD to port P3.1
//connect RS pin of LCD to port P3.0
//connect D4-D7 pin of LCD to P2.0-P2.3 respectively

//*********start of program*************//
#include <at89x52.h>
#include <lcd.h>

main( )
{
LCD_init();
LCD_row1(); LCD_puts("Hello World");
LCD_row2(); LCD_puts("Good Morning");
while (1);
}

//*********end of program*************//

//*********LCD.H*************//
//Header file
#define LCD_en P3_1
#define LCD_rs P3_0
#define LCD_DELAY 1535 /* Delay for 1 ms */
#define LCD_clear() LCD_command(0x1) /* Clear display LCD */
#define LCD_origin() LCD_command(0x2) /* Set to origin LCD */
#define LCD_row1() LCD_command(0x80) /* Begin at Line 1 */
#define LCD_row2() LCD_command(0xC0) /* Begin at Line 2 */

/***************************************************
* Prototype(s) *
***************************************************/
void LCD_delay(unsigned char ms);
void LCD_enable();
void LCD_command(unsigned char command);
void LCD_putc(unsigned char ascii);
void LCD_puts(unsigned char *lcd_string);
void LCD_init();

/***************************************************
* Sources *
***************************************************/
void LCD_delay(unsigned char ms)
{
unsigned char n;
unsigned int i;
for (n=0; n<ms; n++)
{
for (i=0; i<LCD_DELAY; i++); /* For 1 ms */
}
}

void LCD_enable()
{
LCD_en = 0; /* Clear bit P2.4 */
LCD_delay(1);
LCD_en = 1; /* Set bit P2.4 */
}

void LCD_command(unsigned char command)
{
LCD_rs = 0; /* Clear bit P2.5 */
P2 = (P2 &amp; 0xF0)|((command>>4) &amp; 0x0F);
LCD_enable();
P2 = (P2 &amp; 0xF0)|(command &amp; 0x0F);
LCD_enable();
LCD_delay(1);
}

void LCD_putc(unsigned char ascii)
{
LCD_rs = 1; /* Set bit P2.5 */
P2 = (P2 &amp; 0xF0)|((ascii>>4) &amp; 0x0F);
LCD_enable();
P2 = (P2 &amp; 0xF0)|(ascii &amp; 0x0F);
LCD_enable();
LCD_delay(1);
}

void LCD_puts(unsigned char *lcd_string)
{
while (*lcd_string)
{
LCD_putc(*lcd_string++);
}
}

void LCD_init()
{
LCD_en = 1; /* Set bit P2.4 */
LCD_rs = 0; /* Clear bit P2.5 */
LCD_command(0x33);
LCD_command(0x32);
LCD_command(0x28);
LCD_command(0x0C);
LCD_command(0x06);
LCD_command(0x01); /* Clear */
LCD_delay(256);
}