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

📄 ili9325.txt

📁 ili9325的驱动程序
💻 TXT
📖 第 1 页 / 共 5 页
字号:

LCD_write_c(0x0022);

} 	
 

/*===========================================================================
** 函数名称: ili9325_init_lcd
** 功能描述: 输出显示数据,并行,软件模拟8080
** 功能描述: 对LCD进行初始化
** 功能描述: 显示图片数据8bit
============================================================================*/
   
void ili9325_init_lcd(void)
{ 
            
Delay(50);	
LCD_write_c(0x0000);
LCD_write_d(0x0001);
Delay(100);
LCD_write_c(0x0010);
LCD_write_d(0x0100);

LCD_write_c(0x0011);
LCD_write_d(0x0007);

LCD_write_c(0x0012);
LCD_write_d(0x1030);

LCD_write_c(0x0013);
LCD_write_d(0x0000);
Delay(200);

LCD_write_c(0x0010);
LCD_write_d(0x1490);

LCD_write_c(0x0011);
LCD_write_d(0x0227);
Delay(50);

LCD_write_c(0x0012);
LCD_write_d(0x001d);
Delay(50);

LCD_write_c(0x0013);
LCD_write_d(0x0800);

LCD_write_c(0x0029);
LCD_write_d(0x000f);

LCD_write_c(0x002b);
LCD_write_d(0x000d);
Delay(100);

//power on sequence
LCD_write_c(0x00e3);
LCD_write_d(0x3008);

LCD_write_c(0x00e7);
LCD_write_d(0x0012);

LCD_write_c(0x00ef);
LCD_write_d(0x1231);

LCD_write_c(0x0001);
LCD_write_d(0x0100);


LCD_write_c(0x0002);
LCD_write_d(0x0700);

LCD_write_c(0x0003);
LCD_write_d(0x1030);


LCD_write_c(0x0004);
LCD_write_d(0x0000);


LCD_write_c(0x0008);
LCD_write_d(0x0207);

LCD_write_c(0x0009);
LCD_write_d(0x0000);


LCD_write_c(0x000a);
LCD_write_d(0x0000);

LCD_write_c(0x000c);
LCD_write_d(0x0000);

LCD_write_c(0x000d);
LCD_write_d(0x0000);

LCD_write_c(0x000f);
LCD_write_d(0x0000);
Delay(50);
//adjust the gamma curve
LCD_write_c(0x0030);
LCD_write_d(0x0007);

LCD_write_c(0x0031);
LCD_write_d(0x0707);

LCD_write_c(0x0032);
LCD_write_d(0x0006);

LCD_write_c(0x0035);
LCD_write_d(0x0704);

LCD_write_c(0x0036);
LCD_write_d(0x1f04);

LCD_write_c(0x0037);
LCD_write_d(0x0004);

LCD_write_c(0x0038);
LCD_write_d(0x0000);

LCD_write_c(0x0039);
LCD_write_d(0x0706);

LCD_write_c(0x003c);
LCD_write_d(0x0701);

LCD_write_c(0x003d);
LCD_write_d(0x000f);

LCD_write_c(0x0020);
LCD_write_d(0x0000);

LCD_write_c(0x0021);
LCD_write_d(0x0000);
//set gram area
LCD_write_c(0x0050);
LCD_write_d(0x0000);

LCD_write_c(0x0051);
LCD_write_d(0x00ef);

LCD_write_c(0x0052);
LCD_write_d(0x0000);

LCD_write_c(0x0053);
LCD_write_d(0x013f);

LCD_write_c(0x0060);
LCD_write_d(0xa700);

LCD_write_c(0x0061);
LCD_write_d(0x0001);

LCD_write_c(0x006a);
LCD_write_d(0x0000);

//partial display control
LCD_write_c(0x0080);
LCD_write_d(0x0000);

LCD_write_c(0x0081);
LCD_write_d(0x0000);

LCD_write_c(0x0082);
LCD_write_d(0x0000);

LCD_write_c(0x0083);
LCD_write_d(0x0000);

LCD_write_c(0x0084);
LCD_write_d(0x0000);

LCD_write_c(0x0085);
LCD_write_d(0x0000);

//panel control
LCD_write_c(0x0090);
LCD_write_d(0x0010);

LCD_write_c(0x0092);
LCD_write_d(0x0600);

LCD_write_c(0x0093);
LCD_write_d(0x0003);

LCD_write_c(0x0095);
LCD_write_d(0x0110);

LCD_write_c(0x0097);
LCD_write_d(0x0000);

LCD_write_c(0x0098);
LCD_write_d(0x0000);


LCD_write_c(0x0007);
LCD_write_d(0x0000);


LCD_write_c(0x0007);
LCD_write_d(0x0133);

LCD_write_c(0x0022);

} 	
 


 /*===========================================================================
** 函数名称: serial_delay()
** 功能描述: 延时 
============================================================================*/


void serial_delay(void)
{
   uchar delay ;
   for(delay=10;delay>0;delay--)
     {}
}


/*===========================================================================
** 函数名称: serial_write_bit_high()
** 功能描述: 串行送一位高电平数据 
============================================================================*/


void serial_write_bit_high(void)
{
   	DCLK=0;
   	DIN=1;        
   	DCLK=0;
	DCLK=0;
//   serial_delay();           
   	DCLK=1;
	DCLK=1;
//   serial_delay();
   	DCLK=0;
}

/*===========================================================================
** 函数名称: serial_write_bit_low()
** 功能描述: 串行送一位低电平数据 
============================================================================*/


void serial_write_bit_low(void)
{
   	DCLK=0;
   	DIN=0;        
   	DCLK=0;
	DCLK=0;
//   serial_delay();           
   	DCLK=1;
	DCLK=1;
//   serial_delay();
   	DCLK=0;
}

/*===========================================================================
** 函数名称: serial_read_data()
** 功能描述: 读触摸屏驱动IC-TSC2046产生的12位数据 
============================================================================*/

int serial_read_data(void)
{ 
	int i,j=0;
	int   data1=0;  

	DCLK=1; 
   for(i=11;i>=0;i--)
   {
      	DCLK=0;
		DCLK=0;
 
		if(DOUT)
			data1|= (1<<i); 
		DCLK=1;
		DCLK=1; 
    }

	return(data1);

}
 

/*===========================================================================
** 函数名称: serial_write_data()
** 功能描述: 写指令到TSC2046(8BIT) 
============================================================================*/

void serial_write_data(uchar data1)
{

	int i;

  	for (i=7;i>=0;i--)
	{
		if (data1 & (1<<i))
		{
   			DCLK=0;
   			DIN=1;        
   			DCLK=0;
			DCLK=0;        
   			DCLK=1;
			DCLK=1;
   			DCLK=0;
		}
		else
		{
   			DCLK=0;
   			DIN=0;        
   			DCLK=0;
			DCLK=0;        
   			DCLK=1;
			DCLK=1;
   			DCLK=0;
		}

 	}

}

/*===========================================================================
** 函数名称: serial_init()
** 功能描述: 初始化设置
============================================================================*/

void serial_init(void)
{
    DCLK=0;
    CS_TP=1;
    DIN=1;
    DCLK=1;
    CS_TP=0;
    
    
}

/*===========================================================================
** 函数名称: 	text_display()
** 功能描述: 	在指定位置显示汉字
** 入口参数:	X-文字位置x坐标,Y-文字位置Y坐标,xx-字体宽,yy-字体高, 
**           	backh(l)_color-背景颜色高(底)位,txth(l)_color-字体颜色高(低)位
** 注意:		字体高必须为8的整数倍
** 出口参数:
============================================================================*/

void text_display(uint x,uint y,uint xx,uint yy,uint back_color,uint txt_color, uchar *pi)
{
	uint ii,mm,jj;
	uchar charter;
   	
	
	for(ii=0;ii<yy;ii++)
	{
		for(mm=0;mm<xx/8;mm++)
		{
			charter=*pi;
			for(jj=0;jj<8;jj++)
			{
				LCD_write_c(0x0021);
				LCD_write_d(y+ii);		// RAM address set
   				LCD_write_c(0x0020);
				LCD_write_d(x+mm*8+jj);
   				
     
    			LCD_write_c(0x0022);
				if((charter&0x80)==0)
				{
					LCD_write_d(back_color);
				}
				else
				{
					LCD_write_d(txt_color);
				}		
				charter<<=1;	 
				
			}
			pi++;
			
			
		}
	}
    LCD_write_c(0x0020); 		//x  GDDRAM address set
    LCD_write_d(0x0000);

    LCD_write_c(0x0021); 		//y  GDDRAM address set
    LCD_write_d(0x0000);
      
}


/*===========================================================================
** 函数名称: touch_point_display(uint xxx,uint yyy)
** 功能描述: 显示触摸屏X,Y坐标值。
** 入口参数:xxx-触摸屏X坐标,YYY-触摸屏Y坐标
** 出口参数:无
============================================================================*/
 
void touch_point_display(uint xxx,uint yyy)
{
	uint jj;
	uint xp[5],yp[5];

	xp[0]=xxx/10000;				//万位
	xp[1]=(xxx%10000)/1000;
	xp[2]=((xxx%10000)%1000)/100;	
	xp[3]=(((xxx%10000)%1000)%100)/10;
	xp[4]=(((xxx%10000)%1000)%100)%10;   //个位

	yp[0]=yyy/10000;
	yp[1]=(yyy%10000)/1000;
	yp[2]=((yyy%10000)%1000)/100;	
	yp[3]=(((yyy%10000)%1000)%100)/10;
	yp[4]=(((yyy%10000)%1000)%100)%10;


	text_display(20,10,8,16,0x001f,0x0000,txtx);	//显示X
	for(jj=0;jj<5;jj++)
	{
		text_display(30+8*jj,10,8,16,0x001f,0x0000, txt[xp[jj]]);//显示X坐标值
	
	}

	text_display(20,30,8,16,0x001f,0x0000,txty);	//显示Y
	for(jj=0;jj<5;jj++)
	{
		text_display(30+8*jj,30,8,16,0x001f,0x0000, txt[yp[jj]]);	//显示Y坐标值
	
	}
}



/*===========================================================================
** 函数名称: touch_panel_test(void)
** 功能描述: 测试触摸屏,根据触摸点显示图象
** 入口参数:无
** 出口参数:无
============================================================================*/
void touch_panel_test(void)
{
	uint x ,y;
	x=0;
	y=0;    

    serial_write_data(0x90);// 
    Delay(2);                       
   
    y=serial_read_data();
 	y=y-225;				//修正X坐标

 

    serial_write_data(0xD0);// 
    Delay(2);                      
   
    x=serial_read_data();
 
 	x=x-320;


 
	if ((x>1800)&&(x<3600)&&(((y>1900)&&(y<3800)))) //1

 	{  
   	   	showRGBW();
	
       smhj();
	    
   
	
		touch_point_display(x,y);
	   // display_icon();
 	}

	if ((x>50)&&(x<1800)&&(((y>1900)&&(y<3800)))) //2

 	{  
   	     show_hb();
	
     smhj();
	   touch_point_display(x,y);
	//	display_icon();
 	}

	if ((x>1800)&&(x<3600)&&(((y>50)&&(y<1900)))) //3

⌨️ 快捷键说明

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