mcufriend 2.4 TFT LCD Shield Lib

Dependents:   Nucleo_LCD_mcufriend_test

Fork of 24_TFT_STMNUCLEO by Carlos Silva

mcufriend 2.4" TFT LCD Shield

front back

Import program

00001 #include "mbed.h"
00002 #include "ili9328.h"
00003 
00004 // prepare the data bus for writing commands and pixel data
00005 BusOut dataBus( D8, D9, D2, D3, D4, D5, D6, D7 ); // 8 pins
00006 // create the lcd instance
00007 ILI9328_LCD lcd( A3,  A4, A2,A1, &dataBus, NC, A0); // control pins and data bus
00008 //ILI9328_LCD(  CS,  RESET,  RS, WR, BusOut* DATA_PORT, PinName BL = NC,  RD );
00009    
00010 int main()
00011 {
00012     int ii,height,width;
00013     
00014     height = lcd.GetHeight();
00015     width =  lcd.GetWidth();
00016     // initialize display - place it in standard portrait mode and set background to black and
00017     //                      foreground to white color.
00018     lcd.Initialize();
00019 
00020     // print something on the screen
00021     lcd.Print( "Hello, World!", CENTER, 50); // align text to center horizontally and use starndard colors
00022  
00023     wait(2);
00024    
00025     lcd.ClearScreen();
00026  
00027     for(ii=0;ii<width;ii++)
00028     {
00029         lcd.DrawLine(0, 0, height, ii,COLOR_GREEN);
00030         ii = ii+10;    
00031     }
00032     wait(2);
00033  
00034     lcd.DrawCircle(height/4, width/4, 20, COLOR_GREEN);
00035     wait(2);
00036  
00037     lcd.FillCircle(height/2, width/2, 50, COLOR_GREEN);
00038     wait(2);
00039  
00040     lcd.FillTriangle(height/4, width/4,(height/4)+20, (width/4)+40,(height/4)-20, (width/4)+40, COLOR_RED);
00041  
00042     while ( 1 ) { }
00043 }

HW information about the mcufriend LCD Shield

Revision:
30:ede1a0a32e04
Parent:
29:060b167a46ba
--- a/hx8340bs.h	Mon Jun 30 17:29:42 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-/** \file hx8340b.h
- *  \brief mbed TFT LCD controller for displays with the HX8340-B IC (serial interface).
- *  \copyright GNU Public License, v2. or later
- *
- * A known display with this type of controller chip is the ITDB02-2.2SP
- * from http://imall.iteadstudio.com
- *
- * This library is based on the Arduino/chipKIT UTFT library by Henning
- * Karlsen, http://henningkarlsen.com/electronics/library.php?id=52
- *
- * Copyright (C)2010-2012 Henning Karlsen. All right reserved.
- *
- * Copyright (C)2012 Todor Todorov.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to:
- *
- * Free Software Foundation, Inc.
- * 51 Franklin St, 5th Floor, Boston, MA 02110-1301, USA
- *
- *********************************************************************/
-#ifndef TFTLCD_HX8340B_H
-#define TFTLCD_HX8340B_H
-
-#include "lcd_base.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Represents a LCD instance.
- *
- * This is the utility class, through which the display can be manipulated
- * and graphics objects can be shown to the user.  A known display, which
- * works with this library is the ITDB02-2.2SP from iTeadStudio - a RGB TFT
- * with 176x220 pixels resolution and 65K/256K colors, using serial interface.
- *
- * The display needs 4 or 5 pins to work with mbed. As it uses +3.3V for power
- * and logic, as well as the backlight, interfacing could happen directly
- * to the mbed without the need of shields or level shifters as with Arduino.
- *
- * How to use:
- * \code
- * // include the library, this will also pull in the header for the provided fonts
- * #include "hx8340bs.h"
- * 
- * // create the lcd instance
- * HX8340S_LCD lcd( p14, p13, p12, p11 ); // control pins
- *
- * int main()
- * {
- *     // initialize display - place it in standard portrait mode and set background to black and
- *     //                      foreground to white color.
- *     lcd.Initialize();
- *     // set current font to the smallest 8x12 pixels font.
- *     lcd.SetFont( Font8x12 );
- *     // print something on the screen
- *     lcd.Print( "Hello, World!", CENTER, 25 ); // align text to center horizontally and use starndard colors
- *
- *     while ( 1 ) { }
- * }
- *
- * \endcode
- * \version 0.1
- * \author Todor Todorov
- */
-class HX8340S_LCD : public LCD
-{
-public:
-    /** Creates a new instance of the class.
-     *
-     * \param CS Pin for the ChipSelect signal.
-     * \param RESET Pin for the RESET line.
-     * \param SCL Pin for the serial clock signal.
-     * \param SDI Pin for the serial data signal.
-     * \param BL Pin for controlling the backlight. By default not used.
-     * \param blType The backlight type, the default is to utilize the pin - if supplied - as a simple on/off switch
-     * \param defaultBacklightLevel If using PWM to control backlight, this would be the default brightness in percent after LCD initialization.
-     */
-    HX8340S_LCD( PinName CS, PinName RESET, PinName SCL, PinName SDI, PinName BL = NC, backlight_t blType = Constant, float defaultBackLightLevel = 1.0 );
-    
-    /** Initialize display.
-     *
-     * Wakes up the display from sleep, initializes power parameters.
-     * This function must be called first, befor any painting on the
-     * display is done, otherwise the positioning of graphical elements
-     * will not work properly and any paynt operation will not be visible
-     * or produce garbage.
-     *
-     * \param oritentation The display orientation, landscape is default.
-     * \param colors The correct color depth to use for the pixel data.
-     */
-    virtual void Initialize( orientation_t orientation = LANDSCAPE, colordepth_t colors = RGB16 );
-    
-    /** 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 );
-    
-    /** Writes a single byte of pixel data to the display.
-     *
-     * \param data The data to be written.
-     * \remarks Sendin data is controller-specific and this function needs to
-     *          be implemented separately for each available controller.
-     */
-    virtual void WriteByteData( unsigned char 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( unsigned short x1, unsigned short y1, unsigned short x2, unsigned short y2 );
-    
-    /** Sets the color of the pixel at the address pointer of the controller.
-     *
-     * This function is to be provided by each implementation separately in
-     * order to account for different color depth used by the controller.
-     * \param color The color of the pixel.
-     * \param mode The depth (palette) of the color.
-     */
-    virtual void SetPixelColor( unsigned int color, colordepth_t mode = RGB24 );
-    
-private:
-    void serializeByte( unsigned char data );
-    
-private:
-    DigitalOut  _lcd_pin_scl, _lcd_pin_sdi;
-};
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* TFTLCD_HX8340B_H */