rongyu lou / SSH1106

Dependents:   CarPakingSystem_V10

Revision:
3:ccd49dd0621d
Parent:
2:b55dd362afb9
--- a/SSH1106.cpp	Thu Dec 22 23:15:46 2016 +0000
+++ b/SSH1106.cpp	Mon Mar 08 02:33:45 2021 +0000
@@ -9,7 +9,12 @@
  */
 
 #include "SSH1106.h"
+SPI lcd(D4, NC, D3);      // mosi, miso (nc), sclk
+DigitalOut cs(D15);         // chip select  (active low)
+DigitalOut cd(D14);         // command/data (0=command, 1=data)
+DigitalOut rst(D10);        // Reset (active low)
 
+SSH1106 ssh1106(lcd, cs, cd, rst);
 SSH1106::SSH1106(SPI &lcd, DigitalOut &lcd_cs, DigitalOut &lcd_cd, DigitalOut &lcd_rst)
 {
     _lcd = &lcd;
@@ -27,10 +32,10 @@
     _lcd_cd->write(0);              // COMMAND mode
 
     _lcd_rst->write(0);
-    wait_ms(100);
+    //wait_ms(100);
     _lcd_rst->write(1);
 
-    wait_ms(50);
+    //wait_ms(50);
 
     _lcd->write(0xAE);              // Display off
     _lcd->write(0x02);              // Set lower column address
@@ -86,6 +91,56 @@
     _lcd_cd->write(1);
 }
 
+
+void SSH1106::clear_page(int column,int page)
+{
+    _lcd_cs->write(0);
+    _lcd_cd->write(1);
+
+    for(unsigned short j = page; j < LCDPAGES; j++) {
+        SSH1106::setCursor(column, j);
+        for(unsigned short i = column; i < LCDWIDTH ; i++) {
+            _lcd->write(0x00);
+        }
+    }
+    SSH1106::setCursor(0, 0);
+
+    _lcd_cs->write(1);
+}
+
+//void SSH1106::clear_line(int column, int line)
+//{
+//    _lcd_cs->write(0);
+//    _lcd_cd->write(1);
+//
+//        for(unsigned short j = line; j < LCDPAGES; j++) {
+//        SSH1106::setCursor(column, j);
+//        for(unsigned short i = column; i < LCDWIDTH ; i++) {
+//            _lcd->write(0x00);
+//        }
+//    }
+//    SSH1106::setCursor(0, 0);
+//
+//    _lcd_cs->write(1);
+//
+//}
+
+void SSH1106::fillScreen()
+{
+    _lcd_cs->write(0);
+    _lcd_cd->write(1);
+
+    for(unsigned short j = 0; j < LCDPAGES; j++) {
+        SSH1106::setCursor(0, j);
+        for(unsigned short i = 0; i < LCDWIDTH ; i++) {
+            _lcd->write(0xff);
+        }
+    }
+    SSH1106::setCursor(0, 0);
+
+    _lcd_cs->write(1);
+}
+
 void SSH1106::clear()
 {
     _lcd_cs->write(0);
@@ -97,7 +152,6 @@
             _lcd->write(0x00);
         }
     }
-
     SSH1106::setCursor(0, 0);
 
     _lcd_cs->write(1);
@@ -115,6 +169,32 @@
     _lcd_cs->write(1);
 }
 
+//write decimal without size
+void SSH1106::writeDec_format(char column, char page, const char *font_address, const int num)
+{
+    char str[40];
+    int n;
+    if((num+1)%10 != 0) //if there is a two bit decimal
+    {
+        n = sprintf(str,"%d",num);
+        SSH1106::writeText(column, page, font_address, str, n);
+    }
+    else
+    {
+    n = sprintf(str," %d",num);
+    SSH1106::writeText(column, page, font_address, str, n);
+    }
+}
+
+//write without size
+void SSH1106::writeText_format(char column, char page, const char *font_address, const char *text)
+{
+    char str[40];
+    int n;
+    n = sprintf(str,text);
+    SSH1106::writeText(column, page, font_address, str, n);
+}
+
 void SSH1106::writeText(char column, char page, const char *font_address, const char *text, const uint8_t size)
 {
     // Position of character data in memory array
@@ -131,7 +211,7 @@
 
     start_code   = font_address[2];  // get first defined character
     last_code    = font_address[3];  // get last defined character
-    width        = font_address[4];  // width in pixel of one char
+    width        = font_address[4];  // width in pixel of one char 6
     page_height  = font_address[6];  // page count per char
     bytes_p_char = font_address[7];  // bytes per char
 
@@ -230,7 +310,7 @@
 void SSH1106::drawLineVert(char posx, char posy, char height, char width)
 {
     char page, pagecount, offset, offset2;
-    
+
     _lcd_cs->write(0);
     _lcd_cd->write(1);