asdasdasd

Dependencies:   mbed

Fork of FINAL_PROJECT_4180 by Gedeon Nyengele

Committer:
xemnas214
Date:
Wed Nov 23 01:07:10 2016 +0000
Revision:
14:ca57ad53761b
Parent:
12:5cb9ffad1ad7
iotlockkkk;

Who changed what in which revision?

UserRevisionLine numberNew 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