diff options
| author | James Barnett <noreply@jamesbarnett.xyz> | 2013-12-10 23:04:53 +0000 |
|---|---|---|
| committer | James Barnett <noreply@jamesbarnett.xyz> | 2013-12-10 23:04:53 +0000 |
| commit | de40617213743c0479362c6820f4ca8692d017c1 (patch) | |
| tree | b3199a71a9ab68ebf63080684ee219fa37d04e08 /OLEDFourBit/OLEDFourBit.h | |
| parent | 20c12edd7f8dd5c28aab47fe9cdaac1da9001f0a (diff) | |
| download | ArduinoOLEDLibrary-de40617213743c0479362c6820f4ca8692d017c1.tar.xz ArduinoOLEDLibrary-de40617213743c0479362c6820f4ca8692d017c1.zip | |
Library and example sketch
Diffstat (limited to 'OLEDFourBit/OLEDFourBit.h')
| -rw-r--r-- | OLEDFourBit/OLEDFourBit.h | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/OLEDFourBit/OLEDFourBit.h b/OLEDFourBit/OLEDFourBit.h new file mode 100644 index 0000000..a57bfcd --- /dev/null +++ b/OLEDFourBit/OLEDFourBit.h @@ -0,0 +1,96 @@ +#ifndef OLEDFourBit_h +#define OLEDFourBit_h + +#include <inttypes.h> +#include "Print.h" + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x28 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_ENGLISH_JAPANESE 0x00 +#define LCD_WESTERN_EUROPEAN_1 0x01 +#define LCD_ENGLISH_RUSSIAN 0x02 +#define LCD_WESTERN_EUROPEAN_2 0x03 + + +class OLEDFourBit : public Print { +public: + OLEDFourBit(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + void init(uint8_t rs, uint8_t rw, uint8_t enable, uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7); + + void begin(uint8_t cols, uint8_t rows); + + void clear(); + void home(); + + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void leftToRight(); + void rightToLeft(); + void autoscroll(); + void noAutoscroll(); + + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); + virtual size_t write(uint8_t); + void command(uint8_t); + char readChar(void); + +private: + void send(uint8_t, uint8_t); + void write4bits(uint8_t); + void pulseEnable(); + void waitBusy(); + + uint8_t _rs_pin; // LOW: command. HIGH: character. + uint8_t _rw_pin; // LOW: write to LCD. HIGH: read from LCD. + uint8_t _enable_pin; // activated by a HIGH pulse. + uint8_t _busy_pin; + uint8_t _data_pins[4]; + + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + uint8_t _initialized; + uint8_t _currline; + uint8_t _numlines; +}; + +#endif |