00001 #ifndef LiquidCrystal_h
00002 #define LiquidCrystal_h
00003
00004 #include <inttypes.h>
00005 #include "Print.h"
00006
00007
00008 #define LCD_CLEARDISPLAY 0x01
00009 #define LCD_RETURNHOME 0x02
00010 #define LCD_ENTRYMODESET 0x04
00011 #define LCD_DISPLAYCONTROL 0x08
00012 #define LCD_CURSORSHIFT 0x10
00013 #define LCD_FUNCTIONSET 0x20
00014 #define LCD_SETCGRAMADDR 0x40
00015 #define LCD_SETDDRAMADDR 0x80
00016
00017
00018 #define LCD_ENTRYRIGHT 0x00
00019 #define LCD_ENTRYLEFT 0x02
00020 #define LCD_ENTRYSHIFTINCREMENT 0x01
00021 #define LCD_ENTRYSHIFTDECREMENT 0x00
00022
00023
00024 #define LCD_DISPLAYON 0x04
00025 #define LCD_DISPLAYOFF 0x00
00026 #define LCD_CURSORON 0x02
00027 #define LCD_CURSOROFF 0x00
00028 #define LCD_BLINKON 0x01
00029 #define LCD_BLINKOFF 0x00
00030
00031
00032 #define LCD_DISPLAYMOVE 0x08
00033 #define LCD_CURSORMOVE 0x00
00034 #define LCD_MOVERIGHT 0x04
00035 #define LCD_MOVELEFT 0x00
00036
00037
00038 #define LCD_8BITMODE 0x10
00039 #define LCD_4BITMODE 0x00
00040 #define LCD_2LINE 0x08
00041 #define LCD_1LINE 0x00
00042 #define LCD_5x10DOTS 0x04
00043 #define LCD_5x8DOTS 0x00
00044
00045 class LiquidCrystal : public Print {
00046 public:
00047 LiquidCrystal(uint8_t rs, uint8_t enable,
00048 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
00049 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
00050 LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
00051 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
00052 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
00053 LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
00054 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
00055 LiquidCrystal(uint8_t rs, uint8_t enable,
00056 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3);
00057
00058 void init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
00059 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
00060 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7);
00061
00062 void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS);
00063
00064 void clear();
00065 void home();
00066
00067 void noDisplay();
00068 void display();
00069 void noBlink();
00070 void blink();
00071 void noCursor();
00072 void cursor();
00073 void scrollDisplayLeft();
00074 void scrollDisplayRight();
00075 void leftToRight();
00076 void rightToLeft();
00077 void autoscroll();
00078 void noAutoscroll();
00079
00080 void createChar(uint8_t, uint8_t[]);
00081 void setCursor(uint8_t, uint8_t);
00082 virtual void write(uint8_t);
00083 void command(uint8_t);
00084 private:
00085 void send(uint8_t, uint8_t);
00086 void write4bits(uint8_t);
00087 void write8bits(uint8_t);
00088 void pulseEnable();
00089
00090 uint8_t _rs_pin;
00091 uint8_t _rw_pin;
00092 uint8_t _enable_pin;
00093 uint8_t _data_pins[8];
00094
00095 uint8_t _displayfunction;
00096 uint8_t _displaycontrol;
00097 uint8_t _displaymode;
00098
00099 uint8_t _initialized;
00100
00101 uint8_t _numlines,_currline;
00102 };
00103
00104 #endif