⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.h

📁 MMI层OBJ不能完全编译
💻 H
📖 第 1 页 / 共 3 页
字号:

//------------------------------------------------------
// LCD : DMA frame size status
//------------------------------------------------------
UWORD16 LCD_DmaFrameSizeStatus(void);

// the same with a macro
#define LCD_DmaFrameSizeStatus_M GetField16(LCD_INTERFACE_CNTL_REG, MIN_FRAME_SIZE)



void LCD_0DummyWriteCycle(void);



//=======================================================
//
// LCD Controler Register (LCD_CNTL_REG)
//
//=======================================================

typedef enum
{
  LCD_NCS0_SEL    = 0,
  LCD_NCS0_UNSEL  = 1
} LCD_nCS0_t;

//       THE VALUE FOR SELECTING INSTRUCTION/DISPLAY
//       CONFIGURATION DEPENDS ON THE LCD CONTROLLER
							

//typedef enum
//{
// LCD_DISPLAY     = 0,        // For LH155N LCD
// LCD_INSTRUCTION = 1         // controller type
//} LCD_DataTypeSelection_t;

typedef enum
{
  LCD_INSTRUCTION = 0,      // For KS0741 LCD
  LCD_DISPLAY     = 1       // controller type
} LCD_DataTypeSelection_t;

#define LCD_START_READ    1

#define LCD_NRESET_CTRL   0


typedef enum
{
  LCD_NCS1_SEL    = 0,
  LCD_NCS1_UNSEL  = 1
} LCD_nCS1_t;




//------------------------------------------------------
// LCD : Controller 0 selected
//------------------------------------------------------
void LCD_Controller0Selected(void);

// the same with a macro
#define LCD_Controller0Selected_M LCD_INTERFACE_LCD_CNTL_REG = (LCD_INTERFACE_LCD_CNTL_REG & 0xFFFE)

//------------------------------------------------------
// LCD : Controller 0 unselected
//------------------------------------------------------
void LCD_Controller0UnSelected(void);

// the same with a macro
#define LCD_Controller0UnSelected_M LCD_INTERFACE_LCD_CNTL_REG = ((LCD_INTERFACE_LCD_CNTL_REG & 0xFFFE) | 0x0001)

//------------------------------------------------------
// LCD : Controller 0 status
//------------------------------------------------------
UWORD16 LCD_Controller0Status(void);

// the same with a macro
#define LCD_Controller0Status_M (LCD_INTERFACE_LCD_CNTL_REG & 0x0001)

//------------------------------------------------------
// LCD : Instruction/Display data type selection
//------------------------------------------------------
void LCD_DataTypeSelection(LCD_DataTypeSelection_t value);

#define SetField16(_reg,_pos,_value)   (REG16((_reg)) |= (_value)<< (_reg ##_ ##_pos ##_POS ))


#define BSPUTIL_BITUTIL_BIT_FIELD_MASK16( _fieldWidth, _fieldOffset )              \
(                                                                                  \
    ( ( 0xFFFF >> ( ( 16 - (_fieldWidth) ) & 0x0F ) ) << ((_fieldOffset) & 0x0F) ) \
)

#define GetField16( _reg_,                        \
                                         _pos_)                    \
(                                                                         \
        (*((volatile UINT16 *)(_reg_))) &                              \
        BSPUTIL_BITUTIL_BIT_FIELD_MASK16( (_reg ##_ ##_pos ##_POS), (_reg ##_ ##_pos ##_NUMB) ) \
    ) >> (_pos_)                                                   \
)



// the same with a macro
#define LCD_DataTypeSelection_M(value) SetField16(LCD_INTERFACE_LCD_CNTL_REG, LCD_RS, (value))

//------------------------------------------------------
// LCD : Instruction/Display data type status
//------------------------------------------------------
UWORD16 LCD_DataTypeSelectionStatus(void);

// the same with a macro
#define LCD_DataTypeSelectionStatus_M ((LCD_INTERFACE_LCD_CNTL_REG >> LCD_INTERFACE_LCD_CNTL_REG_LCD_RS_POS) & 0x0001)

//------------------------------------------------------
// LCD : Start read
//------------------------------------------------------
void LCD_StartRead(void);

// the same with a macro
#define LCD_StartRead_M LCD_INTERFACE_LCD_CNTL_REG = (LCD_INTERFACE_LCD_CNTL_REG | 0x0004)

//------------------------------------------------------
// LCD : Start read status
//------------------------------------------------------
UWORD16 LCD_StartReadStatus(void);

// the same with a macro
#define LCD_StartReadStatus_M ((LCD_INTERFACE_LCD_CNTL_REG >> LCD_INTERFACE_LCD_CNTL_REG_LCD_START_READ_POS) & 0x0001)

//------------------------------------------------------
// Reset LCD controller
//------------------------------------------------------
void LCD_ResetController(void);

// the same with a macro
#define LCD_ResetController_M LCD_INTERFACE_LCD_CNTL_REG = (LCD_INTERFACE_LCD_CNTL_REG & 0xFFF7)

//------------------------------------------------------
// End LCD controller reset
//------------------------------------------------------
void LCD_EndResetController(void);

// the same with a macro
#define LCD_EndResetController_M LCD_INTERFACE_LCD_CNTL_REG = (LCD_INTERFACE_LCD_CNTL_REG | 0x0008)

//------------------------------------------------------
// Reset LCD controller status
//------------------------------------------------------
UWORD16 LCD_ResetControllerStatus(void);

// the same with a macro
#define LCD_ResetControllerStatus_M ((LCD_INTERFACE_LCD_CNTL_REG >> LCD_INTERFACE_LCD_CNTL_REG_LCD_NRESET_POS) & 0x001)

//------------------------------------------------------
// LCD : Controller 1 selected
//------------------------------------------------------
void LCD_Controller1Selected(void);

// the same with a macro
#define LCD_Controller1Selected_M LCD_INTERFACE_LCD_CNTL_REG = (LCD_INTERFACE_LCD_CNTL_REG & 0xFFEF)

//------------------------------------------------------
// LCD : Controller 1 unselected
//------------------------------------------------------
void LCD_Controller1UnSelected(void);

// the same with a macro
#define LCD_Controller1UnSelected_M LCD_INTERFACE_LCD_CNTL_REG = ((LCD_INTERFACE_LCD_CNTL_REG & 0xFFEF) | 0x0010)

//------------------------------------------------------
// LCD : Controller 1 status
//------------------------------------------------------
UWORD16 LCD_Controller1Status(void);

// the same with a macro
//#define LCD_Controller1Status_M GetField16(LCD_INTERFACE_LCD_CNTL_REG, LCD_NCS1)


/*******************************************************
 *
 * LCD interface Status Register (LCD_IF_STS_REG)
 *
 ******************************************************/
typedef enum
{
  LCD_FIFO_NOT_EMPTY = 0,
  LCD_FIFO_IS_EMPTY  = 1
} LCD_FifoEmptyStatus_t;


typedef enum
{
  LCD_FIFO_NOT_FULL = 0,
  LCD_FIFO_IS_FULL  = 2
} LCD_FifoFullStatus_t;

typedef enum
{
  LCD_RECEPTION_ON_GOING   = 0,
  LCD_RECEPTION_COMPLETED  = 4
} LCD_ReadEventStatus_t;

//------------------------------------------------------
// LCD : FIFO empty status
//------------------------------------------------------
LCD_FifoEmptyStatus_t LCD_FifoEmptyStatus(void);

// the same with a macro
#define LCD_FifoEmptyStatus_M (LCD_INTERFACE_LCD_IF_STS_REG & 0x0001)

//------------------------------------------------------
// LCD : FIFO full status
//------------------------------------------------------
LCD_FifoFullStatus_t LCD_FifoFullStatus(void);

// the same with a macro
#define LCD_FifoFullStatus_M (LCD_INTERFACE_LCD_IF_STS_REG & 0x0002)

//------------------------------------------------------
// LCD : Read event status
//------------------------------------------------------
LCD_ReadEventStatus_t LCD_ReadEventStatus(void);

// the same with a macro
#define LCD_ReadEventStatus_M (LCD_INTERFACE_LCD_IF_STS_REG & 0x0004)


//=======================================================
//
// Write data FIFO (WR_FIFO)
//
//=======================================================

//------------------------------------------------------
// LCD : Write data into FIFO
//------------------------------------------------------
void LCD_Write(UWORD16 data);

// the same with a macro
#define LCD_Write_M(data)  LCD_INTERFACE_WR_FIFO = (data)
                              

//=======================================================
//
// Read data register (RD_REG)
//
//=======================================================

//------------------------------------------------------
// LCD : Read data from register
//------------------------------------------------------
UWORD16 LCD_Read(void);

// the same with a macro
#define LCD_Read_M LCD_INTERFACE_RD_REG


//=======================================================
//
// Library functions and macros
//
//=======================================================

//------------------------------------------------------
// LCD : Read interface Status Register (LCD_IF_STS_REG)
//------------------------------------------------------
typedef enum
{
  LCD_FIFO_EMPTY_MASK = 1,
  LCD_FIFO_FULL_MASK  = 2,
  LCD_READ_EVENT_MASK = 4
} LCD_InterfaceStatusRegister_t;

UWORD16 LCD_ReadInterfaceStatusRegister(void);


//------------------------------------------------------
// LCD : Wait FIFO empty
//------------------------------------------------------
//#define WAIT_FIFO_EMPTY  while (GetField16(LCD_INTERFACE_LCD_IF_STS_REG, FIFO_EMPTY_STATUS) == LCD_FIFO_NOT_EMPTY);
#define WAIT_FIFO_EMPTY  F_LCD_IF_WAIT_TX_FIFO_EMPTY

//------------------------------------------------------
// LCD : Set data type
//       Wait FIFO empty before setting type
//------------------------------------------------------
void LCD_DataSetType(LCD_DataTypeSelection_t datatype);

#define LCD_DataSetType_M(datatype) WAIT_FIFO_EMPTY                                                      \
                                    SetField16(LCD_INTERFACE_LCD_CNTL_REG, LCD_RS, (UWORD16)(datatype));

//------------------------------------------------------
// LCD : Set type and write date
//       Wait FIFO empty before setting data type
//------------------------------------------------------
void LCD_WriteSetType(LCD_DataTypeSelection_t datatype, UWORD16 data);

// the same with a macro
#define LCD_WriteSetType_M(datatype, data) WAIT_FIFO_EMPTY                                                        \
                                           SetField16(LCD_INTERFACE_LCD_CNTL_REG, LCD_RS, (UWORD16)(datatype));   \
                                           SetField16(LCD_INTERFACE_WR_FIFO, DATA_TX, (UWORD16)(data));



//------------------------------------------------------
// LCD : Write instruction
//       Wait FIFO empty before setting data type
//------------------------------------------------------
void LCD_WriteSetInstruction(UWORD16 instruction);

// the same with a macro
#define LCD_WriteSetInstruction_M(instruction) WAIT_FIFO_EMPTY                                                      \
                                               SetField16(LCD_INTERFACE_LCD_CNTL_REG, LCD_RS, LCD_INSTRUCTION);     \
                                               SetField16(LCD_INTERFACE_WR_FIFO, DATA_TX, ((UWORD16)(instruction)));

//------------------------------------------------------
// LCD : Write data
//       Wait FIFO empty before setting data type
//------------------------------------------------------
void LCD_WriteSetDisplay(UWORD16 data);

// the same with a macro
#define LCD_WriteSetDisplay_M(data) WAIT_FIFO_EMPTY                                                  \
                                    SetField16(LCD_INTERFACE_LCD_CNTL_REG, LCD_RS, LCD_DISPLAY);     \
                                    SetField16(LCD_INTERFACE_WR_FIFO, DATA_TX, ((UWORD16)(data)));

//------------------------------------------------------
// LCD : Read register
//------------------------------------------------------
UWORD16 LCD_Read_Seq(void);

// the same with a macro
/*
#define LCD_Read_Seq_M(value)   WAIT_FIFO_EMPTY                                                                                    \
                            SetField16(LCD_INTERFACE_LCD_CNTL_REG, LCD_START_READ, 1);                                         \
                            while (GetField16(LCD_INTERFACE_LCD_IF_STS_REG, LCD_READ_EVENT_STATUS) == LCD_RECEPTION_ON_GOING); \
                            (value) = GetField16(LCD_INTERFACE_RD_REG, DATA_RX);
*/

//------------------------------------------------------
// LCD : Reset controller
//------------------------------------------------------
void LCD_ControllerReset(void);

void LCD_SelectController0(void);
// Same with macro
#define LCD_SelectController0_M  LCD_Controller0Selected_M;  \
                                 LCD_Controller1UnSelected_M;

void LCD_SelectController1(void);
// Same with macro
#define LCD_SelectController1_M  LCD_Controller1Selected_M;  \
                                 LCD_Controller0UnSelected_M;

#define LCD_CMD(addr,value) ((UWORD8)(addr) | (UWORD8)((0x0F & ((UWORD8)(value)))))

//UWORD16 read_lcd_id(void);

#endif /* LCD_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -