SSD1331 Oled driver library for 96x64 colour Oled display. Demo included in .h file

Dependents:   Oled-SSD1331 PJ12_device

Revision:
4:062b4708eb35
Parent:
3:a4caac512e13
Child:
5:4385fd242db0
--- a/ssd1331.cpp	Thu May 12 21:36:11 2016 +0000
+++ b/ssd1331.cpp	Wed May 18 22:16:21 2016 +0000
@@ -198,10 +198,10 @@
     }
 }
 
-void ssd1331::PutChar(int column,int row,unsigned int value)
+void ssd1331::PutChar(uint8_t column,uint8_t row, int value)
 {
     if(externalfont) { // external font
-        unsigned int hor,vert,offset,bpl,j,i,b;
+        uint8_t hor,vert,offset,bpl,j,i,b;
         const unsigned char* sign;
         unsigned char z,w;
         // read font parameter from start of array
@@ -298,7 +298,7 @@
     RegWriteM(cmd, 6);
 }
 
-int ssd1331::toRGB(int16_t R,int16_t G,int16_t B)
+uint16_t ssd1331::toRGB(uint16_t R,uint16_t G,uint16_t B)
 {  
     uint16_t c;
     c = R >> 3;
@@ -309,16 +309,12 @@
     return c;
 }
 
-void ssd1331::rect(int16_t x1,int16_t y1,int16_t x2,int16_t y2,unsigned int colorline)
+void ssd1331::rect(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2,uint16_t colorline)
 {
-    if  ( x1 < 0 ) x1 = 0;
-    else if  ( x1 > width ) x1 = width;
-    if  ( y1 < 0 ) y1 = 0;
-    else if  ( y1 > height ) y1 = height;
-    if  ( x2 < 0 ) x2 = 0;
-    else if  ( x2 > width ) x2 = width;
-    if  ( y2 < 0 ) y2 = 0;
-    else if  ( y2 > height ) y2 = height;
+    if  ( x1 > width ) x1 = width;
+    if  ( y1 > height ) y1 = height;
+    if  ( x2 > width ) x2 = width;
+    if  ( y2 > height ) y2 = height;
 
     unsigned char cmd[11]= { 0 };
     cmd[0] = GAC_FILL_ENABLE_DISABLE;
@@ -339,16 +335,12 @@
     wait_us(500);
 }
 
-void ssd1331::fillrect(int x1,int y1,int x2,int y2,unsigned int colorline,unsigned int colorfill)
+void ssd1331::fillrect(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2,uint16_t colorline,uint16_t colorfill)
 {
-    if  ( x1 < 0 ) x1 = 0;
-    else if  ( x1 > width ) x1 = width;
-    if  ( y1 < 0 ) y1 = 0;
-    else if  ( y1 > height ) y1 = height;
-    if  ( x2 < 0 ) x2 = 0;
-    else if  ( x2 > width ) x2 = width;
-    if  ( y2 < 0 ) y2 = 0;
-    else if  ( y2 > height ) y2 = height;
+    if  ( x1 > width ) x1 = width;
+    if  ( y1 > height ) y1 = height;
+    if  ( x2 > width ) x2 = width;
+    if  ( y2 > height ) y2 = height;
 
     unsigned char cmd[11]= { 0 };
     cmd[0] = GAC_FILL_ENABLE_DISABLE;
@@ -369,16 +361,12 @@
     wait_us(500);
 }
 
-void ssd1331::line(int x1,int y1,int x2,int y2,unsigned int color)
+void ssd1331::line(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2,uint16_t color)
 {
-    if  ( x1 < 0 ) x1 = 0;
-    else if  ( x1 > width ) x1 = width;
-    if  ( y1 < 0 ) y1 = 0;
-    else if  ( y1 > height ) y1 = height;
-    if  ( x2 < 0 ) x2 = 0;
-    else if  ( x2 > width ) x2 = width;
-    if  ( y2 < 0 ) y2 = 0;
-    else if  ( y2 > height ) y2 = height;
+    if  ( x1 > width ) x1 = width;
+    if  ( y1 > height ) y1 = height;
+    if  ( x2 > width ) x2 = width;
+    if  ( y2 > height ) y2 = height;
 
     unsigned char cmd[11]= { 0 };
     cmd[0] = GAC_FILL_ENABLE_DISABLE;
@@ -396,9 +384,12 @@
     wait_us(500);
 }
 
-void ssd1331::circle (int radius, int x, int y , unsigned int col, int fill)
+void ssd1331::circle (uint8_t radius, uint8_t x, uint8_t y , uint16_t col, uint16_t fill)
 {
-    int  cx, cy, d;
+    if  ( x > width ) x = width;
+    if  ( y > height ) y = height;
+    
+    int16_t  cx, cy, d;
     d = 3 - 2 * radius;
     cy = radius;
     pixel(x, radius+y, col);
@@ -438,7 +429,7 @@
     }
 }
 
-void ssd1331::ScrollSet(int horizontal, int startline, int linecount, int vertical , int frame_interval)
+void ssd1331::ScrollSet(int8_t horizontal, int8_t startline, int8_t linecount, int8_t vertical , int8_t frame_interval)
 {
     unsigned char cmd[7];
     if((startline>height+1)||((startline+linecount)>height+1)) return ;
@@ -452,7 +443,7 @@
     RegWriteM(cmd,6);
 }
 
-void ssd1331::Bitmap(const uint8_t *bitmap, int16_t x, int16_t y, int16_t w, int16_t h, unsigned char color) {
+void ssd1331::Bitmap(const uint8_t *bitmap, uint8_t x, uint8_t y, uint8_t w, uint8_t h, unsigned char color) {
  
     window(x, y, w, h);
     int16_t i, j, byteWidth = (w + 7) / 8; 
@@ -466,7 +457,7 @@
     Maxwindow();
 }
 
-void ssd1331::Bitmap16( int16_t x, int16_t y, int16_t w, int16_t h, unsigned char *bitmap)
+void ssd1331::Bitmap16(uint8_t x, uint8_t y, uint8_t w, uint8_t h, const uint8_t  *bitmap)
 {
     unsigned int  i,j;
     int padd;
@@ -478,7 +469,9 @@
     do {
         padd ++;
     } while (2*(w + padd)%4 != 0);
+    
     window(x, y, w, h);
+    
     bitmap_ptr += ((h - 1)* (w + padd));
     
     for (j = 0; j < h; j++) {         //Lines
@@ -492,7 +485,7 @@
     Maxwindow();
 }
 
-int ssd1331::Bitmap16SD( int16_t x, int16_t y, unsigned char *Name_BMP)
+int ssd1331::Bitmap16RAM(uint8_t x, uint8_t y, unsigned char *Name_BMP)
 {   
     #define OffsetPixelWidth    18
     #define OffsetPixelHeigh    22
@@ -580,7 +573,7 @@
     return (fileSize);
 }
 
-int ssd1331::Bitmap16SD2(int16_t x, int16_t y, unsigned char *Name_BMP) {
+int ssd1331::Bitmap16FS(uint8_t x, uint8_t y, unsigned char *Name_BMP) {
 #define OffsetPixelWidth    18
 #define OffsetPixelHeigh    22
 #define OffsetFileSize      34
@@ -650,7 +643,7 @@
     return(PixelWidth);
 }
 
-void ssd1331::Copy(int src_x1,int src_y1,int src_x2,int src_y2, int dst_x,int dst_y)
+void ssd1331::Copy(uint8_t src_x1,uint8_t src_y1,uint8_t src_x2,uint8_t src_y2,uint8_t dst_x,uint8_t dst_y)
 {
     unsigned char cmd[8]= { 0 };
     if ((src_x1>width)||(src_y1>height)||(src_x2>width)||(src_y2>height)) return;
@@ -665,28 +658,28 @@
     RegWriteM(cmd,7);
 }
 
-void ssd1331::Fill_Screen(unsigned int color)
+void ssd1331::Fill_Screen(uint16_t color)
 {
     BGround_Color = color;
     fillrect(0,0,width,height,color,color);
 }
 
-void ssd1331::locate(int16_t column, int16_t row)
+void ssd1331::locate(uint8_t column, uint8_t row)
 {
     char_x  = column;
     char_y = row;
 }
 
-void ssd1331::foreground(unsigned int color)
+void ssd1331::foreground(uint16_t color)
 {
     Char_Color = color;
 }
-void ssd1331::background(unsigned int color)
+void ssd1331::background(uint16_t color)
 {
     BGround_Color = color;
 }
 
-void ssd1331::SetFontSize(int Csize)
+void ssd1331::SetFontSize(uint8_t Csize)
 {
     chr_size = Csize;
 }
@@ -694,7 +687,6 @@
 void ssd1331::putp(int colour)
 {
     pixel(_x, _y, colour);
-//    wait_us(1000);
     _x++;
     if(_x > _x2) {
         _x = _x1;
@@ -711,10 +703,10 @@
     return c;
 }
 
-void ssd1331::pixel(int16_t x,int16_t y,unsigned int Color)
+void ssd1331::pixel(uint8_t x,uint8_t y,uint16_t Color)
 {
     unsigned char cmd[7]= {Set_Column_Address,0x00,0x00,Set_Row_Address,0x00,0x00};
-    if ((x<0)||(y<0)||(x>width)||(y>height)) return ;
+    if ((x>width)||(y>height)) return ;
     cmd[1] = (unsigned char)x;
     cmd[2] = (unsigned char)x;
     cmd[4] = (unsigned char)y;
@@ -724,23 +716,12 @@
 }
 
 void ssd1331::Maxwindow()
-{
-    
+{    
     unsigned char cmd[7]= {Set_Column_Address,0x00,0x5F,Set_Row_Address,0x00,0x3F};
     RegWriteM(cmd, 6);
- /*   
-    RegWrite(0x75);    // Set Row Address 
-    RegWrite(0);    // Start = 0 
-    RegWrite(0x3F);    // End = 63 
-    RegWrite(0x15);    // Set Column Address 
-    RegWrite(0);    // Start = 0 
-    RegWrite(0x5F);    // End = 95
-    char_x  = 0;
-    char_y  = 0;
-    */
 }
 
-void ssd1331::window(int16_t x, int16_t y, int16_t w, int16_t h)
+void ssd1331::window(uint8_t x, uint8_t y, uint8_t w, uint8_t h)
 {
     _x = x;
     _y = y;
@@ -770,11 +751,11 @@
     return -1;
 }
 
-int ssd1331::row()
+uint8_t ssd1331::row()
 {
     return char_y;
 }
-int ssd1331::column()
+uint8_t ssd1331::column()
 {
     return char_x;
 }
@@ -814,7 +795,7 @@
     CS = 1;     // CS dissable
 }
 
-void  ssd1331::RegWriteM(unsigned char *Command, int count)
+void  ssd1331::RegWriteM(unsigned char *Command, uint8_t count)
 {
     int i;
     DC = 0;     // Command
@@ -833,7 +814,7 @@
     CS = 1;    // CS dissable
 }
 
-void  ssd1331::DataWrite_to(unsigned int Dat)
+void  ssd1331::DataWrite_to(uint16_t Dat)
 {
     DC = 1;    // DATA
     CS = 0;    // CS enable    
@@ -842,3 +823,7 @@
     CS = 1;    // CS dissable
 }
 
+
+
+
+