#define RS PB1
#define EN PB0
int PINS[]={PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7};
void lcd_init();
void lcd_command(unsigned char a);
void lcd_data(unsigned char b);
void lcd_string(const char *s);
void setup(){
pinMode(RS,OUTPUT);
pinMode(EN,OUTPUT);
for(int i=0;i<8;i++){
pinMode(PINS[i],OUTPUT);
}
lcd_init();
}
void lcd_init(){
delay(50); //wait for lcd poweup
lcd_command(0x38);
lcd_command(0x0C);
lcd_command(0x06);
lcd_command(0x01);
}
void lcd_command(unsigned char a){
for(int i=0;i<8;i++){
digitalWrite(PINS[i],a&(1<<i));
}
digitalWrite(RS,LOW);
digitalWrite(EN,HIGH);
delay(1);
digitalWrite(EN,LOW);
}
void lcd_data(unsigned char b){
for(int i=0;i<8;i++){
digitalWrite(PINS[i],b&(1<<i));
}
digitalWrite(RS,HIGH);
digitalWrite(EN,HIGH);
delay(1);
digitalWrite(EN,LOW);
}
void lcd_string(const char *s){
while(*s)
lcd_data(*s++);
}
void loop(){
lcd_command(0x80);
lcd_string(" IPCS GLOBAL");
lcd_command(0xC0);
lcd_string(" WELCOMES YOU");
}