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

📄 lgdp4524-2^2.c

📁 驱动IC-LG4524的驱动程序。该程序能点亮TFT2。2的LCM
💻 C
字号:

/************************************************
LCD:		 2.2寸,LG,TFT 176*220     date:		2007.7.23
	    
IC			LGDP4524(R61503U)    8080/16bits
VDD			2.8V


************************************************/



#include <reg52.h>
#include "LGDP4524-16-V2.h"
#include "table_V2.h"

//#define	NBI	0x88 //33B6 用
//char contrast=72;   
char page_no=0;

void main()
{ 
 
	P1=0xf0;	
	page(0);    
	P14=1;
	P15=0;
	//LED2,LED1,BL_EN,/RES,   /CS2,/CS1,/WR,RS
	control_port=0x0F; // /res=0; 
	Delayms(50);
    control_port=0x1F; // /res=1;
	Delayms(20);
   
	init_LGDP4524();
    set_LGDP4524_add();

	while(1)
	{  
        set_LGDP4524_add();
	    frame(220,176);
        key_step();

	    set_LGDP4524_add();
        Write_color_main(0xff,0xff,220,176);
		key_step();

     	set_LGDP4524_add();
        Write_color_main(0x00,0x00,220,176);
		key_step();
         
      
		set_LGDP4524_add();
        Write_color_main(0xf8,0x00,220,176);
		key_step();
     
		set_LGDP4524_add();
		Write_color_main(0x07,0xe0,220,176);
		key_step();
       
		set_LGDP4524_add();
		Write_color_main(0x00,0x1f,220,176);
		key_step();

		set_LGDP4524_add();
		Graygray();
		key_step();

		set_LGDP4524_add();
		Grayred();
		key_step();

		set_LGDP4524_add();
		Graygreen();
		key_step();

		set_LGDP4524_add();
		Grayblue();
		key_step();

		set_LGDP4524_add();
		snow1(220,176);
		key_step();

		set_LGDP4524_add();
		snow2(220,176);
		key_step();

		set_LGDP4524_add();
		main_pic(220,176,0xE000,6);
        key_step();

		set_LGDP4524_add();
		main_pic(220,176,0x8E80,9);
        key_step();

	    set_LGDP4524_add();
		main_pic(220,176,0xBD00,11);
        key_step();

/*
		Motor=1;
        Spk=0;
		Rec=0;
        key_step();

		Motor=0;
        Spk=1;
		Rec=0;
		key_step();

	    Motor=0;
        Spk=0;
		Rec=1;
		key_step();

		Motor=0;
        Spk=0;
		Rec=0;
*/
	}

}


void page(char value)
{  
    ACC=P1;	
	P1=(ACC&0xf0)+value;
    
} 

void Delayus(int value)
{   
 while(value) value--;
}   
 
void Delayms(int value)
{
 int i,j,k;
 for(i=0;i<value;i++)
	for(j=0;j<5;j++)
		for(k=0;k<131;k++);
}

void key_step()
{
 Continue=1;
 while(Continue);
 Delayms(80);
 while(!Continue);
}


void WCom(uchar comh,coml)
{
    port_h=comh;
    port_l=coml;
	//LED2,LED1,BL_EN,/RES,   /CS2,/CS1,/WR,RS
	control_port=0x1A;
	control_port=0x18;
    control_port=0x1A;
    control_port=0x1E;

}

void WData(uchar dath,datl)
{
    port_h=dath;
    port_l=datl;
	//LED2,LED1,BL_EN,/RES,   /CS2,/CS1,/WR,RS
	control_port=0x1B;
 	control_port=0x19;
    control_port=0x1B;
    control_port=0x1F;

}

void Write_color_main(uchar color_h,color_l,int com,seg)
{   int i,j;
for(i=0;i<com;i++) 
   {for(j=0;j<seg;j++) 
      {
       WData(color_h,color_l);
	   }
      
   }
}

void init_LGDP4524()
{   
    WCom(0x00,0x07);
	WData(0x00,0x00);
	WCom(0x00,0x12);
	WData(0x00,0x00);
	WCom(0x00,0x13);
	WData(0x00,0x00);
	WCom(0x00,0x14);
	WData(0x03,0x31);
	Delayms(20);
	WCom(0x00,0x12);
	WData(0x00,0x09);
	WCom(0x00,0x11);
	WData(0x00,0x00);//	WData(0x00,0x00);
	WCom(0x00,0x10);
	WData(0x01,0x04);
	WCom(0x00,0x13);
	WData(0x0C,0x4A);
	WCom(0x00,0x10);
	WData(0x01,0x44);
	WCom(0x00,0x11);
	WData(0x00,0x01);//WData(0x02,0x00);WData(0x00,0x01);
	WCom(0x00,0x12);
	WData(0x00,0x19);
	Delayms(20);
	WCom(0x00,0x13);
	WData(0x2C,0x4A);
	WCom(0x00,0x10);
	WData(0x01,0x40);
    Delayms(20);
	WCom(0x00,0x60);
	WData(0x20,0x00);
	WCom(0x00,0x60);
	WData(0x00,0x00);
	WCom(0x00,0x61);
	WData(0x00,0x02);

	WCom(0x00,0x01);
	WData(0x01,0x1B);
	Delayms(1);
	WCom(0x00,0x02);
	WData(0x07,0x00);
	
	WCom(0x00,0x03);
	WData(0x10,0x30); 	
	WCom(0x00,0x09);
	WData(0x00,0x00);

	//WCom(0x00,0x0B);
	//WData(0x5D,0x2C);//WData(0x5D,0x2C);
	WCom(0x00,0x21);
	WData(0x00,0x00); 
	WCom(0x00,0x30);
	WData(0x01,0x01);
	WCom(0x00,0x31);
	WData(0x06,0x04);
	WCom(0x00,0x32);
	WData(0x00,0x07);
	WCom(0x00,0x33);
	WData(0x04,0x03);
	WCom(0x00,0x34);
	WData(0x00,0x07);
	WCom(0x00,0x35);
	WData(0x04,0x02);
	WCom(0x00,0x36);
	WData(0x06,0x06);
	WCom(0x00,0x37);
	WData(0x03,0x04);
	WCom(0x00,0x38);
	WData(0x07,0x0E);
	WCom(0x00,0x39);
	WData(0x07,0x0E);
	WCom(0x00,0x3A);
	WData(0x01,0x01);
	WCom(0x00,0x3B);
	WData(0x01,0x01);
	WCom(0x00,0x3C);
	WData(0x01,0x01);
	WCom(0x00,0x3D);
	WData(0x01,0x01);
	WCom(0x00,0x3E);
	WData(0x00,0x01);
	WCom(0x00,0x3F);
	WData(0x00,0x01);
	WCom(0x00,0x42);
	WData(0xDB,0x00);

	WCom(0x00,0x44);
	WData(0xAF,0x00);
	Delayms(10);
	WCom(0x00,0x45);
	WData(0xDB,0x00);
	WCom(0x00,0x71);
	WData(0x00,0x40);
	Delayms(40);
	WCom(0x00,0x72);
	WData(0x00,0x02);
	Delayms(20);
	WCom(0x00,0x10);
	WData(0x32,0x50);//WData(0x32,0x50);WData(0x11,0xB0);

//////////////////////////////

//	WCom(0x00,0x12);
//	WData(0x00,0x1C);
//	Delayms(10);
//	WCom(0x00,0x13);
//	WData(0x2E,0x56);//WData(0x2E,0x58);


/////////////////////////////

	Delayms(20);
	WCom(0x00,0x07);
	WData(0x00,0x01);   
    Delayms(30);
	WCom(0x00,0x07);
	WData(0x00,0x21);  
	WCom(0x00,0x07);
	WData(0x00,0x23);  
    Delayms(30);
	WCom(0x00,0x07);
	WData(0x00,0x37);  

    WCom(0x00,0x22);
}





void set_LGDP4524_add()
{  
/*
    WCom(0x00,0x50);
	WData(0x00,0x00);

	WCom(0x00,0x51);
	WData(0x00,0xaf);

	WCom(0x00,0x52);
	WData(0x00,0x00);

	WCom(0x00,0x53);
	WData(0x00,0xdb);

	WCom(0x00,0x20);
	WData(0x00,0x00);

	WCom(0x00,0x21);
	WData(0x00,0x00);

	WCom(0x00,0x22);
*/
}
void frame(int com,seg)
{
   	int Row,Column;
 	//set_LGDP4524_add();

  	for(Column=0;Column<seg;Column++)
		{WData(0xf8,0x00);}
 
	for(Row=0;Row<(com-2);Row++)
       { WData(0xf8,0x00);
		
		for(Column=0;Column<(seg-2);Column++)
			{WData(0x00,0x00);}
         
            WData(0xf8,0x00);
	   }
	for(Column=0;Column<seg;Column++)
		{   WData(0xf8,0x00);
		}
           
}

//=============================================
void snow1(int com,seg)
{
	int  i,j;
    //set_LGDP4524_add();
		for(i=0;i<(com/2);i++)
		   	{
              for(j=0;j<(seg/2);j++)
		   	       {
                        WData(0xff,0xff);
                        WData(0x00,0x00);
			        } 
         	  for(j=0;j<(seg/2);j++)
		   	       {
                        WData(0x00,0x00);
                        WData(0xff,0xff);
			        }          	
			}
}

void snow2(int com,seg)
{
	int  i,j;
    //set_LGDP4524_add();
		for(i=0;i<(com/2);i++)
		   	{
              for(j=0;j<(seg/2);j++)
		   	       {
                        WData(0x00,0x00);
                        WData(0xff,0xff);
			        } 
         	  for(j=0;j<(seg/2);j++)
		   	       {
                        WData(0xff,0xff);
                        WData(0x00,0x00);
			        }          	
			}
}


void Gray(uchar d1_h,d1_l,d2_h,d2_l,d3_h,d3_l,d4_h,d4_l,d5_h,d5_l,d6_h,d6_l,d7_h,d7_l,d8_h,d8_l,int com,seg)
{   
	int Row,Column;
 	//set_LGDP4524_add();
 
	for(Row=0;Row<(com/8);Row++)
		for(Column=0;Column<seg;Column++)
			{WData(d1_h,d1_l);}
	for(Row=0;Row<(com/8);Row++)
		for(Column=0;Column<seg;Column++)
			{WData(d2_h,d2_l);}
	for(Row=0;Row<(com/8);Row++)
		for(Column=0;Column<seg;Column++)
		    {WData(d3_h,d3_l);}
	for(Row=0;Row<(com/8);Row++)
		for(Column=0;Column<seg;Column++)
			{WData(d4_h,d4_l);}

			
	for(Row=0;Row<(com/8);Row++)
		for(Column=0;Column<seg;Column++)
			{WData(d5_h,d5_l);}
	for(Row=0;Row<(com/8);Row++)
		for(Column=0;Column<seg;Column++)
			{WData(d6_h,d6_l);}
	for(Row=0;Row<(com/8);Row++)
		for(Column=0;Column<seg;Column++)
		    {WData(d7_h,d7_l);}
	for(Row=0;Row<(com-(com/8)*7);Row++)
		for(Column=0;Column<seg;Column++)
			{WData(d8_h,d8_l);}


	

}
void Graygray()
{
	Gray(0x00,0x00,0x21,0x04,0x42,0x08,0x63,0x0c,0x84,0x10,0xa5,0x14,0xc6,0x18,0xe7,0x1c,220,176);
}

void Grayred()
{
	Gray(0xf8,0x00,0xf9,0xaa,0xfa,0xaa,0xfb,0x6d,0xfc,0x92,0xfd,0xb6,0xfe,0xdb,0xff,0xff,220,176);

}

void Graygreen()
{
	Gray(0x07,0xe0,0x27,0xe4,0x4f,0xe9,0x6f,0xed,0x97,0xf2,0xb7,0xf6,0xdf,0xfb,0xff,0xff,220,176);
	
}

void Grayblue()
{

	Gray(0x00,0x1f,0x21,0x3f,0x4a,0x5f,0x6b,0x7f,0x94,0x9f,0xb5,0xbf,0xe7,0x1f,0xff,0xff,220,176);
	
}


void main_pic(int com,seg,d,uchar p)
{   uchar dat_h,dat_l;
	int  i,j;
    page_no=p;
	page(page_no);
    main_img_add=d;
	main_img_add--;

	for(i=0;i<com;i++)
	 { 
	 for(j=0;j<seg;j++) 
		    {   main_img_add++;
				dat_h=*main_img_add;
				main_img_add++;
                dat_l=*main_img_add;
				WData(dat_h,dat_l);
		        if (main_img_add>=0xffff)
			           {  
			              main_img_add=0x7fff;
					      page_no++; 
						  if (page_no==16){page_no=0;}
			              page(page_no);
			           } 
	   
		    }
    }


}






⌨️ 快捷键说明

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