int rs=12; //Command = LOW, Data = HIGH
int en=8; //Pulse
void setup() {
DDRD = 11111111; // Output = 1, Input = 0
DDRB = 00111111; //
PORTD = 0x02; //Initiate 4 bit mode
digitalWrite(rs,LOW);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
PORTD = 0x02 <<4;
digitalWrite(rs,LOW);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
PORTD = 0x0f; //LCD ON, cursor ON
digitalWrite(rs,LOW);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
PORTD = 0x0f <<4;
digitalWrite(rs,LOW);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
}
void loop() {
PORTD = 'K';
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'K' <<4;
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'Y';
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'Y' <<4;
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'L';
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'L' <<4;
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'I';
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'I'<<4;
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'E';
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
PORTD = 'E'<<4 ;
digitalWrite(rs,HIGH);
digitalWrite(en,1);delay(10);digitalWrite(en,0);
delay(1000);
while(1);
}
// troubleshooting notes:
// tried relocating 4bit initialization code
// tried bit shifting every PORTD
// tried bit shifting every other PORTD (evens)
// tried bit shifting every other PORTD (odds)