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

📄 lcd.c

📁 流行的MTK平台手机的lcd驱动源代码
💻 C
📖 第 1 页 / 共 3 页
字号:

                     SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x00);
                     SET_LCD_CMD_PARAMETER(1,LCD_CMD,0x07);
			SET_LCD_CMD_PARAMETER(2,LCD_DATA,0x02);
                     SET_LCD_CMD_PARAMETER(3,LCD_DATA,0x33);
			LCD_SEND_DMA_CMD(4);		
		       Delayms(50);
			   
		#elif (defined(LCD_9BIT_MODE))
		#elif (defined(LCD_18BIT_MODE))
		//ywm++ 20060525
		#elif (defined(LCD_16BIT_MODE))
               #if 0
			//SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0000);
			//SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
			//LCD_SEND_DMA_CMD(2);
		       //Delayms(50);
			   
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x6060);
			LCD_SEND_DMA_CMD(2);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0018);
			LCD_SEND_DMA_CMD(2);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0013);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x2410);
			LCD_SEND_DMA_CMD(2);

			//SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
			//SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x6060);
                   //LCD_SEND_DMA_CMD(2);
                      Delayms(50);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
			LCD_SEND_DMA_CMD(2);
		       Delayms(50);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0021);
			LCD_SEND_DMA_CMD(2);
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0027);
			LCD_SEND_DMA_CMD(2);
		       Delayms(50);

			
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0037);
			LCD_SEND_DMA_CMD(2);
		//ywm-- 20060525
	       #endif
//R61503B BY LUDAN 2006.11.6
                     SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0000);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
			LCD_SEND_DMA_CMD(2);
		       Delayms(50);
			   
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x12B0);
			LCD_SEND_DMA_CMD(2);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0010);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x12B0);
			LCD_SEND_DMA_CMD(2);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0011);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0000);
			LCD_SEND_DMA_CMD(2);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0117);
			LCD_SEND_DMA_CMD(2);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0013);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x8A07);
			LCD_SEND_DMA_CMD(2);

			Delayms(50);


			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0137);
			LCD_SEND_DMA_CMD(2);
                     Delayms(50);	

			

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0001);
			LCD_SEND_DMA_CMD(2);
                     Delayms(50);


                     SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0021);
			LCD_SEND_DMA_CMD(2);
                    Delayms(50);

			SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0012);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x1137);
			LCD_SEND_DMA_CMD(2);
                     Delayms(50);	
					 

                     SET_LCD_CMD_PARAMETER(0,LCD_CMD,0x0007);
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,0x0233);
			LCD_SEND_DMA_CMD(2);
		
		       Delayms(50);
		#endif

		//LUDAN
	#else
		LCD_CtrlWrite_R61500(0x0010);
		LCD_DataWrite_R61500(lcd_power_ctrl_shadow1);
		LCD_CtrlWrite_R61500(0x0012);
		LCD_DataWrite_R61500(lcd_power_ctrl_shadow3);
		LCD_CtrlWrite_R61500(0x0013);
		LCD_DataWrite_R61500(lcd_power_ctrl_shadow4);
		LCD_CtrlWrite_R61500(0x0007);
		LCD_DataWrite_R61500(0x0005);
		Delayms(0x1000);
		LCD_CtrlWrite_R61500(0x0007);
		LCD_DataWrite_R61500(0x0025);
		LCD_CtrlWrite_R61500(0x0007);
		LCD_DataWrite_R61500(0x0027);
		Delayms(0x1000);
		LCD_CtrlWrite_R61500(0x0007);
		LCD_DataWrite_R61500(0x0037);
		Delayms(0x1000);
	#endif
}


void LCD_Partial_On_R61500(kal_uint16 start_page,kal_uint16 end_page)
{
	#if (defined(LCD_CMD_DMA_MODE))
		#if (defined(LCD_8BIT_MODE))    //ywm++ 20070207 for 8 bit trans
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00)>>8 ) );
			SET_LCD_CMD_PARAMETER(1,LCD_CMD,(0x0042&0xFF));
			SET_LCD_CMD_PARAMETER(2,LCD_DATA,((end_page&0xFF00) >>8));
			SET_LCD_CMD_PARAMETER(3,LCD_DATA,(end_page&0xFF) );

			LCD_SEND_DMA_CMD(4);
			
		#elif (defined(LCD_9BIT_MODE))
		#elif (defined(LCD_18BIT_MODE))
		#elif (defined(LCD_16BIT_MODE))
		
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00) )|((0x0042&0xFF) ));
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,((end_page&0xFF) <<8)|((start_page&0xFF) ));
			LCD_SEND_DMA_CMD(2);
		#endif
	#else
		LCD_CtrlWrite_R61500(0x0042);
		LCD_DataWrite_R61500((start_page&0xFF)|((end_page&0xFF)<<8));
	#endif
}

void LCD_Partial_Off_R61500(void)
{
	#if (defined(LCD_CMD_DMA_MODE))
		#if (defined(LCD_8BIT_MODE))   //ywm++ 20070207 for 8 bit trans
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00) >>8 ));
			SET_LCD_CMD_PARAMETER(1,LCD_CMD,(0x0042&0xFF) );
			SET_LCD_CMD_PARAMETER(2,LCD_DATA,((0xDB00&0xFF00) >>8));
			SET_LCD_CMD_PARAMETER(3,LCD_DATA,(0xDB00&0xFF) );
			LCD_SEND_DMA_CMD(4);
		#elif (defined(LCD_9BIT_MODE))
		#elif (defined(LCD_18BIT_MODE))
		#elif (defined(LCD_16BIT_MODE))
		
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00) )|((0x0042&0xFF) ));
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0xDB00&0xFF00) )|((0xDB00&0xFF) ));
			LCD_SEND_DMA_CMD(2);
		#endif
	#else
		LCD_CtrlWrite_R61500(0x0042);
		LCD_DataWrite_R61500(0xDB00);
	#endif
}

kal_uint8 LCD_Partial_line_R61500(void)
{
	return 1;		/* partial display in 1 line alignment */
}


void LCD_blockClear_R61500(kal_uint16 x1,kal_uint16 y1,kal_uint16 x2,kal_uint16 y2,kal_uint16 data)
{
	kal_uint16 LCD_x;
	kal_uint16 LCD_y;
	kal_uint8 r_color,g_color,b_color;

	r_color=(data&0xF800)>>11;	/* transfer to RGB565 by wj */
	g_color=(data>>5)&0x3F;
	b_color=((data)&0x1F) ;
	#if (defined(LCD_CMD_DMA_MODE))
		#if (defined(LCD_8BIT_MODE))  //ywm++ 20070207 for 8 bit trans
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00)>>8));
			SET_LCD_CMD_PARAMETER(1,LCD_CMD,(0x0044&0xFF));

			
			SET_LCD_CMD_PARAMETER(2,LCD_DATA,(x2&0xFF) );
			SET_LCD_CMD_PARAMETER(3,LCD_DATA,(x1&0xFF) );

			SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0045&0xFF00)>>8 ));
			SET_LCD_CMD_PARAMETER(5,LCD_CMD,(0x0045&0xFF) );

			
			SET_LCD_CMD_PARAMETER(6,LCD_DATA,(y2&0xFF));
			SET_LCD_CMD_PARAMETER(7,LCD_DATA,(y1&0xFF));

			SET_LCD_CMD_PARAMETER(8,LCD_CMD,((0x0021&0xFF00)>>8 ));
			SET_LCD_CMD_PARAMETER(9,LCD_CMD,(0x0021&0xFF) );
			
			SET_LCD_CMD_PARAMETER(10,LCD_DATA,(y1&0xFF));
			SET_LCD_CMD_PARAMETER(11,LCD_DATA,(x1&0xFF) );

			SET_LCD_CMD_PARAMETER(12,LCD_CMD,((0x0022&0xFF00)>>8 ));
			SET_LCD_CMD_PARAMETER(13,LCD_CMD,(0x0022&0xFF) );

			LCD_SEND_DMA_CMD(14);
		
		#elif (defined(LCD_9BIT_MODE))	
		#elif (defined(LCD_18BIT_MODE))
		#elif (defined(LCD_16BIT_MODE))
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00) )|((0x0044&0xFF) ));
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,((x2&0xFF) <<8)|((x1&0xFF) ));

			SET_LCD_CMD_PARAMETER(2,LCD_CMD,((0x0045&0xFF00) )|((0x0045&0xFF) ));
			SET_LCD_CMD_PARAMETER(3,LCD_DATA,((y2&0xFF) <<8)|((y1&0xFF) ));

			SET_LCD_CMD_PARAMETER(4,LCD_CMD,((0x0021&0xFF00) )|((0x0021&0xFF) ));
			SET_LCD_CMD_PARAMETER(5,LCD_DATA,((y1&0xFF) <<8)|((x1&0xFF) ));

			SET_LCD_CMD_PARAMETER(6,LCD_CMD,((0x0022&0xFF00) )|((0x0022&0xFF) ));

			LCD_SEND_DMA_CMD(7);
		#endif
	#else
		LCD_CtrlWrite_R61500(0x0044);
		LCD_DataWrite_R61500((((x2&0xFF)<<8)|(x1&0xFF)));
		LCD_CtrlWrite_R61500(0x0045);
		LCD_DataWrite_R61500((((y2&0xFF)<<8)|(y1&0xFF)));
		LCD_CtrlWrite_R61500(0x0021);
		LCD_DataWrite_R61500((((y1&0xFF)<<8)|(x1&0xFF)));
		LCD_CtrlWrite_R61500(0x0022);
	#endif

	for(LCD_y=y1;LCD_y<=y2;LCD_y++)
	{
		for(LCD_x=x1;LCD_x<=x2;LCD_x++)
		{
		#if (defined(LCD_8BIT_MODE))
			*((volatile unsigned char *) LCD_R61500_DATA_ADDR)=(kal_uint8)((data&0xFF00)>>8);
			*((volatile unsigned char *) LCD_R61500_DATA_ADDR)=(kal_uint8)(data&0xFF);
		#elif (defined(LCD_16BIT_MODE))
			*((volatile unsigned short *) LCD_R61500_DATA_ADDR)=data;
		#elif (defined(LCD_18BIT_MODE))
			*((volatile unsigned int *) LCD_R61500_DATA_ADDR)=(r_color<<12)|(g_color<<6)|b_color;
//				*((volatile unsigned int *) LCD_R61500_DATA_ADDR)=(kal_uint16) data;
		#elif (defined(LCD_9BIT_MODE))
			*((volatile unsigned short *) LCD_R61500_DATA_ADDR)=(r_color<<6)|(g_color>>3);
			*((volatile unsigned short *) LCD_R61500_DATA_ADDR)=((g_color&0x07)<<6)|b_color;
		#endif
		}
	}
}

void LCD_ClearAll_R61500(kal_uint16 data)
{
   LCD_blockClear_R61500(0,0,LCD_WIDTH-1,LCD_HEIGHT-1,data);
}

void LCD_set_reg(kal_uint16 reg_index, kal_uint16 reg_data)
{
	LCD_CtrlWrite_R61500(reg_index);
	LCD_DataWrite_R61500(reg_data);
}

//zy++ 20060428
#if 0
void   LcdWriteCMD16Bit(U16 parameter)
{
   U16      temp16;

   temp16 = (TXD + ADS_LOW) << CPU16BITDATA;
   *(volatile U16*)(LCD_Base + temp16) = parameter;

   asm(" nop");
   asm(" nop");
   
}


void   LcdWriteDATA16Bit(U16 parameter)
{
   U16      temp16;

   temp16 = (TXD + ADS_HIGH) << CPU16BITDATA;
   *(volatile U16*)(LCD_Base + temp16) = parameter;
	asm(" nop");
	asm(" nop");	
   
}
void Initialize_R61500(void)
{
/*
while(1)
  {
  LcdWriteCMD16Bit(0xaaaa); 
  LcdWriteDATA16Bit(0x5555);
 }
*/
   LcdWriteCMD16Bit(LCD_OSC_START_R61500); 
   LcdWriteDATA16Bit(0x0001);

   //WaitTime_us(50000);
   Delayms(50);
   LcdWriteCMD16Bit(LCD_DIS_CTRL1_R61500); 
   LcdWriteDATA16Bit(0x0004);

  //WaitTime_us(10000);
   Delayms(10);

   LcdWriteCMD16Bit(0x0014); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_POWER_CTRL2_R61500); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_POWER_CTRL3_R61500); 
   LcdWriteDATA16Bit(0x0008);

   LcdWriteCMD16Bit(LCD_POWER_CTRL4_R61500); 
   LcdWriteDATA16Bit(0x0410);

   LcdWriteCMD16Bit(LCD_POWER_CTRL1_R61500); 
   LcdWriteDATA16Bit(0x0004);

   LcdWriteCMD16Bit(LCD_POWER_CTRL2_R61500 ); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_POWER_CTRL3_R61500 ); 
   LcdWriteDATA16Bit(0x0018);

   LcdWriteCMD16Bit(LCD_POWER_CTRL1_R61500 ); 
   LcdWriteDATA16Bit(0x0064);

   //WaitTime_us(10000);
   Delayms(10);

   LcdWriteCMD16Bit(LCD_POWER_CTRL1_R61500 ); 
   LcdWriteDATA16Bit(0x0060);

   LcdWriteCMD16Bit(LCD_POWER_CTRL4_R61500 ); 
   LcdWriteDATA16Bit(0x2410);

   //WaitTime_us(10000);
   Delayms(10);

   LcdWriteCMD16Bit(LCD_OUT_CTRL_R61500); 
   LcdWriteDATA16Bit(0x211B);

   LcdWriteCMD16Bit(LCD_DRIVE_WAVE_CTRL_R61500); 
   LcdWriteDATA16Bit(0x0700);

   LcdWriteCMD16Bit(LCD_ENTRY_MODE_R61500); 
   //LcdWriteDATA16Bit(0xD030);
   LcdWriteDATA16Bit(0x1130);
   
   LcdWriteCMD16Bit(LCD_CMP_REG1_R61500); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_CMP_REG2_R61500); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_DIS_CTRL1_R61500 ); 
   LcdWriteDATA16Bit(0x0037);

   LcdWriteCMD16Bit(LCD_DIS_CTRL2_R61500 ); 
   LcdWriteDATA16Bit(0x0302);

   LcdWriteCMD16Bit(LCD_DIS_CTRL3_R61500 ); 
   LcdWriteDATA16Bit(0x0001);

   LcdWriteCMD16Bit(LCD_FRAME_CTRL_R61500); 
   LcdWriteDATA16Bit(0x0083);

   LcdWriteCMD16Bit(LCD_DRIVE_OUT_CTRL1_R61500); 
   LcdWriteDATA16Bit(0x0308);

   LcdWriteCMD16Bit(LCD_DRIVE_OUT_CTRL2_R61500); 
   LcdWriteDATA16Bit(0x0308);

   LcdWriteCMD16Bit(LCD_RAM_ADDRESS_SET_CTRL_R61500); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_RW_RAM_MASK1_R61500 ); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_RW_RAM_MASK2_R61500 ); 
   LcdWriteDATA16Bit(0x0000);

   /*Gamma control*/
   LcdWriteCMD16Bit(LCD_GAMMA_CTRL1_R61500); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL2_R61500); 
   LcdWriteDATA16Bit(0x0507);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL3_R61500); 
   LcdWriteDATA16Bit(0x0200);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL4_R61500); 
   LcdWriteDATA16Bit(0x0300);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL5_R61500 ); 
   LcdWriteDATA16Bit(0x0507);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL6_R61500); 
   LcdWriteDATA16Bit(0x0001);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL7_R61500); 
   LcdWriteDATA16Bit(0x0707);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL8_R61500); 
   LcdWriteDATA16Bit(0x0700);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL9_R61500); 
   LcdWriteDATA16Bit(0x1F01);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL10_R61500); 
   LcdWriteDATA16Bit(0x0A0F);

   LcdWriteCMD16Bit(LCD_GAMMA_CTRL10_R61500); 
   LcdWriteDATA16Bit(0x0000);

   LcdWriteCMD16Bit(LCD_VERTICAL_SCROLL_CTRL_R61500 ); 
   LcdWriteDATA16Bit(0x0000);

⌨️ 快捷键说明

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