int SCL_PIN=2; int SDA_PIN=3; int RST_PIN=4; int DC_PIN=5; int k; unsigned char x,y; const PROGMEM unsigned char ny[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xC8, 0xF8, 0xF8, 0xF0, 0x70, 0x10, 0x00, 0xF0, 0xF0, 0xF0, 0xF0, 0x38, 0x08, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xE0, 0xFE, 0xFF, 0xFF, 0x0F, 0x05, 0xC4, 0xF4, 0xFE, 0xFF, 0x9F, 0x07, 0x01, 0xF0, 0xFC, 0xEE, 0xC7, 0xC7, 0xC3, 0xC3, 0xE3, 0xE3, 0xFF, 0xFF, 0xBF, 0x0F, 0x81, 0xF0, 0xFF, 0x6F, 0xE7, 0xE3, 0xE3, 0xE3, 0x73, 0x3B, 0x1F, 0x07, 0x80, 0xF0, 0xFF, 0x6F, 0xE7, 0xE3, 0xE3, 0xE3, 0x73, 0x3B, 0x1F, 0x87, 0xC0, 0xC2, 0xC2, 0xC6, 0xC7, 0x0F, 0x1F, 0x3C, 0xF8, 0xF0, 0xF0, 0x7C, 0x1F, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x0C, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x0C, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x07, 0x07, 0x05, 0x04, 0x06, 0x07, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xE4, 0xFC, 0xF8, 0xF8, 0x78, 0xE0, 0xF0, 0xF0, 0xF0, 0x70, 0x00, 0x80, 0x80, 0xC0, 0x40, 0x40, 0x40, 0x40, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xE0, 0x20, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x70, 0x7F, 0x7F, 0x7F, 0x07, 0x61, 0xF8, 0xFF, 0xBF, 0x07, 0x01, 0x38, 0x7F, 0xFF, 0x87, 0x83, 0xBA, 0xFA, 0x7A, 0x7A, 0x13, 0x07, 0x07, 0x00, 0x38, 0x7E, 0x7F, 0xFF, 0x87, 0xC1, 0xE0, 0x7C, 0x7F, 0x1F, 0x1F, 0x70, 0x7C, 0x7F, 0x3F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x7C, 0x7F, 0x7F, 0xC3, 0xC0, 0xC0, 0xC0, 0x60, 0x70, 0x3F, 0x3F, 0x1E, 0xE0, 0xF0, 0xF0, 0x78, 0x48, 0x48, 0x48, 0x48, 0x78, 0xF8, 0xF0, 0x00, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x38, 0x38, 0x38, 0xF0, 0xF0, 0xF0, 0xF0, 0x18, 0x00, 0x18, 0xF0, 0xF0, 0xF0, 0x38, 0x10, 0xC8, 0xE8, 0xF8, 0x78, 0x70, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x40, 0xE0, 0x00, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x08, 0x0C, 0x0F, 0x0F, 0x0F, 0x0F, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x07, 0x0F, 0x1F, 0x10, 0x10, 0x17, 0x1F, 0x0F, 0x0F, 0x02, 0x00, 0x00, 0x0F, 0x1F, 0x1E, 0x1C, 0x1C, 0x1C, 0x0C, 0x0E, 0x1E, 0x0F, 0x0F, 0x0B, 0x00, 0x0C, 0x0C, 0x0F, 0x0F, 0x0F, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; const PROGMEM unsigned char c1[] = { 0x80, 0x00, 0x08, 0x00, 0x80, 0x01, 0x00, 0x20, 0x00, 0x01, 0x00, 0x80, 0x08, 0x00, 0x40, 0x00, 0x40, 0x00, 0x08, 0x80, 0x00, 0x01, 0x00, 0x20, 0x00, 0x81, 0x00, 0x00, 0x08, 0x80, 0x88, 0x00, 0x00, 0x00, 0x08, 0x40, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x90, 0x00, 0x00, 0x00, 0x88, 0x08, 0x20, 0x02, 0x10, 0x20, 0x08, 0x10, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x38, 0x3C, 0x3E, 0x3C, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x20, 0x08, 0x00, 0x24, 0x10 }; const PROGMEM unsigned char c2[] = { 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x40, 0x02, 0x00, 0x40, 0x08, 0x00, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x08, 0x40, 0x00, 0x01, 0x00, 0x20, 0x00, 0x01, 0x00, 0x00, 0x10, 0x11, 0x00, 0x00, 0x00, 0x11, 0x80, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x21, 0x00, 0x00, 0x00, 0x11, 0x29, 0x10, 0x04, 0x28, 0x00, 0x08, 0x00, 0x12, 0x00, 0x08, 0x00, 0x20, 0x00, 0x38, 0x3C, 0x3E, 0x3C, 0x38, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x20, 0x01, 0x10, 0x20, 0x08, 0x11 }; const PROGMEM unsigned char c3[] = { 0x20, 0x00, 0x00, 0x02, 0x00, 0x00, 0x80, 0x02, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x20, 0x80, 0x00, 0x10, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x20, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x40, 0x02, 0x10, 0x42, 0x00, 0x00, 0x00, 0x22, 0x0A, 0x20, 0x10, 0x08, 0x01, 0x28, 0x20, 0x02, 0x10, 0x08, 0x00, 0x00, 0x00, 0x38, 0x3C, 0x3F, 0x3C, 0x38, 0x00, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x22, 0x10, 0x00, 0x28, 0x02 }; const PROGMEM unsigned char s1[] = { 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x28, 0x5D, 0x3E, 0x77, 0x3E, 0x5C, 0x0A, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x08, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x80 }; const PROGMEM unsigned char s2[] = { 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x10, 0x00, 0x00, 0x80, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x48, 0x00, 0x1C, 0x3E, 0xB6, 0x3E, 0x1C, 0x80, 0x09, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x00 }; const PROGMEM unsigned char s3[] = { 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x10, 0x00, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x88, 0x00, 0x00, 0x1C, 0x3E, 0x36, 0x3E, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x08, 0x00, 0x00, 0x40, 0x00 }; const PROGMEM unsigned char init_[]= {0xAE,0xD5,0x80,0xA8,0x3F,0xD3,0x00,0x40,0x8D,0x14,0x20,0x02,0xA1,0xC8,0xDA,0x12,0x81,0xCF,0xD9,0xF1,0xDB,0x40,0xA4,0xA6,0xAF}; void write_data(unsigned char data) { unsigned char i = 8; digitalWrite(DC_PIN,HIGH); digitalWrite(SCL_PIN,LOW); while (i--) { if (data & 0x80) { digitalWrite(SDA_PIN,HIGH);;;; } else { digitalWrite(SDA_PIN,LOW);;;; } digitalWrite(SCL_PIN,HIGH);;;; asm("nop");;;; digitalWrite(SCL_PIN,LOW); data <<= 1; } } void write_cmd(unsigned char cmd) { unsigned char i = 8; digitalWrite(DC_PIN,LOW);;;; digitalWrite(SCL_PIN,LOW);;;; while (i--) { if (cmd & 0x80) { digitalWrite(SDA_PIN,HIGH);;;; } else { digitalWrite(SDA_PIN,LOW);;;; } digitalWrite(SCL_PIN,HIGH);;;; asm("nop");;;; digitalWrite(SCL_PIN,LOW);;;; cmd <<= 1; } } void setup() { pinMode(SCL_PIN,OUTPUT); pinMode(SDA_PIN,OUTPUT); pinMode(RST_PIN,OUTPUT); pinMode(DC_PIN,OUTPUT); digitalWrite(SCL_PIN,HIGH);;;; digitalWrite(RST_PIN,LOW);;;; delay(100); digitalWrite(RST_PIN,HIGH); for(k=0;k<26;k++) { write_cmd(pgm_read_byte(&init_[k])); } for(y=0;y<=7;y++) { x = 0; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=0;x<128;x++) { write_data(0x00); } } k = 0; for(y=0;y<=7;y++) { x = 0; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=0;x<128;x++) { write_data(pgm_read_byte(&ny[k++])); } } } void loop() { k = 0; for(y=0;y<=2;y++) { x = 100; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=100;x<124;x++) { write_data(pgm_read_byte(&s1[k++])); } } k = 0; for(y=5;y<=7;y++) { x = 9; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=9;x<39;x++) { write_data(pgm_read_byte(&c1[k++])); } } delay(100); k = 0; for(y=0;y<=2;y++) { x = 100; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=100;x<124;x++) { write_data(pgm_read_byte(&s2[k++])); } } k = 0; for(y=5;y<=7;y++) { x = 9; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=9;x<39;x++) { write_data(pgm_read_byte(&c2[k++])); } } delay(100); k = 0; for(y=0;y<=2;y++) { x = 100; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=100;x<124;x++) { write_data(pgm_read_byte(&s3[k++])); } } k = 0; for(y=5;y<=7;y++) { x = 9; write_cmd(0xb0+y); write_cmd(((x&0xf0)>>4)|0x10); write_cmd((x&0x0f)|0x00); for(x=9;x<39;x++) { write_data(pgm_read_byte(&c3[k++])); } } delay(100); }