66 lines
3.2 KiB
C
66 lines
3.2 KiB
C
/*
|
|
* This file is subject to the terms of the GFX License. If a copy of
|
|
* the license was not distributed with this file, you can obtain one at:
|
|
*
|
|
* http://chibios-gfx.com/license.html
|
|
*/
|
|
|
|
#ifndef _UC1610_H
|
|
#define _UC1610_H
|
|
|
|
// screen dimensions
|
|
#define UC1610_SCREEN_WIDTH 160
|
|
#define UC1610_SCREEN_HEIGHT 104
|
|
#define UC1610_PAGE_HEIGHT 4
|
|
|
|
// i2c header addresses
|
|
#define UC1610_ADDRESS_WC 0x78 // write commands
|
|
#define UC1610_ADDRESS_RS 0x79 // read satus
|
|
#define UC1610_ADDRESS_WD 0x7A // write data
|
|
#define UC1610_ADDRESS_RD 0x7B // read data
|
|
|
|
// hardware control commands
|
|
#define UC1610_SYSTEM_RESET 0xE2
|
|
#define UC1610_NOP 0xE3 // no operation
|
|
#define UC1610_SET_TEMP_COMP 0x24 // set temperature compensation, default -0.05%/°C
|
|
#define UC1610_SET_PANEL_LOADING 0x29 // set panel loading, default 16~21 nF
|
|
#define UC1610_SET_PUMP_CONTROL 0x2F // default internal Vlcd (8x pump)
|
|
#define UC1610_SET_LCD_BIAS_RATIO 0xEB // default 11
|
|
#define UC1610_SET_VBIAS_POT 0x81 // 1 byte (0~255) to follow setting the contrast, default 0x81
|
|
#define UC1610_SET_LINE_RATE 0xA0 // default 12,1 Klps
|
|
#define UC1610_SET_DISPLAY_ENABLE 0xAE // + 1 mask / 0 : exit sleep mode / entering sleep mode
|
|
#define UC1610_SET_LCD_GRAY_SHADE 0xD0 // default 24% between the two gray shade levels
|
|
#define UC1610_SET_COM_END 0xF1 // set the number of used com electrodes (lines number -1)
|
|
|
|
// ram address control
|
|
#define UC1610_SET_AC 0x88 // set ram addres control
|
|
#define UC1610_AC_WA_MASK 1 // automatic column/page increment wrap arroud (1 : cycle increment)
|
|
#define UC1610_AC_AIO_MASK (1 << 1) // auto increment order (0/1 : column/page increment first)
|
|
#define UC1610_AC_PID_MASK (1 << 2) // page addres auto increment order (0/1 : +1/-1)
|
|
|
|
// set cursor ram address
|
|
#define UC1610_SET_CA_LSB 0x00 // + 4 LSB bits
|
|
#define UC1610_SET_CA_MSB 0x10 // + 4 MSB bits // MSB + LSB values range : 0~159
|
|
#define UC1610_SET_PA 0x60 // + 5 bits // values range : 0~26
|
|
|
|
// display control commands
|
|
#define UC1610_SET_FIXED_LINES 0x90 // + 4 bits = 2xFL
|
|
#define UC1610_SET_SCROLL_LINES_LSB 0x40 // + 4 LSB bits scroll up display by N (7 bits) lines
|
|
#define UC1610_SET_SCROLL_LINES_MSB 0x50 // + 3 MSB bits
|
|
#define UC1610_SET_ALL_PIXEL_ON 0xA4 // + 1 mask / 0 : set all pixel on, reverse
|
|
#define UC1610_SET_INVERSE_DISPLAY 0xA6 // + 1 mask / 0 : inverse all data stored in ram, reverse
|
|
#define UC1610_SET_MAPPING_CONTROL 0xC0 // control mirorring
|
|
#define UC1610_SET_MAPPING_CONTROL_LC_MASK 1 //
|
|
#define UC1610_SET_MAPPING_CONTROL_MX_MASK (1 << 1) //
|
|
#define UC1610_SET_MAPPING_CONTROL_MY_MASK (1 << 2) //
|
|
|
|
// window program mode
|
|
#define UC1610_SET_WINDOW_PROGRAM_ENABLE 0xF8 // + 1 mask / 0 : enable / disable window programming mode,
|
|
// reset before changing boundaries
|
|
#define UC1610_SET_WP_STARTING_CA 0xF4 // 1 byte to follow for column number
|
|
#define UC1610_SET_WP_ENDING_CA 0xF6 // 1 byte to follow for column number
|
|
#define UC1610_SET_WP_STARTING_PA 0xF5 // 1 byte to follow for page number
|
|
#define UC1610_SET_WP_ENDING_PA 0xF7 // 1 byte to follow for page number
|
|
|
|
#endif /* _SSD1306_H */
|