This is a port of Henning Kralsen's UTFT library for Arduino/chipKIT to mbed, refactored to make full use of C inheritance and access control, in order to reduce work when implementing new drivers and at the same time make the code more readable and easier to maintain. As of now supported are SSD1289 (16-bit interface), HX8340-B (serial interface) and ST7735 (serial interface). Drivers for other controllers will be added as time and resources to acquire the displays to test the code permit.

Dependents:   UTFT_SSD1289

Fork of TFTLCD by Todor Todorov

Revision:
4:3ac4239f6c9c
Parent:
3:64a5b67d5b51
Child:
5:09b6d228ceea
--- a/lcd_base.h	Sun Dec 02 01:44:23 2012 +0000
+++ b/lcd_base.h	Sun Dec 02 05:44:52 2012 +0000
@@ -120,11 +120,40 @@
      * or produce garbage.
      *
      * This function is controller-specific and needs to be implemented
-     * separately for each available implementation.
+     * separately for each available display.
      * \param oritentation The display orientation, landscape is default.
      */
     virtual void Initialize( orientation_t orientation ) = 0;
     
+    /** Puts the display to sleep.
+     *
+     * When the display is in sleep mode, its power consumption is
+     * minimized.  Before new pixel data can be written to the display
+     * memory, the controller needs to be brought out of sleep mode.
+     * \sa #WakeUp( void );
+     * \remarks The result of this operation might not be exactly as
+     *          expected. Putting the display to sleep will cause the
+     *          controller to switch to the standard color of the LCD,
+     *          so depending on whether the display is normally white,
+     *          or normally dark, the screen might or might not go
+     *          dark.  Additional power saving can be achieved, if
+     *          the backlight of the used display is not hardwired on
+     *          the PCB and can be controlled via the BL pin.
+     * \remarks This function is controller-specific and needs to be
+     *          implemented separately for each available display.
+     */
+    virtual void Sleep( void ) = 0;
+    
+    /** Wakes up the display from sleep mode.
+     *
+     * This function needs to be called before any other, when the
+     * display has been put into sleep mode by a previois call to
+     * #Sleep( void ).
+     * \remarks This function is controller-specific and needs to be
+     *          implemented separately for each available display.
+     */
+    virtual void WakeUp( void ) = 0;
+    
     /** Set the foreground color for painting.
      *
      * This is the default foreground color to be used in painting operations.
@@ -312,8 +341,21 @@
      * \param height Height of the display in pixels.
      * \param CS Pin connected to the CS input of the display.
      * \param RS Pin connected to the RS input of the display.
+     * \param RESET Pin connected to the RESET input of the display.
      */
-    LCD( unsigned short width, unsigned short height ,PinName CS, PinName RS );
+    LCD( unsigned short width, unsigned short height ,PinName CS, PinName RS, PinName RESET );
+    
+    /** Activates the display for command/data transfer.
+     *
+     * Usually achieved by pulling the CS pin of the display low.
+     */
+    virtual void Activate( void );
+    
+    /** Deactivates the display after data has been transmitted.
+     *
+     * Usually achieved by pulling the CS pin of the display high.
+     */
+    virtual void Deactivate( void );
     
     /** Sends a command to the display.
      *
@@ -416,11 +458,11 @@
     virtual void RotateChar( char c, unsigned short x, unsigned short y, int pos, int fgColor = -2, int bgColor = -1, unsigned short deg = 0 );
 
 protected:
-    unsigned short _disp_width, _disp_height;
-    DigitalOut _lcd_pin_cs, _lcd_pin_rs;
-    orientation_t _orientation;
-    unsigned short _foreground, _background;
-    font_metrics_t _font;
+    unsigned short  _disp_width, _disp_height;
+    DigitalOut      _lcd_pin_cs, _lcd_pin_rs, _lcd_pin_reset;
+    orientation_t   _orientation;
+    unsigned short  _foreground, _background;
+    font_metrics_t  _font;
 };
 
 #endif /* TFTLCD_BASE_H */