D:/DRISSI/arduino-0022/arduino-0022/libraries/LiquidCrystal/LiquidCrystal.h
00001 #ifndef LiquidCrystal_h
00002 #define LiquidCrystal_h
00003 
00004 #include <inttypes.h>
00005 #include "Print.h"
00006 
00007 // commands
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 // flags for display entry mode
00018 #define LCD_ENTRYRIGHT 0x00
00019 #define LCD_ENTRYLEFT 0x02
00020 #define LCD_ENTRYSHIFTINCREMENT 0x01
00021 #define LCD_ENTRYSHIFTDECREMENT 0x00
00022 
00023 // flags for display on/off control
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 // flags for display/cursor shift
00032 #define LCD_DISPLAYMOVE 0x08
00033 #define LCD_CURSORMOVE 0x00
00034 #define LCD_MOVERIGHT 0x04
00035 #define LCD_MOVELEFT 0x00
00036 
00037 // flags for function set
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; // LOW: command.  HIGH: character.
00091   uint8_t _rw_pin; // LOW: write to LCD.  HIGH: read from LCD.
00092   uint8_t _enable_pin; // activated by a HIGH pulse.
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