summaryrefslogtreecommitdiff
path: root/libraries/MultiLCD/PCD8544.h
diff options
context:
space:
mode:
authorStanley Huang <stanleyhuangyc@gmail.com>2013-04-02 16:24:09 +0800
committerStanley Huang <stanleyhuangyc@gmail.com>2013-04-02 16:24:09 +0800
commitb59be2fb6f05f43e93ce70bd140ab7149fa18c40 (patch)
tree5984c4c3c8ea7618ed478ff3deece05d4045ff17 /libraries/MultiLCD/PCD8544.h
parent509f7a67724bca9a3222a41c870da747df97f720 (diff)
download2021-arduino-obd-b59be2fb6f05f43e93ce70bd140ab7149fa18c40.tar.gz
2021-arduino-obd-b59be2fb6f05f43e93ce70bd140ab7149fa18c40.tar.bz2
2021-arduino-obd-b59be2fb6f05f43e93ce70bd140ab7149fa18c40.zip
add MultiLCD library
Diffstat (limited to 'libraries/MultiLCD/PCD8544.h')
-rw-r--r--libraries/MultiLCD/PCD8544.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/libraries/MultiLCD/PCD8544.h b/libraries/MultiLCD/PCD8544.h
new file mode 100644
index 0000000..927ec47
--- /dev/null
+++ b/libraries/MultiLCD/PCD8544.h
@@ -0,0 +1,119 @@
+/*
+ * PCD8544 - Interface with Philips PCD8544 (or compatible) LCDs.
+ *
+ * Copyright (c) 2010 Carlos Rodrigues <cefrodrigues@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+
+#ifndef PCD8544_H
+#define PCD8544_H
+
+
+#if ARDUINO < 100
+#include <WProgram.h>
+#else
+#include <Arduino.h>
+#endif
+
+
+// Chip variants supported...
+#define CHIP_PCD8544 0
+#define CHIP_ST7576 1
+
+
+class PCD8544: public Print {
+ public:
+ // All the pins can be changed from the default values...
+ PCD8544(unsigned char sclk = 2, /* clock (display pin 2) */
+ unsigned char sdin = 3, /* data-in (display pin 3) */
+ unsigned char dc = 4, /* data select (display pin 4) */
+ unsigned char reset = 6, /* reset (display pin 8) */
+ unsigned char sce = 5); /* enable (display pin 5) */
+
+ // Display initialization (dimensions in pixels)...
+ void begin(unsigned char width=84, unsigned char height=48, unsigned char model=CHIP_PCD8544);
+ void stop();
+
+ // Erase everything on the display...
+ void clear();
+ void clearLine(); // ...or just the current line
+
+ // Control the display's power state...
+ void setPower(bool on);
+
+ // For compatibility with the LiquidCrystal library...
+ void display();
+ void noDisplay();
+
+ // Activate white-on-black mode (whole display)...
+ void setInverse(bool inverse);
+
+ // Place the cursor at the start of the current line...
+ void home();
+
+ // Place the cursor at position (column, line)...
+ void setCursor(unsigned char column, unsigned char line);
+
+ // Assign a user-defined glyph (5x8) to an ASCII character (0-31)...
+ void createChar(unsigned char chr, const unsigned char *glyph);
+
+ // Write an ASCII character at the current cursor position (7-bit)...
+#if ARDUINO < 100
+ virtual void write(uint8_t chr);
+#else
+ virtual size_t write(uint8_t chr);
+#endif
+
+ // Draw a bitmap at the current cursor position...
+ void drawBitmap(const unsigned char *data, unsigned char columns, unsigned char lines);
+
+ // Draw a chart element at the current cursor position...
+ void drawColumn(unsigned char lines, unsigned char value);
+
+ protected:
+ // Current cursor position...
+ unsigned char column;
+ unsigned char line;
+
+ private:
+ unsigned char pin_sclk;
+ unsigned char pin_sdin;
+ unsigned char pin_dc;
+ unsigned char pin_reset;
+ unsigned char pin_sce;
+
+ // The size of the display, in pixels...
+ unsigned char width;
+ unsigned char height;
+
+
+ // User-defined glyphs (below the ASCII space character)...
+ const unsigned char *custom[' '];
+
+ // Send a command or data to the display...
+ void send(unsigned char type, unsigned char data);
+};
+
+
+#endif /* PCD8544_H */
+
+
+/* vim: set expandtab ts=4 sw=4: */