The various LCD commands used to write data to LCD are given below : -
For Writing to LCD RS, RW and EN pins of a 16character 2 line LCD. It has 8 data pins can be configured in 4 bit and 8bit using proper commands. RS=1 for writing data, and RS=0 for register select for writing special character but for our program it is RS=1.
RW=0 I kept as such as we are writing data. EN=1 for enabling writing for 20 s and then EN=0 disabled.
Steps For LCD Interface With ARM 2138 In 4 Bit Mode
Step 1: initialize the LCD in 4 bit with 2 line. 
Step2: create a library for writing a letter or strings. 
The library is as follows. 
Code For Creating Library For LCD Interface With ARM 2138 In 4 Bit Mode
#include <LPC21xx.h> 
void Delay(unsigned long b) 
{ 
     while (--b!=0); 
} 
void write_command(int cmd)
 { 
         IO1CLR |= 0x00f00000; // Clear Data pins 
         IO1CLR |= 0x00040000; // RW = 0 
         IO1CLR |= 0X00020000; // RS= 0, 
         IO1SET |= 0x00f00000 & cmd; //Set Data pins 
         IO1SET |= 0X00080000; // Enable = 1 
         Delay(30000); // Provide Delay 
         IO1CLR |= 0x00080000; // Set Enable=0 
 } 
void write_data(int dat) 
{ 
         IO1CLR |= 0x00f00000; // Clear Data pins4-D7 
         IO1CLR |= 0x00040000; // RW= 0 
         IO1SET |= 0X00020000; //RS= 1 
         IO1SET |= 0x00f00000 & dat; // Set Data pins 
         IO1SET |= 0X00080000; // Enable = 1 
         Delay(30000); //Provide Delay 
         IO1CLR |= 0x00080000; //Set Enable=0 
 }
void lcd_data(char dat)
{ 
         write_data(dat << 16); 
         write_data(dat << 20); 
} 
void lcd_command(char cmd) 
{ 
         write_command(cmd << 16); 
         write_command(cmd << 20); 
} 
void printlcd(char *CPtr) 
{ 
         while(*CPtr != 0) 
         { 
                 lcd_data(*CPtr); 
                 CPtr++; 
                 Delay(20000); 
         } 
} 
void init_lcd(void) 
 { 
         IO1DIR |= 0x00FE0000; 
         Delay(200000) ; 
         Delay(100000); 
         write_command(0x30 << 16); 
         Delay(100000); 
         write_command(0x20 << 16); 
         lcd_command(0x01); /* clear display */ 
         lcd_command(0x06); /* auto address inc */ 
         lcd_command(0x0c); /* cursor off */ 
         lcd_command(0x28);  lcd_command(0x80); /* first location */
}
Then The Main Program For LCD Interface With ARM 2138 In 4 bit Mode Calling This Header File As Follows To Write A String “Hello World” : -
#include <LPC21xx.h> 
#include "lcd.h" 
int main(void) 
{ 
         init_lcd(); 
         while(1) 
         { 
                 lcd_command(0x01); 
                 lcd_command(0x80); 
                 printlcd("Welcome To"); 
                 lcd_command(0xC0); 
                 printlcd("Hello World"); 
                 Delay(50000000); 
         } 
 }


No comments:
Post a Comment