#include<avr/io.h> //include avr header file
#include<util/delay.h> //include delay header file
#define LCD_PRT PORTC // define portb as a lcd port
#define LCD_DDR DDRC //define ddr for lcd
/*#define LCD_PIN PINB
#define LCD_RS 0
#define LCD_RW 1
#define LCD_EN 2*/
void lcdcommand( unsigned char cmnd )
{
//to send higher bit of cmnd to LCD_PRT
LCD_PRT=(LCD_PRT & 0X0F) | (cmnd & 0XF0); //masking of portb in nibbles
LCD_PRT = (LCD_PRT&0b11111100); //FOR MAKING RS=0, RW=0
LCD_PRT = (LCD_PRT|0b00000100); //FOR MAKING EN=1
_delay_us(100);
LCD_PRT = (LCD_PRT&0b11111011); //FOR MAKING EN=0
_delay_us(500);
//to send lower bit of cmd to LCD_PRT
LCD_PRT=(LCD_PRT & 0X0F) | (cmnd << 4);
LCD_PRT = (LCD_PRT|0b00000100);/*FOR MAKING EN=1*/
_delay_us(100);
LCD_PRT = (LCD_PRT&0b11111011);/*FOR MAKING EN=0*/
_delay_us(500);
}
void lcddata( unsigned char data ) //Function to send data to LCD
{
LCD_PRT = (LCD_PRT & 0x0F) | (data & 0xF0); //to send higher bit of cmnd to
LCD_PRT
LCD_PRT = (LCD_PRT|0b00000001); /*FOR MAKING RS=1*/
LCD_PRT = (LCD_PRT&0b11111101); /*FOR MAKING RW=0*/
LCD_PRT = (LCD_PRT|0b00000100); /*FOR MAKING EN=1*/
_delay_us(100);
LCD_PRT = (LCD_PRT&0b11111011); /*FOR MAKING EN=0*/
_delay_us(500);
LCD_PRT = (LCD_PRT & 0x0F)|(data<<4); //to send lower bit of data to
LCD_PRT
LCD_PRT = (LCD_PRT|0b00000100); /*FOR MAKING EN=1*/
_delay_us(100);
LCD_PRT = (LCD_PRT&0b11111011); /*FOR MAKING EN=0*/
_delay_us(500);
}
void lcd_init() //Function to initialize the LCD
{
LCD_DDR=0xFF; //LCD port as output port
LCD_PRT = (LCD_PRT&0b11111011); //FOR MAKING EN=0
lcdcommand(0x33);
_delay_us(1000);
lcdcommand(0x32);
_delay_us(1000);
lcdcommand(0x28); //these three command are for 4 bit LCD
mode
_delay_us(1000);
lcdcommand(0x0E); //display on cursor on
_delay_us(1000);
lcdcommand(0x01); //to clear display
_delay_us(1000);
lcdcommand(0x06); //shift the cursor to right
_delay_us(1000);
}
void lcd_gotoxy(unsigned char x,unsigned char y) // Function to set a
starting position on 16x2 LCD
{
unsigned char firstcharadr[]={ 0x80, 0xC0};
lcdcommand(firstcharadr [y-1]+x-1);
_delay_us(2000);
}
void lcd_puts(char *str) // Function to send a string to LCD
{
unsigned char i=0;
while(str[i]!=0)
{
lcddata(str[i]);
_delay_ms(1000);
i++;
}
}
void lcd_clr(void) // Function to clear the lcd
{
lcdcommand(0x01);
_delay_ms(2000);
}
int main(void)
{
lcd_init();
while(1)
{
lcd_gotoxy(1,1);
lcd_puts("E&C");
_delay_ms(2000);
_delay_ms(100);
lcd_gotoxy(1,2);
lcd_puts("SRMSCET");
_delay_ms(9000);
lcd_clr();
}
}

Atmega lcd programing_with_header_file

  • 1.
    #include<avr/io.h> //include avrheader file #include<util/delay.h> //include delay header file #define LCD_PRT PORTC // define portb as a lcd port #define LCD_DDR DDRC //define ddr for lcd /*#define LCD_PIN PINB #define LCD_RS 0 #define LCD_RW 1 #define LCD_EN 2*/ void lcdcommand( unsigned char cmnd ) { //to send higher bit of cmnd to LCD_PRT LCD_PRT=(LCD_PRT & 0X0F) | (cmnd & 0XF0); //masking of portb in nibbles LCD_PRT = (LCD_PRT&0b11111100); //FOR MAKING RS=0, RW=0 LCD_PRT = (LCD_PRT|0b00000100); //FOR MAKING EN=1 _delay_us(100); LCD_PRT = (LCD_PRT&0b11111011); //FOR MAKING EN=0 _delay_us(500); //to send lower bit of cmd to LCD_PRT LCD_PRT=(LCD_PRT & 0X0F) | (cmnd << 4); LCD_PRT = (LCD_PRT|0b00000100);/*FOR MAKING EN=1*/ _delay_us(100); LCD_PRT = (LCD_PRT&0b11111011);/*FOR MAKING EN=0*/ _delay_us(500); } void lcddata( unsigned char data ) //Function to send data to LCD { LCD_PRT = (LCD_PRT & 0x0F) | (data & 0xF0); //to send higher bit of cmnd to LCD_PRT LCD_PRT = (LCD_PRT|0b00000001); /*FOR MAKING RS=1*/ LCD_PRT = (LCD_PRT&0b11111101); /*FOR MAKING RW=0*/ LCD_PRT = (LCD_PRT|0b00000100); /*FOR MAKING EN=1*/ _delay_us(100); LCD_PRT = (LCD_PRT&0b11111011); /*FOR MAKING EN=0*/ _delay_us(500); LCD_PRT = (LCD_PRT & 0x0F)|(data<<4); //to send lower bit of data to LCD_PRT LCD_PRT = (LCD_PRT|0b00000100); /*FOR MAKING EN=1*/ _delay_us(100); LCD_PRT = (LCD_PRT&0b11111011); /*FOR MAKING EN=0*/ _delay_us(500); } void lcd_init() //Function to initialize the LCD { LCD_DDR=0xFF; //LCD port as output port
  • 2.
    LCD_PRT = (LCD_PRT&0b11111011);//FOR MAKING EN=0 lcdcommand(0x33); _delay_us(1000); lcdcommand(0x32); _delay_us(1000); lcdcommand(0x28); //these three command are for 4 bit LCD mode _delay_us(1000); lcdcommand(0x0E); //display on cursor on _delay_us(1000); lcdcommand(0x01); //to clear display _delay_us(1000); lcdcommand(0x06); //shift the cursor to right _delay_us(1000); } void lcd_gotoxy(unsigned char x,unsigned char y) // Function to set a starting position on 16x2 LCD { unsigned char firstcharadr[]={ 0x80, 0xC0}; lcdcommand(firstcharadr [y-1]+x-1); _delay_us(2000); } void lcd_puts(char *str) // Function to send a string to LCD { unsigned char i=0; while(str[i]!=0) { lcddata(str[i]); _delay_ms(1000); i++; } } void lcd_clr(void) // Function to clear the lcd { lcdcommand(0x01); _delay_ms(2000); } int main(void) { lcd_init(); while(1) { lcd_gotoxy(1,1); lcd_puts("E&C");
  • 3.