w m / Mbed 2 deprecated DISTANCE_PROJECT1

Dependencies:   mbed

Committer:
mrweilun
Date:
Sun May 12 11:02:13 2019 +0000
Revision:
1:8d53c6fe8815
Parent:
0:3d3331775af2
dasda

Who changed what in which revision?

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