diff options
author | Stanley Huang <stanleyhuangyc@gmail.com> | 2013-06-10 13:21:09 +0800 |
---|---|---|
committer | Stanley Huang <stanleyhuangyc@gmail.com> | 2013-06-10 13:21:09 +0800 |
commit | 47c6ff979fea8051c02fb38fe99c0021880a4ed8 (patch) | |
tree | e8ff3fc5e616e4b0a26faba64c904d7d18c75037 /libraries/MultiLCD/MultiLCD.h | |
parent | f6082dee6e41054bec5b8d97e848517cbebbb3ad (diff) | |
download | 2021-arduino-obd-47c6ff979fea8051c02fb38fe99c0021880a4ed8.tar.gz 2021-arduino-obd-47c6ff979fea8051c02fb38fe99c0021880a4ed8.tar.bz2 2021-arduino-obd-47c6ff979fea8051c02fb38fe99c0021880a4ed8.zip |
update MultiLCD library
Diffstat (limited to 'libraries/MultiLCD/MultiLCD.h')
-rw-r--r-- | libraries/MultiLCD/MultiLCD.h | 122 |
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; +}; |