void i2c_OLED_clear_display_quick(void) { i2c_OLED_send_cmd(0xb0); // set page address to 0 i2c_OLED_send_cmd(0x40); // Display start line register to 0 i2c_OLED_send_cmd(0); // Set low col address to 0 i2c_OLED_send_cmd(0x10); // Set high col address to 0 for(uint16_t i = 0; i < 1024; i++) { // fill the display's RAM with graphic... 128*64 pixel picture i2c_OLED_send_byte(0x00); // clear } }
void i2c_OLED_set_line(uint8_t row) // goto the beginning of a single row, compattible with LCD_CONFIG { switch (OLED_Type) { case 1: case 2: i2c_OLED_send_cmd(0xb0+row); //set page address i2c_OLED_send_cmd(0); //set low col address i2c_OLED_send_cmd(0x10); //set high col address break; } }
void i2c_OLED_set_XY(uint8_t col, uint8_t row) // Not used in MW V2.0 but its here anyway! { switch (OLED_Type) { case 1: case 2: i2c_OLED_send_cmd(0xb0+row); //set page address i2c_OLED_send_cmd(0x00+(8*col&0x0f)); //set low col address i2c_OLED_send_cmd(0x10+((8*col>>4)&0x0f)); //set high col address break; } }
void ug2864hsweg01InitI2C(void) { i2c_OLED_send_cmd(0xae); //display off i2c_OLED_send_cmd(0xa4); //SET All pixels OFF // i2c_OLED_send_cmd(0xa5); //SET ALL pixels ON delay(50); // i2c_OLED_send_cmd(0x8D); // charge pump // i2c_OLED_send_cmd(0x14); // enable i2c_OLED_send_cmd(0x20); //Set Memory Addressing Mode i2c_OLED_send_cmd(0x02); //Set Memory Addressing Mode to Page addressing mode(RESET) // i2c_OLED_send_cmd(0xa0); //colum address 0 mapped to SEG0 (POR)*** wires at bottom i2c_OLED_send_cmd(0xa1); //colum address 127 mapped to SEG0 (POR) ** wires at top of board // i2c_OLED_send_cmd(0xC0); // Scan from Right to Left (POR) *** wires at bottom i2c_OLED_send_cmd(0xC8); // Scan from Left to Right ** wires at top i2c_OLED_send_cmd(0xa6); // Set WHITE chars on BLACK backround // i2c_OLED_send_cmd(0xa7); // Set BLACK chars on WHITE backround i2c_OLED_send_cmd(0x81); // Setup CONTRAST CONTROL, following byte is the contrast Value i2c_OLED_send_cmd(0xaf); // contrast value between 1 ( == dull) to 256 ( == bright) // i2c_OLED_send_cmd(0xd3); // Display Offset : // i2c_OLED_send_cmd(0x0); // 0 // delay(20); // i2c_OLED_send_cmd(0x40); // Display start line [0;63] -> [0x40;0x7f] // delay(20); #ifdef DISPLAY_FONT_DSIZE i2c_OLED_send_cmd(0xd6); // zoom i2c_OLED_send_cmd(0x01);// on #else // i2c_OLED_send_cmd(0xd6); // zoom // i2c_OLED_send_cmd(0x00); // off #endif delay(20); i2c_OLED_send_cmd(0xaf); //display on delay(20); i2c_OLED_clear_display(); }
bool ug2864hsweg01InitI2C(void) { // Set display OFF if (!i2c_OLED_send_cmd(0xAE)) { return false; } i2c_OLED_send_cmd(0xD4); // Set Display Clock Divide Ratio / OSC Frequency i2c_OLED_send_cmd(0x80); // Display Clock Divide Ratio / OSC Frequency i2c_OLED_send_cmd(0xA8); // Set Multiplex Ratio i2c_OLED_send_cmd(0x3F); // Multiplex Ratio for 128x64 (64-1) i2c_OLED_send_cmd(0xD3); // Set Display Offset i2c_OLED_send_cmd(0x00); // Display Offset i2c_OLED_send_cmd(0x40); // Set Display Start Line i2c_OLED_send_cmd(0x8D); // Set Charge Pump i2c_OLED_send_cmd(0x14); // Charge Pump (0x10 External, 0x14 Internal DC/DC) i2c_OLED_send_cmd(0xA1); // Set Segment Re-Map i2c_OLED_send_cmd(0xC8); // Set Com Output Scan Direction i2c_OLED_send_cmd(0xDA); // Set COM Hardware Configuration i2c_OLED_send_cmd(0x12); // COM Hardware Configuration i2c_OLED_send_cmd(0x81); // Set Contrast i2c_OLED_send_cmd(0xCF); // Contrast i2c_OLED_send_cmd(0xD9); // Set Pre-Charge Period i2c_OLED_send_cmd(0xF1); // Set Pre-Charge Period (0x22 External, 0xF1 Internal) i2c_OLED_send_cmd(0xDB); // Set VCOMH Deselect Level i2c_OLED_send_cmd(0x40); // VCOMH Deselect Level i2c_OLED_send_cmd(0xA4); // Set all pixels OFF i2c_OLED_send_cmd(0xA6); // Set display not inverted i2c_OLED_send_cmd(0xAF); // Set display On i2c_OLED_clear_display(); return true; }
void i2c_OLED_set_line(uint8_t row) { i2c_OLED_send_cmd(0xb0 + row); //set page address i2c_OLED_send_cmd(0); //set low col address i2c_OLED_send_cmd(0x10); //set high col address }
void i2c_OLED_set_xy(uint8_t col, uint8_t row) { i2c_OLED_send_cmd(0xb0 + row); //set page address i2c_OLED_send_cmd(0x00 + ((CHARACTER_WIDTH_TOTAL * col) & 0x0f)); //set low col address i2c_OLED_send_cmd(0x10 + (((CHARACTER_WIDTH_TOTAL * col) >> 4) & 0x0f)); //set high col address }
void i2c_OLED_clear_display(void) { i2c_OLED_send_cmd(0xa6); // Set Normal Display i2c_OLED_send_cmd(0xae); // Display OFF i2c_OLED_send_cmd(0x20); // Set Memory Addressing Mode i2c_OLED_send_cmd(0x00); // Set Memory Addressing Mode to Horizontal addressing mode i2c_OLED_send_cmd(0xb0); // set page address to 0 i2c_OLED_send_cmd(0x40); // Display start line register to 0 i2c_OLED_send_cmd(0); // Set low col address to 0 i2c_OLED_send_cmd(0x10); // Set high col address to 0 for(uint16_t i = 0; i < 1024; i++) { // fill the display's RAM with graphic... 128*64 pixel picture i2c_OLED_send_byte(0x00); // clear } i2c_OLED_send_cmd(0x81); // Setup CONTRAST CONTROL, following byte is the contrast Value... always a 2 byte instruction i2c_OLED_send_cmd(200); // Here you can set the brightness 1 = dull, 255 is very bright i2c_OLED_send_cmd(0xaf); // display on }
bool i2c_OLED_init(void) { uint8_t dummy; if (i2cRead(OLED1_address, 0xA0, 1, &dummy)) { curOLED_address = OLED1_address; OLED_Type = 1; } else { if (i2cRead(OLED2_address, 0xA0, 1, &dummy)) { curOLED_address = OLED2_address; OLED_Type = 2; } else OLED_Type = 0; } switch (OLED_Type) { case 1: case 2: // Init sequence for 128x64 OLED module i2c_OLED_send_cmd(SSD1306_DISPLAYOFF); // 0xAE i2c_OLED_send_cmd(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 i2c_OLED_send_cmd(0x80); // the suggested ratio 0x80 i2c_OLED_send_cmd(SSD1306_SETMULTIPLEX); // 0xA8 i2c_OLED_send_cmd(0x3F); i2c_OLED_send_cmd(SSD1306_SETDISPLAYOFFSET); // 0xD3 i2c_OLED_send_cmd(0x0); // no offset i2c_OLED_send_cmd(SSD1306_SETSTARTLINE | 0x0); // line #0 i2c_OLED_send_cmd(SSD1306_CHARGEPUMP); // 0x8D i2c_OLED_send_cmd(0x14); // vccstate != SSD1306_EXTERNALVCC) i2c_OLED_send_cmd(SSD1306_MEMORYMODE); // 0x20 i2c_OLED_send_cmd(0x00); // 0x0 act like ks0108 i2c_OLED_send_cmd(SSD1306_SEGREMAP | 0x1); i2c_OLED_send_cmd(SSD1306_COMSCANDEC); i2c_OLED_send_cmd(SSD1306_SETCOMPINS); // 0xDA i2c_OLED_send_cmd(0x12); i2c_OLED_send_cmd(SSD1306_SETCONTRAST); // 0x81 i2c_OLED_send_cmd(0xCF); //vccstate != SSD1306_EXTERNALVCC) i2c_OLED_send_cmd(SSD1306_SETPRECHARGE); // 0xd9 i2c_OLED_send_cmd(0xF1); //vccstate != SSD1306_EXTERNALVCC) i2c_OLED_send_cmd(SSD1306_SETVCOMDETECT); // 0xDB i2c_OLED_send_cmd(0x40); i2c_OLED_send_cmd(SSD1306_DISPLAYALLON_RESUME); // 0xA4 i2c_OLED_send_cmd(SSD1306_NORMALDISPLAY); // 0xA6 delay(20); i2c_OLED_set_line(1); return true; } return false; }