Microchip® Advanced Software Framework

ssd1306.h File Reference

SSD1306 OLED display controller driver.

Copyright (c) 2012-2018 Microchip Technology Inc. and its subsidiaries.

#include <compiler.h>
#include <port.h>
#include <spi.h>
#include <delay.h>
#include "conf_ssd1306.h"

Macros

Fundamental Command defines
#define SSD1306_CMD_COL_ADD_SET_LSB(column)   (0x00 | (column))
 
#define SSD1306_CMD_COL_ADD_SET_MSB(column)   (0x10 | (column))
 
#define SSD1306_CMD_SET_MEMORY_ADDRESSING_MODE   0x20
 
#define SSD1306_CMD_SET_COLUMN_ADDRESS   0x21
 
#define SSD1306_CMD_SET_PAGE_ADDRESS   0x22
 
#define SSD1306_CMD_SET_DISPLAY_START_LINE(line)   (0x40 | (line))
 
#define SSD1306_CMD_SET_CONTRAST_CONTROL_FOR_BANK0   0x81
 
#define SSD1306_CMD_SET_CHARGE_PUMP_SETTING   0x8D
 
#define SSD1306_CMD_SET_SEGMENT_RE_MAP_COL0_SEG0   0xA0
 
#define SSD1306_CMD_SET_SEGMENT_RE_MAP_COL127_SEG0   0xA1
 
#define SSD1306_CMD_ENTIRE_DISPLAY_AND_GDDRAM_ON   0xA4
 
#define SSD1306_CMD_ENTIRE_DISPLAY_ON   0xA5
 
#define SSD1306_CMD_SET_NORMAL_DISPLAY   0xA6
 
#define SSD1306_CMD_SET_INVERSE_DISPLAY   0xA7
 
#define SSD1306_CMD_SET_MULTIPLEX_RATIO   0xA8
 
#define SSD1306_CMD_SET_DISPLAY_ON   0xAF
 
#define SSD1306_CMD_SET_DISPLAY_OFF   0xAE
 
#define SSD1306_CMD_SET_PAGE_START_ADDRESS(page)   (0xB0 | (page))
 
#define SSD1306_CMD_SET_COM_OUTPUT_SCAN_UP   0xC0
 
#define SSD1306_CMD_SET_COM_OUTPUT_SCAN_DOWN   0xC8
 
#define SSD1306_CMD_SET_DISPLAY_OFFSET   0xD3
 
#define SSD1306_CMD_SET_DISPLAY_CLOCK_DIVIDE_RATIO   0xD5
 
#define SSD1306_CMD_SET_PRE_CHARGE_PERIOD   0xD9
 
#define SSD1306_CMD_SET_COM_PINS   0xDA
 
#define SSD1306_CMD_SET_VCOMH_DESELECT_LEVEL   0xDB
 
#define SSD1306_CMD_NOP   0xE3
 
Graphic Acceleration Command defines
#define SSD1306_CMD_SCROLL_H_RIGHT   0x26
 
#define SSD1306_CMD_SCROLL_H_LEFT   0x27
 
#define SSD1306_CMD_CONTINUOUS_SCROLL_V_AND_H_RIGHT   0x29
 
#define SSD1306_CMD_CONTINUOUS_SCROLL_V_AND_H_LEFT   0x2A
 
#define SSD1306_CMD_DEACTIVATE_SCROLL   0x2E
 
#define SSD1306_CMD_ACTIVATE_SCROLL   0x2F
 
#define SSD1306_CMD_SET_VERTICAL_SCROLL_AREA   0xA3
 

Functions

OLED controller write and read functions
void ssd1306_write_command (uint8_t command)
 Writes a command to the display controller. More...
 
void ssd1306_write_data (uint8_t data)
 Write data to the display controller. More...
 
static uint8_t ssd1306_read_data (void)
 Read data from the controller. More...
 
static uint8_t ssd1306_get_status (void)
 Read status from the controller. More...
 
OLED Controller reset
static void ssd1306_hard_reset (void)
 Perform a hard reset of the OLED controller. More...
 
Sleep control
static void ssd1306_sleep_enable (void)
 Enable the OLED sleep mode. More...
 
static void ssd1306_sleep_disable (void)
 Disable the OLED sleep mode. More...
 
Address setup for the OLED
static void ssd1306_set_page_address (uint8_t address)
 Set current page in display RAM. More...
 
static void ssd1306_set_column_address (uint8_t address)
 Set current column in display RAM. More...
 
static void ssd1306_set_display_start_line_address (uint8_t address)
 Set the display start draw line address. More...
 
Display hardware control
static void ssd1306_display_on (void)
 Turn the OLED display on. More...
 
static void ssd1306_display_off (void)
 Turn the OLED display off. More...
 
static uint8_t ssd1306_set_contrast (uint8_t contrast)
 Set the OLED contrast level. More...
 
static void ssd1306_display_invert_enable (void)
 Invert all pixels on the device. More...
 
static void ssd1306_display_invert_disable (void)
 Disable invert of all pixels on the device. More...
 
Initialization
void ssd1306_init (void)
 Initialize the OLED controller. More...
 

Variables

struct spi_module ssd1306_master
 
struct spi_slave_inst ssd1306_slave