Trung Nguyen
/
FINAL_PROJECT_4180
asdasdasd
Fork of FINAL_PROJECT_4180 by
cryst_lcd.h@14:ca57ad53761b, 2016-11-23 (annotated)
- Committer:
- xemnas214
- Date:
- Wed Nov 23 01:07:10 2016 +0000
- Revision:
- 14:ca57ad53761b
- Parent:
- 12:5cb9ffad1ad7
iotlockkkk;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nyengele | 12:5cb9ffad1ad7 | 1 | /** |
nyengele | 12:5cb9ffad1ad7 | 2 | * Driver for LCD devices based on the HD44780 controller |
nyengele | 12:5cb9ffad1ad7 | 3 | */ |
nyengele | 12:5cb9ffad1ad7 | 4 | |
nyengele | 12:5cb9ffad1ad7 | 5 | /* Description |
nyengele | 12:5cb9ffad1ad7 | 6 | |
nyengele | 12:5cb9ffad1ad7 | 7 | LCD SIZES SUPPORTED: |
nyengele | 12:5cb9ffad1ad7 | 8 | 1-line displays: 8x1, 16x1, 20x1, 24x1, 32x1, 40x1 |
nyengele | 12:5cb9ffad1ad7 | 9 | 2-line displays: 16x2, 20x2, 24x2, 32x2, 40x2 |
nyengele | 12:5cb9ffad1ad7 | 10 | 4-line displays: 16x4, 20x4, 40x4 |
nyengele | 12:5cb9ffad1ad7 | 11 | |
nyengele | 12:5cb9ffad1ad7 | 12 | SUPPORTED PLATFORM: mbed |
nyengele | 12:5cb9ffad1ad7 | 13 | |
nyengele | 12:5cb9ffad1ad7 | 14 | DISCLAIMER: The author does not warrant the functions contained in the |
nyengele | 12:5cb9ffad1ad7 | 15 | program will meet your requirements or that the operation |
nyengele | 12:5cb9ffad1ad7 | 16 | of the program will be uninterrupted or error-free. |
nyengele | 12:5cb9ffad1ad7 | 17 | In no event will the author (Gedeon Nyengele) be liable |
nyengele | 12:5cb9ffad1ad7 | 18 | for any damages, including any lost profit, lost savings, |
nyengele | 12:5cb9ffad1ad7 | 19 | lost patience or other incidental or consequential damage. |
nyengele | 12:5cb9ffad1ad7 | 20 | */ |
nyengele | 12:5cb9ffad1ad7 | 21 | |
nyengele | 12:5cb9ffad1ad7 | 22 | #ifndef CRYST_LCD_H |
nyengele | 12:5cb9ffad1ad7 | 23 | #define CRYST_LCD_H |
nyengele | 12:5cb9ffad1ad7 | 24 | |
nyengele | 12:5cb9ffad1ad7 | 25 | #include "mbed.h" |
nyengele | 12:5cb9ffad1ad7 | 26 | |
nyengele | 12:5cb9ffad1ad7 | 27 | class Cryst_LCD : public Stream |
nyengele | 12:5cb9ffad1ad7 | 28 | { |
nyengele | 12:5cb9ffad1ad7 | 29 | public: |
nyengele | 12:5cb9ffad1ad7 | 30 | // LCD Size |
nyengele | 12:5cb9ffad1ad7 | 31 | enum LCDSize { |
nyengele | 12:5cb9ffad1ad7 | 32 | LCD8x1, LCD16x1, LCD20x1, LCD24x1, LCD32x1, LCD40x1, // 1-line displays |
nyengele | 12:5cb9ffad1ad7 | 33 | LCD16x2, LCD20x2, LCD24x2, LCD32x2, LCD40x2, // 2-line displays |
nyengele | 12:5cb9ffad1ad7 | 34 | LCD16x4, LCD20x4, LCD40x4 // 4-line displays |
nyengele | 12:5cb9ffad1ad7 | 35 | }; |
nyengele | 12:5cb9ffad1ad7 | 36 | |
nyengele | 12:5cb9ffad1ad7 | 37 | Cryst_LCD(PinName rs, PinName en, PinName db4, PinName db5, |
nyengele | 12:5cb9ffad1ad7 | 38 | PinName db6, PinName db7, LCDSize size = LCD16x2); |
nyengele | 12:5cb9ffad1ad7 | 39 | void cls(); // Clear entire LCD screen |
nyengele | 12:5cb9ffad1ad7 | 40 | void locate(int row, int col); // Move cursor to speficic location |
nyengele | 12:5cb9ffad1ad7 | 41 | void display_off(); // Turn display off (data conserved) |
nyengele | 12:5cb9ffad1ad7 | 42 | void display_on(); // Turn display on |
nyengele | 12:5cb9ffad1ad7 | 43 | void cursor_on(); // Show cursor |
nyengele | 12:5cb9ffad1ad7 | 44 | void cursor_off(); // Hide cursor |
nyengele | 12:5cb9ffad1ad7 | 45 | void cursor_blink(); // Make cursor blink |
nyengele | 12:5cb9ffad1ad7 | 46 | void cursor_no_blink(); // Make cursor no to blink |
nyengele | 12:5cb9ffad1ad7 | 47 | void clear_line(); // Clear content on current line and put cursor at the |
nyengele | 12:5cb9ffad1ad7 | 48 | // beginning of the line |
nyengele | 12:5cb9ffad1ad7 | 49 | int cols() { return getMaxCols(); } // Get max number or columns for the LCD module used |
nyengele | 12:5cb9ffad1ad7 | 50 | int rows() { return getMaxRows(); } // Get max number or rows for the LCD module used |
nyengele | 12:5cb9ffad1ad7 | 51 | int getCursorRow() { return _row; } // Get row number where cursor is currently located |
nyengele | 12:5cb9ffad1ad7 | 52 | int getCursorCol() { return _col; } // Get column number where cursor is currently located |
nyengele | 12:5cb9ffad1ad7 | 53 | |
nyengele | 12:5cb9ffad1ad7 | 54 | protected: |
nyengele | 12:5cb9ffad1ad7 | 55 | virtual int _putc(int ch); |
nyengele | 12:5cb9ffad1ad7 | 56 | virtual int _getc(); |
nyengele | 12:5cb9ffad1ad7 | 57 | |
nyengele | 12:5cb9ffad1ad7 | 58 | private: |
nyengele | 12:5cb9ffad1ad7 | 59 | void reset(); |
nyengele | 12:5cb9ffad1ad7 | 60 | void init(); |
nyengele | 12:5cb9ffad1ad7 | 61 | int getAddress(int row, int col); |
nyengele | 12:5cb9ffad1ad7 | 62 | void writeData(int ch, bool use_default_timing = true); |
nyengele | 12:5cb9ffad1ad7 | 63 | void writeCommand(int cmd, bool use_default_timing = true); |
nyengele | 12:5cb9ffad1ad7 | 64 | void writeNibble(int nib); |
nyengele | 12:5cb9ffad1ad7 | 65 | void getMaxDimensions(int* rowCount, int* colCount); |
nyengele | 12:5cb9ffad1ad7 | 66 | int getMaxRows(); |
nyengele | 12:5cb9ffad1ad7 | 67 | int getMaxCols(); |
nyengele | 12:5cb9ffad1ad7 | 68 | |
nyengele | 12:5cb9ffad1ad7 | 69 | private: |
nyengele | 12:5cb9ffad1ad7 | 70 | DigitalOut _rs; |
nyengele | 12:5cb9ffad1ad7 | 71 | DigitalOut _en; |
nyengele | 12:5cb9ffad1ad7 | 72 | BusOut _data; |
nyengele | 12:5cb9ffad1ad7 | 73 | int _row; |
nyengele | 12:5cb9ffad1ad7 | 74 | int _col; |
nyengele | 12:5cb9ffad1ad7 | 75 | LCDSize _size; |
nyengele | 12:5cb9ffad1ad7 | 76 | int _displayStatus; |
nyengele | 12:5cb9ffad1ad7 | 77 | }; |
nyengele | 12:5cb9ffad1ad7 | 78 | |
nyengele | 12:5cb9ffad1ad7 | 79 | |
nyengele | 12:5cb9ffad1ad7 | 80 | |
nyengele | 12:5cb9ffad1ad7 | 81 | #endif // CRYST_LCD_H |