123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- /**********************************************************************
- * $Id$ lpc_lcd.h 2011-10-14
- *//**
- * @file lpc_lcd.h
- * @brief Contains all functions support for LCD firmware library
- * on LPC
- * @version 1.0
- * @date 14. October. 2011
- * @author NXP MCU SW Application Team
- *
- * Copyright(C) 2011, NXP Semiconductor
- * All rights reserved.
- *
- ***********************************************************************
- * Software that is described herein is for illustrative purposes only
- * which provides customers with programming information regarding the
- * products. This software is supplied "AS IS" without any warranties.
- * NXP Semiconductors assumes no responsibility or liability for the
- * use of the software, conveys no license or title under any patent,
- * copyright, or mask work right to the product. NXP Semiconductors
- * reserves the right to make changes in the software without
- * notification. NXP Semiconductors also make no representation or
- * warranty that such application will be suitable for the specified
- * use without further testing or modification.
- * Permission to use, copy, modify, and distribute this software and its
- * documentation is hereby granted, under NXP Semiconductors'
- * relevant copyright in the software, without fee, provided that it
- * is used in conjunction with NXP Semiconductors microcontrollers. This
- * copyright, permission, and disclaimer notice must appear in all copies of
- * this code.
- **********************************************************************/
- #include "lpc_types.h"
- #ifndef __LPC_LCD_H_
- #define __LPC_LCD_H_
- /** @defgroup LCD LCD (Liquid Crystal Display)
- * @ingroup LPC_CMSIS_FwLib_Drivers
- * @{
- */
- /** @defgroup LCD_Public_Macros LCD Public Macros
- * @{
- */
- #define LCD_PWR_ENA_DIS_DLY 10000
- #define LCD_FUNC_OK 0
- #define LCD_FUNC_ERR -1
- #define GET_CURSOR_IMG_SIZE(size) ((size == 32) ? 64:256)
- /**
- * @}
- */
- /** @defgroup LCD_Public_Types LCD Public Types
- * @{
- */
- typedef enum __LCD_TYPES
- {
- LCD_STN_MONOCHROME,
- LCD_STN_COLOR,
- LCD_TFT,
- LCD_TYPE_UNKNOWN,
- } LCD_TYPES;
- typedef enum __LCD_BPP
- {
- LCD_BPP_1 = 0x00,
- LCD_BPP_2 = 0x01,
- LCD_BPP_4 = 0x02,
- LCD_BPP_8 = 0x03,
- LCD_BPP_16 = 0x04,
- LCD_BPP_24 = 0x05,
- LCD_BPP_16_565Mode = 0x06,
- LCD_BPP_12_444Mode = 0x07,
- } LCD_BPP;
- typedef enum __LCD_PANEL
- {
- LCD_PANEL_UPPER,
- LCD_PANEL_LOWER,
- }LCD_PANEL;
- /**
- * @brief A struct for Bitmap on LCD screen
- */
- typedef struct _Bmp_t
- {
- uint32_t H_Size;
- uint32_t V_Size;
- uint32_t BitsPP;
- uint32_t BytesPP;
- uint8_t *pPalette;
- uint8_t *pPicStream;
- uint8_t *pPicDesc;
- } Bmp_t, *pBmp_t;
- /**
- * @brief A struct for Font Type on LCD screen
- */
-
- typedef struct _FontType_t
- {
- uint32_t H_Size;
- uint32_t V_Size;
- uint32_t CharacterOffset;
- uint32_t CharactersNuber;
- uint8_t *pFontStream;
- uint8_t *pFontDesc;
- } FontType_t, *pFontType_t;
- /**
- * @brief A struct for LCD Palette
- */
- typedef struct __LCD_PALETTE_Type
- {
- uint8_t Red;
- uint8_t Green;
- uint8_t Blue;
- }LCD_PALETTE_Type, *pLCD_PALETTE_Type;
- /**
- * @brief A struct for Horizontal configuration
- */
- typedef struct __LCD_HConfig_Type
- {
- uint8_t hfp; // Horizontal front porch
- uint8_t hbp; // Horizontal back porch
- uint8_t hsw; // Horizontal synchronization pulse width
- uint16_t ppl; // Number of pixels per line
- }LCD_HConfig_Type;
- /**
- * @brief A struct for Vertical configuration
- */
- typedef struct __LCD_VConfig_Type
- {
- uint8_t vfp; // Vertical front and back porch
- uint8_t vbp; // Vertical back porch
- uint8_t vsw; // Vertical synchronization pulse width
- uint16_t lpp; // Number of lines per panel
- }LCD_VConfig_Type;
- /**
- * @brief A struct for Polarity configuration
- */
- typedef struct __LCD_POLARITY_Type
- {
- uint16_t cpl; // Number of pixel clocks per line
- uint8_t active_high; // Signal polarity, active HIGH or LOW
- uint8_t acb; // AC bias pin frequency
- uint8_t invert_panel_clock; // Invert Panel clock;
- uint8_t invert_hsync; // Invert HSYNC
- uint8_t invert_vsync; // Invert VSYSNC
- }LCD_POLARITY_Type;
- /**
- * @brief A struct for LCD Configuration
- */
- typedef struct __LCD_Config_Type
- {
- LCD_HConfig_Type hConfig; // Horizontal config
- LCD_VConfig_Type vConfig; // Vertical config
- LCD_POLARITY_Type polarity; // Polarity config
- uint32_t panel_clk; // Panel clock frequency
- LCD_BPP lcd_bpp; // Bits-per-pixel
- LCD_TYPES lcd_type; // Display type: STN monochrome, STN color, or TFT
- uint8_t lcd_mono8; // STN 4 or 8-bit interface mode
- uint8_t lcd_dual; // STN dual or single panel mode
- uint8_t big_endian_byte; // byte ordering in memory
- uint8_t big_endian_pixel; // pixel ordering within a byte
- uint32_t lcd_panel_upper; // base address of frame buffer
- uint32_t lcd_panel_lower; // base address of frame buffer
- uint8_t* lcd_palette; // point to palette buffer
- Bool lcd_bgr; // False: RGB , TRUE: BGR
- } LCD_Config_Type;
- /**
- * @brief A struct for Cursor configuration
- */
- typedef struct __LCD_Cursor_Config_Type
- {
- uint8_t size32; // 32x32 or 64x64
- uint8_t framesync;
- LCD_PALETTE_Type palette[2];
- uint32_t baseaddress;
- } LCD_Cursor_Config_Type;
- typedef uint32_t LcdPixel_t, *pLcdPixel_t;
- typedef int32_t LCD_RET_CODE;
- /**
- * @}
- */
- /** @defgroup LCD_Public_Functions LCD Public Functions
- * @{
- */
- LCD_RET_CODE LCD_Init (LCD_Config_Type* pConfig);
- void LCD_SetBaseAddress(LCD_PANEL panel, uint32_t pAddress);
- void LCD_SetPalette (const uint8_t* pPallete);
- void LCD_Enable (Bool bEna);
- void LCD_Cursor_Cfg(LCD_Cursor_Config_Type* pConfig);
- void LCD_Cursor_Enable(int enable, int cursor);
- void LCD_Move_Cursor(int x, int y);
- void LCD_Cursor_SetImage (const uint32_t *pCursor, int cursor, int size);
- void LCD_SetImage(LCD_PANEL panel,const uint8_t *pPain);
- void LCD_FillRect (LCD_PANEL panel, uint32_t startx,uint32_t endx,
- uint32_t starty, uint32_t endy,
- LcdPixel_t color);
- void LCD_PutPixel (LCD_PANEL panel, uint32_t X_Left, uint32_t Y_Up, LcdPixel_t color);
- void LCD_LoadPic (LCD_PANEL panel,uint32_t X_Left, uint32_t Y_Up, Bmp_t * pBmp, uint32_t Mask);
- /**
- * @}
- */
- #endif // __LPC_LCD_H_
- /**
- * @}
- */
|