Revision 3:704f87be7993, committed 2011-04-17
- Comitter:
- Wimpie
- Date:
- Sun Apr 17 17:26:10 2011 +0000
- Parent:
- 2:1c5dea5d8783
- Commit message:
Changed in this revision
I2CTextLCD.cpp | Show annotated file Show diff for this revision Revisions of this file |
I2CTextLCD.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 1c5dea5d8783 -r 704f87be7993 I2CTextLCD.cpp --- a/I2CTextLCD.cpp Thu Dec 23 12:42:37 2010 +0000 +++ b/I2CTextLCD.cpp Sun Apr 17 17:26:10 2011 +0000 @@ -53,10 +53,10 @@ // send "Display Settings" 3 times (Only top nibble of 0x30 as we've got 4-bit bus) for (int i=0; i<3; i++) { - writeNibble(0x3,false); + writeNibble(EIGHT_BITMODE,false); wait(0.00164); // this command takes 1.64ms, so wait for it } - writeNibble(0x2,false); // 4-bit mode + writeNibble(FOUR_BITMODE,false); // 4-bit mode writeCommand(0x28); // Function set 001 BW N F - - writeCommand(0x0C); @@ -83,9 +83,9 @@ void I2CTextLCD::backlight(bool status) { _backlight=status; if (_backlight) - writeI2CByte(BACKLIGHT_ON | E_ON); + writeI2CByte(BACKLIGHT_ON | E1_ON); else - writeI2CByte(E_ON); + writeI2CByte(E1_ON); } @@ -133,13 +133,13 @@ data = data | RS_ON; // set rs bit } - writeI2CByte(data | E_ON); // E=1 + writeI2CByte(data | E1_ON); // E=1 wait(0.000040f); writeI2CByte(data); // E=0 wait(0.000040f); - writeI2CByte(data | E_ON); // E=1 + writeI2CByte(data | E1_ON); // E=1 } void I2CTextLCD::writeByte(int data, bool rs) { @@ -148,12 +148,12 @@ } void I2CTextLCD::writeCommand(int command) { - //command ^= RS_ON; // RS = 0; + // RS = 0; writeByte(command,false); } void I2CTextLCD::writeData(int data) { - // data = data | RS_ON; //RS = 1 + //RS = 1 writeByte(data,true); _column++;
diff -r 1c5dea5d8783 -r 704f87be7993 I2CTextLCD.h --- a/I2CTextLCD.h Thu Dec 23 12:42:37 2010 +0000 +++ b/I2CTextLCD.h Sun Apr 17 17:26:10 2011 +0000 @@ -10,10 +10,49 @@ #include "mbed.h" #include "Stream.h" -#define E_ON 0x10 //P4 -#define BACKLIGHT_ON 0x20 //P5 -#define RS_ON 0x80 //P7 +#define RS_ON 0x10 //P4 +#define E1_ON 0x20 //P5 +#define E2_ON 0x40 //P6 +#define BACKLIGHT_ON 0x80 //P7 + +/* Display ON/OFF Control defines */ +#define DON 0x0F //0b00001111 Display on +#define DOFF 0x0B //0b00001011 Display off +#define CURSOR_ON 0x0F //0b00001111 Cursor on +#define CURSOR_OFF OxOD //0b00001101 Cursor off +#define BLINK_ON 0x0F //0b00001111 Cursor Blink +#define BLINK_OFF 0x0E //0b00001110 Cursor No Blink + +/* Cursor or Display Shift defines */ +#define SHIFT_CUR_LEFT Ox13 //0b00010011 Cursor shifts to the left +#define SHIFT_CUR_RIGHT Ox17 //0b00010111 Cursor shifts to the right +#define SHIFT_DISP_LEFT Ox1B //0b00011011 Display shifts to the left +#define SHIFT_DISP_RIGHT 0x1F //0b00011111 Display shifts to the right +/* Function Set defines */ +#define EIGHT_BITMODE 0x03 //0b00000011 8-bit Interface D4-D7 +#define FOUR_BITMODE 0x02 //0b00000010 4-bit Interface D4-D7 +#define LINE_5X7 0x30 //0b00110000 +#define LINE_5X10 0x34 //0b00110100 +#define LINES_5X7 0x38 //0b00111000 + +// Addtional define to support display mode + +#define DISP_FLIP_NONE 0x00 //0b00111100 No flip +#define CLEAR_LCD 0x01 //0b00000001 + +// Addtional define to support entry mode & shift mode +//#define ENTRY_CURSOR_DEC 0b00000101 /* Entry cursor move left */ +//#define ENTRY_CURSOR_INC 0b00000111 /* Entry cursor move to right */ +//#define ENTRY_DISPLAY_SHIFT 0b00000111 /* Entry the display to shift */ +//#define ENTRY_DISPLAY_NO_SHIFT 0b00000110 /* Entry no shift */ + +// Use generic address + +#define LINE0 0x80 +#define LINE1 0xC0 +#define LINE2 0x94 +#define LINE3 0xD4 namespace mbed { /* Class: I2CTextLCD @@ -50,10 +89,10 @@ * P1 - D5 * P2 - D6 * P3 - D7 - * P4 - E - * P5 - backlight (connected to a relay) - * P6 - nc - * P7 - RS + * P4 - RS + * P5 - E1 + * P6 - E2 + * P7 - backlight (connected to a relay) * gnd - R/W * */