5 #include <util/delay.h>
8 static void lcd_putdata(unsigned char data4
)
20 static void lcd_command(unsigned char data8
)
22 PORTG
&= ~_BV(PG4
); // RS low
23 lcd_putdata(data8
>> 8);
27 static void lcd_data(unsigned char data8
)
29 PORTG
|= _BV(PG4
); // RS high
30 lcd_putdata(data8
>> 8);
34 static void lcd_clear(void)
36 lcd_command(0x01 /* CLEARDISPLAY */);
42 DDRD
|= _BV(PD7
); // EN pin
43 DDRG
|= _BV(PG4
); // RS pin
44 DDRG
|= (_BV(PG0
)|_BV(PG1
)|_BV(PG2
)|_BV(PG3
)); // data pins
47 /* Pull RS, EN low to start talking. */
48 PORTG
&= ~_BV(PG4
); // XXX: try pull high?
50 _delay_us(4500); // XXX: needed?
60 lcd_command(0x20 /* FUNCTIONCONTROL */ | 0x08 /* 2LINE */);
61 lcd_command(0x08 /* DISPLAYCONTROL */ | 0x04 /* DISPLAYON */);
63 lcd_command(0x04 /* ENTRYMORE */ | 0x02 /* LTR */);
66 void lcd_text(char *str
)
70 for (i
= 0; i
< strlen(str
); i
++) {