Define more u8g command macros
This commit is contained in:
parent
f9a50f451d
commit
a36782ac1d
|
@ -87,28 +87,48 @@ static const uint8_t u8g_dev_sh1106_128x64_data_start_2_wire[] PROGMEM = {
|
||||||
U8G_ESC_END // end of sequence
|
U8G_ESC_END // end of sequence
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define SH1106_PAGE_ADR(N) (0x20), (N)
|
||||||
|
#define SH1106_COLUMN_RANGE(N) (0x21), (((N) >> 8) & 0xFF), ((N) & 0xFF)
|
||||||
|
#define SH1106_PAGE_RANGE(N,O) (0x22), (N), (O)
|
||||||
|
#define SH1106_SCROLL(N) ((N) ? 0x2F : 0x2E)
|
||||||
|
#define SH1106_START_LINE(N) (0x40 | (N))
|
||||||
|
#define SH1106_CONTRAST(N) (0x81), (N)
|
||||||
|
#define SH1106_CHARGE_PUMP(N) (0x8D), ((N) ? 0x14 : 0x10)
|
||||||
|
#define SH1106_ADC_REVERSE(N) ((N) ? 0xA1 : 0xA0)
|
||||||
|
#define SH1106_ALL_PIX(N) ((N) ? 0xA5 : 0xA4)
|
||||||
|
#define SH1106_INVERTED(N) ((N) ? 0xA7 : 0xA6)
|
||||||
|
#define SH1106_MUX_RATIO(N) (0xA8), (N)
|
||||||
|
#define SH1106_ON(N) ((N) ? 0xAF : 0xAE)
|
||||||
|
#define SH1106_OUT_MODE(N) ((N) ? 0xC8 : 0xC0)
|
||||||
|
#define SH1106_DISP_OFFS(N) (0xD3), (N)
|
||||||
|
#define SH1106_OSC_FREQ(R,F) (0xD5), ((F) << 4 | (R))
|
||||||
|
#define SH1106_CHARGE_PER(P,D) (0xD9), ((D) << 4 | (P))
|
||||||
|
#define SH1106_COM_CONFIG(N) (0xDA), ((N) ? 0x12 : 0x02)
|
||||||
|
#define SH1106_VCOM_DESEL(N) (0xDB), (N)
|
||||||
|
#define SH1106_NOOP() (0xE3)
|
||||||
|
|
||||||
static const uint8_t u8g_dev_sh1106_128x64_init_seq_2_wire[] PROGMEM = {
|
static const uint8_t u8g_dev_sh1106_128x64_init_seq_2_wire[] PROGMEM = {
|
||||||
U8G_ESC_ADR(0), // initiate command mode
|
U8G_ESC_ADR(0), // Initiate command mode
|
||||||
0x0AE, // display off, sleep mode
|
SH1106_ON(0), // Display off, sleep mode
|
||||||
0x0A8, 0x03F, // mux ratio
|
SH1106_MUX_RATIO(0x3F), // Mux ratio
|
||||||
0x0D3, 0x00, // display offset
|
SH1106_DISP_OFFS(0), // Display offset
|
||||||
0x040, // start line
|
SH1106_START_LINE(0), // Start line
|
||||||
0x0A1, // segment remap a0/a1
|
SH1106_ADC_REVERSE(1), // Segment remap A0/A1
|
||||||
0x0C8, // c0: scan dir normal, c8: reverse
|
SH1106_OUT_MODE(1), // C0: scan dir normal, C8: reverse
|
||||||
0x0DA, 0x012, // com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5)
|
SH1106_COM_CONFIG(1), // Com pin HW config, sequential com pin config (bit 4), disable left/right remap (bit 5)
|
||||||
0x081, 0x0CF, // [2] set contrast control
|
SH1106_CONTRAST(0xCF), // [2] set contrast control
|
||||||
0x020, 0x002, // 2012-05-27: page addressing mode
|
SH1106_PAGE_ADR(0x02), // 2012-05-27: page addressing mode
|
||||||
0x21, 2, 0x81, // set column range from 0 through 131
|
SH1106_COLUMN_RANGE(0x281), // Set column range from 0 through 131
|
||||||
0x22, 0, 7, // set page range from 0 through 7
|
SH1106_PAGE_RANGE(0, 7), // Set page range from 0 through 7
|
||||||
0x0D9, 0x0F1, // [2] pre-charge period 0x022/f1
|
SH1106_CHARGE_PER(0x1, 0xF), // [2] pre-charge period 0x22/F1
|
||||||
0x0DB, 0x040, // vcomh deselect level
|
SH1106_VCOM_DESEL(0x40), // Vcomh deselect level
|
||||||
0x0A4, // output ram to display
|
SH1106_ALL_PIX(0), // Output ram to display
|
||||||
0x0A6, // none inverted normal display mode
|
SH1106_INVERTED(0), // Normal display mode
|
||||||
0x0D5, 0x080, // clock divide ratio (0x00=1) and oscillator frequency (0x8)
|
SH1106_OSC_FREQ(0, 8), // Clock divide ratio (0:1) and oscillator frequency (8)
|
||||||
0x08D, 0x014, // [2] charge pump setting (p62): 0x014 enable, 0x010 disable
|
SH1106_CHARGE_PUMP(1), // [2] charge pump setting (P62): 0x14 enable, 0x10 disable
|
||||||
0x02E, // 2012-05-27: Deactivate scroll
|
SH1106_SCROLL(0), // 2012-05-27: Deactivate scroll
|
||||||
0x0AF, // display on
|
SH1106_ON(1), // Display on
|
||||||
U8G_ESC_END // end of sequence
|
U8G_ESC_END // End of sequence
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t u8g_dev_sh1106_128x64_2x_2_wire_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
|
uint8_t u8g_dev_sh1106_128x64_2x_2_wire_fn(u8g_t *u8g, u8g_dev_t *dev, uint8_t msg, void *arg) {
|
||||||
|
|
|
@ -65,20 +65,21 @@
|
||||||
#define HEIGHT 64
|
#define HEIGHT 64
|
||||||
#define PAGE_HEIGHT 8
|
#define PAGE_HEIGHT 8
|
||||||
|
|
||||||
#define ST7565_ADC_REVERSE(N) (0xA0 | ((N) & 0x1))
|
#define ST7565_ADC_REVERSE(N) ((N) ? 0xA1 : 0xA0)
|
||||||
#define ST7565_BIAS_MODE(N) (0xA2 | ((N) & 0x1))
|
#define ST7565_BIAS_MODE(N) ((N) ? 0xA3 : 0xA2)
|
||||||
#define ST7565_ALL_PIX(N) (0xA4 | ((N) & 0x1))
|
#define ST7565_ALL_PIX(N) ((N) ? 0xA5 : 0xA4)
|
||||||
#define ST7565_INVERTED(N) (0xA6 | ((N) & 0x1))
|
#define ST7565_INVERTED(N) ((N) ? 0xA7 : 0xA6)
|
||||||
#define ST7565_ON(N) (0xAE | ((N) & 0x1))
|
#define ST7565_ON(N) ((N) ? 0xAF : 0xAE)
|
||||||
#define ST7565_OUT_MODE(N) (0xC0 | ((N) & 0x1) << 3)
|
#define ST7565_OUT_MODE(N) ((N) ? 0xC8 : 0xC0)
|
||||||
#define ST7565_POWER_CONTROL(N) (0x28 | (N))
|
#define ST7565_POWER_CONTROL(N) (0x28 | (N))
|
||||||
#define ST7565_V0_RATIO(N) (0x10 | ((N) & 0x7)) // Specific to Displaytech 64128N? (ST7565 is 0x20 | N)
|
#define ST7565_V0_RATIO(N) (0x10 | ((N) & 0x7))
|
||||||
|
#define ST7565_V5_RATIO(N) (0x20 | ((N) & 0x7))
|
||||||
#define ST7565_CONTRAST(N) (0x81), (N)
|
#define ST7565_CONTRAST(N) (0x81), (N)
|
||||||
|
|
||||||
#define ST7565_COLUMN_ADR(N) (0x10 | (((N) >> 4) & 0xF)), ((N) & 0xF)
|
#define ST7565_COLUMN_ADR(N) (0x10 | (((N) >> 4) & 0xF)), ((N) & 0xF)
|
||||||
#define ST7565_PAGE_ADR(N) (0xB0 | (N))
|
#define ST7565_PAGE_ADR(N) (0xB0 | (N))
|
||||||
#define ST7565_START_LINE(N) (0x40 | (N))
|
#define ST7565_START_LINE(N) (0x40 | (N))
|
||||||
#define ST7565_SLEEP_MODE() (0xAC)
|
#define ST7565_SLEEP_MODE() (0xAC) // ,(N) needed?
|
||||||
#define ST7565_NOOP() (0xE3)
|
#define ST7565_NOOP() (0xE3)
|
||||||
|
|
||||||
/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */
|
/* init sequence from https://github.com/adafruit/ST7565-LCD/blob/master/ST7565/ST7565.cpp */
|
||||||
|
@ -91,7 +92,7 @@ static const uint8_t u8g_dev_st7565_64128n_HAL_init_seq[] PROGMEM = {
|
||||||
ST7565_BIAS_MODE(0), // 0xA2: LCD bias 1/9 (according to Displaytech 64128N datasheet)
|
ST7565_BIAS_MODE(0), // 0xA2: LCD bias 1/9 (according to Displaytech 64128N datasheet)
|
||||||
ST7565_ADC_REVERSE(0), // Normal ADC Select (according to Displaytech 64128N datasheet)
|
ST7565_ADC_REVERSE(0), // Normal ADC Select (according to Displaytech 64128N datasheet)
|
||||||
|
|
||||||
ST7565_OUT_MODE(1), // common output mode: set scan direction normal operation/SHL Select, 0xC0 --> SHL = 0, normal, 0xC8 --> SHL = 1
|
ST7565_OUT_MODE(1), // common output mode: set scan direction
|
||||||
ST7565_START_LINE(0), // Display start line for Displaytech 64128N
|
ST7565_START_LINE(0), // Display start line for Displaytech 64128N
|
||||||
|
|
||||||
ST7565_POWER_CONTROL(0x4), // power control: turn on voltage converter
|
ST7565_POWER_CONTROL(0x4), // power control: turn on voltage converter
|
||||||
|
|
|
@ -65,38 +65,53 @@
|
||||||
#define HEIGHT 64
|
#define HEIGHT 64
|
||||||
#define PAGE_HEIGHT 8
|
#define PAGE_HEIGHT 8
|
||||||
|
|
||||||
|
#define UC1701_ADC_REVERSE(N) ((N) ? 0xA1 : 0xA0)
|
||||||
|
#define UC1701_BIAS_MODE(N) ((N) ? 0xA3 : 0xA2)
|
||||||
|
#define UC1701_ALL_PIX(N) ((N) ? 0xA5 : 0xA4)
|
||||||
|
#define UC1701_INVERTED(N) ((N) ? 0xA7 : 0xA6)
|
||||||
|
#define UC1701_ON(N) ((N) ? 0xAF : 0xAE)
|
||||||
|
#define UC1701_OUT_MODE(N) ((N) ? 0xC8 : 0xC0)
|
||||||
|
#define UC1701_POWER_CONTROL(N) (0x28 | (N))
|
||||||
|
#define UC1701_V5_RATIO(N) (0x20 | ((N) & 0x7))
|
||||||
|
#define UC1701_CONTRAST(N) (0x81), (N)
|
||||||
|
|
||||||
|
#define UC1701_COLUMN_ADR(N) (0x10 | (((N) >> 4) & 0xF)), ((N) & 0xF)
|
||||||
|
#define UC1701_PAGE_ADR(N) (0xB0 | (N))
|
||||||
|
#define UC1701_START_LINE(N) (0x40 | (N))
|
||||||
|
#define UC1701_INDICATOR(N) (0xAC), (N)
|
||||||
|
#define UC1701_RESET() (0xE2)
|
||||||
|
#define UC1701_NOOP() (0xE3)
|
||||||
|
#define UC1701_BOOST_RATIO(N) (0xF8), (N)
|
||||||
|
|
||||||
static const uint8_t u8g_dev_uc1701_mini12864_HAL_init_seq[] PROGMEM = {
|
static const uint8_t u8g_dev_uc1701_mini12864_HAL_init_seq[] PROGMEM = {
|
||||||
U8G_ESC_CS(0), /* disable chip */
|
U8G_ESC_CS(0), /* disable chip */
|
||||||
U8G_ESC_ADR(0), /* instruction mode */
|
U8G_ESC_ADR(0), /* instruction mode */
|
||||||
U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */
|
U8G_ESC_RST(1), /* do reset low pulse with (1*16)+2 milliseconds */
|
||||||
U8G_ESC_CS(1), /* enable chip */
|
U8G_ESC_CS(1), /* enable chip */
|
||||||
|
|
||||||
0x0E2, /* soft reset */
|
UC1701_RESET(), /* soft reset */
|
||||||
0x040, /* set display start line to 0 */
|
UC1701_START_LINE(0), /* set display start line to 0 */
|
||||||
0x0A0, /* ADC set to reverse */
|
UC1701_ADC_REVERSE(0), /* ADC set to reverse */
|
||||||
0x0C8, /* common output mode */
|
UC1701_OUT_MODE(1), /* common output mode */
|
||||||
0x0A6, /* display normal, bit val 0: LCD pixel off. */
|
UC1701_INVERTED(0), /* display normal, bit val 0: LCD pixel off. */
|
||||||
0x0A2, /* LCD bias 1/9 */
|
UC1701_BIAS_MODE(0), /* LCD bias 1/9 */
|
||||||
0x02F, /* all power control circuits on */
|
UC1701_POWER_CONTROL(0x7), /* all power control circuits on */
|
||||||
0x0F8, /* set booster ratio to */
|
UC1701_BOOST_RATIO(0x0), /* set booster ratio to 4x */
|
||||||
0x000, /* 4x */
|
UC1701_V5_RATIO(3), /* set V0 voltage resistor ratio to large */
|
||||||
0x023, /* set V0 voltage resistor ratio to large */
|
UC1701_CONTRAST(0x27), /* set contrast */
|
||||||
0x081, /* set contrast */
|
UC1701_INDICATOR(0), /* indicator */
|
||||||
0x027, /* contrast value */
|
UC1701_ON(1), /* display on */
|
||||||
0x0AC, /* indicator */
|
|
||||||
0x000, /* disable */
|
|
||||||
0x0AF, /* display on */
|
|
||||||
|
|
||||||
U8G_ESC_CS(0), /* disable chip */
|
U8G_ESC_CS(0), /* disable chip */
|
||||||
U8G_ESC_DLY(100), /* delay 100 ms */
|
U8G_ESC_DLY(100), /* delay 100 ms */
|
||||||
U8G_ESC_CS(1), /* enable chip */
|
U8G_ESC_CS(1), /* enable chip */
|
||||||
|
|
||||||
0x0A5, /* display all points, ST7565 */
|
UC1701_ALL_PIX(1), /* display all points, ST7565 */
|
||||||
U8G_ESC_CS(0), /* disable chip */
|
U8G_ESC_CS(0), /* disable chip */
|
||||||
U8G_ESC_DLY(100), /* delay 100 ms */
|
U8G_ESC_DLY(100), /* delay 100 ms */
|
||||||
U8G_ESC_DLY(100), /* delay 100 ms */
|
U8G_ESC_DLY(100), /* delay 100 ms */
|
||||||
U8G_ESC_CS(1), /* enable chip */
|
U8G_ESC_CS(1), /* enable chip */
|
||||||
0x0A4, /* normal display */
|
UC1701_ALL_PIX(0), /* normal display */
|
||||||
U8G_ESC_CS(0), /* disable chip */
|
U8G_ESC_CS(0), /* disable chip */
|
||||||
U8G_ESC_END /* end of sequence */
|
U8G_ESC_END /* end of sequence */
|
||||||
};
|
};
|
||||||
|
@ -104,8 +119,7 @@ static const uint8_t u8g_dev_uc1701_mini12864_HAL_init_seq[] PROGMEM = {
|
||||||
static const uint8_t u8g_dev_uc1701_mini12864_HAL_data_start[] PROGMEM = {
|
static const uint8_t u8g_dev_uc1701_mini12864_HAL_data_start[] PROGMEM = {
|
||||||
U8G_ESC_ADR(0), /* instruction mode */
|
U8G_ESC_ADR(0), /* instruction mode */
|
||||||
U8G_ESC_CS(1), /* enable chip */
|
U8G_ESC_CS(1), /* enable chip */
|
||||||
0x010, /* set upper 4 bit of the col adr to 0 */
|
UC1701_COLUMN_ADR(0), /* address 0 */
|
||||||
0x000, /* set lower 4 bit of the col adr to 4 */
|
|
||||||
U8G_ESC_END /* end of sequence */
|
U8G_ESC_END /* end of sequence */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue