Kevin Kadooka / SSD1351

Dependencies:   BurstSPI

Committer:
kkado
Date:
Mon Jul 03 08:02:50 2017 +0000
Revision:
1:ae4fe66e9c0e
Parent:
0:5115e0080bd5
Child:
2:fb159c293541
Last state before adding documentation

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kkado 0:5115e0080bd5 1 #ifndef SSD1351_h
kkado 0:5115e0080bd5 2 #define SSD1351_h
kkado 0:5115e0080bd5 3
kkado 0:5115e0080bd5 4 #include "mbed.h"
kkado 0:5115e0080bd5 5 #include "BurstSPI.h"
kkado 0:5115e0080bd5 6
kkado 1:ae4fe66e9c0e 7 //Pinouts for OLED SPI interface
kkado 1:ae4fe66e9c0e 8 #define OLED_MOSI PA_7
kkado 1:ae4fe66e9c0e 9 #define OLED_SCLK PA_5
kkado 1:ae4fe66e9c0e 10 #define OLED_CS PA_6
kkado 1:ae4fe66e9c0e 11 #define OLED_DC PC_5
kkado 1:ae4fe66e9c0e 12 #define OLED_RST PA_4
kkado 1:ae4fe66e9c0e 13
kkado 1:ae4fe66e9c0e 14 //SSD1351 Regs
kkado 0:5115e0080bd5 15 #define SSD1351_CMD_SETCOLUMN 0x15
kkado 0:5115e0080bd5 16 #define SSD1351_CMD_SETROW 0x75
kkado 0:5115e0080bd5 17 #define SSD1351_CMD_WRITERAM 0x5C
kkado 0:5115e0080bd5 18 #define SSD1351_CMD_READRAM 0x5D
kkado 0:5115e0080bd5 19 #define SSD1351_CMD_SETREMAP 0xA0
kkado 0:5115e0080bd5 20 #define SSD1351_CMD_STARTLINE 0xA1
kkado 0:5115e0080bd5 21 #define SSD1351_CMD_DISPLAYOFFSET 0xA2
kkado 0:5115e0080bd5 22 #define SSD1351_CMD_DISPLAYALLOFF 0xA4
kkado 0:5115e0080bd5 23 #define SSD1351_CMD_DISPLAYALLON 0xA5
kkado 0:5115e0080bd5 24 #define SSD1351_CMD_NORMALDISPLAY 0xA6
kkado 0:5115e0080bd5 25 #define SSD1351_CMD_INVERTDISPLAY 0xA7
kkado 0:5115e0080bd5 26 #define SSD1351_CMD_FUNCTIONSELECT 0xAB
kkado 0:5115e0080bd5 27 #define SSD1351_CMD_DISPLAYOFF 0xAE
kkado 0:5115e0080bd5 28 #define SSD1351_CMD_DISPLAYON 0xAF
kkado 0:5115e0080bd5 29 #define SSD1351_CMD_PRECHARGE 0xB1
kkado 0:5115e0080bd5 30 #define SSD1351_CMD_DISPLAYENHANCE 0xB2
kkado 0:5115e0080bd5 31 #define SSD1351_CMD_CLOCKDIV 0xB3
kkado 0:5115e0080bd5 32 #define SSD1351_CMD_SETVSL 0xB4
kkado 0:5115e0080bd5 33 #define SSD1351_CMD_SETGPIO 0xB5
kkado 0:5115e0080bd5 34 #define SSD1351_CMD_PRECHARGE2 0xB6
kkado 0:5115e0080bd5 35 #define SSD1351_CMD_SETGRAY 0xB8
kkado 0:5115e0080bd5 36 #define SSD1351_CMD_USELUT 0xB9
kkado 0:5115e0080bd5 37 #define SSD1351_CMD_PRECHARGELEVEL 0xBB
kkado 0:5115e0080bd5 38 #define SSD1351_CMD_VCOMH 0xBE
kkado 0:5115e0080bd5 39 #define SSD1351_CMD_CONTRASTABC 0xC1
kkado 0:5115e0080bd5 40 #define SSD1351_CMD_CONTRASTMASTER 0xC7
kkado 0:5115e0080bd5 41 #define SSD1351_CMD_MUXRATIO 0xCA
kkado 0:5115e0080bd5 42 #define SSD1351_CMD_COMMANDLOCK 0xFD
kkado 0:5115e0080bd5 43 #define SSD1351_CMD_HORIZSCROLL 0x96
kkado 0:5115e0080bd5 44 #define SSD1351_CMD_STOPSCROLL 0x9E
kkado 0:5115e0080bd5 45 #define SSD1351_CMD_STARTSCROLL 0x9F
kkado 0:5115e0080bd5 46
kkado 0:5115e0080bd5 47 class SSD1351{
kkado 0:5115e0080bd5 48 public:
kkado 0:5115e0080bd5 49 SSD1351(PinName mosi_pin, PinName sclk_pin, PinName dc_pin, PinName cs_pin, PinName rst_pin);
kkado 1:ae4fe66e9c0e 50 SSD1351();
kkado 0:5115e0080bd5 51
kkado 0:5115e0080bd5 52 void begin();
kkado 0:5115e0080bd5 53 //void fillRect(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t fillcolor);
kkado 0:5115e0080bd5 54
kkado 0:5115e0080bd5 55 void enableWrite();
kkado 0:5115e0080bd5 56 void fillBuf(uint16_t fillcolor);
kkado 0:5115e0080bd5 57 void writeBuf();
kkado 0:5115e0080bd5 58 void drawSpritePtr(const uint16_t s[] ,int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t mask);
kkado 0:5115e0080bd5 59 void fillCMask(uint8_t state);
kkado 0:5115e0080bd5 60 void drawCMask(const uint16_t s[], int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t mask, uint8_t state);
kkado 0:5115e0080bd5 61 uint8_t checkCollision(const uint16_t s[], int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t mask);
kkado 0:5115e0080bd5 62 void drawChar(char c, int16_t x, int16_t y, uint16_t color, uint8_t zoom);
kkado 0:5115e0080bd5 63 void printText(const char c[], int16_t x, int16_t y, uint16_t color, uint8_t zoom);
kkado 0:5115e0080bd5 64 void setBuf(uint8_t* _buf);
kkado 0:5115e0080bd5 65 void setCMask(uint8_t* _cmask);
kkado 0:5115e0080bd5 66
kkado 0:5115e0080bd5 67 void fillRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color);
kkado 0:5115e0080bd5 68 void openRect(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t color);
kkado 0:5115e0080bd5 69 void drawHLine(int16_t x, int16_t y, int16_t length, uint16_t color);
kkado 0:5115e0080bd5 70 void drawVLine(int16_t x, int16_t y, int16_t length, uint16_t color);
kkado 0:5115e0080bd5 71 void drawLine(int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
kkado 0:5115e0080bd5 72 void openCircle(int16_t x0, int16_t y0, uint16_t radius, uint16_t color);
kkado 0:5115e0080bd5 73 void fillCircle(int16_t x0, int16_t y0, uint16_t radius, uint16_t color);
kkado 0:5115e0080bd5 74
kkado 0:5115e0080bd5 75 private:
kkado 0:5115e0080bd5 76 void spiwrite(uint8_t c);
kkado 0:5115e0080bd5 77 void writeCommand(uint8_t c);
kkado 0:5115e0080bd5 78 void writeData(uint8_t c);
kkado 0:5115e0080bd5 79 DigitalOut cs, dc, rst;
kkado 0:5115e0080bd5 80 BurstSPI spi;
kkado 0:5115e0080bd5 81 uint8_t *buf, *collisionmask;
kkado 0:5115e0080bd5 82 };
kkado 0:5115e0080bd5 83
kkado 0:5115e0080bd5 84 #endif