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

📄 hx8346.c

📁 MCU驱动HX8346操作TFT屏程序,MCU-driven procedures TFT screen
💻 C
字号:
#include <reg52.h>
//#include <gray.h>  

//#include <main.h>
//#define  interface    1

sfr16 DPTR=0x82;


sbit A0 = P3^4;      //P3^4
sbit RES = P3^5;  //P3^0
sbit WRB = P3^6;  //P3^3  
sbit RDB = P3^7;
sbit CS_MAIN=P1^6;  //P1^7
sbit BL_EN = P1^7;

sbit CSA = P1^0;
sbit ENTI = P3^1;
sbit DOUT = P3^0;
sbit DIN  = P3^2;
sbit DCLK = P3^3;

sbit AUTOB =P1^3;   //H outo
sbit STEPB =P1^4;   //L active

//int B=256;

//#ifdef  interface
//#else
//#endif

void delayms(int count);
void main_init(void);
void main_Write_COM(unsigned int  wrcomH);
void main_Write_DATA(unsigned int DH);
void main_Write_DATA1(unsigned int jh,jm);
void main_W_com_data(unsigned int com1,dat1);
void main_address_set(void);
void main_Pattern(unsigned int jk,jm);
void main_Pattern1(unsigned int jk,jm);
void main_gray(void);
void red_gray(void);
void green_gray(void);
void blue_gray(void);
void Vcolor_bar(void);
void color_bar(void);
void main_picture(void);
void delaymsms(int count);
void press(void);
void BL(void);

void delayms(int count);
void point(void);
int  ADS7843_WriteRead(unsigned char px);
void delaymsmms(int count);



main()
{
   //  RD=1;
  //  G=0;

    P2=0x00;
	delaymsms(10);	
	RES=0;
	delaymsms(20);
	RES=1;

   //  RD=1;
   // G=0;
	delaymsms(20);
   // BL();

	main_init();									
   
	while(1)
	{
/*
        main_Pattern(0xf800,0xf800);                  
	    delaymsms(100);
		press();	

        main_Pattern(0x07e0,0x07e0);                 
	    delaymsms(100);
		press();

        main_Pattern(0x001f,0x001f);                         
	    delaymsms(100);
		press();

        main_Pattern(0x0000,0x0000);                         
	    delaymsms(100);
		press();

		main_Pattern1(0xffff,0xffff);                         
	    delaymsms(100);
		press();
   */
        main_gray();                   
	    delaymsms(100);
		press();
/*
		red_gray();                   
	    delaymsms(100);
		press();

		green_gray();                   
	    delaymsms(100);
		press();

		blue_gray();                   
	    delaymsms(100);
		press();

		color_bar();
	    delaymsms(100);
		press();*/
       /* 
	    main_W_com_data(0x0003, 0x1038);
		Vcolor_bar();
	    delaymsms(100);
		press();

       

       // main_init();
        main_Pattern(0x0000,0x0000);                         
	    delaymsms(100);
		press();


      // main_init();
  /*    
	while(1)
	{
       if(ENTI==0) 
	   {
	      point();
		}

    }

*/




 }

}
/*
void BL(void)            
{   
    unsigned int i; 
    // RD=1;	
   // G=0;
    delayms(10);
    BL_EN=0;  
                            
    for(i=0;i<30;i++)                                                       
    {                                                            
    BL_EN=1; 
    delayms(10); 
    BL_EN=0;                          
    }

    BL_EN=1;  
     delayms(10);  
    //  RD=0;	
   // G=1;   
                    
} 
*/
void delayms(int count)   /* X10ms */                                                             
{                                                                                               
        int i,j;                                                                                
        for(i=0;i<count;i++)                                                                    
                for(j=0;j<1000;j++)                                                              
                         ;                                                                    
} 



void main_init(void)
{
//************************************* Gamma*********************************************/
 
main_W_com_data(0x46,0x0045);
 
main_W_com_data(0x47,0x0054);
 
main_W_com_data(0x48,0x0000);
 
main_W_com_data(0x49,0x0067);
 
main_W_com_data(0x4a,0x0007);
 
main_W_com_data(0x4b,0x0007);
 
main_W_com_data(0x4c,0x0001);
 
main_W_com_data(0x4d,0x0077);
 
main_W_com_data(0x4e,0x0000);
 
main_W_com_data(0x4f,0x0029);
 
main_W_com_data(0x50,0x0004);
 
main_W_com_data(0x51,0x0040);
 
//***********************************240x320 window setting*******************************/
 
main_W_com_data(0x02,0x0000); // Column address start2
 
main_W_com_data(0x03,0x0000); // Column address start1
 
main_W_com_data(0x04,0x0000); // Column address end2
        
main_W_com_data(0x05,0x00ef); // Column address end1
 
main_W_com_data(0x06,0x0000); // Row address start2
 
main_W_com_data(0x07,0x0000); // Row address start1
 
main_W_com_data(0x08,0x0001); // Row address end2
 
main_W_com_data(0x09,0x003f); // Row address end1   //240*320;
 
//**************************************Display Setting*************************************/
 
main_W_com_data(0x01,0x0006); // IDMON=0, INVON=1, NORON=1, PTLON=0
 
main_W_com_data(0x16,0x0018); // MY=0, MX=0, MV=0, ML=0, BGR=0, TEON=0
 
main_W_com_data(0x23,0x0095); // N_DC=1001 0101
 
main_W_com_data(0x24,0x0095); // P_DC=1001 0101
 
main_W_com_data(0x25,0x00ff); // I_DC=1111 1111
 
main_W_com_data(0x28,0x0002); // N_BP=0000 0010
main_W_com_data(0x29,0x0002); // N_FP=0000 0010
main_W_com_data(0x2a,0x0002); // P_BP=0000 0010
main_W_com_data(0x2b,0x0002); // P_FP=0000 0010
main_W_com_data(0x2c,0x0002); // I_BP=0000 0010
main_W_com_data(0x2d,0x0002); // I_FP=0000 0010
main_W_com_data(0x3a,0x0001); // N_RTN=0000, N_NW=001
main_W_com_data(0x3b,0x0001); // P_RTN=0000, P_NW=001
main_W_com_data(0x3c,0x00f0); // I_RTN=1111, I_NW=000
main_W_com_data(0x3d,0x0000); // DIV=00
 
delayms(2);
 
//*************************************Power Supply Setting***********************************
 
main_W_com_data(0x19,0x0041); // OSCADJ=010000, OSD_EN=1
 
delayms(1);
//********************for the setting before power supply startup************
main_W_com_data(0x20,0x0040); // BT=0100
main_W_com_data(0x21,0x0000);
main_W_com_data(0x1d,0x0000); // VC2=100, VC1=100
main_W_com_data(0x1e,0x0001); // VC3=000
main_W_com_data(0x1f,0x000e); // VRH=0110
main_W_com_data(0x44,0x003c); // 3b VCM=101 1010,VCOMH=VREG1*0.845
main_W_com_data(0x45,0x0010); // 11 VDV=1 0001,VCOM=1.08*VREG1
delayms(1);
 
//********************for power supply setting********************************
 
main_W_com_data(0x1c,0x0007); // AP=100
delayms(2);
main_W_com_data(0x1b,0x0018); // GASENB=0, PON=1, DK=1, XDK=0, DDVDH_TRI=0, STB=0
delayms(4);
main_W_com_data(0x1b,0x0010); // GASENB=0, PON=1, DK=0, XDK=0, DDVDH_TRI=0, STB=0
delayms(4);
main_W_com_data(0x43,0x0080); // VCOMG=1
delayms(1);
 
//****** Display ON Setting******
 
main_W_com_data(0x30,0x0008); // SAPS1=1000
delayms(4);
main_W_com_data(0x26,0x0004); //GON=0, DTE=0, D=01
delayms(4);
main_W_com_data(0x26,0x0024); //GON=1, DTE=0, D=01
main_W_com_data(0x26,0x002c); //GON=1, DTE=0, D=11
delayms(4);
main_W_com_data(0x26,0x003c); //GON=1, DTE=1, D=11

main_Write_COM(0x22);
}

void main_Write_COM(unsigned int  wrcomH)		
{	
    // RDB=1;	
   // G=0;


	 CS_MAIN =0;	
    DPTR=wrcomH;
					
	A0=0;
	P2=DPH;	
	P0=DPL;					
/*	WRB=0;
	WRB=1;

	A0=0;
	P0=DPL;	*/				
	WRB=0;
	WRB=1;
	CS_MAIN =1;	

   // G=1;
    // RDB=0;
}


void main_Write_DATA(unsigned int DH)		
{
   //  RDB=1;	
  //  G=0;
	
	CS_MAIN =0;	
    DPTR=DH;							
	A0=1;										
	P2=DPH;	
	P0=DPL;				
	/*WRB=0;
	WRB=1;


	A0=1;										
	P0=DPL;	*/					
	WRB=0;
	WRB=1;
	CS_MAIN =1;	

   // G=1;
    // RDB=0;
}

void main_Write_DATA1(unsigned int jh,jm)		
{	
    // RDB=1;	
   // G=0;

	CS_MAIN =0;								
	A0=1;										
	P2=jh;
	P0=jm;					
/*	WRB=0;
	WRB=1;

	A0=1;
	P0=jm;*/						
	WRB=0;
	WRB=1;


	CS_MAIN =1;	

   // G=1;
   //  RDB=0;
}

void main_W_com_data(unsigned int com1,dat1)
{
   main_Write_COM(com1);
   main_Write_DATA(dat1);
}


void main_address_set(void)
{
main_W_com_data(0x02,0x0000); // Column address start2
main_W_com_data(0x03,0x0000); // Column address start1
main_W_com_data(0x04,0x0000); // Column address end2       
main_W_com_data(0x05,0x00ef); // Column address end1

main_W_com_data(0x06,0x0000); // Row address start2
main_W_com_data(0x07,0x0000); // Row address start1
main_W_com_data(0x08,0x0001); // Row address end2 
main_W_com_data(0x09,0x003f); // Row address end1   //240*320;
main_Write_COM(0x22);
}


void main_Pattern(unsigned int jk,jm)
{
    int  i,j;
    main_address_set();

   for(i=0;i<240;i++)
   {
    main_Write_DATA(jk);

    }

	   for(i=0;i<318;i++)
	   {
          main_Write_DATA(jk);
		   for (j=0;j<238;j++)
	    	{
             main_Write_DATA(jm);
		    }
            main_Write_DATA(jk);
	     }
     for(i=0;i<240;i++)
    {
      main_Write_DATA(jk);
    }

}



void main_Pattern1(unsigned int jk,jm)
{
    int  i,j;
    main_address_set();

      for(i=0;i<240;i++)
  {
    for(j=0;j<100;j++)
    {
            main_Write_DATA(0xffff);
    }
}
   for(j=0;j<120;j++)
   {
 

	   for(i=0;i<80;i++)
	   {
          main_Write_DATA(jk);
          }
           for(i=0;i<80;i++)
	   {
          main_Write_DATA(jm);
          }
           for(i=0;i<80;i++)
	   {
          main_Write_DATA(jk);
          }
}
      for(i=0;i<240;i++)
  {
    for(j=0;j<100;j++)
    {
            main_Write_DATA(0xffff);
    }

}
}

void main_gray(void)
{
    unsigned char  A,B,C;
    unsigned int  i,j,k,DH;

    //unsigned  char  DH;
    main_address_set();
 
 
  for(i=0;i<160;i++)
  {
    for(j=0;j<120;j++)
    {
            main_Write_DATA(0xffff);
    }

    for(j=0;j<120;j++)
    {

            main_Write_DATA(0x0000);
    }
  }
  
    
for(k=0;k<160;k++)

{   

  	A=0;
    B=0;
    C=0;
    

  for(i=0;i<16;i++)
  {
    

    for(j=0;j<15;j++)
    {
     DH=(A<<11)+(B<<5)+C;
     main_Write_DATA(DH);
    }
	A=A+2;
    B=B+4;
    C=C+2;
  }

	}

}

void red_gray(void)
{
	
    unsigned char  A,B,C;
    unsigned int  i,j,k,DH;
   	A=0;
    B=0;
    C=0;
for(k=0;k<16;k++)

{   

  DH=(A<<11)+(B<<5)+C;
  for(i=0;i<20;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(DH);
    }
  
    
    }
	A=A+2;
   // B=B+4;
   // C=C+2;
  }

}
	

	
void green_gray(void)
{
	
    unsigned char  A,B,C;
    unsigned int  i,j,k,DH;
   	A=0;
    B=0;
    C=0;
for(k=0;k<16;k++)

{   

  DH=(A<<11)+(B<<5)+C;
  for(i=0;i<20;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(DH);
    }
  
    
    }
    B=B+4;
   // C=C+2;
  }

	}


void blue_gray(void)
{
	
    unsigned char  A,B,C;
    unsigned int  i,j,k,DH;
   	A=0;
    B=0;
    C=0;
for(k=0;k<16;k++)

{   

  DH=(A<<11)+(B<<5)+C;
  for(i=0;i<20;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(DH);
    }
  
    
    }
	//A=A+2;
   // B=B+4;
    C=C+2;
  }

	}


void color_bar(void)
{

    unsigned int  i,j;
   main_address_set();
   	for(i=0;i<64;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(0xf800);
    }
    }

    for(i=0;i<64;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(0x07e0);
    }
    }

    for(i=0;i<64;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(0x001f);
    }
    }

  for(i=0;i<64;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(0XFFE0);
    }
  
  }
   for(i=0;i<64;i++)
  {
    

    for(j=0;j<240;j++)
    {
      main_Write_DATA(0XFFFF);
    }
    }
 
  }
/*
void Vcolor_bar(void)
{

    unsigned int  i,j;
   main_address_set();
    
   	for(i=0;i<48;i++)
  {
    

    for(j=0;j<320;j++)
    {
      main_Write_DATA(0xf800);
    }
    }

    for(i=0;i<48;i++)
  {
    

    for(j=0;j<320;j++)
    {
      main_Write_DATA(0x07e0);
    }
    }

    for(i=0;i<48;i++)
  {
    

    for(j=0;j<320;j++)
    {
      main_Write_DATA(0x001f);
    }
    }

  for(i=0;i<48;i++)
  {
    

    for(j=0;j<320;j++)
    {
      main_Write_DATA(0XFFE0);
    }
    }
  for(i=0;i<48;i++)
  {
    

    for(j=0;j<320;j++)
    {
      main_Write_DATA(0XFFFF);
    }
   }
 
  }

*/
void delaymsms(int count)   /* X10ms */
{
        int i,j;
        for(i=0;i<count;i++)		
                for(j=0;j<500;j++);
				
}


void press(void)
{  

     while(AUTOB == 1)
	 {  

	      if(STEPB == 0)
		  {   
		         goto  aas;
		  }
		  else
		  {   if(AUTOB == 0)
		          goto  aas;
		  }

     }
	  
aas: ; 
}

void delaymsmms(int count)   /* X10ms */
{
        int i,j;
        for(i=0;i<count;i++)		
                for(j=0;j<2;j++);
				
}



⌨️ 快捷键说明

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