#pragma once #define SH1106_LOWCOLADDR 0x00 // 0x00h (0000 XXXX) #define SH1106_HIGHCOLADDR 0x10 // 0x10h (0001 XXXX) #define SH1106_PUMPVOLTAGE 0x30 // 0x32h (0011 00XX) #define SH1106_LINEADDRESS 0x40 // 0x40h (01XX XXXX) #define SH1106_CONTRASTMODE 0x81 // (1000 0001) #define SH1106_CONTRASTVALUE 0x80 // 0x80h (0x00h - 0xFFh) (XXXX XXXX) #define SH1106_SEGMENTREMAP 0xA0 // 0xA0h (1010 000X) right(0), left(1) #define SH1106_ENTIREDISPALY 0xA4 // 0xA4h (1010 010X) normal(0), entire(1) #define SH1106_NORMALORREVERS 0xA6 // 0xA6h (1010 011X) normal(0), reverse(1) #define SH1106_MULTIPLEXMODE 0xA8 // (1010 1000) #define SH1106_MILTIPLEXVALUE 0x3F // 0x3Fh (00XX XXXX) (0x00h - 0x3Fh) #define SH1106_DCCONTROLMODE 0xAD // (1010 1101) #define SH1106_DCCONTROLVALON 0x8B // 0x8Bh (1000 101X) ON(1), OFF(0) #define SH1106_DISPLAYOFF 0xAE // 0xAEh (1010 111X) ON(1), OFF(0) #define SH1106_DISPLAYON 0xAF // 0xAEh (1010 111X) ON(1), OFF(0) #define SH1106_PAGEADDRESS 0xB0 // 0xB0h (1011 XXXX) #define SH1106_OUTPUTSCANDIR 0xC0 // 0xC0h (1100 X000) Scan from COM0 to COM [N- 1] (0) or Scan from COM [N-1] to COM0 (1). #define SH1106_OFFSETMODE 0xD3 // (1101 0011) #define SH1106_OFFSETVALUE 0x00 // 0x00h (00XX XXXX) COM0-63 #define SH1106_DIVRATIOFREQM 0xD5 // (1101 0101) #define SH1106_DIVRATIOFREQV 0x50 // 0x50h (FFFF DDDD) Frequency, Divide #define SH1106_CHARGEMODE 0xD9 // (1101 1001) #define SH1106_CHARGEVALUE 0x22 // 0x22h (DDDD PPPP) Dis-charge Period, Pre-charge Period #define SH1106_COMPADSCONFMODE 0xDA // (1101 1010) #define SH1106_COMPADSCONFVAL 0x12 // 0x12h (000X 0010) #define SH1106_VCOMDESMODE 0xDD // (1101 1101) #define SH1106_VCOMDESVALUE 0x35 // 0x35h (XXXX XXXX) VCOM (Beta x Vref) void SH1106_Init(OLED_HandleTypeDef *hOled); void SH1106_display_all(OLED_HandleTypeDef *hOled); OLED_SendStatus_t SH1106_display_page(OLED_HandleTypeDef *hOled);