Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
LiquidCrystal_I2C.h@0:1202bdc184ed, 2022-08-17 (annotated)
- Committer:
- harrycadena
- Date:
- Wed Aug 17 02:54:57 2022 +0000
- Revision:
- 0:1202bdc184ed
LAST PROGRAM D2;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| harrycadena | 0:1202bdc184ed | 1 | // YWROBOT |
| harrycadena | 0:1202bdc184ed | 2 | #ifndef LiquidCrystal_I2C_h |
| harrycadena | 0:1202bdc184ed | 3 | #define LiquidCrystal_I2C_h |
| harrycadena | 0:1202bdc184ed | 4 | #include "Print.h" |
| harrycadena | 0:1202bdc184ed | 5 | #include "mbed.h" |
| harrycadena | 0:1202bdc184ed | 6 | #include <inttypes.h> |
| harrycadena | 0:1202bdc184ed | 7 | |
| harrycadena | 0:1202bdc184ed | 8 | // commands |
| harrycadena | 0:1202bdc184ed | 9 | #define LCD_CLEARDISPLAY 0x01 |
| harrycadena | 0:1202bdc184ed | 10 | #define LCD_RETURNHOME 0x02 |
| harrycadena | 0:1202bdc184ed | 11 | #define LCD_ENTRYMODESET 0x04 |
| harrycadena | 0:1202bdc184ed | 12 | #define LCD_DISPLAYCONTROL 0x08 |
| harrycadena | 0:1202bdc184ed | 13 | #define LCD_CURSORSHIFT 0x10 |
| harrycadena | 0:1202bdc184ed | 14 | #define LCD_FUNCTIONSET 0x20 |
| harrycadena | 0:1202bdc184ed | 15 | #define LCD_SETCGRAMADDR 0x40 |
| harrycadena | 0:1202bdc184ed | 16 | #define LCD_SETDDRAMADDR 0x80 |
| harrycadena | 0:1202bdc184ed | 17 | |
| harrycadena | 0:1202bdc184ed | 18 | // flags for display entry mode |
| harrycadena | 0:1202bdc184ed | 19 | #define LCD_ENTRYRIGHT 0x00 |
| harrycadena | 0:1202bdc184ed | 20 | #define LCD_ENTRYLEFT 0x02 |
| harrycadena | 0:1202bdc184ed | 21 | #define LCD_ENTRYSHIFTINCREMENT 0x01 |
| harrycadena | 0:1202bdc184ed | 22 | #define LCD_ENTRYSHIFTDECREMENT 0x00 |
| harrycadena | 0:1202bdc184ed | 23 | |
| harrycadena | 0:1202bdc184ed | 24 | // flags for display on/off control |
| harrycadena | 0:1202bdc184ed | 25 | #define LCD_DISPLAYON 0x04 |
| harrycadena | 0:1202bdc184ed | 26 | #define LCD_DISPLAYOFF 0x00 |
| harrycadena | 0:1202bdc184ed | 27 | #define LCD_CURSORON 0x02 |
| harrycadena | 0:1202bdc184ed | 28 | #define LCD_CURSOROFF 0x00 |
| harrycadena | 0:1202bdc184ed | 29 | #define LCD_BLINKON 0x01 |
| harrycadena | 0:1202bdc184ed | 30 | #define LCD_BLINKOFF 0x00 |
| harrycadena | 0:1202bdc184ed | 31 | |
| harrycadena | 0:1202bdc184ed | 32 | // flags for display/cursor shift |
| harrycadena | 0:1202bdc184ed | 33 | #define LCD_DISPLAYMOVE 0x08 |
| harrycadena | 0:1202bdc184ed | 34 | #define LCD_CURSORMOVE 0x00 |
| harrycadena | 0:1202bdc184ed | 35 | #define LCD_MOVERIGHT 0x04 |
| harrycadena | 0:1202bdc184ed | 36 | #define LCD_MOVELEFT 0x00 |
| harrycadena | 0:1202bdc184ed | 37 | |
| harrycadena | 0:1202bdc184ed | 38 | // flags for function set |
| harrycadena | 0:1202bdc184ed | 39 | #define LCD_8BITMODE 0x10 |
| harrycadena | 0:1202bdc184ed | 40 | #define LCD_4BITMODE 0x00 |
| harrycadena | 0:1202bdc184ed | 41 | #define LCD_2LINE 0x08 |
| harrycadena | 0:1202bdc184ed | 42 | #define LCD_1LINE 0x00 |
| harrycadena | 0:1202bdc184ed | 43 | #define LCD_5x10DOTS 0x04 |
| harrycadena | 0:1202bdc184ed | 44 | #define LCD_5x8DOTS 0x00 |
| harrycadena | 0:1202bdc184ed | 45 | |
| harrycadena | 0:1202bdc184ed | 46 | // flags for backlight control |
| harrycadena | 0:1202bdc184ed | 47 | #define LCD_BACKLIGHT 0x08 |
| harrycadena | 0:1202bdc184ed | 48 | #define LCD_NOBACKLIGHT 0x00 |
| harrycadena | 0:1202bdc184ed | 49 | |
| harrycadena | 0:1202bdc184ed | 50 | #define En 0B00000100 // Enable bit |
| harrycadena | 0:1202bdc184ed | 51 | #define Rw 0B00000010 // Read/Write bit |
| harrycadena | 0:1202bdc184ed | 52 | #define Rs 0B00000001 // Register select bit |
| harrycadena | 0:1202bdc184ed | 53 | |
| harrycadena | 0:1202bdc184ed | 54 | class LiquidCrystal_I2C : public Print { |
| harrycadena | 0:1202bdc184ed | 55 | public: |
| harrycadena | 0:1202bdc184ed | 56 | LiquidCrystal_I2C(uint8_t lcd_Addr, uint8_t lcd_cols, uint8_t lcd_rows, |
| harrycadena | 0:1202bdc184ed | 57 | PinName sda, PinName scl); |
| harrycadena | 0:1202bdc184ed | 58 | void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS); |
| harrycadena | 0:1202bdc184ed | 59 | void clear(); |
| harrycadena | 0:1202bdc184ed | 60 | void home(); |
| harrycadena | 0:1202bdc184ed | 61 | void noDisplay(); |
| harrycadena | 0:1202bdc184ed | 62 | void display(); |
| harrycadena | 0:1202bdc184ed | 63 | void noBlink(); |
| harrycadena | 0:1202bdc184ed | 64 | void blink(); |
| harrycadena | 0:1202bdc184ed | 65 | void noCursor(); |
| harrycadena | 0:1202bdc184ed | 66 | void cursor(); |
| harrycadena | 0:1202bdc184ed | 67 | void scrollDisplayLeft(); |
| harrycadena | 0:1202bdc184ed | 68 | void scrollDisplayRight(); |
| harrycadena | 0:1202bdc184ed | 69 | void printLeft(); |
| harrycadena | 0:1202bdc184ed | 70 | void printRight(); |
| harrycadena | 0:1202bdc184ed | 71 | void leftToRight(); |
| harrycadena | 0:1202bdc184ed | 72 | void rightToLeft(); |
| harrycadena | 0:1202bdc184ed | 73 | void shiftIncrement(); |
| harrycadena | 0:1202bdc184ed | 74 | void shiftDecrement(); |
| harrycadena | 0:1202bdc184ed | 75 | void noBacklight(); |
| harrycadena | 0:1202bdc184ed | 76 | void backlight(); |
| harrycadena | 0:1202bdc184ed | 77 | void autoscroll(); |
| harrycadena | 0:1202bdc184ed | 78 | void noAutoscroll(); |
| harrycadena | 0:1202bdc184ed | 79 | void createChar(uint8_t, uint8_t[]); |
| harrycadena | 0:1202bdc184ed | 80 | void setCursor(uint8_t, uint8_t); |
| harrycadena | 0:1202bdc184ed | 81 | |
| harrycadena | 0:1202bdc184ed | 82 | virtual size_t write(uint8_t); |
| harrycadena | 0:1202bdc184ed | 83 | void command(uint8_t); |
| harrycadena | 0:1202bdc184ed | 84 | void init(); |
| harrycadena | 0:1202bdc184ed | 85 | |
| harrycadena | 0:1202bdc184ed | 86 | ////compatibility API function aliases |
| harrycadena | 0:1202bdc184ed | 87 | void blink_on(); // alias for blink() |
| harrycadena | 0:1202bdc184ed | 88 | void blink_off(); // alias for noBlink() |
| harrycadena | 0:1202bdc184ed | 89 | void cursor_on(); // alias for cursor() |
| harrycadena | 0:1202bdc184ed | 90 | void cursor_off(); // alias for noCursor() |
| harrycadena | 0:1202bdc184ed | 91 | void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() |
| harrycadena | 0:1202bdc184ed | 92 | void load_custom_character(uint8_t char_num, |
| harrycadena | 0:1202bdc184ed | 93 | uint8_t *rows); // alias for createChar() |
| harrycadena | 0:1202bdc184ed | 94 | void printstr(const char[]); |
| harrycadena | 0:1202bdc184ed | 95 | |
| harrycadena | 0:1202bdc184ed | 96 | ////Unsupported API functions (not implemented in this library) |
| harrycadena | 0:1202bdc184ed | 97 | uint8_t status(); |
| harrycadena | 0:1202bdc184ed | 98 | void setContrast(uint8_t new_val); |
| harrycadena | 0:1202bdc184ed | 99 | uint8_t keypad(); |
| harrycadena | 0:1202bdc184ed | 100 | void setDelay(int, int); |
| harrycadena | 0:1202bdc184ed | 101 | void on(); |
| harrycadena | 0:1202bdc184ed | 102 | void off(); |
| harrycadena | 0:1202bdc184ed | 103 | uint8_t init_bargraph(uint8_t graphtype); |
| harrycadena | 0:1202bdc184ed | 104 | void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, |
| harrycadena | 0:1202bdc184ed | 105 | uint8_t pixel_col_end); |
| harrycadena | 0:1202bdc184ed | 106 | void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, |
| harrycadena | 0:1202bdc184ed | 107 | uint8_t pixel_col_end); |
| harrycadena | 0:1202bdc184ed | 108 | |
| harrycadena | 0:1202bdc184ed | 109 | private: |
| harrycadena | 0:1202bdc184ed | 110 | mbed::I2C *i2c; |
| harrycadena | 0:1202bdc184ed | 111 | void init_priv(); |
| harrycadena | 0:1202bdc184ed | 112 | void begin_priv(uint8_t charsize = LCD_5x8DOTS); |
| harrycadena | 0:1202bdc184ed | 113 | void send(uint8_t, uint8_t); |
| harrycadena | 0:1202bdc184ed | 114 | void write4bits(uint8_t); |
| harrycadena | 0:1202bdc184ed | 115 | void expanderWrite(uint8_t); |
| harrycadena | 0:1202bdc184ed | 116 | void pulseEnable(uint8_t); |
| harrycadena | 0:1202bdc184ed | 117 | uint8_t _Addr; |
| harrycadena | 0:1202bdc184ed | 118 | uint8_t _displayfunction; |
| harrycadena | 0:1202bdc184ed | 119 | uint8_t _displaycontrol; |
| harrycadena | 0:1202bdc184ed | 120 | uint8_t _displaymode; |
| harrycadena | 0:1202bdc184ed | 121 | uint8_t _numlines; |
| harrycadena | 0:1202bdc184ed | 122 | uint8_t _cols; |
| harrycadena | 0:1202bdc184ed | 123 | uint8_t _rows; |
| harrycadena | 0:1202bdc184ed | 124 | uint8_t _backlightval; |
| harrycadena | 0:1202bdc184ed | 125 | }; |
| harrycadena | 0:1202bdc184ed | 126 | |
| harrycadena | 0:1202bdc184ed | 127 | #endif |