?? lcd.c
字號:
LCD_DataWrite_D15G17E(end_column);
}
/****************************************************************************
FUNCTION NAME : PWM2_level
PURPOSE : This function is to setup backlight power level.
INPUT PARAMETERS : kal_uint8
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_blockClear_D15G17E(kal_uint16 x1,kal_uint16 y1,kal_uint16 x2,kal_uint16 y2,kal_uint16 data)
{
kal_uint16 LCD_x;
kal_uint16 LCD_y;
LCD_Set_Y_Addr_D15G17E(y1, y2);
LCD_Set_X_Addr_D15G17E(x1, x2);
LCD_CtrlWrite_D15G17E(LCD_RAM_WRITE_D15G17E);
for(LCD_x=x1;LCD_x<=x2;LCD_x++)
for(LCD_y=y1;LCD_y<=y2;LCD_y++)
LCD_RAMWrite_D15G17E(data);
}
void LCD_ClearAll_D15G17E(kal_uint16 data)
{
LCD_blockClear_D15G17E(0, 0, LCD_WIDTH-1, LCD_HEIGHT-1, data);
}
/* EPSON D15G17E ***********************************************************/
/* 128x128(65K), Parallel i/o, COG Type */
/***************************************************************************/
/*********************/
/* LCD-MMI Interface */
/*********************/
/****************************************************************************
FUNCTION NAME : LCD_Init
PURPOSE : This function is to initialize Main LCD.
INPUT PARAMETERS : kal_uint32, void
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_Init_D15G17E(kal_uint32 bkground, void **buf_addr)
{
kal_uint16 background = (kal_uint16)bkground;
volatile kal_uint8 i;
//*EMI_CON3 = 0xE607;
for(i=0;i<=4;i++){
LCD_CtrlWrite_D15G17E(0x00); // NOP
}
LCD_Delay(100);
/* Software Reset */
LCD_CtrlWrite_D15G17E(LCD_SW_RESET_D15G17E); // 0x01
LCD_Delay(100);
for(i=0;i<=4;i++){
LCD_CtrlWrite_D15G17E(0x00); // NOP
}
/* Display Control */
LCD_CtrlWrite_D15G17E(LCD_DISPLAY_CTRL_SET_D15G17E); // 0xB6
LCD_DataWrite_D15G17E(0x4A) // 0x4A
LCD_DataWrite_D15G17E(0x18); // N-line inversion 2~132 0x02~0x84
LCD_DataWrite_D15G17E(0x04); // b7: 0 no division osc. freq., 1 Fosc/2
LCD_DataWrite_D15G17E(0x86); // duty
LCD_DataWrite_D15G17E(0x84); // display line
LCD_Delay(100);
/* Driver Position */
LCD_CtrlWrite_D15G17E(0xBB);
LCD_DataWrite_D15G17E(0x04); // 0x04
/* Power Control */
LCD_CtrlWrite_D15G17E(0xBE);
LCD_DataWrite_D15G17E(0x4D);
LCD_DataWrite_D15G17E(0x01);
/* Voltage Control */
LCD_CtrlWrite_D15G17E(0xBA);
LCD_DataWrite_D15G17E(0x46);
LCD_DataWrite_D15G17E(0x46);
/* Set Contrast */
LCD_CtrlWrite_D15G17E(LCD_CONTRAST_SET_D15G17E); // 0x25
LCD_DataWrite_D15G17E(0x48); //contrast 0x48
LCD_Delay(100);
LCD_Delay(100);
/* Normal Display On */
LCD_CtrlWrite_D15G17E(0x13);
/* Interface Pixel Format */
LCD_CtrlWrite_D15G17E(0x3A);
LCD_DataWrite_D15G17E(0x05); // 16bits/pixel, 65K color
/* Memery Access Control */
LCD_CtrlWrite_D15G17E(0x36);
#ifdef __GD85_TCL_DRV_LCD_D15G17E_EPSON_2__
LCD_DataWrite_D15G17E(0x48); /* RGB 0x00 BGR 0x08 */
#else /* !EPSON_1 */
LCD_DataWrite_D15G17E(0x88); /* RGB 0x00 BGR 0x08 */
#endif /* EPSON_2 */
/* Page Address Set */
LCD_CtrlWrite_D15G17E(LCD_PAGE_ADDRESS_SET_D15G17E); // 0x2B
LCD_DataWrite_D15G17E(0x00); // Start
LCD_DataWrite_D15G17E(0x7F); // End
/* Column Address Set */
LCD_CtrlWrite_D15G17E(LCD_COLUMN_ADDRESS_SET_D15G17E); // 0x2A
LCD_DataWrite_D15G17E(0x00); // Start
LCD_DataWrite_D15G17E(0x7F); // End
LCD_Delay(100); // Wait
/* EXIT Sleep Mode */
LCD_CtrlWrite_D15G17E(LCD_EXIT_SLEEP_D15G17E); // 0x11
LCD_blockClear_D15G17E(0+2, 2, LCD_WIDTH-1+2, LCD_HEIGHT+1, background);
/* Display On */
LCD_CtrlWrite_D15G17E(LCD_DISPLAY_ON_D15G17E); // 0x29
/* No Operation */
LCD_CtrlWrite_D15G17E(LCD_NOP_D15G17E); // 0xAA
LCD_Delay(100);
}
/****************************************************************************
FUNCTION NAME : LCD_EnterSleep
PURPOSE : This function is to make LCD enter sleep mode.
INPUT PARAMETERS : void
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_EnterSleep_D15G17E(void)
{
// LCD_CtrlWrite_D15G17E(LCD_ENTER_SLEEP_D15G17E);
LCD_CtrlWrite_D15G17E(LCD_DISPLAY_OFF_D15G17E);
}
/****************************************************************************
FUNCTION NAME : LCD_ExitSleep
PURPOSE : This function is to make LCD exit sleep mode.
INPUT PARAMETERS : void
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_ExitSleep_D15G17E(void)
{
// LCD_CtrlWrite_D15G17E(LCD_EXIT_SLEEP_D15G17E);
LCD_CtrlWrite_D15G17E(LCD_DISPLAY_ON_D15G17E);
}
/****************************************************************************
FUNCTION NAME : LCD_PWRON
PURPOSE : This function is to power on/off LCD.
INPUT PARAMETERS : kal_bool
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_PWRON_D15G17E(kal_bool on)
{
if(on)
{
LCD_ExitSleep_D15G17E();
}
else
{
LCD_EnterSleep_D15G17E();
}
}
/****************************************************************************
FUNCTION NAME : LCD_SetContrast
PURPOSE : This function is to set LCD contrast.
INPUT PARAMETERS : kal_uint8
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_SetContrast_D15G17E(kal_uint8 voltage)
{
if (voltage > 127)
voltage = 127;
LCD_CtrlWrite_D15G17E(LCD_CONTRAST_SET_D15G17E);
LCD_DataWrite_D15G17E(voltage);
}
/****************************************************************************
FUNCTION NAME : LCD_ON
PURPOSE : This function is to turn on/off LCD panel.
INPUT PARAMETERS : kal_bool
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_ON_D15G17E(kal_bool on)
{
if (on)
{
LCD_CtrlWrite_D15G17E(LCD_DISPLAY_ON_D15G17E);
}
else
{
LCD_CtrlWrite_D15G17E(LCD_DISPLAY_OFF_D15G17E);
}
}
/****************************************************************************
FUNCTION NAME : LCD_BlockWrite
PURPOSE : This function is to
INPUT PARAMETERS : kal_uint16(startx, starty, endx, endy)
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_BlockWrite_D15G17E(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
kal_uint16 l_startx=startx+2, l_starty=starty+2, l_endx=endx+2, l_endy=endy+2;
#if ( (defined(MT6205B)) || (defined(MT6218)) )
#ifndef LCD_DMAENABLE
kal_uint16 x, y;
#else /* !LCD_DMAENABLE */
kal_uint32 addr;
#endif /* LCD_DMAENABLE */
#endif /* (defined(MT6205B)) || (defined(MT6218)) */
#if ( (defined(MT6205)) || (defined(MT6208)) || (defined(FPGA)) )
kal_uint16 x, y;
#endif /* (MT6205, MT6208, FPGA) */
ASSERT(lcd_assert_fail==KAL_FALSE);
lcd_assert_fail = KAL_TRUE;
LCD_Set_X_Addr_D15G17E(l_startx, l_endx);
LCD_Set_Y_Addr_D15G17E(l_starty, l_endy);
LCD_CtrlWrite_D15G17E(LCD_RAM_WRITE_D15G17E);
#if ( (defined(MT6205B)) || (defined(MT6218)) )
addr=get_lcd_frame_buffer_address();
#ifdef LCD_DMAENABLE
ASSERT(DRV_Reg(LCD_REFR)==0x00);
addr += ((starty*LCD_WIDTH+startx)<<1);
#ifdef MT6218
DRV_WriteReg(LCD_MSBSRC,(kal_uint16)(addr >> 16));
#else /* MT6218 */
DRV_WriteReg(LCD_MSBSRC,(kal_uint16)((addr >> 16)|0x0080));
#endif /* !MT6218 */
DRV_WriteReg(LCD_LSBSRC,(kal_uint16)addr);
DRV_WriteReg(LCD_REFR,0x0000);
DRV_WriteReg(LCD_MSBDST, (kal_uint16)(LCD_DATAAddr >> 16));
DRV_WriteReg(LCD_LSBDST, (kal_uint16)(LCD_DATAAddr));
DRV_WriteReg(LCD_CADDRSET, (kal_uint16)((endx - startx + 1)*2));
DRV_WriteReg(LCD_PADDRSET, (kal_uint16)(endy - starty + 1));
DRV_WriteReg(LCD_CHOP,(kal_uint16)((LCD_WIDTH - (endx - startx + 1))*2));
/* 8 bit bus */
DRV_WriteReg(LCD_PCON, (0x0000));
DRV_WriteReg(LCD_START, LCD_START_BIT);
while(DRV_Reg(LCD_GSTA) & LCD_GSTA_PRUN);
DRV_WriteReg(LCD_START, LCD_STOP_BIT);
DRV_WriteReg(LCD_PCON, (0x0000));
#else /* LCD_DMAENABLE */
for(y=l_starty;y<=l_endy;y++)
for(x=l_startx;x<=l_endx;x++)
{
LCD_RAMWrite_D15G17E((kal_uint16)lcd_shadow_buffer[y][x]);
}
#endif /* !LCD_DMAENABLE */
#endif /* (defined(MT6205B)) || (defined(MT6218)) */
#if (defined(MT6218B)||defined(MT6219)|| defined(MT6217)) //20050413 yguangyong added 6217 option
#ifdef LCD_CMD_DMA_MODE
#else
ENABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
#endif
#endif /* MT6218B, MT6219 */
lcd_assert_fail = KAL_FALSE;
}
/****************************************************************************
FUNCTION NAME : LCD_Size_ST7565
PURPOSE : This function is to set Sub_LCD width and height.
INPUT PARAMETERS : kal_uint16(width, height)
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_Size_D15G17E(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height)
{
*out_LCD_width = LCD_WIDTH;
*out_LCD_height = LCD_HEIGHT;
}
/* Engineering mode */
/****************************************************************************
FUNCTION NAME : LCD_GetParm
PURPOSE : This function is to obtain the parameter numbers
for engineering mode APIs.
INPUT PARAMETERS : lcd_func_type
OUTPUT PARAMETERS : kal_uint8
*****************************************************************************/
kal_uint8 LCD_GetParm_D15G17E(lcd_func_type type)
{
switch(type)
{
case lcd_Bais_func:
return 1;
case lcd_Contrast_func:
return 1;
case lcd_LineRate_func:
return 1;
case lcd_Temperature_Compensation_func:
return 1;
default:
ASSERT(0);
return 100;
}
}
/****************************************************************************
FUNCTION NAME : LCD_SetBias
PURPOSE : This function is to setup LCD bias.
INPUT PARAMETERS : kal_uint8
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_SetBias_D15G17E(kal_uint8 *bias)
{
LCD_CtrlWrite_D15G17E(LCD_BIAS_SET_D15G17E);
LCD_DataWrite_D15G17E(*bias);
}
/****************************************************************************
FUNCTION NAME : LCD_Contrast
PURPOSE : This function is setup LCD contrast. Basically,
it is the same as BrightLevel function.
INPUT PARAMETERS : kal_uint8
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_Contrast_D15G17E(kal_uint8 *contrast)
{
//if (*contrast > 127)
//*contrast = 127;
LCD_CtrlWrite_D15G17E(LCD_CONTRAST_SET_D15G17E);
LCD_DataWrite_D15G17E((*contrast)&0x7F);
}
/****************************************************************************
FUNCTION NAME : LCD_LineRate
PURPOSE : This function is to setup LCD frame refresh
rate.
INPUT PARAMETERS : kal_uint8
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_LineRate_D15G17E(kal_uint8 *linerate)
{
LCD_CtrlWrite_D15G17E(LCD_NLINE_INVERSION_SET_D15G17E);
LCD_DataWrite_D15G17E(*linerate);
}
/****************************************************************************
FUNCTION NAME : LCD_Temp_Compensate
PURPOSE : This function is to setup LCD temperature compensation.
INPUT PARAMETERS : kal_uint8
OUTPUT PARAMETERS : void
*****************************************************************************/
void LCD_Temp_Compensate_D15G17E(kal_uint8 *compensate)
{
LCD_CtrlWrite_D15G17E(LCD_TEMP_COMPENSATION_SET_D15G17E);
LCD_DataWrite_D15G17E(*compensate&0x03);
}
LCD_Funcs LCD_func_D15G17E = {
LCD_Init_D15G17E,
LCD_PWRON_D15G17E,
LCD_SetContrast_D15G17E,
LCD_ON_D15G17E,
LCD_BlockWrite_D15G17E,
LCD_Size_D15G17E,
LCD_EnterSleep_D15G17E,
LCD_ExitSleep_D15G17E,
0,
0,
0,
/*Engineering mode*/
LCD_GetParm_D15G17E,
LCD_SetBias_D15G17E,
LCD_Contrast_D15G17E,
LCD_LineRate_D15G17E,
LCD_Temp_Compensate_D15G17E
};
#endif //#if ( (defined(__GD85_TCL_DRV_LCD_D15G17E_EPSON_1__)) || (defined(__GD85_TCL_DRV_LCD_D15G17E_EPSON_2__)))
/* SAMSUNG S6B33B0A ***********************************************************/
/* 128x128(65K), Parallel i/o, COG Type */
/***************************************************************************/
#if (defined (__GD85_TCL_DRV_LCD_S6B33B0A_SAMSUNG__))
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -