SSD1331 Oled driver library for 96x64 colour Oled display. Demo included in .h file
Dependents: Oled-SSD1331 PJ12_device
ssd1331.h
- Committer:
- star297
- Date:
- 2016-05-01
- Revision:
- 1:f3f6624f45d4
- Parent:
- 0:3d7d1aec706b
- Child:
- 2:1204274fad8f
File content as of revision 1:f3f6624f45d4:
#ifndef __ssd1331_H__ #define __ssd1331_H__ #include "mbed.h" // Screen Settings #define width 96-1 // Max X axial direction in screen #define height 64-1 // Max Y axial direction in screen #define Set_Column_Address 0x15 #define Set_Row_Address 0x75 #define contrastA 0x81 #define contrastB 0x82 #define contrastC 0x83 #define display_on 0xAF #define display_off 0xAE // Font size #define NORMAL 0 #define WIDE 1 #define HIGH 2 #define WH 3 #define WHx36 4 #define X_width 6 // character's width #define Y_height 8 // character's height // GAC hardware acceleration commands #define GAC_DRAW_LINE 0x21 // Draw Line #define GAC_DRAW_RECTANGLE 0x22 // Rectangle #define GAC_COPY_AREA 0x23 // Copy Area #define GAC_DIM_WINDOW 0x24 // Dim Window #define GAC_CLEAR_WINDOW 0x25 // Clear Window #define GAC_FILL_ENABLE_DISABLE 0x26 // Enable Fill #define SCROLL_SETUP 0x27 // Setup scroll #define SCROLL_STOP 0x2E // Scroll Stop #define SCROLL_START 0x2F // Scroll Start // example code /* #include "mbed.h" #include "ssd1331.h" ssd1331 oled(D8, D9, D10, D11, NC, D13); // cs, res, dc, miso(nc), sck (KL25z) char Time[50],Date[50]; void gettime(); int main() { while(1){ oled.Fill_Screen(oled.toRGB(255,0,0)); //red wait_ms(500); oled.Fill_Screen(oled.toRGB(0,255,0)); //green wait_ms(500); oled.Fill_Screen(oled.toRGB(0,0,255)); //blue wait_ms(500); oled.Fill_Screen(oled.toRGB(255,255,255)); //white wait_ms(500); oled.cls(); // clear screen to black oled.circle (20, 40, 30 ,oled.toRGB(0,0,255) , 1); //fill circle oled.circle (20, 40, 30 ,oled.toRGB(255,255,255) , 0); //circle oled.circle (20, 60, 40 ,oled.toRGB(255,0,0) , 0); //circle oled.line( 0, 0, width, height, oled.toRGB(0,255,255)); //line oled.line( width, 0, 0, height, oled.toRGB(255,0,255)); //line oled.rectangle(10,10,90,60,oled.toRGB(255,255,0)); //rectangle oled.fillrectangle(20,20,40,40,oled.toRGB(255,255,255),oled.toRGB(0,255,0)); //fillrectangle for(int y = 9; y >= 0; y--) { oled.contrast(y); // set contrast level oled.foreground(oled.toRGB(255,255,255)); // set text colour oled.locate(1, 10); // set text start location oled.printf("%d",y); // std printf wait_ms(300); } wait_ms(1000); oled.contrast(9); // set contrast to maximum wait_ms(2000); oled.cls(); oled.SetFontSize(HIGH); // set tall font oled.foreground(oled.toRGB(0,255,0)); // set text colour oled.locate(0, 10); oled.printf( "HIGH 12345"); oled.SetFontSize(WIDE); // set text to wide oled.foreground(oled.toRGB(0,0,255)); oled.locate(0, 28); oled.printf( "WIDE 123"); oled.SetFontSize(WH); // set text to wide and tall oled.foreground(oled.toRGB(255,0,0)); oled.locate(0, 40); oled.printf( "WH 123"); oled.SetFontSize(NORMAL); // set text to normal oled.foreground(oled.toRGB(255,255,255)); oled.ScrollSet(0,8,18,1,0); // set scroll function oled.Scrollstart(); // start scroll gettime();wait(1);gettime();wait(1);gettime();wait(1); oled.ScrollSet(0,8,18,-2,0); oled.Scrollstart(); gettime();wait(1);gettime();wait(1);gettime();wait(1); oled.ScrollSet(0,8,18,3,0); oled.Scrollstart(); gettime();wait(1);gettime();wait(1);gettime();wait(1); oled.ScrollSet(0,8,18,-4,0); oled.Scrollstart(); gettime();wait(1);gettime();wait(1);gettime();wait(1); oled.Scrollstop(); // stop scroll wait(1); } } void gettime() { time_t seconds = time(NULL); strftime(Time,40,"%H:%M:%S %a", localtime(&seconds)); strftime(Date,40,"%d-%b-%Y", localtime(&seconds)); oled.locate(0, 0); oled.printf(Time); } */ class ssd1331 : public Stream { public: // constructor ssd1331(PinName cs_pin, PinName rst_pin, PinName a0_pin, PinName mosi_pin, PinName miso_pin, PinName sclk_pin); void pixel(int x,int y,unsigned int color); void rectangle(int x1,int y1,int x2,int y2,unsigned int colorline); void fillrectangle(int x1,int y1,int x2,int y2,unsigned int colorline,unsigned int colorfill); void line( int x1,int y1,int x2,int y2,unsigned int color); void circle (int radius, int x, int y,unsigned int color,int fill); void Fill_Screen(unsigned int color); // fill screen with any colour void foreground(unsigned int color); // text color void background(unsigned int color); // background color void SetFontSize(int); void on(); // display on void off(); // display off void cls(); // clear screen to black void dim(); // flip dim/normal void contrast(char value); //0~9 low~high void locate(int column, int row); // text start position int toRGB(int R,int G,int B); // get color from RGB values 00~FF(0~255) int row(); int column(); void ScrollSet(int horizontal, int startline, int linecount, int vertical , int frame_interval); void Scrollstart(); void Scrollstop(); void Copy(int src_x1,int src_y1,int src_x2,int src_y2, int dst_x,int dst_y); void character(int x, int y, int c); void set_font(unsigned char* f); void drawBitmap(const uint8_t *bitmap, int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); int BMP_16(const char *Name_BMP, unsigned int x, unsigned int y); int DrawBitmapFile(const char *Name_BMP); protected: // Stream implementation functions virtual int _putc(int c); virtual int _getc(); private: void Init(void); void RegWrite(unsigned char Command); void RegWriteM(unsigned char *Command, int count); void DataWrite(unsigned char c); void DataWrite_to(unsigned int Dat); void FontSizeConvert(int *lpx, int *lpy); void PutChar(int x,int y,unsigned int a); void PutCharInt(int x,int y,unsigned int a); void putp(int colour); unsigned char* font; unsigned int Char_Color; // text color unsigned int BGround_Color; // background color void window(int x, int y, int w, int h); // pixel location short _x; short _y; // window location short _x1; short _x2; short _y1; short _y2; int char_x; int char_y; int chr_size; int cwidth; // character's width int cvert; // character's height int externalfont; DigitalOut CS, RES, DC; SPI spi; // mosi, miso, sclk }; #endif