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

📄 lcd.c

📁 HX8306A LCD 驱动,关于命令初始化等
💻 C
📖 第 1 页 / 共 3 页
字号:
           }	  
#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_HX8306A_DATA_ADDR) = (kal_uint8)(data >> 8);
			*((volatile unsigned char *) LCD_HX8306A_DATA_ADDR) = (kal_uint8)(data & 0x00FF);
		#elif (defined(LCD_16BIT_MODE))
			*((volatile unsigned short *) LCD_HX8306A_DATA_ADDR) = data;
		#elif (defined(LCD_18BIT_MODE))
			*((volatile unsigned int *) LCD_HX8306A_DATA_ADDR)=(r_color<<12)|(g_color<<6)|b_color;
		#elif (defined(LCD_9BIT_MODE))
			*((volatile unsigned short *) LCD_HX8306A_DATA_ADDR)=(r_color<<6)|(g_color>>3);
			*((volatile unsigned short *) LCD_HX8306A_DATA_ADDR)=((g_color&0x07)<<6)|b_color;
		#endif
		}

        }

}	


void LCD_ClearAll_HX8306A(kal_uint16 data)
{
   LCD_blockClear_HX8306A(0, 0, LCD_WIDTH - 1, LCD_HEIGHT - 1, data);
}

void LCD_Init_HX8306A(kal_uint32 bkground, void **buf_addr)
{
	CLEAR_LCD_CTRL_RESET_PIN;
	DELAY_1ms(3);//Delayms(10);
	SET_LCD_CTRL_RESET_PIN;	
	DELAY_1ms(3);//Delayms(10);
	
    lcd_check = 0;
#ifdef LCM_LEAD_L1E2_176x220
         {
	       LCD_CtrlWrite_HX8306A(0x11); 
		DELAY_1ms(20);  //Delay(120);
		 	
		 LCD_CtrlWrite_HX8306A(0xc5); 	 		 	
		 LCD_DataWrite_HX8306A(0x53); 
		 LCD_DataWrite_HX8306A(0x0c);
		 	
		 LCD_CtrlWrite_HX8306A(0xe7); 	 		 	
		 LCD_DataWrite_HX8306A(0x7e);  
      ///////////GAMMA SET////////////
		   
	      LCD_CtrlWrite_HX8306A(0xAA);              
	      LCD_CtrlWrite_HX8306A(0xC0);
		 
	      LCD_DataWrite_HX8306A(0x0C); 
		
	      LCD_CtrlWrite_HX8306A(0xE6);
	      LCD_DataWrite_HX8306A(0x01); 
		 
	      LCD_CtrlWrite_HX8306A(0xE2);
	      LCD_DataWrite_HX8306A(0x17); 
		 
		  LCD_DataWrite_HX8306A(0x0F); 
		  LCD_DataWrite_HX8306A(0x0D);
 		  LCD_DataWrite_HX8306A(0x0D); 
		  LCD_DataWrite_HX8306A(0x09); 
		  LCD_DataWrite_HX8306A(0x0B); 
		  LCD_DataWrite_HX8306A(0x0A); 
		  LCD_DataWrite_HX8306A(0x0E); 
		  LCD_DataWrite_HX8306A(0x09); 
		  LCD_DataWrite_HX8306A(0x17); 
		  LCD_DataWrite_HX8306A(0x0E); 
		  LCD_DataWrite_HX8306A(0x0B); 
		  LCD_DataWrite_HX8306A(0x06); 
                LCD_DataWrite_HX8306A(0x06); 
		  LCD_DataWrite_HX8306A(0x16); 
		  LCD_DataWrite_HX8306A(0x6E); 
		  LCD_DataWrite_HX8306A(0x74); 
		 
                LCD_CtrlWrite_HX8306A(0xE3);
			   
	         LCD_DataWrite_HX8306A(0x15); 
		  LCD_DataWrite_HX8306A(0x11); 
		  LCD_DataWrite_HX8306A(0x13);
 		  LCD_DataWrite_HX8306A(0x17); 
		  LCD_DataWrite_HX8306A(0x14); 
		  LCD_DataWrite_HX8306A(0x13); 
		  LCD_DataWrite_HX8306A(0x0F); 
		  LCD_DataWrite_HX8306A(0x10); 
		  LCD_DataWrite_HX8306A(0x09); 
		  LCD_DataWrite_HX8306A(0x03); 
		  LCD_DataWrite_HX8306A(0x12); 
		  LCD_DataWrite_HX8306A(0x0F); 
		  LCD_DataWrite_HX8306A(0x0B); 
                LCD_DataWrite_HX8306A(0x0A); 
		  LCD_DataWrite_HX8306A(0x03); 
		  LCD_DataWrite_HX8306A(0x49); 
		  LCD_DataWrite_HX8306A(0x4F); 
		 
                LCD_CtrlWrite_HX8306A(0x35);
			   
                LCD_DataWrite_HX8306A(0x01); 
			   
      ///////////DISPLAY SET////////////     	
		  LCD_CtrlWrite_HX8306A(0x3A);	  
	         LCD_DataWrite_HX8306A(0x05); //8BIT,2-transferR-G-B        
	         LCD_CtrlWrite_HX8306A(0x29);
                LCD_CtrlWrite_HX8306A(0x13);   // Normal Display Mode On  janing xu
		}          
#elif defined LCM_LEAD_R61503_176x220
{
#if  1
	LCD_set_reg(0x0000,0x0001);
 	DELAY_1ms(5);//LCD_Delay(20);

	LCD_set_reg(0x0007,0x0000); 
	DELAY_1ms(5);
	
	LCD_set_reg(0x0012,0x0000);
 	DELAY_1ms(3);
	
	LCD_set_reg(0x00A4,0x0001); 
	DELAY_1ms(6);
	
	LCD_set_reg(0x0070,0x1b00);
	LCD_set_reg(0x0008,0x0202);

/*************     Gamma    ***************** */
	LCD_set_reg(0x0030,0x0601); 
	LCD_set_reg(0x0031,0x0507);
	LCD_set_reg(0x0032,0x0006);
	LCD_set_reg(0x0033,0x0701);
	LCD_set_reg(0x0034,0x0105);
	LCD_set_reg(0x0035,0x0004);
	LCD_set_reg(0x0036,0x0605);
	LCD_set_reg(0x0037,0x0002);
	LCD_set_reg(0x0038,0x1c00);
	LCD_set_reg(0x0039,0x0500);
	LCD_set_reg(0x003a,0x0100);
	DELAY_1ms(1);
/*************     Gamma   End ***************** */
       LCD_set_reg(0x0014,0x8000);
	DELAY_1ms(7);//LCD_Delay(30);
	
	LCD_set_reg(0x0001,0x0100);
	LCD_set_reg(0x0002,0x0400);
	LCD_set_reg(0x0003,0x1030);  //HWM=1  0x1030 //ss.pan 2007.11.27 modify
	
	LCD_set_reg(0x0070,0x1b00);
	LCD_set_reg(0x0071,0x0001);
	LCD_set_reg(0x0090,0x0000);
	LCD_set_reg(0x0091,0x0000);
	LCD_set_reg(0x0092,0x0001);
	LCD_set_reg(0x0098,0x0002);
	LCD_set_reg(0x0099,0x060e);
	LCD_set_reg(0x009a,0x060e);
	
	LCD_set_reg(0x0050,0x0000);
	LCD_set_reg(0x0051,0x00af);
	LCD_set_reg(0x0052,0x0000);
	LCD_set_reg(0x0053,0x00db);
	LCD_set_reg(0x0020,0x0000);
	LCD_set_reg(0x0021,0x0000);
	
	LCD_set_reg(0x0007,0x0001);
	LCD_set_reg(0x0018,0x0001);
	LCD_set_reg(0x0010,0x11b0);
	LCD_set_reg(0x0011,0x0001);
	DELAY_1ms(7);
	
	LCD_set_reg(0x0012,0x1111);
	DELAY_1ms(5);
	
	LCD_set_reg(0x0013,0x830c);
	LCD_set_reg(0x0012,0x1131);
	LCD_set_reg(0x0007, 0x0001);
	DELAY_1ms(5);
	
	LCD_set_reg(0x0007,0x0021);
	DELAY_1ms(5);
	LCD_set_reg(0x0007,0x0233);
	#else  //lead对初始化代码作了更新
	LCD_set_reg(0x0000,0x0000);  
LCD_set_reg(0x0000,0x0000);  
LCD_set_reg(0x0000,0x0000);  
LCD_set_reg(0x0000,0x0000);  
LCD_set_reg(0x0000,0x0000);  
LCD_set_reg(0x00A4,0x0001);  
kal_sleep_task(5);           
LCD_set_reg(0x0007,0x0001);  
LCD_set_reg(0x0018,0x0001);  
LCD_set_reg(0x0010,0x11B0);  
LCD_set_reg(0x0011,0x0110);  
LCD_set_reg(0x0012,0x0036);  
LCD_set_reg(0x0013,0x850C);  
LCD_set_reg(0x0012,0x0036);  
LCD_set_reg(0x0014,0x8000);  
LCD_set_reg(0x0001,0x0100);  
LCD_set_reg(0x0002,0x0700);  
LCD_set_reg(0x0003,0x1030); //cancel high speed transfer  
LCD_set_reg(0x0008,0x0808);  
LCD_set_reg(0x0009,0x0000);  
LCD_set_reg(0x000C,0x0000);  
LCD_set_reg(0x000F,0x0000);  
LCD_set_reg(0x0020,0x0000);  
LCD_set_reg(0x0021,0x0000);  
LCD_set_reg(0x0030,0x0305);  
LCD_set_reg(0x0031,0x0002);  
LCD_set_reg(0x0032,0x0100);  
LCD_set_reg(0x0033,0x0102);  
LCD_set_reg(0x0034,0x0706);  
LCD_set_reg(0x0035,0x0606);  
LCD_set_reg(0x0036,0x0304);  
LCD_set_reg(0x0037,0x0200);  
LCD_set_reg(0x0038,0x0000);  
LCD_set_reg(0x0039,0x001F);  
LCD_set_reg(0x003A,0x0000);  
LCD_set_reg(0x0020,0x0000);  
LCD_set_reg(0x0021,0x0000);  
LCD_set_reg(0x0050,0x0000);  
LCD_set_reg(0x0051,0x00AF);  
LCD_set_reg(0x0052,0x0000);  
LCD_set_reg(0x0053,0x00DB);  
LCD_set_reg(0x0070,0x1B00);  
LCD_set_reg(0x0071,0x0001);  
LCD_set_reg(0x007A,0x0000);  
LCD_set_reg(0x0085,0x0000);  
LCD_set_reg(0x0090,0x0008);  
LCD_set_reg(0x0091,0x0100);  
LCD_set_reg(0x0092,0x0001);  
LCD_set_reg(0x0007,0x0001);  
kal_sleep_task(15);          
LCD_set_reg(0x0007,0x0021);  
kal_sleep_task(15);          
LCD_set_reg(0x0012,0x1138);  
kal_sleep_task(15);          
LCD_set_reg(0x0007,0x0233);  

	#endif
	}  /*--end LCM_LEAD_R61503_176x220 --*/

#elif defined(LCM_LEAD_ILI9221_176x220)
{
        LCD_CtrlWrite_HX8306A(0x00); // start internal OSC
        LCD_CtrlWrite_HX8306A(0x00); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x01);

        LCD_CtrlWrite_HX8306A(0x00); // set the display line number and display direction
        LCD_CtrlWrite_HX8306A(0x01); 				
        LCD_DataWrite_HX8306A(0x01);
	 LCD_DataWrite_HX8306A(0x1B);
	 
        LCD_CtrlWrite_HX8306A(0x00);  //SET 1 Line inversion
        LCD_CtrlWrite_HX8306A(0x02); 				
        LCD_DataWrite_HX8306A(0x05);
	 LCD_DataWrite_HX8306A(0x00);

        LCD_CtrlWrite_HX8306A(0x00); //set gram write direction and BGR=1;
        LCD_CtrlWrite_HX8306A(0x03); 				
        LCD_DataWrite_HX8306A(0x10);
	 LCD_DataWrite_HX8306A(0x30);	 

        LCD_CtrlWrite_HX8306A(0x00); //set mask bit
        LCD_CtrlWrite_HX8306A(0x04); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 

        LCD_CtrlWrite_HX8306A(0x00); //set mask bit
        LCD_CtrlWrite_HX8306A(0x05); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 
	 
        LCD_CtrlWrite_HX8306A(0x00); //display off
        LCD_CtrlWrite_HX8306A(0x07); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 
	 
        LCD_CtrlWrite_HX8306A(0x00); //set the back porch and Front porch 
        LCD_CtrlWrite_HX8306A(0x08); 				
        LCD_DataWrite_HX8306A(0x02);
	 LCD_DataWrite_HX8306A(0x02);	 

        LCD_CtrlWrite_HX8306A(0x00); //display control 3
        LCD_CtrlWrite_HX8306A(0x09); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 	 

        LCD_CtrlWrite_HX8306A(0x00); //set clocks number per line
        LCD_CtrlWrite_HX8306A(0x0B); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 
	 
        LCD_CtrlWrite_HX8306A(0x00); //CPU INTERFACE
        LCD_CtrlWrite_HX8306A(0x0C); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 
        
//POWER SET 
        LCD_CtrlWrite_HX8306A(0x00); //SET vgh/vgl,turn off the charge-bump circuit
        LCD_CtrlWrite_HX8306A(0x10); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 
               DELAY_1ms(3);  // Delayms(10);

        LCD_CtrlWrite_HX8306A(0x00); //SET the frequency of charge-pump circuit and reference voltage 
        LCD_CtrlWrite_HX8306A(0x11); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 

        LCD_CtrlWrite_HX8306A(0x00);//SET REFERENCE VOLTAGE OF GAMMA CIRCUIT
        LCD_CtrlWrite_HX8306A(0x12); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	 
              DELAY_1ms(9);  //  Delayms(40);

        LCD_CtrlWrite_HX8306A(0x00);//SET VCOMH/VCOML
        LCD_CtrlWrite_HX8306A(0x13); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	
             DELAY_1ms(9);  //  Delayms(40);

        LCD_CtrlWrite_HX8306A(0x00);//SET VCOMH/VCOML
        LCD_CtrlWrite_HX8306A(0x56); 				
        LCD_DataWrite_HX8306A(0x08);
	 LCD_DataWrite_HX8306A(0x0F);	
             DELAY_1ms(9);  // Delayms(40);
             
        LCD_CtrlWrite_HX8306A(0x00);//SET vgh/vgl,turn off the charge-bump circuit
        LCD_CtrlWrite_HX8306A(0x10); 				
        LCD_DataWrite_HX8306A(0x42);
	 LCD_DataWrite_HX8306A(0x40);	
             DELAY_1ms(9);  // Delayms(10);

        LCD_CtrlWrite_HX8306A(0x00);//SET the frequency of charge-pump circuit and reference voltage 
        LCD_CtrlWrite_HX8306A(0x11); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	

        LCD_CtrlWrite_HX8306A(0x00);//SET REFERENCE VOLTAGE OF GAMMA CIRCUIT
        LCD_CtrlWrite_HX8306A(0x12); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x14);	
              DELAY_1ms(9);  //Delayms(40);

        LCD_CtrlWrite_HX8306A(0x00);//SET VCOMH/VCOML
        LCD_CtrlWrite_HX8306A(0x13); 				
        LCD_DataWrite_HX8306A(0x13);
	 LCD_DataWrite_HX8306A(0x19);	
             DELAY_1ms(9);  // Delayms(40);
             
        LCD_CtrlWrite_HX8306A(0x00);//SET VCOMH/VCOML
        LCD_CtrlWrite_HX8306A(0x13); 				
        LCD_DataWrite_HX8306A(0x33);
	 LCD_DataWrite_HX8306A(0x19);	
           DELAY_1ms(9);  // Delayms(40);
           
//GAMMA 2.2 CURVE
        LCD_CtrlWrite_HX8306A(0x00);// start internal OSC
        LCD_CtrlWrite_HX8306A(0x30); 				
        LCD_DataWrite_HX8306A(0x03);
	 LCD_DataWrite_HX8306A(0x02);	

        LCD_CtrlWrite_HX8306A(0x00);// set the display line number and display direction
        LCD_CtrlWrite_HX8306A(0x31); 				
        LCD_DataWrite_HX8306A(0x04);
	 LCD_DataWrite_HX8306A(0x07);	
	 
        LCD_CtrlWrite_HX8306A(0x00);//SET 1 Line inversion
        LCD_CtrlWrite_HX8306A(0x32); 				
        LCD_DataWrite_HX8306A(0x03);
	 LCD_DataWrite_HX8306A(0x04);	

        LCD_CtrlWrite_HX8306A(0x00);//set gram write direction and BGR=1;
        LCD_CtrlWrite_HX8306A(0x33); 				
        LCD_DataWrite_HX8306A(0x02);
	 LCD_DataWrite_HX8306A(0x03);	
	 
        LCD_CtrlWrite_HX8306A(0x00);
        LCD_CtrlWrite_HX8306A(0x34); 				
        LCD_DataWrite_HX8306A(0x07);
	 LCD_DataWrite_HX8306A(0x06);	
	 
        LCD_CtrlWrite_HX8306A(0x00);
        LCD_CtrlWrite_HX8306A(0x35); 				
        LCD_DataWrite_HX8306A(0x04);
	 LCD_DataWrite_HX8306A(0x07);	
		   
        LCD_CtrlWrite_HX8306A(0x00);
        LCD_CtrlWrite_HX8306A(0x36); 				
        LCD_DataWrite_HX8306A(0x07);
	 LCD_DataWrite_HX8306A(0x06);	
		   
        LCD_CtrlWrite_HX8306A(0x00);
        LCD_CtrlWrite_HX8306A(0x37); 				
        LCD_DataWrite_HX8306A(0x00);
	 LCD_DataWrite_HX8306A(0x00);	
		   
        LCD_CtrlWrite_HX8306A(0x00);
        LCD_CtrlWrite_HX8306A(0x38); 				
        LCD_DataWrite_HX8306A(0x0C);
	 LCD_DataWrite_HX8306A(0x06);	
		   
        LCD_CtrlWrite_HX8306A(0x00);
        LCD_CtrlWrite_HX8306A(0x39); 				
        LCD_DataWrite_HX8306A(0x0F);
	 LCD_DataWrite_HX8306A(0x00);	
		 
//DISPLAY ON	

       LCD_CtrlWrite_HX8306A(0x00);
       LCD_CtrlWrite_HX8306A(0x40);  
       LCD_DataWrite_HX8306A(0x00);
	LCD_DataWrite_HX8306A(0x00);	
	  
       LCD_CtrlWrite_HX8306A(0x00);
	LCD_CtrlWrite_HX8306A(0x41);  
       LCD_DataWrite_HX8306A(0x00);
	LCD_DataWrite_HX8306A(0x00);	

        LCD_CtrlWrite_HX8306A(0x00);
        LCD_CtrlWrite_HX8306A(0x07); 				

⌨️ 快捷键说明

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