Dear all,
I am facing problem with interfacing ATMEGA16A to the 16x1 LCD display. I have used same program as listed below for 16x4 LCD display and it is working perfectly but it is not working with 16x1 LCD display.
The code is
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
void lcd_cmd(int);
void lcd_data(int);
int i=0;
int main(void)
{
DDRA=0xFF;// LCD data lines
DDRB=0xFF;// B7-RS, B6-RW, B5-EN (Command lines)
PORTA=0x00;
PORTB=0x00;
lcd_cmd(0x30);
for(i=0;i<100;i++);
lcd_cmd(0x0E);
for(i=0;i<100;i++);
lcd_cmd(0x01);
for(i=0;i<100;i++);
lcd_cmd(0x04);
for(i=0;i<100;i++);
lcd_cmd(0x80);
for(i=0;i<100;i++);
lcd_data('A');
while(1);
}
void lcd_cmd(int cmd){
PORTA=cmd;
PORTB=0x20;
for(i=0;i<200;i++);
PORTB=0x00;
for(i=0;i<200;i++);
}
void lcd_data(int data){
PORTA=data;
PORTB=0xA0;
for(i=0;i<200;i++);
PORTB=0x80;
for(i=0;i<200;i++);
}
Please help me to find out where i am going wrong.
I am facing problem with interfacing ATMEGA16A to the 16x1 LCD display. I have used same program as listed below for 16x4 LCD display and it is working perfectly but it is not working with 16x1 LCD display.
The code is
#include <avr/io.h>
#include <avr/interrupt.h>
#define F_CPU 8000000UL
void lcd_cmd(int);
void lcd_data(int);
int i=0;
int main(void)
{
DDRA=0xFF;// LCD data lines
DDRB=0xFF;// B7-RS, B6-RW, B5-EN (Command lines)
PORTA=0x00;
PORTB=0x00;
lcd_cmd(0x30);
for(i=0;i<100;i++);
lcd_cmd(0x0E);
for(i=0;i<100;i++);
lcd_cmd(0x01);
for(i=0;i<100;i++);
lcd_cmd(0x04);
for(i=0;i<100;i++);
lcd_cmd(0x80);
for(i=0;i<100;i++);
lcd_data('A');
while(1);
}
void lcd_cmd(int cmd){
PORTA=cmd;
PORTB=0x20;
for(i=0;i<200;i++);
PORTB=0x00;
for(i=0;i<200;i++);
}
void lcd_data(int data){
PORTA=data;
PORTB=0xA0;
for(i=0;i<200;i++);
PORTB=0x80;
for(i=0;i<200;i++);
}
Please help me to find out where i am going wrong.