EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Replies / Thank u Sir…This is the

Thank u Sir…This is the

|

Microcontroller › AVR › Interfacing LCD using AVRatmega32 with 4 bit mode › Thank u Sir…This is the

December 22, 2012 at 12:54 pm #8873
BhanuKiran Chaluvadi
Participant

Thank u Sir…

This is the final code and its working…

 

 

// Program to interface LCD in 4 bit mode with AVR microcontroller
//#define F_CPU 12000000UL
#include<avr/io.h>
#include<util/delay.h>
#include<inttypes.h>
 
#define rs PD3
#define rw PD6
#define en PB4
 
void lcd_init(void);
void dis_cmd(char);
void dis_data(char);
void lcdcmd(char);
void lcddata(char);
 
int main(void)
{
unsigned char data0[11]=”JAI”;
unsigned char data1[10]=”BALAYYA”;
 
int i=0;
DDRA=0xFF;
DDRD=0xFF; //modified
DDRB=0xFF; //modified
 
lcd_init();
 
while(data0!=’’)
{
dis_data(data0);
_delay_ms(200);
i++;
}
 
dis_cmd(0xC5);
 
i=0;
while(data1!=’’)
{
dis_data(data1);
_delay_ms(200);
i++;
}
 
while(1);
}
 
 
 
void lcd_init() // fuction for intialize 
{
dis_cmd(0x02); // to initialize LCD in 4-bit mode.
dis_cmd(0x28); //to initialize LCD in 2 lines, 5X7 dots and 4bit mode.
dis_cmd(0x0C);
dis_cmd(0x06);
dis_cmd(0x83);
}
 
void dis_cmd(char cmd_value)
{
char cmd_value1;
 
cmd_value1 = (cmd_value>>4) & 0x0F; //mask lower nibble because PA4-PA7 pins are used. 
lcdcmd(cmd_value1); // send to LCD
 
cmd_value1 = ((cmd_value) & 0x0F); //shift 4-bit and mask
lcdcmd(cmd_value1); // send to LCD
}
 
 
void dis_data(char data_value)
{
char data_value1;
 
data_value1=(data_value>>4)&0x0F;
lcddata(data_value1);
 
data_value1=((data_value)&0x0F);
lcddata(data_value1);
}
 
void lcdcmd(char cmdout)
{
PORTB=cmdout;
PORTD&=~(1<<rs);
PORTD&=~(1<<rw);
PORTB|=(1<<en);
_delay_ms(1);
PORTB&=~(1<<en);
}
 
void lcddata(char dataout)
{
PORTB=dataout;
PORTD|=(1<<rs);
PORTD&=~(1<<rw);
PORTB|=(1<<en);
_delay_ms(1);
PORTB&=~(1<<en);
}
 
 

RSS Recent Posts

  • Understanding reversing polarity at astable multivibrator April 19, 2026
  • Integrating 0–5V ECU Signals into a Double-DIN Setup – Module vs Custom Head Unit? April 19, 2026
  • Selection Criteria and Safe Usage of Cable Ties in Electronics Applications April 19, 2026
  • Mystery amp noise - ?? April 19, 2026
  • timing delay code statements using Swordfish April 19, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise