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

📄 lcd.c

📁 MTK平台的多种LCD驱动
💻 C
📖 第 1 页 / 共 5 页
字号:
  	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 + -