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

📄 fun_16.c

📁 128*160液晶显示程序.该程序驱动芯片是89C51.
💻 C
字号:
#include "config.h"

extern void delay(uint16 n);  
/****************************************************
* Function
*****************************************************/
void data_out(uint8 dataH,dataL)
{
    //8080 INTERFACE
    CS1 =0;
    DC  = 1;
    WR1 = 0;
    P1  = dataL;
    P0  = dataH;
    WR1 = 1;
	CS1 = 1;

}

void comm_out(uint8 i)
{
    //8080 INTERFACE
    CS1 = 0;
    DC  = 0;
    WR1 = 0;
    P1  = i;
    WR1 = 1;
	CS1 = 1;

}



void selectSeries(uint8 i)
{

   //SELECT SERIES 
   switch(i)
   {
      case 0:
            //MI   = 0;//SELECT  8080
            RD1  = 1;
            WR1  = 1;
            break;
      case 1:
            //MI   = 1; //SELECT  6800
            RD1  = 0;
            WR1  = 0;
            break;
      default:
            ;

   }
}

void ini_lcd(void)	
{
    unsigned char i;
	comm_out(0xD1);   // enable  internal osc

    comm_out(0x20);   // set power control register
    data_out(0,0x0f); // 7x 

    comm_out(0x81);   // set contrast and internal Regulator resistor ratio
    data_out(0,20);
    data_out(0,5);   // 14.5v

    comm_out(0xFB);   // set bias 1/9
    data_out(0,2);
/*
    comm_out(0xca);   // select duty  1/128
    data_out(0,0);
    data_out(0,31);
    data_out(0,0);
  */ 
    
    comm_out(0xF2);   // set frame ferquency
    data_out(0,0x07);
    data_out(0,0x10);
    
   
    comm_out(0xA7);   // set normal-a6   inverse-a7

    comm_out(0xBC);   // set data output scan direction
    data_out(0,0x02);
    data_out(0,0x01);
    data_out(0,0x03); // 0-64k

  /*  comm_out(0xF1);   // set com sequence
    data_out(0,0xf0); // com1->com131,com0->com132
    data_out(0,0x00);
    data_out(0,0x00);
*/
    comm_out(0xBB);   // set com output
    data_out(0,2);



    comm_out(0x15);	    // Set col address
    data_out(0,2);	    // Start col address
    data_out(0,129);	// End col address
    comm_out(0x75);	    // Set page address
    data_out(0,0);	    // Start page address
    data_out(0,159);	// End page address
    comm_out(0x5c);	    // Write Display Data

    comm_out(0x94);    // exit sleep  mode
   // comm_out(0xa9);    // exit partial
    comm_out(0xAF);    // display on
    comm_out(0xce); // set color look-up table
    for(i=0;i<32;i++)
	data_out(i);


}


void setDispArea(uint16 s_col,e_col,s_page,e_page)
{
  comm_out(0x15);	    // Set col address
  data_out(0,s_col);	// Start col address
  data_out(0,e_col);	// End col address
  comm_out(0x75);	    // Set page address
  data_out(0,s_page);	// Start page address
  data_out(0,e_page);	// End page address

}
/*
void setColorLookUp(void)
{
	uint8 i;

	comm_out(0xce);    // set color look-up table
	for(i=0;i<32;i++)
		data_out(i);
}
*/
void setColorMode(uint8 i)
{
	switch(i)
	{
		case 1:
		    comm_out(0xBC);   // set data output scan direction
		    data_out(0,0x00);
		    data_out(0,0x01);
		    data_out(0,0x01); // 0-256
		case 2:
		    comm_out(0xBC);   // set data output scan direction
		    data_out(0,0x00);
		    data_out(0,0x01);
		    data_out(0,0x00); // 0-64k
		default:
			;
	}

}

void dispColor(uint16 row,col,uint8 colorMode,uint8 rgb1,rgb2,uint8 dly)
{
  uint16 i,j;
  
  setColorMode(colorMode);

  comm_out(0x5c);		// Write Display Data
  for(i=0;i<row;i++)
  {
     for(j=0;j<col;j++)
     {
        data_out(rgb1,rgb2); 
		delay(dly);
     }
  }
}


void dispPic(uint16 row,col,uint8 colorMode,uint8 code *picture)
{
 	uint16  i,j;
	setColorMode(colorMode);
	switch (colorMode)
    {
  	case 1:
    	//p256d
		comm_out(0x5c);		// Write Display Data
		for(i=0;i<row;i++)
 	    {
    	    for(j=0;j<col;j++)
		    {
		        data_out(*(picture++),*picture);
		        picture ++;
    	    }
  	    }

    	break;

  	case 2:
    	//p64kd
		comm_out(0x5c);		// Write Display Data
		for(i=0;i<row;i++)
 	    {
    	    for(j=0;j<col;j++)
		    {
		        data_out(*picture,*(++picture));
		        picture ++;
    	    }
  	    }
        break;

  	default:
    	;
  }

}


void dispColorY(uint16 row,col,uint8 colorMode,uint8 rgbA1, rgbA2,rgbB1,rgbB2,rgbC1,rgbC2,rgbD1,rgbD2)
{

   
    uint16 i,j;
    setColorMode(colorMode);

	comm_out(0x5c);		// Write Display Data

	for(i=0;i<row;i++)
	{
		for(j=0;j<col/4;j++)
		{
		   data_out(rgbA1,rgbA2);
		}

		for(j=0;j<col/4;j++)
		{
		   data_out(rgbB1,rgbB2);
		}

		for(j=0;j<col/4;j++)
		{
		   data_out(rgbC1,rgbC2);
		}

		for(j=0;j<col/4;j++)
		{
		   data_out(rgbD1,rgbD2);
		}
	}
}



void dispColorX(uint16 row,col,uint8 colorMode,uint8 rgbA1,rgbA2,rgbB1,rgbB2,rgbC1,rgbC2,rgbD1,rgbD2)
{

    uint16 i,j,k;

    setColorMode(colorMode);

    k = row /4;
	comm_out(0x5c);		// Write Display Data
    for(i=0;i<k;i++)
	{
       for(j=0;j<col;j++)
	   {
            data_out(rgbA1,rgbA2);
       }
	}
	for(i=0;i<k;i++)
	{
       for(j=0;j<col;j++)
	   {
            data_out(rgbB1,rgbB2);
       }
	}
	for(i=0;i<k;i++)
	{
       for(j=0;j<col;j++)
	   {
            data_out(rgbC1,rgbC2);
       }
	}

	for(i=0;i<k;i++)
	{
       for(j=0;j<col;j++)
	   {
            data_out(rgbD1,rgbD2);
       }
	}

}


void dispColorB(uint16 row,col,uint8 colorMode,uint8 rgbA1,rgbA2,rgbB1,rgbB2,rgbC1,rgbC2,rgbD1,rgbD2)
{
    uint16 i,j,k;

    setColorMode(colorMode);

    k = row/4;
	comm_out(0x5c);		// Write Display Data

    for(i=0;i<k;i++)
	{
       for(j=0;j<col/4;j++)
	   {
            data_out(rgbA1,rgbA2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbB1,rgbB2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbC1,rgbC2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbD1,rgbD2);
       }
	}

	for(i=0;i<k;i++)
	{
       for(j=0;j<col/4;j++)
	   {
            data_out(rgbB1,rgbB2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbC1,rgbC2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbD1,rgbD2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbA1,rgbA2);
       }
	}

		for(i=0;i<k;i++)
	{
       for(j=0;j<col/4;j++)
	   {
            data_out(rgbC1,rgbC2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbD1,rgbD2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbA1,rgbA2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbB1,rgbB2);
       }
	}


	for(i=0;i<k;i++)
	{
       for(j=0;j<col/4;j++)
	   {
            data_out(rgbD1,rgbD2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbA1,rgbA2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbB1,rgbB2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(rgbC1,rgbC2);
       }
	}

}



void dispColorW(uint16 row,col,uint8 colorMode,uint8 Frgb1,Frgb2,Brgb1,Brgb2)
{

    uint16 i,j,k;

    setColorMode(colorMode);

    k = row /4;

	comm_out(0x5c);		// Write Display Data

    for(i=0;i<k;i++)
	{
       for(j=0;j<col;j++)
	   {
            data_out(Brgb1,Brgb2);
       }
	}
	for(i=0;i<k*2;i++)
	{
       for(j=0;j<col/4;j++)
	   {
            data_out(Brgb1,Brgb2);
       }

	   for(j=0;j<col/2;j++)
	   {
            data_out(Frgb1,Frgb2);
       }
	   for(j=0;j<col/4;j++)
	   {
            data_out(Brgb1,Brgb2);
       }
	}

	for(i=0;i<k;i++)
	{
       for(j=0;j<col;j++)
	   {
            data_out(Brgb1,Brgb2);
       }
	}

}


void dispColorG(uint16 row,col,uint8 colorMode)
{
   //white 0xff,0xff
   //red   0xf8,0x00
   //green 0x07,0xe0
   //blue  0x00,0x1f
	
    uint16 i,j;

    setColorMode(colorMode);

	comm_out(0x5c);		// Write Display Data
	for(i=0;i<row;i++)
	{
		for(j=0;j<col;j++)
		{
		   data_out( (0x07+(j/4)*8),(0xe0+j/4) );

		}
	}


}

void dispGraphic_8(uint16 row,col,uint8 colorMode,uint8 code *Graphic,uint8 F_RGB1,F_RGB2,B_RGB1,B_RGB2)
{
    uint8 n, i,j,k;
    uint8 tempGraphic;

    setColorMode(colorMode);
	//p64kd
	comm_out(0x5c);		// Write Display Data
    for(n=0;n<row/8;n++)
    {
        for(i=0;i<8;i++)
        {

          for(j=0;j<col/8;j++)
          {
             tempGraphic = Graphic[i];
             for(k=0;k<8;k++)
             {
  	             if(((tempGraphic)&(0x80))!= 0)
	             {
	             	data_out(F_RGB1,F_RGB2);

                 }else
                 {
	          	    data_out(B_RGB1,B_RGB2);
	             }
	             tempGraphic = tempGraphic << 1;
              }
           }
         }
     }



}



void dispGraphic_16(uint16 row,col,uint8 colorMode,uint8 code *Graphic,uint8 F_RGB1, F_RGB2,B_RGB1,B_RGB2)
{
    uint8 n, i,j,k;
    uint8 tempGraphic;

    setColorMode(colorMode);

	comm_out(0x5c);		// Write Display Data
	//p64kd
    for(n=0;n<row/16;n++)
    {
        for(i=0;i<16;i++)
        {

          for(j=0;j<col/16;j++)
          {
             tempGraphic = Graphic[i*2];
             for(k=0;k<8;k++)
             {
  	             if(((tempGraphic)&(0x80))!= 0)
	             {
	             	data_out(F_RGB1,F_RGB2);

                  }else
                  {
	          	    data_out(B_RGB1,B_RGB2);
	              }
	              tempGraphic = tempGraphic << 1;
              }

			 tempGraphic = Graphic[i*2+1];
			 for(k=0;k<8;k++)
             {
  	             if(((tempGraphic)&(0x80))!= 0)
	             {
	             	data_out(F_RGB1,F_RGB2);

                  }else
                  {
	          	    data_out(B_RGB1,B_RGB2);
	              }
	              tempGraphic = tempGraphic << 1;
              }
           }
         }
     }


}

void setDuty(uint8 i)
{

    comm_out(0xca);   // select duty  
    data_out(0,0);
    data_out(0,i/4-1);
	data_out(0,0);


}


void setBias(uint8 bias)
{
    //0-1/7,1-1/8,2-1/9,3-1/10

    comm_out(0xFB);   // set bias 
    data_out(0,bias);

}

void setContrast(uint8 x,y)
{
    comm_out(0x81);   // set contrast and internal Regulator resistor ratio
    data_out(0,x);
    data_out(0,y);   // 14.5v
}



/****************************************************************************
**                            End Of File
*****************************************************************************/

⌨️ 快捷键说明

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