#define LCD_PORT PORTB #define LCD_DIR DDRB #define LCD_RESET 0 //Pin14 #define LCD_RS 1 //Pin15 #define LCD_CS 2 //Pin16 #define LCD_DAT 3 //Pin17 #define LCD_CLK 5 //Pin19 const char init1[] PROGMEM = { 0xFD, 0xFD, 0xFD, 0xFD, 0xEF, 0x00, 0xEE, 0x04, 0x1B, 0x04, 0xFE, 0xFE, 0xFE, 0xFE, 0xEF, 0x90, 0x4A, 0x04, 0x7F, 0x3F, 0xEE, 0x04, 0x43, 0x06 }; const char init2[] PROGMEM = { 0xEF, 0x90, 0x09, 0x83, 0x08, 0x00, 0x0B, 0xAF, 0x0A, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0xEF, 0x00, 0xEE, 0x0C, 0xEF, 0x90, 0x00, 0x80, 0xEF, 0xB0, 0x49, 0x02, 0xEF, 0x00, 0x7F, 0x01, 0xE1, 0x81, 0xE2, 0x02, 0xE2, 0x76, 0xE1, 0x83 }; const char init3[] PROGMEM = {0x80, 0x01}; void lcd_init(void) { LCD_PORT |= _BV(LCD_CS); LCD_DIR |= _BV(LCD_CS); port_init_io(); wrtab(init1, 24); _delay_ms(7); wrtab(init2, 40); _delay_ms(50); wrtab(init3, 2); LCD_PORT &= ~_BV(LCD_CS); // select Display lcd_wrcmd(0xEF); lcd_wrcmd(0x90); lcd_wrcmd(0x00); lcd_wrcmd(0x00); } void port_init_io(void) { LCD_PORT &= ~_BV(LCD_RESET); LCD_DIR |= _BV(LCD_RESET); LCD_DIR |= _BV(LCD_DAT); LCD_PORT |= _BV(LCD_CS); LCD_DIR |= _BV(LCD_CS); LCD_PORT &= ~_BV(LCD_CLK); LCD_DIR |= _BV(LCD_CLK); LCD_PORT |= _BV(LCD_RS); LCD_DIR |= _BV(LCD_RS); _delay_ms(50); LCD_PORT |= _BV(LCD_RESET); _delay_ms(10); SPSR |=(1<