Landtiger (LPC1768) graphics LCD demo.

Dependencies:   mbed

GLCD.h

Committer:
wim
Date:
2012-11-06
Revision:
2:43ede88fb5a3
Parent:
0:a8090b59eb05
Child:
3:2dccfa0121de

File content as of revision 2:43ede88fb5a3:

/******************************************************************************/
/* GLCD.h: Graphic LCD function prototypes and defines                        */
/******************************************************************************/
/* This file is part of the uVision/ARM development tools.                    */
/* Copyright (c) 2005-2009 Keil Software. All rights reserved.                */
/* This software may only be used under the terms of a valid, current,        */
/* end user licence from KEIL for a compatible version of KEIL software       */
/* development tools. Nothing else gives you the right to use this software.  */
/******************************************************************************/

#ifndef _GLCD_H
#define _GLCD_H

/*------------------------------------------------------------------------------
  Color coding
  GLCD is coded:   15..11 red, 10..5 green, 4..0 blue  (unsigned short)  GLCD_R5, GLCD_G6, GLCD_B5   
  original coding: 17..12 red, 11..6 green, 5..0 blue                    ORG_R6,  ORG_G6,  ORG_B6

  ORG_R1..5 = GLCD_R0..4,  ORG_R0 = GLCD_R4
  ORG_G0..5 = GLCD_G0..5,
  ORG_B1..5 = GLCD_B0..4,  ORG_B0 = GLCD_B4
 *----------------------------------------------------------------------------*/
                            
/* GLCD RGB color definitions                                                 */
#define Black           0x0000      /*   0,   0,   0 */
#define Navy            0x000F      /*   0,   0, 128 */
#define DarkGreen       0x03E0      /*   0, 128,   0 */
#define DarkCyan        0x03EF      /*   0, 128, 128 */
#define Maroon          0x7800      /* 128,   0,   0 */
#define Purple          0x780F      /* 128,   0, 128 */
#define Olive           0x7BE0      /* 128, 128,   0 */
#define LightGrey       0xC618      /* 192, 192, 192 */
#define DarkGrey        0x7BEF      /* 128, 128, 128 */
#define Blue            0x001F      /*   0,   0, 255 */
#define Green           0x07E0      /*   0, 255,   0 */
#define Cyan            0x07FF      /*   0, 255, 255 */
#define Red             0xF800      /* 255,   0,   0 */
#define Magenta         0xF81F      /* 255,   0, 255 */
#define Yellow          0xFFE0      /* 255, 255, 0   */
#define White           0xFFFF      /* 255, 255, 255 */

// GLCD Controller IDs
#define HX8347A_ID      0x0047
#define HX8347D_ID      0x0047
#define ILI9320_ID      0x9320
#define ILI9325_ID      0x9325
#define ILI9325C_ID     0x9325
#define ILI9325D_ID     0x9325
#define ILI9328_ID      0x9328
#define ILI9331_ID      0x9331
#define LGDP4531_ID     0x4531
#define LGDP4535_ID     0x4535
#define R61505U_ID1     0x1505
#define R61505U_ID2     0x0505
#define SPFD5408B_ID    0x5408
#define SSD1289_ID      0x8989
#define SSD1298_ID      0x8999
#define SSD2119_ID      0x9919  
#define ST7781_ID       0x7783


#if(0)
/* GLCD Exported functions   */   
extern void GLCD_Init           (void);
extern unsigned short GLCD_DriverCode ();
extern void GLCD_WindowMax      (void);
extern void GLCD_PutPixel       (unsigned int x, unsigned int y);
extern void GLCD_SetTextColor   (unsigned short color);
extern void GLCD_SetBackColor   (unsigned short color);
extern void GLCD_clearScreen    (unsigned short color);
extern void GLCD_DrawChar       (unsigned int x, unsigned int y, unsigned short *c);
extern void GLCD_DisplayChar    (unsigned int ln, unsigned int col, unsigned char  c);
extern void GLCD_DisplayString  (unsigned int ln, unsigned int col, unsigned char *s);
extern void GLCD_ClearLn        (unsigned int ln);
extern void GLCD_Bargraph       (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int val);
extern void GLCD_Bitmap         (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap);
extern void GLCD_Bmp            (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bmp);

extern void GLCD_drawHLine      (int x, int y, int l);
extern void GLCD_drawVLine      (int x, int y, int l);
extern void GLCD_drawRect       (int x1, int y1, int x2, int y2);
#endif


class GLCD {
  public:
    GLCD(void);
    void Init           (void);
    void WindowMax      (void);
    void Window         (int x1, int y1, int x2, int y2);    
    void drawPixel      (unsigned int x, unsigned int y);
    void drawPixel      (unsigned int x, unsigned int y, unsigned short color); 
    void drawPixel      (unsigned int x, unsigned int y, uint8_t r, uint8_t g, uint8_t b); 
    
    void setColor       (unsigned short color);
    void setColor       (uint8_t r, uint8_t g, uint8_t b);     
    void setBackColor   (unsigned short color);
    void setBackColor   (uint8_t r, uint8_t g, uint8_t b);     

    void clearScreen    (unsigned short color);

    void DrawChar       (unsigned int x, unsigned int y, unsigned short *c);
    void DisplayChar    (unsigned int ln, unsigned int col, unsigned char  c);
    void DisplayString  (unsigned int ln, unsigned int col, unsigned char *s);
    void ClearLn        (unsigned int ln);
    void Bargraph       (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned int val);
    void Bitmap         (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bitmap);
    void Bmp            (unsigned int x, unsigned int y, unsigned int w, unsigned int h, unsigned char *bmp);

    void drawHLine      (int x, int y, int l);
    void drawVLine      (int x, int y, int l);
    void drawRect       (int x1, int y1, int x2, int y2);
    void drawLine       (int x1, int y1, int x2, int y2);
    void drawRoundRect  (int x1, int y1, int x2, int y2);
    void fillRect       (int x1, int y1, int x2, int y2);
    void fillRoundRect  (int x1, int y1, int x2, int y2);
    void drawCircle     (int x, int y, int radius);
    void fillCircle     (int x, int y, int radius);
        
    void lcdOff();
    void lcdOn();
    void setContrast(char c);
    
    int getDisplayXSize();
    int getDisplayYSize();
    unsigned short getDriverCode ();

    unsigned short _textColor, _backColor;

  private:
    static __inline unsigned char lcd_send (unsigned short data);
    static __inline unsigned short lcd_read (void);
    static __inline void wr_cmd (unsigned char c);
    static __inline void wr_dat (unsigned short c);
    static __inline unsigned short rd_dat (void);
    static __inline void wr_dat_start (void);
    static __inline void wr_dat_stop (void);
    static __inline void wr_dat_only (unsigned short c);
    static __inline void wr_reg (unsigned char reg, unsigned short val);
    static __inline unsigned short rd_reg (unsigned short reg); 

    unsigned short _driverCode;
};

#endif /* _GLCD_H */