Set of routines to access 16*32character LCD display on WattBob I board.

Dependents:   Assignment_2_herpe Final_V1 ass2 ass2 ... more

Committer:
jimherd
Date:
Thu Mar 24 13:46:06 2011 +0000
Revision:
7:020722c18a8b
Parent:
6:b2336a1a1810
Child:
8:5a1c4254e4a6
Fixed bug in \locate\ function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jimherd 0:e5b7c70254ac 1 /* draft mbed TextLCD
jimherd 0:e5b7c70254ac 2 * (c) 2007/8, sford
jimherd 0:e5b7c70254ac 3 */
jimherd 0:e5b7c70254ac 4
jimherd 0:e5b7c70254ac 5 #ifndef WATTBOB_TEXTLCD_H
jimherd 0:e5b7c70254ac 6 #define WATTBOB_TEXTLCD_H
jimherd 0:e5b7c70254ac 7
jimherd 0:e5b7c70254ac 8 #include "mbed.h"
jimherd 0:e5b7c70254ac 9 #include "Stream.h"
jimherd 0:e5b7c70254ac 10 #include "MCP23017.h"
jimherd 0:e5b7c70254ac 11
jimherd 0:e5b7c70254ac 12 #define RS_BIT 7
jimherd 0:e5b7c70254ac 13 #define RW_BIT 6
jimherd 0:e5b7c70254ac 14 #define E_BIT 5
jimherd 0:e5b7c70254ac 15 #define BL_BIT 4
jimherd 0:e5b7c70254ac 16
jimherd 1:190b705fb9e1 17 /** Class to access 16*2 LCD display connected to an MCP23017 I/O extender chip
jimherd 1:190b705fb9e1 18 *
jimherd 1:190b705fb9e1 19 * Derived from the "stream" class to be able to use methods such as "printf"
jimherd 1:190b705fb9e1 20 *
jimherd 1:190b705fb9e1 21 * Example :
jimherd 1:190b705fb9e1 22 * @code
jimherd 4:f06e69c4c7f3 23 * .....
jimherd 7:020722c18a8b 24 * #include "MCP23017.h"
jimherd 4:f06e69c4c7f3 25 * #include "WattBob_TextLCD.h"
jimherd 4:f06e69c4c7f3 26 * .....
jimherd 1:190b705fb9e1 27 * MCP23017 *par_port;
jimherd 1:190b705fb9e1 28 * WattBob_TextLCD *lcd;
jimherd 1:190b705fb9e1 29 * .....
jimherd 3:9c142edbfae8 30 * int main()
jimherd 7:020722c18a8b 31 * par_port = new MCP23017(p9, p10, 0x40);
jimherd 7:020722c18a8b 32 * par_port->config(0x0F00, 0x0F00, 0x0F00); // configure MCP23017 chip on WattBob
jimherd 3:9c142edbfae8 33 * lcd = new WattBob_TextLCD(par_port);
jimherd 3:9c142edbfae8 34 *
jimherd 1:190b705fb9e1 35 * par_port->write_bit(1,BL_BIT); // turn LCD backlight ON
jimherd 1:190b705fb9e1 36 * lcd->cls(); lcd->locate(0,0);
jimherd 1:190b705fb9e1 37 * lcd->printf("%s", message);
jimherd 1:190b705fb9e1 38 * lcd->locate(1,0);lcd->printf("press 1 to cont");
jimherd 1:190b705fb9e1 39 * @endcode
jimherd 1:190b705fb9e1 40 */
jimherd 0:e5b7c70254ac 41 class WattBob_TextLCD : public Stream {
jimherd 0:e5b7c70254ac 42
jimherd 0:e5b7c70254ac 43 public:
jimherd 1:190b705fb9e1 44 /** Create TextLCD object connected to a MCP23017 device
jimherd 1:190b705fb9e1 45 *
jimherd 1:190b705fb9e1 46 * @param port pointer to MCP23017 object
jimherd 1:190b705fb9e1 47 */
jimherd 1:190b705fb9e1 48 WattBob_TextLCD(MCP23017 *port);
jimherd 1:190b705fb9e1 49
jimherd 1:190b705fb9e1 50 /** Set cursor to a known point
jimherd 1:190b705fb9e1 51 *
jimherd 1:190b705fb9e1 52 * Virtual function for stream class
jimherd 1:190b705fb9e1 53 *
jimherd 1:190b705fb9e1 54 * @param row integer row number (0 or 1)
jimherd 1:190b705fb9e1 55 * @param col integer column number (0 or 15)
jimherd 1:190b705fb9e1 56 */
jimherd 0:e5b7c70254ac 57 virtual void locate(int row, int column);
jimherd 1:190b705fb9e1 58
jimherd 1:190b705fb9e1 59 /** clear display
jimherd 1:190b705fb9e1 60 *
jimherd 1:190b705fb9e1 61 * Virtual function for stream class
jimherd 1:190b705fb9e1 62 */
jimherd 1:190b705fb9e1 63 virtual void cls();
jimherd 1:190b705fb9e1 64
jimherd 1:190b705fb9e1 65 /** reset the display
jimherd 1:190b705fb9e1 66 *
jimherd 1:190b705fb9e1 67 * Virtual function for stream class
jimherd 1:190b705fb9e1 68 */
jimherd 0:e5b7c70254ac 69 virtual void reset();
jimherd 0:e5b7c70254ac 70
jimherd 0:e5b7c70254ac 71 protected:
jimherd 0:e5b7c70254ac 72
jimherd 1:190b705fb9e1 73 virtual int _putc(int c);
jimherd 1:190b705fb9e1 74 virtual int _getc();
jimherd 1:190b705fb9e1 75 virtual void newline();
jimherd 1:190b705fb9e1 76
jimherd 0:e5b7c70254ac 77 void clock();
jimherd 0:e5b7c70254ac 78 void writeData(int data);
jimherd 0:e5b7c70254ac 79 void writeCommand(int command);
jimherd 0:e5b7c70254ac 80 void writeByte(int value);
jimherd 0:e5b7c70254ac 81 void writeNibble(int value);
jimherd 0:e5b7c70254ac 82
jimherd 0:e5b7c70254ac 83 void _rs (int data);
jimherd 0:e5b7c70254ac 84 void _rw (int data);
jimherd 0:e5b7c70254ac 85 void _e (int data);
jimherd 0:e5b7c70254ac 86 void _d (int data);
jimherd 1:190b705fb9e1 87
jimherd 0:e5b7c70254ac 88 int _rows;
jimherd 0:e5b7c70254ac 89 int _columns;
jimherd 0:e5b7c70254ac 90 int _row;
jimherd 0:e5b7c70254ac 91 int _column;
jimherd 0:e5b7c70254ac 92
jimherd 0:e5b7c70254ac 93 private:
jimherd 0:e5b7c70254ac 94 MCP23017 *par_port;
jimherd 0:e5b7c70254ac 95 };
jimherd 0:e5b7c70254ac 96
jimherd 0:e5b7c70254ac 97 #endif