TextLCD library for controlling various LCD panels based on the HD44780 4-bit interface

Dependents:   LCD_tarea1

Fork of TextLCD by Simon Ford

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