summaryrefslogtreecommitdiff
path: root/libraries/MultiLCD/MultiLCD.h
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/MultiLCD/MultiLCD.h')
-rw-r--r--libraries/MultiLCD/MultiLCD.h122
1 files changed, 106 insertions, 16 deletions
diff --git a/libraries/MultiLCD/MultiLCD.h b/libraries/MultiLCD/MultiLCD.h
index 5a8f7e3..0b761ce 100644
--- a/libraries/MultiLCD/MultiLCD.h
+++ b/libraries/MultiLCD/MultiLCD.h
@@ -1,15 +1,41 @@
-extern const PROGMEM unsigned char font16x32[][32];
-extern const PROGMEM unsigned char font5x8[][5];
+/*************************************************************************
+* Arduino Text Display Library for Multiple LCDs
+* Distributed under GPL v2.0
+* Copyright (c) 2013 Stanley Huang <stanleyhuangyc@live.com>
+* All rights reserved.
+*************************************************************************/
+
+typedef enum {
+ FONT_SIZE_SMALL = 0,
+ FONT_SIZE_MEDIUM,
+ FONT_SIZE_LARGE,
+ FONT_SIZE_XLARGE
+} FONT_SIZE;
+extern const PROGMEM unsigned char font5x8[][5];
+extern const PROGMEM unsigned char digits8x8[][8] ;
+extern const PROGMEM unsigned char digits16x16[][32];
+extern const PROGMEM unsigned char digits16x24[][48];
+extern const PROGMEM unsigned char font8x16_doslike[][16];
+extern const PROGMEM unsigned char font8x16_terminal[][16];
#include "PCD8544.h"
class LCD_Common
{
public:
+ LCD_Common():m_font(0) {}
+ void setFont(FONT_SIZE size) { m_font = size; }
virtual void backlight(bool on) {}
virtual byte getLines() = 0;
virtual byte getCols() = 0;
virtual void changeLine() {}
+ virtual void clearLine(byte line) {}
+ void draw(const PROGMEM byte* buffer, byte x, byte y, byte width, byte height) {}
+ void printInt(uint16_t value, char padding = -1);
+ void printLong(unsigned long value, char padding = -1);
+protected:
+ virtual void writeDigit(byte n) {}
+ byte m_font;
};
class LCD_PCD8544 : public LCD_Common, public PCD8544
@@ -17,7 +43,6 @@ class LCD_PCD8544 : public LCD_Common, public PCD8544
public:
byte getLines() { return 6; }
byte getCols() { return 14; }
- void printLarge(const char* s);
void backlight(bool on)
{
pinMode(7, OUTPUT);
@@ -28,30 +53,34 @@ public:
setCursor(0, line);
for (byte i = 14; i > 0; i--) write(' ');
}
+ void changeLine()
+ {
+ column = 0;
+ line ++;
+ }
+ void draw(const PROGMEM byte* buffer, byte x, byte y, byte width, byte height);
+private:
+ void writeDigit(byte n);
};
#include "ZtLib.h"
#define OLED_ADDRESS 0x27
-class LCD_OLED : public LCD_Common, public ZtLib
+class LCD_ZTOLED : public LCD_Common, public ZtLib, public Print
{
public:
byte getLines() { return 4; }
byte getCols() { return 16; }
- void setCursor(byte column, byte line)
- {
- m_column = column << 3;
- m_line = line << 1;
- }
+ void setCursor(byte column, byte line);
void changeLine()
{
m_column = 0;
- m_line += 2;
+ m_page += 2;
}
- void write(char c);
- void print(const char* s);
- void printLarge(const char* s);
+ size_t write(uint8_t c);
+ //void print(const char* s);
+ void writeDigit(byte n);
void clear();
void begin();
void backlight(bool on) {}
@@ -62,7 +91,7 @@ public:
}
private:
unsigned char m_column;
- unsigned char m_line;
+ unsigned char m_page;
};
#include "LCD4Bit_mod.h"
@@ -71,9 +100,9 @@ class LCD_1602 : public LCD_Common, public LCD4Bit_mod
public:
byte getLines() { return 2; }
byte getCols() { return 16; }
- void printLarge(const char* s)
+ void writeDigit(byte n)
{
- print(s);
+ write(n >= 0 && n <= 9 ? '0' + n : ' ');
}
void clearLine(byte line)
{
@@ -82,3 +111,64 @@ public:
}
};
+#include "SSD1306.h"
+
+class LCD_SSD1306 : public LCD_Common, public SSD1306, public Print
+{
+public:
+ void setCursor(byte column, byte line);
+ void draw(const PROGMEM byte* buffer, byte x, byte y, byte width, byte height);
+ size_t write(uint8_t c);
+ void clear(byte x = 0, byte y = 0, byte width = 128, byte height = 64);
+ void clearLine(byte line);
+ byte getLines() { return 21; }
+ byte getCols() { return 8; }
+private:
+ void writeDigit(byte n);
+ byte m_col;
+ byte m_row;
+};
+
+class LCD_ILI9325D : public LCD_Common, public Print
+{
+public:
+ LCD_ILI9325D():m_lineHeight(10) {}
+ void setCursor(uint16_t column, uint16_t line)
+ {
+ m_y = column;
+ m_x = line * m_lineHeight;
+ }
+ void setColor(uint16_t textColor, uint16_t bgColor = 0)
+ {
+ m_color[0] = bgColor;
+ m_color[1] = textColor;
+ }
+ void begin();
+ void clear(uint16_t x = 0, uint16_t y = 0, uint16_t width = 320, uint16_t height = 240);
+ void draw(const PROGMEM byte* buffer, uint16_t x, uint16_t y, uint16_t width, uint16_t height);
+ void draw2x(const PROGMEM byte* buffer, uint16_t x, uint16_t y, byte width, byte height);
+ void draw4bpp(const PROGMEM byte* buffer, uint16_t x, uint16_t y, uint16_t width, uint16_t height);
+ size_t write(uint8_t);
+ void clearLine(byte line)
+ {
+ clear(0, line * m_lineHeight, 320, 8);
+ }
+ void setLineHeight(byte lineHeight) { m_lineHeight = lineHeight; }
+ byte getLines() { return 53; }
+ byte getCols() { return 30; }
+private:
+ void writeDigit(byte n);
+ void SetXY(uint16_t x0,uint16_t x1,uint16_t y0,uint16_t y1);
+ void WriteData(uint16_t c);
+ void WriteData(byte l, byte h);
+ void WriteCommandData(uint16_t cmd,uint16_t dat);
+ void Enable();
+ void Disable();
+ void SetCommandMode();
+ void SetDataMode();
+ int m_x;
+ int m_y;
+ uint16_t m_color[2];
+ byte m_lineHeight;
+ byte lastData;
+};