for
Dependents: LV_FGSE_Controller_Interface
Diff: TextLCD.h
- Revision:
- 2:227356c7d12c
- Parent:
- 1:ac48b187213c
- Child:
- 3:2a46d5820a78
--- a/TextLCD.h Thu May 27 13:44:15 2010 +0000 +++ b/TextLCD.h Thu May 27 17:52:15 2010 +0000 @@ -7,10 +7,10 @@ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: - * + * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. - * + * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE @@ -24,48 +24,90 @@ #define MBED_TEXTLCD_H #include "mbed.h" + +/** A TextLCD interface for 4-bit HD44780-based LCDs + * + * Supports a number of different panel configurations + * + * @code + * #include "mbed.h" + * #include "TextLCD.h" + * + * TextLCD lcd(p5, p6, p7, p8, p9); + * + * int main() { + * lcd.printf("Hello World!\n"); + * } + * @endcode + */ class TextLCD : public Stream { public: - // the different LCDs and addressing modes - /** Select the type of LCD */ + /** LCD panel format */ enum LCDType { - LCD16x2 - , LCD16x2B - , LCD20x2 - , LCD20x4 + LCD16x2 /**< 16x2 LCD panel (default) */ + , LCD16x2B /**< 16x2 LCD panel alternate addressing */ + , LCD20x2 /**< 20x2 LCD panel */ + , LCD20x4 /**< 20x4 LCD panel */ }; + /** Create a TextLCD interface + * + * @param rs Instruction/data control line + * @param e Enable line (clock) + * @param d0-d3 Data lines + * @param type Sets the panel size/addressing mode (default = LCD16x2) + */ TextLCD(PinName rs, PinName e, PinName d0, PinName d1, PinName d2, PinName d3, LCDType type = LCD16x2); - // int putc(int c) inherited from Stream - // int printf(...) inherited from Stream - void character(int column, int row, int c); + +#if DOXYGEN_ONLY + /** Write a character to the LCD + * + * @param c The character to write to the display + */ + int putc(int c); + + /** Write a formated string to the LCD + * + * @param format A printf-style format string, followed by the + * variables to use in formating the string. + */ + int printf(const char* format, ...); +#endif + + /** Locate to a screen column and row + * + * @param column The horizontal position from the left, indexed from 0 + * @param row The vertical position from the top, indexed from 0 + */ void locate(int column, int row); + + /** Clear the screen and locate to 0,0 */ void cls(); - + int rows(); - int columns(); - - + int columns(); + protected: // Stream implementation functions virtual int _putc(int value); virtual int _getc(); - // internal tx functions + int address(int column, int row); + void character(int column, int row, int c); void writeByte(int value); void writeCommand(int command); void writeData(int data); - int address(int column, int row); DigitalOut _rs, _e; BusOut _d; LCDType _type; - // current row/column int _column; int _row; }; +} + #endif