cycyy
Dependencies: MCP23017 WattBob_TextLCD
WattBob_TextLCD.h@0:a9b4ee4ed395, 2019-05-08 (annotated)
- Committer:
- mihaidd
- Date:
- Wed May 08 03:58:47 2019 +0000
- Revision:
- 0:a9b4ee4ed395
ccc
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mihaidd | 0:a9b4ee4ed395 | 1 | /* draft mbed TextLCD |
mihaidd | 0:a9b4ee4ed395 | 2 | * (c) 2007/8, sford |
mihaidd | 0:a9b4ee4ed395 | 3 | */ |
mihaidd | 0:a9b4ee4ed395 | 4 | |
mihaidd | 0:a9b4ee4ed395 | 5 | #ifndef WATTBOB_TEXTLCD_H |
mihaidd | 0:a9b4ee4ed395 | 6 | #define WATTBOB_TEXTLCD_H |
mihaidd | 0:a9b4ee4ed395 | 7 | |
mihaidd | 0:a9b4ee4ed395 | 8 | #include "mbed.h" |
mihaidd | 0:a9b4ee4ed395 | 9 | #include "Stream.h" |
mihaidd | 0:a9b4ee4ed395 | 10 | #include "MCP23017.h" |
mihaidd | 0:a9b4ee4ed395 | 11 | |
mihaidd | 0:a9b4ee4ed395 | 12 | #define RS_BIT 7 |
mihaidd | 0:a9b4ee4ed395 | 13 | #define RW_BIT 6 |
mihaidd | 0:a9b4ee4ed395 | 14 | #define E_BIT 5 |
mihaidd | 0:a9b4ee4ed395 | 15 | #define BL_BIT 4 |
mihaidd | 0:a9b4ee4ed395 | 16 | |
mihaidd | 0:a9b4ee4ed395 | 17 | // |
mihaidd | 0:a9b4ee4ed395 | 18 | // Registers and bit definitions for 2*16 character display chip |
mihaidd | 0:a9b4ee4ed395 | 19 | // |
mihaidd | 0:a9b4ee4ed395 | 20 | #define CMD_NULL 0x00 |
mihaidd | 0:a9b4ee4ed395 | 21 | |
mihaidd | 0:a9b4ee4ed395 | 22 | #define CMD_CLEAR_DISPLAY 0x01 |
mihaidd | 0:a9b4ee4ed395 | 23 | |
mihaidd | 0:a9b4ee4ed395 | 24 | #define CMD_RETURN_HOME 0x02 |
mihaidd | 0:a9b4ee4ed395 | 25 | |
mihaidd | 0:a9b4ee4ed395 | 26 | #define CMD_ENTRY_MODE 0x04 |
mihaidd | 0:a9b4ee4ed395 | 27 | #define CURSOR_STEP_LEFT 0x00 |
mihaidd | 0:a9b4ee4ed395 | 28 | #define CURSOR_STEP_RIGHT 0x02 |
mihaidd | 0:a9b4ee4ed395 | 29 | #define DISPLAY_SHIFT_OFF 0x00 |
mihaidd | 0:a9b4ee4ed395 | 30 | #define DISPLAY_SHIFT_ON 0x01 |
mihaidd | 0:a9b4ee4ed395 | 31 | |
mihaidd | 0:a9b4ee4ed395 | 32 | #define CMD_DISPLAY_CONTROL 0x08 |
mihaidd | 0:a9b4ee4ed395 | 33 | #define DISPLAY_OFF 0x00 |
mihaidd | 0:a9b4ee4ed395 | 34 | #define DISPLAY_ON 0x04 |
mihaidd | 0:a9b4ee4ed395 | 35 | #define CURSOR_OFF 0x00 |
mihaidd | 0:a9b4ee4ed395 | 36 | #define CURSOR_ON 0x02 |
mihaidd | 0:a9b4ee4ed395 | 37 | #define CURSOR_CHAR_BLINK_OFF 0x00 |
mihaidd | 0:a9b4ee4ed395 | 38 | #define CURSOR_CHAR_BLINK_ON 0x01 |
mihaidd | 0:a9b4ee4ed395 | 39 | |
mihaidd | 0:a9b4ee4ed395 | 40 | #define CMD_CURSOR_SHIFT 0x10 |
mihaidd | 0:a9b4ee4ed395 | 41 | #define SHIFT_CURSOR_LEFT 0x00 |
mihaidd | 0:a9b4ee4ed395 | 42 | #define SHIFT_CURSOR_RIGHT 0x04 |
mihaidd | 0:a9b4ee4ed395 | 43 | #define SHIFT_DISPLAY_LEFT 0x08 |
mihaidd | 0:a9b4ee4ed395 | 44 | #define SHIFT_DISPLAY_RIGHT 0x0C |
mihaidd | 0:a9b4ee4ed395 | 45 | |
mihaidd | 0:a9b4ee4ed395 | 46 | #define CMD_MODE_POWER 0x13 |
mihaidd | 0:a9b4ee4ed395 | 47 | #define CHARACTER_MODE 0x00 |
mihaidd | 0:a9b4ee4ed395 | 48 | #define GRAPHICS_MODE 0x08 |
mihaidd | 0:a9b4ee4ed395 | 49 | #define INTERNAL_POWER_OFF 0x00 |
mihaidd | 0:a9b4ee4ed395 | 50 | #define INTERNAL_POWER_ON 0x04 |
mihaidd | 0:a9b4ee4ed395 | 51 | |
mihaidd | 0:a9b4ee4ed395 | 52 | #define CMD_FUNCTION_SET 0x20 |
mihaidd | 0:a9b4ee4ed395 | 53 | #define ENGL_JAPAN_FONT_SET 0x00 |
mihaidd | 0:a9b4ee4ed395 | 54 | #define EUROPE_FONT_SET 0x01 |
mihaidd | 0:a9b4ee4ed395 | 55 | #define ENGL_RUSSIAN_FONT_SET 0x20 |
mihaidd | 0:a9b4ee4ed395 | 56 | #define FONT_5x8 0x00 |
mihaidd | 0:a9b4ee4ed395 | 57 | #define FONT_5x10 0x04 |
mihaidd | 0:a9b4ee4ed395 | 58 | #define ONE_LINE_DISPLAY 0x00 |
mihaidd | 0:a9b4ee4ed395 | 59 | #define TWO_LINE_DISPLAY 0x08 |
mihaidd | 0:a9b4ee4ed395 | 60 | #define INTERFACE_4_BIT 0x00 |
mihaidd | 0:a9b4ee4ed395 | 61 | #define INTERFACE_8_BIT 0x10 |
mihaidd | 0:a9b4ee4ed395 | 62 | |
mihaidd | 0:a9b4ee4ed395 | 63 | #define CMD_SET_CGRAM_ADDRESS 0x40 |
mihaidd | 0:a9b4ee4ed395 | 64 | |
mihaidd | 0:a9b4ee4ed395 | 65 | #define CMD_SET_DDRAM_ADDRESS 0x80 |
mihaidd | 0:a9b4ee4ed395 | 66 | // |
mihaidd | 0:a9b4ee4ed395 | 67 | // nibble commands |
mihaidd | 0:a9b4ee4ed395 | 68 | // |
mihaidd | 0:a9b4ee4ed395 | 69 | #define CMD4_SET_4_BIT_INTERFACE 0x2 |
mihaidd | 0:a9b4ee4ed395 | 70 | #define CMD4_SET_8_BIT_INTERFACE 0x3 |
mihaidd | 0:a9b4ee4ed395 | 71 | // |
mihaidd | 0:a9b4ee4ed395 | 72 | // Misc 2*16 character display constants |
mihaidd | 0:a9b4ee4ed395 | 73 | // |
mihaidd | 0:a9b4ee4ed395 | 74 | #define DISPLAY_INIT_DELAY_SECS 0.5f // 500mS |
mihaidd | 0:a9b4ee4ed395 | 75 | #define DISPLAY_CLEAR_DELAY 0.01f // 10 mS (spec is 6.2mS) |
mihaidd | 0:a9b4ee4ed395 | 76 | |
mihaidd | 0:a9b4ee4ed395 | 77 | /** Class to access 16*2 LCD display connected to an MCP23017 I/O extender chip |
mihaidd | 0:a9b4ee4ed395 | 78 | * |
mihaidd | 0:a9b4ee4ed395 | 79 | * Derived from the "stream" class to be able to use methods such as "printf" |
mihaidd | 0:a9b4ee4ed395 | 80 | * |
mihaidd | 0:a9b4ee4ed395 | 81 | * Example : |
mihaidd | 0:a9b4ee4ed395 | 82 | * @code |
mihaidd | 0:a9b4ee4ed395 | 83 | * ..... |
mihaidd | 0:a9b4ee4ed395 | 84 | * #include "MCP23017.h" |
mihaidd | 0:a9b4ee4ed395 | 85 | * #include "WattBob_TextLCD.h" |
mihaidd | 0:a9b4ee4ed395 | 86 | * ..... |
mihaidd | 0:a9b4ee4ed395 | 87 | * MCP23017 *par_port; |
mihaidd | 0:a9b4ee4ed395 | 88 | * WattBob_TextLCD *lcd; |
mihaidd | 0:a9b4ee4ed395 | 89 | * ..... |
mihaidd | 0:a9b4ee4ed395 | 90 | * int main() |
mihaidd | 0:a9b4ee4ed395 | 91 | * par_port = new MCP23017(p9, p10, 0x40); |
mihaidd | 0:a9b4ee4ed395 | 92 | * par_port->config(0x0F00, 0x0F00, 0x0F00); // configure MCP23017 chip on WattBob |
mihaidd | 0:a9b4ee4ed395 | 93 | * lcd = new WattBob_TextLCD(par_port); |
mihaidd | 0:a9b4ee4ed395 | 94 | * |
mihaidd | 0:a9b4ee4ed395 | 95 | * par_port->write_bit(1,BL_BIT); // turn LCD backlight ON |
mihaidd | 0:a9b4ee4ed395 | 96 | * lcd->cls(); lcd->locate(0,0); |
mihaidd | 0:a9b4ee4ed395 | 97 | * lcd->printf("%s", message); |
mihaidd | 0:a9b4ee4ed395 | 98 | * lcd->locate(1,0);lcd->printf("press 1 to cont"); |
mihaidd | 0:a9b4ee4ed395 | 99 | * @endcode |
mihaidd | 0:a9b4ee4ed395 | 100 | */ |
mihaidd | 0:a9b4ee4ed395 | 101 | class WattBob_TextLCD : public Stream { |
mihaidd | 0:a9b4ee4ed395 | 102 | |
mihaidd | 0:a9b4ee4ed395 | 103 | public: |
mihaidd | 0:a9b4ee4ed395 | 104 | /** Create TextLCD object connected to a MCP23017 device |
mihaidd | 0:a9b4ee4ed395 | 105 | * |
mihaidd | 0:a9b4ee4ed395 | 106 | * @param port pointer to MCP23017 object |
mihaidd | 0:a9b4ee4ed395 | 107 | */ |
mihaidd | 0:a9b4ee4ed395 | 108 | WattBob_TextLCD(MCP23017 *port); |
mihaidd | 0:a9b4ee4ed395 | 109 | |
mihaidd | 0:a9b4ee4ed395 | 110 | /** Set cursor to a known point |
mihaidd | 0:a9b4ee4ed395 | 111 | * |
mihaidd | 0:a9b4ee4ed395 | 112 | * Virtual function for stream class |
mihaidd | 0:a9b4ee4ed395 | 113 | * |
mihaidd | 0:a9b4ee4ed395 | 114 | * @param row integer row number (0 or 1) |
mihaidd | 0:a9b4ee4ed395 | 115 | * @param col integer column number (0 or 15) |
mihaidd | 0:a9b4ee4ed395 | 116 | */ |
mihaidd | 0:a9b4ee4ed395 | 117 | virtual void locate(int row, int column); |
mihaidd | 0:a9b4ee4ed395 | 118 | |
mihaidd | 0:a9b4ee4ed395 | 119 | /** clear display |
mihaidd | 0:a9b4ee4ed395 | 120 | * |
mihaidd | 0:a9b4ee4ed395 | 121 | * Virtual function for stream class |
mihaidd | 0:a9b4ee4ed395 | 122 | */ |
mihaidd | 0:a9b4ee4ed395 | 123 | virtual void cls(); |
mihaidd | 0:a9b4ee4ed395 | 124 | |
mihaidd | 0:a9b4ee4ed395 | 125 | /** reset the display |
mihaidd | 0:a9b4ee4ed395 | 126 | * |
mihaidd | 0:a9b4ee4ed395 | 127 | * Virtual function for stream class |
mihaidd | 0:a9b4ee4ed395 | 128 | */ |
mihaidd | 0:a9b4ee4ed395 | 129 | virtual void reset(); |
mihaidd | 0:a9b4ee4ed395 | 130 | |
mihaidd | 0:a9b4ee4ed395 | 131 | protected: |
mihaidd | 0:a9b4ee4ed395 | 132 | |
mihaidd | 0:a9b4ee4ed395 | 133 | virtual int _putc(int c); |
mihaidd | 0:a9b4ee4ed395 | 134 | virtual int _getc(); |
mihaidd | 0:a9b4ee4ed395 | 135 | virtual void newline(); |
mihaidd | 0:a9b4ee4ed395 | 136 | |
mihaidd | 0:a9b4ee4ed395 | 137 | void clock(); |
mihaidd | 0:a9b4ee4ed395 | 138 | void writeData(int data); |
mihaidd | 0:a9b4ee4ed395 | 139 | void writeCommand(int command); |
mihaidd | 0:a9b4ee4ed395 | 140 | void writeByte(int value); |
mihaidd | 0:a9b4ee4ed395 | 141 | void writeNibble(int value); |
mihaidd | 0:a9b4ee4ed395 | 142 | |
mihaidd | 0:a9b4ee4ed395 | 143 | void _rs (int data); |
mihaidd | 0:a9b4ee4ed395 | 144 | void _rw (int data); |
mihaidd | 0:a9b4ee4ed395 | 145 | void _e (int data); |
mihaidd | 0:a9b4ee4ed395 | 146 | void _d (int data); |
mihaidd | 0:a9b4ee4ed395 | 147 | |
mihaidd | 0:a9b4ee4ed395 | 148 | int _rows; |
mihaidd | 0:a9b4ee4ed395 | 149 | int _columns; |
mihaidd | 0:a9b4ee4ed395 | 150 | int _row; |
mihaidd | 0:a9b4ee4ed395 | 151 | int _column; |
mihaidd | 0:a9b4ee4ed395 | 152 | |
mihaidd | 0:a9b4ee4ed395 | 153 | private: |
mihaidd | 0:a9b4ee4ed395 | 154 | MCP23017 *par_port; |
mihaidd | 0:a9b4ee4ed395 | 155 | }; |
mihaidd | 0:a9b4ee4ed395 | 156 | |
mihaidd | 0:a9b4ee4ed395 | 157 | #endif |