📄 lcd.c
字号:
LCD_Delay(150);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R01H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DRC_OUTPUT_CTRL_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R02H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DRV_WAVEFORM_CTRL_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R05H_S6D0123);
LCD_DataWrite_S6D0123(LCD_ERTRY_MODE_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL0_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R08H_S6D0123);
LCD_DataWrite_S6D0123(LCD_BLANK_PERIOD_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R0AH_S6D0123);
LCD_DataWrite_S6D0123(LCD_EXT_INTERFACE_CTRL_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R0BH_S6D0123);
LCD_DataWrite_S6D0123(LCD_FRAME_CYCLE_CTRL_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R0FH_S6D0123);
LCD_DataWrite_S6D0123(LCD_SCAN_POS_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R11H_S6D0123);
LCD_DataWrite_S6D0123(LCD_VERTICAL_SCROLL_CTRL_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R14H_S6D0123);
LCD_DataWrite_S6D0123(LCD_SCREEN_POS_START_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R15H_S6D0123);
LCD_DataWrite_S6D0123(LCD_SCREEN_POS1_START_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R16H_S6D0123);
LCD_DataWrite_S6D0123(LCD_HORIZ_RAM_POS_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R17H_S6D0123);
LCD_DataWrite_S6D0123(LCD_VERTICAL_RAM_POS_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R18H_S6D0123);
LCD_DataWrite_S6D0123(LCD_R18H_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R30H_S6D0123);
LCD_DataWrite_S6D0123(0x0000);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R31H_S6D0123);
LCD_DataWrite_S6D0123(0x0107);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R32H_S6D0123);
LCD_DataWrite_S6D0123(0x0001);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R33H_S6D0123);
LCD_DataWrite_S6D0123(0x0102);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R34H_S6D0123);
LCD_DataWrite_S6D0123(0x0607);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R35H_S6D0123);
LCD_DataWrite_S6D0123(0x0303);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R36H_S6D0123);
LCD_DataWrite_S6D0123(0x0707);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R37H_S6D0123);
LCD_DataWrite_S6D0123(0x0007);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R3AH_S6D0123);
LCD_DataWrite_S6D0123(0x0700);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R3BH_S6D0123);
LCD_DataWrite_S6D0123(0x0700);
LCD_blockClear_S6D0123(0, 0, LCD_WIDTH-1, LCD_HEIGHT-1, 0x001F);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL1_S6D0123);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL2_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL4_S6D0123);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL6_S6D0123);
//////////////////////begin test ////////////////////////
////////////////////////////////////////////////////////////
/*
GPIO_init();// init gpio port
//////////////////////////
GPIO_ModeSetup(22,0);// set gpio22 is io port hirn
GPIO_ModeSetup(4,0);// set gpio4 is io port bypass
GPIO_ModeSetup(3,0);// set gpio4 is io port hrst-n
//GPIO_ModeSetup(19,0);// set gpio2 is io port
GPIO_ModeSetup(24,1);// set gpio4 is io port mb2268 cs
//DSC_ENABLE_MB2168_CLK_TEST;//enable 26M clk
///////////////////begin enable 26 clk//////////////////////////////////////////
// kal_uint32 save_irq_mask;//origal
save_irq_mask=SaveAndSetIRQMask();
// Power on 26MHz //
DRV_Reg(DRVPDN_CON1) &= (~DRVPDN_CON1_TRC);
RestoreIRQMask(save_irq_mask);
GPIO_ModeSetup(43,3); //clk
DRV_Reg(0x80080000) = 0x1008;
//(*(volatile unsigned int *) 0x80080000)=0x1008;//enable cmm_clk
while (1)
{
volatile kal_uint16 i;
*(volatile kal_uint8 *) LCD_PARALLEL1_A0_LOW_ADDR=0xF0;
GPIO_WriteIO(1,22);//test gpio2->hirn
GPIO_WriteIO(1,4);//test gpio4->hbypass
GPIO_WriteIO(1,3);//test gpio3->hbypass
//GPIO_WriteIO(1,19);//test gpio3->hbypass
//GPIO_WriteIO(1,24);//test gpio3->hbypass
for (i=0; i<(500); i++){}
*(volatile kal_uint8 *) LCD_PARALLEL1_A0_LOW_ADDR=0x0F;
GPIO_WriteIO(0,22);//test gpio4->hbypass
GPIO_WriteIO(0,4);//test gpio2->hirn
GPIO_WriteIO(0,3);//test gpio3->hirn
// GPIO_WriteIO(0,19);//test gpio2->hirn
//GPIO_WriteIO(0,24);//test gpio3->hirn
for (i=0; i<(500); i++){}
}
////////////////////////////////////////////////////////////
//////////////////////////end test ////////////////////////
*/
}
void LCD_EnterSleep_S6D0123(void)
{
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL5_S6D0123);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL3_S6D0123);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
}
void LCD_ExitSleep_S6D0123(void)
{
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL1_S6D0123);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL2_S6D0123);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL4_S6D0123);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(120);
LCD_Delay(150);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R07H_S6D0123);
LCD_DataWrite_S6D0123(LCD_DISP_CTRL6_S6D0123);
}
void LCD_PWRON_S6D0123(kal_bool on)
{
if(on)
{
LCD_ExitSleep_S6D0123();
}
else
{
LCD_EnterSleep_S6D0123();
}
}
void LCD_ON_S6D0123(kal_bool on)
{
if (on)
{
LCD_ExitSleep_S6D0123();
}
else
{
LCD_EnterSleep_S6D0123();
}
}
void LCD_Size_S6D0123(kal_uint16 *out_LCD_width,kal_uint16 *out_LCD_height)
{
*out_LCD_width = LCD_WIDTH;
*out_LCD_height = LCD_HEIGHT;
}
kal_uint8 LCD_GetParm_S6D0123(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;
}
}
void LCD_BlockWrite_S6D0123(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
kal_uint16 l_startx = startx+4;
kal_uint16 x, y;
kal_uint32 addr, frame_buff_ptr, pscr, dscr;
kal_uint16 temp1;
#if (defined(LCD_CMD_DMA_MODE))
SET_LCD_CMD_PARAMETER(0,LCD_CMD,LCD_INDEX_R16H_S6D0123>>8);
SET_LCD_CMD_PARAMETER(1,LCD_CMD,LCD_INDEX_R16H_S6D0123);
SET_LCD_CMD_PARAMETER(2,LCD_DATA,((endx+4) & 0xFF00 )>>8)
SET_LCD_CMD_PARAMETER(3,LCD_DATA,((startx+4) & 0xFF00 ))
SET_LCD_CMD_PARAMETER(4,LCD_CMD,LCD_INDEX_R17H_S6D0123>>8);
SET_LCD_CMD_PARAMETER(5,LCD_CMD,LCD_INDEX_R17H_S6D0123);
SET_LCD_CMD_PARAMETER(6,LCD_DATA,(endy & 0xFF00 )>>8)
SET_LCD_CMD_PARAMETER(7,LCD_DATA,(starty & 0xFF00 )>>8)
SET_LCD_CMD_PARAMETER(8,LCD_CMD,LCD_INDEX_R21H_S6D0123>>8);
SET_LCD_CMD_PARAMETER(9,LCD_CMD,LCD_INDEX_R21H_S6D0123);
SET_LCD_CMD_PARAMETER(10,LCD_DATA,(endy & 0xFF00 )>>8)
SET_LCD_CMD_PARAMETER(11,LCD_DATA,(starty & 0xFF00 )>>8)
SET_LCD_CMD_PARAMETER(8,LCD_CMD,LCD_INDEX_R22H_S6D0123>>8);
SET_LCD_CMD_PARAMETER(9,LCD_CMD,LCD_INDEX_R22H_S6D0123);
#else
LCD_Set_Window_Coordinate_S6D0123(startx, starty, endx, endy);
LCD_CtrlWrite_S6D0123(LCD_INDEX_R21H_S6D0123);
LCD_DataWrite_S6D0123(((starty*0x100) + startx + 0x04));
LCD_CtrlWrite_S6D0123(LCD_INDEX_R22H_S6D0123);
ENABLE_LCD_TRANSFER_COMPLETE_INT;
DISABLE_LCD_ROI_CTRL_CMD_FIRST;
while (LCD_IS_RUNNING) {};
START_LCD_TRANSFER;
#endif
// addr = get_lcd_frame_buffer_address();
//
// LCD_Set_Window_Coordinate_S6D0123(0, 0, LCD_WIDTH-1, LCD_HEIGHT-1);
//
// LCD_CtrlWrite_S6D0123(LCD_INDEX_R21H_S6D0123);
// LCD_DataWrite_S6D0123(0x004);
//
// LCD_CtrlWrite_S6D0123(LCD_INDEX_R22H_S6D0123);
//
// for(y=0; y<LCD_HEIGHT; y++)
// {
// for(x=0; x<LCD_WIDTH; x++)
// {
// frame_buff_ptr = addr + (y*LCD_WIDTH+x)*2;
//
// temp1 = (*((kal_uint16 *)frame_buff_ptr));
//
// LCD_RAMWrite_S6D0123(temp1);
// }
// }
// #endif
}
void LCD_Contrast_S6D0123(kal_uint8 *contrast)
{
}
void LCD_LineRate_S6D0123(kal_uint8 *linerate)
{
}
void LCD_Temp_Compensate_S6D0123(kal_uint8 *compensate)
{
}
void LCD_SetBias_S6D0123(kal_uint8 *bias)
{
}
void LCD_SetContrast_S6D0123(kal_uint8 voltage)
{
}
LCD_Funcs LCD_func_S6D0123 = {
LCD_Init_S6D0123,
LCD_PWRON_S6D0123,
LCD_SetContrast_S6D0123,
LCD_ON_S6D0123,
LCD_BlockWrite_S6D0123,
LCD_Size_S6D0123,
LCD_EnterSleep_S6D0123,
LCD_ExitSleep_S6D0123,
0,
0,
0,
/*Engineering mode*/
LCD_GetParm_S6D0123,
LCD_SetBias_S6D0123,
LCD_Contrast_S6D0123,
LCD_LineRate_S6D0123,
LCD_Temp_Compensate_S6D0123
};
#endif //#if (defined(__GD85_1_TCL_DRV_LCD_S6D0123_HITACHI__))
/* BEGIN TCL-xjinming modified for GD85 LCD_MAIN..... */
/* Epson D15G17E ***********************************************************/
/* 128x128(65K), Parallel i/o, COG Type */
/***************************************************************************/
#if ( (defined(__GD85_TCL_DRV_LCD_D15G17E_EPSON_1__)) || (defined(__GD85_TCL_DRV_LCD_D15G17E_EPSON_2__)))
#if (defined(MT6218B)||defined(MT6219)||defined(MT6217))
void init_lcd_interface(void)
{
#ifdef DUAL_LCD
GPIO_ModeSetup(24, 1);
#endif
DRV_Reg(DRVPDN_CON1) &= (~DRVPDN_CON1_LCD); /* Power on LCD */
REG_LCD_ROI_CTRL=0;
CLEAR_LCD_CTRL_RESET_PIN;
#if (defined(MT6218B))
SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)2);
SET_LCD_PARALLEL_CE2WR_HOLD_TIME(2);
SET_LCD_PARALLEL_CE2RD_SETUP_TIME(0);
SET_LCD_PARALLEL_WRITE_WAIT_STATE(6);
SET_LCD_PARALLEL_READ_LATENCY_TIME(2);
SET_LCD_ROI_CTRL_CMD_LATENCY(5);
DISABLE_LCD_PARALLEL_SYNC;
#elif (defined(MT6219))
SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)0);
SET_LCD_PARALLEL_CE2WR_HOLD_TIME(0);
SET_LCD_PARALLEL_CE2RD_SETUP_TIME(0);
SET_LCD_PARALLEL_WRITE_WAIT_STATE(4);
SET_LCD_PARALLEL_READ_LATENCY_TIME(2);
SET_LCD_ROI_CTRL_CMD_LATENCY(2);
DISABLE_LCD_PARALLEL_SYNC;
#elif (defined(MT6217))
//BEGIN 20050623 yguangyong modify for 6217
// SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)0);
// SET_LCD_PARALLEL_CE2WR_HOLD_TIME(0);
// SET_LCD_PARALLEL_CE2RD_SETUP_TIME(0);
// SET_LCD_PARALLEL_WRITE_WAIT_STATE(4);
// SET_LCD_PARALLEL_READ_LATENCY_TIME(2);
// SET_LCD_ROI_CTRL_CMD_LATENCY(2);
SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint32)2);
SET_LCD_PARALLEL_CE2WR_HOLD_TIME(2);
SET_LCD_PARALLEL_CE2RD_SETUP_TIME(0);
SET_LCD_PARALLEL_WRITE_WAIT_STATE(8);
SET_LCD_PARALLEL_READ_LATENCY_TIME(2);
SET_LCD_ROI_CTRL_CMD_LATENCY(5);
//END
SET_LCD_PARALLEL_8BIT_DATA_BUS;
SET_LCD_PARALLEL_CLOCK_52M;
#ifdef DUAL_LCD
SET_LCD_PARALLEL1_CE2WR_SETUP_TIME((kal_uint32)0);
SET_LCD_PARALLEL1_CE2WR_HOLD_TIME(0);
SET_LCD_PARALLEL1_CE2RD_SETUP_TIME(0);
SET_LCD_PARALLEL1_WRITE_WAIT_STATE(4);
SET_LCD_PARALLEL1_READ_LATENCY_TIME(2);
SET_LCD_ROI_CTRL_CMD_LATENCY(2);
#endif
#endif
//LCD_Delay(15);
LCD_Delay(50);
SET_LCD_CTRL_RESET_PIN;
} /* init_lcd_interface() */
#endif /* MT6217, MT6218B, MT6219 */
void LCD_Set_Y_Addr_D15G17E(kal_uint16 start_row, kal_uint16 end_row)
{
LCD_CtrlWrite_D15G17E(LCD_PAGE_ADDRESS_SET_D15G17E); // 0x2B
LCD_DataWrite_D15G17E(start_row);
LCD_DataWrite_D15G17E(end_row);
}
void LCD_Set_X_Addr_D15G17E(kal_uint16 start_column, kal_uint16 end_column)
{
LCD_CtrlWrite_D15G17E(LCD_COLUMN_ADDRESS_SET_D15G17E); //0x2A
LCD_DataWrite_D15G17E(start_column);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -