Programme de test pour lcd ITDB02
Fork of TFTLCD by
Diff: ssd1289.h
- Revision:
- 4:3ac4239f6c9c
- Parent:
- 3:64a5b67d5b51
- Child:
- 5:09b6d228ceea
--- a/ssd1289.h Sun Dec 02 01:44:23 2012 +0000 +++ b/ssd1289.h Sun Dec 02 05:44:52 2012 +0000 @@ -1,4 +1,4 @@ -/** \file ssd.h +/** \file ssd1289.h * \brief mbed TFT LCD controller for displays with the SSD1289 IC. * \copyright GNU Public License, v2. or later * @@ -40,7 +40,7 @@ * works with this library is the ITDB02-3.2S from iTeadStudio - a RGB TFT * with 240x320 pixels resolution and 65K colors, using 16-bit interface. * - * The display needs 20 or 21 pins to work with mbed, so it is possibly not + * The display needs 20 to 22 pins to work with mbed, so it is possibly not * the best of choices out there, but other than that it uses +3.3V for * power and logic, as well as the backlight, thus can be interfaced directly * to the mbed without the need of shields or level shifters as with Arduino. @@ -53,7 +53,7 @@ * // prepare the data bus for writing commands and pixel data * BusOut dataBus( p30, p29, p28, p27, p26, p25, p24, p23, p22, p21, p20, p19, p18, p17, p16, p15 ); // 16 pins * // create the lcd instance - * SSD1289 lcd( p14, p13, p12, p11, &dataBus ); // control pins and data bus + * SSD1289_LCD lcd( p14, p13, p12, p11, &dataBus ); // control pins and data bus * * int main() * { @@ -72,7 +72,7 @@ * \version 0.1 * \author Todor Todorov */ -class SSD1289LCD : public LCD +class SSD1289_LCD : public LCD { public: /** Creates a new instance of the class. @@ -82,11 +82,12 @@ * \param RS Pin for the RS signal. * \param WR Pin for the WR signal. * \param DATA_PORT Address of the data bus for transfer of commands and pixel data. + * \param BL Pin for controlling the backlight. By default not used. * \param RD Pin for the RD signal. This line is not needed by the driver, so if you would like to * use the pin on the mbed for something else, just pull-up the respective pin on the LCD high, * and do not assign a value to this parameter when creating the controller instance. */ - SSD1289LCD( PinName CS, PinName RESET, PinName RS, PinName WR, BusOut* DATA_PORT, PinName RD = NC ); + SSD1289_LCD( PinName CS, PinName RESET, PinName RS, PinName WR, BusOut* DATA_PORT, PinName BL = NC, PinName RD = NC ); /** Initialize display. * @@ -100,14 +101,70 @@ */ virtual void Initialize( orientation_t orientation = LANDSCAPE ); + /** 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. + */ + virtual void Sleep( void ); + + /** 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 ). + */ + virtual void WakeUp( void ); + protected: + /** Sends a command to the display. + * + * \param cmd The display command. + * \remarks Commands are controller-specific and this function needs to + * be implemented separately for each available controller. + */ virtual void WriteCmd( unsigned short cmd ); + + /** Sends pixel data to the display. + * + * \param data The display data. + * \remarks Sendin data is controller-specific and this function needs to + * be implemented separately for each available controller. + */ virtual void WriteData( unsigned short data ); + + /** Assigns a chunk of the display memory to receive data. + * + * When data is sent to the display after this function completes, the opertion will + * start from the begining of the assigned address (pixel position) and the pointer + * will be automatically incremented so that the next data write operation will continue + * with the next pixel from the memory block. If more data is written than available + * pixels, at the end of the block the pointer will jump back to its beginning and + * commence again, until the next address change command is sent to the display. + * + * \param x1 The X coordinate of the pixel at the beginning of the block. + * \param y1 The Y coordinate of the pixel at the beginning of the block. + * \param x2 The X coordinate of the pixel at the end of the block. + * \param y2 The Y coordinate of the pixel at the end of the block. + * \remarks Addressing commands are controller-specific and this function needs to be + * implemented separately for each available controller. + */ virtual void SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 ); private: - DigitalOut _lcd_pin_reset, _lcd_pin_wr; - BusOut* _lcd_port; + DigitalOut _lcd_pin_wr; + BusOut* _lcd_port; + DigitalOut* _lcd_pin_bl; DigitalOut* _lcd_pin_rd; };