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

📄 lcd.c.bak

📁 mtk 6226 平台 液晶驱动程序源代码
💻 BAK
📖 第 1 页 / 共 4 页
字号:
			SET_LCD_CMD_PARAMETER(4,LCD_DATA, (0xDB00 >> 8));
			SET_LCD_CMD_PARAMETER(5,LCD_DATA, (0xDB00 & 0x00FF));
			LCD_SEND_DMA_CMD(6);
        #elif (defined(LCD_9BIT_MODE))
        #elif (defined(LCD_16BIT_MODE))
            LCD_set_reg(0x0007,0x0037);
            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);
		#elif (defined(LCD_18BIT_MODE))
    		LCD_CtrlWrite_S6D0154(0x0007);
	    	LCD_DataWrite_S6D0154(0x0037);
		    SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0042&0xFF00)<<2)|((0x0042&0xFF)<<1));
		    SET_LCD_CMD_PARAMETER(1,LCD_DATA,((0xDB00&0xFF00)<<2)|((0xDB00&0xFF)<<1));
		    LCD_SEND_DMA_CMD(2);
        #endif
    #else
        LCD_set_reg(0x0007, 0x0037);
        LCD_set_reg(0x0042, 0xDB00);
    #endif
}

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

void LCD_blockClear_S6D0154(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;

	//return;		//lks
	
	x1 -= (x1 & 0x03);
	x2 += (3 - (x2 & 0x03));

	r_color = (data & 0xF800) >> 10;	/* transfer to RGB666 */
	g_color = (data >> 5) & 0x3F;
	b_color = (data & 0x1F) << 1;

	#if (defined(LCD_CMD_DMA_MODE))
		#if (defined(LCD_8BIT_MODE))
			SET_LCD_CMD_PARAMETER(0,LCD_CMD, (0x0044 >> 8));
			SET_LCD_CMD_PARAMETER(1,LCD_CMD, (0x0044 & 0x00FF));

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

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

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

			SET_LCD_CMD_PARAMETER(8,LCD_CMD, (0x0021 >> 8));
			SET_LCD_CMD_PARAMETER(9,LCD_CMD, (0x0021 & 0x00FF));

			SET_LCD_CMD_PARAMETER(10,LCD_DATA, (y1 & 0x00FF));
			SET_LCD_CMD_PARAMETER(11,LCD_DATA, (x1 & 0x00FF));

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

		#elif (defined(LCD_9BIT_MODE))
		#elif (defined(LCD_16BIT_MODE))
#if 0
			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
		    LCD_CtrlWrite_S6D0154(0x0036); 	// horizontal   window send address  
		    LCD_DataWrite_S6D0154(x2);	 

		    LCD_CtrlWrite_S6D0154(0x0037); 	//horizontal   windows start address  
		    LCD_DataWrite_S6D0154(x1);

		    LCD_CtrlWrite_S6D0154(0x0038); 	// vertical windows end address  
		    LCD_DataWrite_S6D0154(y2);

		    LCD_CtrlWrite_S6D0154(0x0039); 	// vertical windows start address  
		    LCD_DataWrite_S6D0154(y1);		

		    LCD_CtrlWrite_S6D0154(0x0020); 		//RAM address set
		    LCD_DataWrite_S6D0154(x1);  		//horizontial address
		    LCD_CtrlWrite_S6D0154(0x0021); 		// RAM address set
		    LCD_DataWrite_S6D0154(y1);		//vertical address

    			LCD_CtrlWrite_S6D0154(0x0022); 
	
		#elif (defined(LCD_18BIT_MODE))
			SET_LCD_CMD_PARAMETER(0,LCD_CMD,((0x0044&0xFF00)<<2)|((0x0044&0xFF)<<1));
			SET_LCD_CMD_PARAMETER(1,LCD_DATA,((x2&0xFF)<<10)|((x1&0xFF)<<1));

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

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

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

			LCD_SEND_DMA_CMD(7);
		#endif
	#else
		LCD_CtrlWrite_S6D0154(0x0044);
		LCD_DataWrite_S6D0154((((x2&0xFF)<<8)|(x1&0xFF)));
		LCD_CtrlWrite_S6D0154(0x0045);
		LCD_DataWrite_S6D0154((((y2&0xFF)<<8)|(y1&0xFF)));
		LCD_CtrlWrite_S6D0154(0x0021);
		LCD_DataWrite_S6D0154((((y1&0xFF)<<8)|(x1&0xFF)));
		LCD_CtrlWrite_S6D0154(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_S6D0154_DATA_ADDR) = (kal_uint8)(data >> 8);
			*((volatile unsigned char *) LCD_S6D0154_DATA_ADDR) = (kal_uint8)(data & 0x00FF);
		#elif (defined(LCD_16BIT_MODE))
			*((volatile unsigned short *) LCD_S6D0154_DATA_ADDR) = data;
		#elif (defined(LCD_18BIT_MODE))
			*((volatile unsigned int *) LCD_S6D0154_DATA_ADDR)=(r_color<<12)|(g_color<<6)|b_color;
		#elif (defined(LCD_9BIT_MODE))
			*((volatile unsigned short *) LCD_S6D0154_DATA_ADDR)=(r_color<<6)|(g_color>>3);
			*((volatile unsigned short *) LCD_S6D0154_DATA_ADDR)=((g_color&0x07)<<6)|b_color;
		#endif
		}
	}
}

void LCD_ClearAll_S6D0154(kal_uint16 data)
{
   LCD_blockClear_S6D0154(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, data);
}

void LCD_Init_S6D0154(kal_uint32 bkground, void **buf_addr)
{
   #if 0	
	    CLEAR_LCD_CTRL_RESET_PIN;
	    LCD_Delay(0x1000);
	     LCD_Delay(0x1000);
	
	     SET_LCD_CTRL_RESET_PIN;
	
		delayms(150); // After Inter-MicroP Program (load OTP)
		// Gamma for CMO 2.8
		LCD_set_reg(0x46,0x95);
		LCD_set_reg(0x47,0x51);
		LCD_set_reg(0x48,0x00);
		LCD_set_reg(0x49,0x36);
		LCD_set_reg(0x4A,0x11);
		LCD_set_reg(0x4B,0x66);
		LCD_set_reg(0x4C,0x14);
		LCD_set_reg(0x4D,0x77);
		LCD_set_reg(0x4E,0x13);
		LCD_set_reg(0x4F,0x4C);
		LCD_set_reg(0x50,0x46);
		LCD_set_reg(0x51,0x46);
		//240x320 window setting
		LCD_set_reg(0x02,0x00); // Column address start2
		LCD_set_reg(0x03,0x00); // Column address start1
		LCD_set_reg(0x04,0x00); // Column address end2
		LCD_set_reg(0x05,0xEF); // Column address end1
		LCD_set_reg(0x06,0x00); // Row address start2
		LCD_set_reg(0x07,0x00); // Row address start1
		LCD_set_reg(0x08,0x01); // Row address end2
		LCD_set_reg(0x09,0x3F); // Row address end1
		// Display Setting
		LCD_set_reg(0x01,0x06); // IDMON=0, INVON=1, NORON=1, PTLON=0
		LCD_set_reg(0x16,0x48); // MY=0, MX=0, MV=0, ML=1, BGR=0, TEON=0
		LCD_set_reg(0x23,0x95); // N_DC=1001 0101
		LCD_set_reg(0x24,0x95); // P_DC=1001 0101
		LCD_set_reg(0x25,0xFF); // I_DC=1111 1111
		LCD_set_reg(0x27,0x06); // N_BP=0000 0110
		LCD_set_reg(0x28,0x06); // N_FP=0000 0110
		LCD_set_reg(0x29,0x06); // P_BP=0000 0110
		LCD_set_reg(0x2A,0x06); // P_FP=0000 0110
		LCD_set_reg(0x2C,0x06); // I_BP=0000 0110
		LCD_set_reg(0x2D,0x06); // I_FP=0000 0110
		LCD_set_reg(0x3A,0x01); // N_RTN=0000, N_NW=001
		LCD_set_reg(0x3B,0x01); // P_RTN=0000, P_NW=001
		LCD_set_reg(0x3C,0xF0); // I_RTN=1111, I_NW=000
		LCD_set_reg(0x3D,0x00); // DIV=00
		delayms(20);
		LCD_set_reg(0x35,0x38); // EQS=38h
		LCD_set_reg(0x36,0x78); // EQP=78h
		LCD_set_reg(0x3E,0x38); // SON=38h
		LCD_set_reg(0x40,0x0F); // GDON=0Fh
		LCD_set_reg(0x41,0xF0); // GDOFF
		// Power Supply Setting
		LCD_set_reg(0x19,0x49); // OSCADJ=10 0000, OSD_EN=1 //60Hz
		LCD_set_reg(0x93,0x0C); // RADJ=1100
		delayms(10);
		LCD_set_reg(0x20,0x40); // BT=0100
		LCD_set_reg(0x1D,0x07); // VC1=111
		LCD_set_reg(0x1E,0x00); // VC3=000
		LCD_set_reg(0x1F,0x04); // VRH=0100
		// VCOM Setting for CMO 2.8” Panel
		LCD_set_reg(0x44,0x4D); // VCM=101 0000
		LCD_set_reg(0x45,0x11); // VDV=1 0001
		delayms(10);
		LCD_set_reg(0x1C,0x04); // AP=100
		delayms(20);
		LCD_set_reg(0x1B,0x18); // GASENB=0, PON=1, DK=1, XDK=0, DDVDH_TRI=0, STB=0
		delayms(40);
		LCD_set_reg(0x1B,0x10); // GASENB=0, PON=1, DK=0, XDK=0, DDVDH_TRI=0, STB=0
		delayms(40);
		LCD_set_reg(0x43,0x80); //Set VCOMG=1
		delayms(100);
		// Display ON Setting
		LCD_set_reg(0x90,0x7F); // SAP=0111 1111
		LCD_set_reg(0x26,0x04); //GON=0, DTE=0, D=01
		delayms(40);
		LCD_set_reg(0x26,0x24); //GON=1, DTE=0, D=01
		LCD_set_reg(0x26,0x2C); //GON=1, DTE=0, D=11
		delayms(40);
		LCD_set_reg(0x26,0x3C); //GON=1, DTE=1, D=11
		// Set internal VDDD voltage
		LCD_set_reg(0x0057,0x0002); //Test_Mode Enable
		LCD_set_reg(0x0055,0x0000); //VDC_SEL=000, VDDD=1.95V
		LCD_set_reg(0x00FE,0x005A); //For ESD protection
		LCD_set_reg(0x0095,0x0001); // Set Display clock and Pumping clock to synchronize
		LCD_set_reg(0x0057,0x0000); // Test_Mode Disable

		LCD_CtrlWrite_S6D0154(0x22);

	#endif
	#if 1
    CLEAR_LCD_CTRL_RESET_PIN;
	LCD_Delay(0x1000);
	LCD_Delay(0x1000);
	
	SET_LCD_CTRL_RESET_PIN;
	LCD_Delay(0x1000);
	LCD_Delay(0x1000);
	
	LCD_CtrlWrite_S6D0154(0x46);	LCD_DataWrite_S6D0154(0x0095); 
    LCD_CtrlWrite_S6D0154(0x47);	LCD_DataWrite_S6D0154(0x0051);
	LCD_CtrlWrite_S6D0154(0x48);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x49);	LCD_DataWrite_S6D0154(0x0036);
	LCD_CtrlWrite_S6D0154(0x4a);	LCD_DataWrite_S6D0154(0x0011);
	LCD_CtrlWrite_S6D0154(0x4b);	LCD_DataWrite_S6D0154(0x0066);
	LCD_CtrlWrite_S6D0154(0x4c);	LCD_DataWrite_S6D0154(0x0014);
	LCD_CtrlWrite_S6D0154(0x4d);	LCD_DataWrite_S6D0154(0x0077);
	LCD_CtrlWrite_S6D0154(0x4e);	LCD_DataWrite_S6D0154(0x0013);
	LCD_CtrlWrite_S6D0154(0x4f);	LCD_DataWrite_S6D0154(0x004c);
	LCD_CtrlWrite_S6D0154(0x50);	LCD_DataWrite_S6D0154(0x0046);
	LCD_CtrlWrite_S6D0154(0x51);	LCD_DataWrite_S6D0154(0x0046);
	
	LCD_CtrlWrite_S6D0154(0x02);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x03);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x04);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x05);	LCD_DataWrite_S6D0154(0x00ef);
	LCD_CtrlWrite_S6D0154(0x06);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x07);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x08);	LCD_DataWrite_S6D0154(0x0001);
	LCD_CtrlWrite_S6D0154(0x09);	LCD_DataWrite_S6D0154(0x003f);
	
	LCD_CtrlWrite_S6D0154(0x01);	LCD_DataWrite_S6D0154(0x0006);
	LCD_CtrlWrite_S6D0154(0x16);	LCD_DataWrite_S6D0154(0x00c8);
	LCD_CtrlWrite_S6D0154(0x23);	LCD_DataWrite_S6D0154(0x0095);
	LCD_CtrlWrite_S6D0154(0x24);	LCD_DataWrite_S6D0154(0x0095);
	LCD_CtrlWrite_S6D0154(0x25);	LCD_DataWrite_S6D0154(0x00FF);
	LCD_CtrlWrite_S6D0154(0x27);	LCD_DataWrite_S6D0154(0x0006);
	LCD_CtrlWrite_S6D0154(0x28);	LCD_DataWrite_S6D0154(0x0006);
	LCD_CtrlWrite_S6D0154(0x29);	LCD_DataWrite_S6D0154(0x0006);
	LCD_CtrlWrite_S6D0154(0x2a);	LCD_DataWrite_S6D0154(0x0006);
	LCD_CtrlWrite_S6D0154(0x2c);	LCD_DataWrite_S6D0154(0x0006);
	LCD_CtrlWrite_S6D0154(0x2d);	LCD_DataWrite_S6D0154(0x0006);
	LCD_CtrlWrite_S6D0154(0x3a);	LCD_DataWrite_S6D0154(0x0001);
	LCD_CtrlWrite_S6D0154(0x3b);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x3c);	LCD_DataWrite_S6D0154(0x00f0);
	LCD_CtrlWrite_S6D0154(0x3d);	LCD_DataWrite_S6D0154(0x0000);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x35);	LCD_DataWrite_S6D0154(0x0038);
	LCD_CtrlWrite_S6D0154(0x36);	LCD_DataWrite_S6D0154(0x0078);
	LCD_CtrlWrite_S6D0154(0x3E);	LCD_DataWrite_S6D0154(0x0038);
	LCD_CtrlWrite_S6D0154(0x40);	LCD_DataWrite_S6D0154(0x000F);
	LCD_CtrlWrite_S6D0154(0x41);	LCD_DataWrite_S6D0154(0x00F0);
	
	LCD_CtrlWrite_S6D0154(0x19);	LCD_DataWrite_S6D0154(0x0049);
	LCD_CtrlWrite_S6D0154(0x93);	LCD_DataWrite_S6D0154(0x000C);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x20);	LCD_DataWrite_S6D0154(0x0040);
	LCD_CtrlWrite_S6D0154(0x1D);	LCD_DataWrite_S6D0154(0x0007);
	LCD_CtrlWrite_S6D0154(0x1E);	LCD_DataWrite_S6D0154(0x0000);
	LCD_CtrlWrite_S6D0154(0x1F);	LCD_DataWrite_S6D0154(0x0004);
	
	LCD_CtrlWrite_S6D0154(0x44);	LCD_DataWrite_S6D0154(0x004D);
	LCD_CtrlWrite_S6D0154(0x45);	LCD_DataWrite_S6D0154(0x0011);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x1C);	LCD_DataWrite_S6D0154(0x0004);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x43);	LCD_DataWrite_S6D0154(0x0080);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x1B);	LCD_DataWrite_S6D0154(0x0018);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x1B);	LCD_DataWrite_S6D0154(0x0010);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x90);	LCD_DataWrite_S6D0154(0x007F);
	LCD_CtrlWrite_S6D0154(0x26);	LCD_DataWrite_S6D0154(0x0004);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x26);	LCD_DataWrite_S6D0154(0x0024);
	LCD_CtrlWrite_S6D0154(0x26);	LCD_DataWrite_S6D0154(0x002C);
	delayms(80);
	LCD_CtrlWrite_S6D0154(0x26);	LCD_DataWrite_S6D0154(0x003C);
	
	LCD_CtrlWrite_S6D0154(0x57);	LCD_DataWrite_S6D0154(0x0002);
	LCD_CtrlWrite_S6D0154(0x95);	LCD_DataWrite_S6D0154(0x0002);
	LCD_CtrlWrite_S6D0154(0x57);	LCD_DataWrite_S6D0154(0x0000);
	
	LCD_CtrlWrite_S6D0154(0x22);	//LCD_DataWrite_S6D0154(0x0038);
	#endif
}

void LCD_PWRON_S6D0154(kal_bool on)
{
}

void LCD_SetContrast_S6D0154(kal_uint8 level)
{
}

void LCD_ON_S6D0154(kal_bool on)
{
}

void LCD_BlockWrite_S6D0154(kal_uint16 startx,kal_uint16 starty,kal_uint16 endx,kal_uint16 endy)
{
        kal_uint8 counter = 0 ,cnt = 0 ;
	while (LCD_IS_RUNNING);

//   ASSERT(lcd_assert_fail==KAL_FALSE);
    lcd_assert_fail = KAL_TRUE;
	#ifdef LCD_CMD_DMA_MODE
		#if (defined(LCD_8BIT_MODE))
/*
	//   SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x11);
     //  delayms(600);
//	SET_LCD_CMD_PARAMETER(counter++,LCD_CMD,0x29);
	SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x05);
	SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x10);
	
	SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x45);
	SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,(startx)&0xff);

	SET_LCD_CMD_PARAMETER(cnt++,LCD_CMD,0x46);

⌨️ 快捷键说明

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