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
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

  • question about speaker crossover August 19, 2022
  • How does a transistor works as a switch? August 19, 2022
  • Designspark PCB V10.0 on Windows 11 - fails to start August 19, 2022
  • Pedestal fan August 19, 2022
  • Peltier control August 19, 2022

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2022 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