93 lines
3.9 KiB
C
93 lines
3.9 KiB
C
/*
|
|
* SSD1306_oled.h
|
|
*
|
|
* Created on: Apr 5, 2021
|
|
* Author: bartool
|
|
*/
|
|
|
|
#ifndef INC_SSD1306_OLED_H_
|
|
#define INC_SSD1306_OLED_H_
|
|
|
|
#define SSD1306_128_64 ///< DEPRECTAED: old way to specify 128x64 screen
|
|
//#define SSD1306_128_32 ///< DEPRECATED: old way to specify 128x32 screen
|
|
//#define SSD1306_96_16 ///< DEPRECATED: old way to specify 96x16 screen
|
|
|
|
#if defined SSD1306_128_64
|
|
#define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_64 defined
|
|
#define SSD1306_LCDHEIGHT 64 ///< DEPRECATED: height w/SSD1306_128_64 defined
|
|
#endif
|
|
#if defined SSD1306_128_32
|
|
#define SSD1306_LCDWIDTH 128 ///< DEPRECATED: width w/SSD1306_128_32 defined
|
|
#define SSD1306_LCDHEIGHT 32 ///< DEPRECATED: height w/SSD1306_128_32 defined
|
|
#endif
|
|
#if defined SSD1306_96_16
|
|
#define SSD1306_LCDWIDTH 96 ///< DEPRECATED: width w/SSD1306_96_16 defined
|
|
#define SSD1306_LCDHEIGHT 16 ///< DEPRECATED: height w/SSD1306_96_16 defined
|
|
#endif
|
|
|
|
#define SSD1306_BUF_SIZE SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8
|
|
|
|
#define BLACK SSD1306_BLACK ///< Draw 'off' pixels
|
|
#define WHITE SSD1306_WHITE ///< Draw 'on' pixels
|
|
#define INVERSE SSD1306_INVERSE ///< Invert pixels
|
|
|
|
#define SSD1306_ADDRESS 0x3C
|
|
#define SSD1306_TIMEOUT 100
|
|
#define SSD1306_BLACK 0 ///< Draw 'off' pixels
|
|
#define SSD1306_WHITE 1 ///< Draw 'on' pixels
|
|
#define SSD1306_INVERSE 2 ///< Invert pixels
|
|
|
|
#define SSD1306_MEMORYMODE 0x20 ///< See datasheet
|
|
#define SSD1306_COLUMNADDR 0x21 ///< See datasheet
|
|
#define SSD1306_PAGEADDR 0x22 ///< See datasheet
|
|
#define SSD1306_SETCONTRAST 0x81 ///< See datasheet
|
|
#define SSD1306_CHARGEPUMP 0x8D ///< See datasheet
|
|
#define SSD1306_SEGREMAP 0xA0 ///< See datasheet
|
|
#define SSD1306_DISPLAYALLON_RESUME 0xA4 ///< See datasheet
|
|
#define SSD1306_DISPLAYALLON 0xA5 ///< Not currently used
|
|
#define SSD1306_NORMALDISPLAY 0xA6 ///< See datasheet
|
|
#define SSD1306_INVERTDISPLAY 0xA7 ///< See datasheet
|
|
#define SSD1306_SETMULTIPLEX 0xA8 ///< See datasheet
|
|
#define SSD1306_DISPLAYOFF 0xAE ///< See datasheet
|
|
#define SSD1306_DISPLAYON 0xAF ///< See datasheet
|
|
#define SSD1306_COMSCANINC 0xC0 ///< Not currently used
|
|
#define SSD1306_COMSCANDEC 0xC8 ///< See datasheet
|
|
#define SSD1306_SETDISPLAYOFFSET 0xD3 ///< See datasheet
|
|
#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 ///< See datasheet
|
|
#define SSD1306_SETPRECHARGE 0xD9 ///< See datasheet
|
|
#define SSD1306_SETCOMPINS 0xDA ///< See datasheet
|
|
#define SSD1306_SETVCOMDETECT 0xDB ///< See datasheet
|
|
|
|
#define SSD1306_SETLOWCOLUMN 0x00 ///< Not currently used
|
|
#define SSD1306_SETHIGHCOLUMN 0x10 ///< Not currently used
|
|
#define SSD1306_SETSTARTLINE 0x40 ///< See datasheet
|
|
|
|
#define SSD1306_EXTERNALVCC 0x01 ///< External display voltage source
|
|
#define SSD1306_SWITCHCAPVCC 0x02 ///< Gen. display voltage from 3.3V
|
|
|
|
#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 ///< Init rt scroll
|
|
#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 ///< Init left scroll
|
|
#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 ///< Init diag scroll
|
|
#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A ///< Init diag scroll
|
|
#define SSD1306_DEACTIVATE_SCROLL 0x2E ///< Stop scroll
|
|
#define SSD1306_ACTIVATE_SCROLL 0x2F ///< Start scroll
|
|
#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 ///< Set scroll range
|
|
|
|
#define SSD1306_SENDALL 0
|
|
#define SSD1306_SENDPAGE 1
|
|
|
|
void SSD1306_Init(I2C_HandleTypeDef *i2c);
|
|
void SSD1306_display_all(void);
|
|
uint8_t SSD1306_display_page(void);
|
|
void SSD1306_clear(uint8_t color);
|
|
|
|
void SSD1306_set_pixel(uint8_t x, uint8_t y, uint8_t bw);
|
|
void SSD1306_write_to_buffer(const uint8_t* data, uint8_t width, uint8_t height, int8_t pos_x, int8_t pos_y, uint8_t color);
|
|
void SSD1306_clear_buffer(uint8_t width, uint8_t height, int8_t pos_x, int8_t pos_y, uint8_t color);
|
|
|
|
#ifdef TEST
|
|
extern uint8_t buffer_oled[SSD1306_BUF_SIZE];
|
|
#endif
|
|
|
|
#endif /* INC_SSD1306_OLED_H_ */
|