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

📄 drvlcd_driver.cqm.c

📁 Philips LCD PCF8833 driver
💻 C
📖 第 1 页 / 共 5 页
字号:
   Coladd_master(startx,startx);
   Pagadd_master(starty,endy);
   drvLcd_WriteInstruct(0x2c);  //write  lcd data  ram command
   for(i=0;i<(endy-starty);i++)
   {
     Dispcolor_master(R,G,B,1);
   }   
    
}

void  drawrectangle(int sx,int sy,int ex,int ey,char r,char g,char b)
{
    drawhline(sx,sy,ex,sy,r,g,b);
    drawvline(sx,sy,sx,ey,r,g,b);
    drawhline(sx,ey,ex,ey,r,g,b);
    drawvline(ex,sy,ex,ey,r,g,b);
	}



void Dispcolor_master(char a,char b,char c,int w)
{

 int i;
 #ifdef color12bit
    for(i=0;i<w;i++)
      { 
        drvLcd_WriteData(a);
        drvLcd_WriteData(b);
        drvLcd_WriteData(c);
   } 
 #endif
 #ifdef color16bit
    for(i=0;i<w;i++)
      { 
        drvLcd_WriteData(a);
        drvLcd_WriteData(b);
   } 
 #endif
}


void drvLcd_WriteChar(U8 kPage,U8 kColumn,U8 kReverseDispOnOff,U8 kCharABC)
{

 U8 CharBmpBuf[24];
 if((kCharABC>=0x30)&&(kCharABC< 0x3a))
   {
     drvLcd_WirteChar1(kPage,kColumn,kReverseDispOnOff,(U8 *)(number0to9+(kCharABC-0x30)*24)); 
   }
 else
  {
   LcdGetEGBMP(0x00,kCharABC, CharBmpBuf);
   drvLcd_WirteChar1(kPage,kColumn,kReverseDispOnOff,CharBmpBuf); 
  }
}


void drvLcd_WirteChar1(U8 kPage,U8 kColumn,U8 kReverseDispOnOff,U8 *pkbuf)
{
	int i;
	U8 j=0;	//控制行号.

#ifdef LightBlue

	for(i=0;i<24;)	/*每个字模取24bytes,Row-Scans 每次写两个字节.*/
	{
		tempchar=*(pkbuf+i);

		if(tempchar==0)
		{
			 if(WordColor==1)
			   	  displaybyte(kColumn,kPage+j,0xdf,0x1b,0x00);
			 else if(WordColor==3)
			   	  displaybyte(kColumn,kPage+j,0xef,0x5d,0x00);
			 else if(WordColor==2)
			   	{
				     if(kReverseDispOnOff)
				     {

						displaybyte(kColumn,kPage+j,0x29,0x9b,0x00); 
				     }
				     else
				     {	
						displaybyte(kColumn,kPage+j,0xdf,0x7f,0x00);   //puple
				     }
			   	}
			 else
			   	{
				     if(kReverseDispOnOff)
				     {

						displaybyte(kColumn,kPage+j,0x29,0x9b,0x00);
				     }
				     else
				     {	
						displaybyte(kColumn,kPage+j,0x6d,0xbe,0x00);   //puple
				     }
			   	}
		}
		else
		{		// if(!kReverseDispOnOff)	
			if(WordColor==1)
			{
				 displaybit(kColumn,kPage+j,0x00,0x31,0x00,kReverseDispOnOff); 
			}
			else 
				 displaybit(kColumn,kPage+j,0x00,0x31,0x00,kReverseDispOnOff);      //black
		}

		tempchar=pkbuf[i+1];
		if(tempchar==0)
		{
			if(WordColor==1)
			   	  displaybyte(kColumn+8,kPage+j,0xdf,0x1b,0x00);
			else if(WordColor==3)
			   	  displaybyte(kColumn+8,kPage+j,0xef,0x5d,0x00);
			else if(WordColor==2)
			{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn+8,kPage+j,0x29,0x9b,0x00); 
				    }
				    else
				     {	
						displaybyte(kColumn+8,kPage+j,0xdf,0x7f,0x00);   //puple
				     }

			}
			else
			{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn+8,kPage+j,0x29,0x9b,0x00);
				    }
				    else
				     {	
						displaybyte(kColumn+8,kPage+j,0x6d,0xbe,0x00);   //puple
				     }

			}
		}
		else
		{		// if(!kReverseDispOnOff)	
			if(WordColor==1)
			{
				displaybit(kColumn+8,kPage+j,0x00,0x31,0x00,kReverseDispOnOff); 
			}
			else 
				displaybit(kColumn+8,kPage+j,0x00,0x31,0x00,kReverseDispOnOff);      //black		
		}
		 i=i+2;
		 j++;
	}
  #endif
  
#ifdef	DeepBlue
      	for(i=0;i<24;)	/*每个字模取24bytes,Row-Scans 每次写两个字节.*/
	{
		tempchar=*(pkbuf+i);

		if(tempchar==0)
		{
			 if(WordColor==0)
			 	{
			   	  	displaybyte(kColumn,kPage+j,0x1a,0x10,0x00);
			 	}
			 else if(WordColor==1)
			   	  displaybyte(kColumn,kPage+j,0x3b,0x94,0x00);
			 else if(WordColor==4)
			 	  displaybyte(kColumn,kPage+j,0x1a,0x10,0x00);
			 else if(WordColor==5)
			 	  displaybyte(kColumn,kPage+j,0xef,0x5d,0x00);
			 else if(WordColor==2)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn,kPage+j,0x1a,0x10,0x00); 
				     }
				     else
				     {	
						displaybyte(kColumn,kPage+j,0xcf,0x3f,0x00);   //puple
				     }
			   	}
			 else if(WordColor==3)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn,kPage+j,0xcf,0x3f,0x00); 
				     }
				     else
				     {	
						displaybyte(kColumn,kPage+j,0x1a,0x10,0x00);   //puple
				     }
			   	}
		}
		else
		{		// if(!kReverseDispOnOff)	
			if(WordColor==0)
				 displaybit(kColumn,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff); 

			else if(WordColor==1)
				 displaybit(kColumn,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);   
			
			else if(WordColor==2)
				 displaybit(kColumn,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
			
			else if(WordColor==3)
				 displaybit(kColumn,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);
			
			else if(WordColor==4)
				 displaybit(kColumn,kPage+j,0xbf,0x60,0x00,kReverseDispOnOff);
			
			else if(WordColor==5)
				 displaybit(kColumn,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
		}

		tempchar=pkbuf[i+1];
		if(tempchar==0)
		{
			 if(WordColor==0)
			 	{
			   	  	displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00);
			 	}
			 else if(WordColor==1)
			   	  displaybyte(kColumn+8,kPage+j,0x3b,0x94,0x00);	
			 else if(WordColor==4)
			   	  displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00);	
			 else if(WordColor==5)
			   	  displaybyte(kColumn+8,kPage+j,0xef,0x5d,0x00);	
			 else if(WordColor==2)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00);
				     }
				     else
				     {	
						displaybyte(kColumn+8,kPage+j,0xcf,0x3f,0x00);   //puple
				     }
			   	}
			 else if(WordColor==3)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn+8,kPage+j,0xcf,0x3f,0x00);
				     }
				     else
				     {	
						displaybyte(kColumn+8,kPage+j,0x1a,0x10,0x00);   //puple
				     }
			   	}
		}
		else
		{		// if(!kReverseDispOnOff)	
			if(WordColor==0)
				 displaybit(kColumn+8,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff); 

			else if(WordColor==1)
				 displaybit(kColumn+8,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);   
			
			else if(WordColor==2)
				 displaybit(kColumn+8,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
			
			else if(WordColor==3)
				 displaybit(kColumn+8,kPage+j,0xff,0xff,0x00,kReverseDispOnOff);
			
			else if(WordColor==4)
				 displaybit(kColumn+8,kPage+j,0xbf,0x60,0x00,kReverseDispOnOff);

			else if(WordColor==5)
				 displaybit(kColumn+8,kPage+j,0x1a,0x10,0x00,kReverseDispOnOff);
		}
		 i=i+2;
		 j++;
	}
  #endif
#ifdef	Orange
      	for(i=0;i<24;)	/*每个字模取24bytes,Row-Scans 每次写两个字节.*/
	{
		tempchar=*(pkbuf+i);

		if(tempchar==0)
		{
			 if(WordColor==0)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn,kPage+j,0xf7,0x7a,0x00); 
				     }
				     else
				     {	
						displaybyte(kColumn,kPage+j,0xe3,0xa4,0x00);   //puple
				     }
			   	}
			 else if(WordColor==1)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn,kPage+j,0xe3,0xa4,0x00); 
				     }
				     else
				     {	
						displaybyte(kColumn,kPage+j,0xf7,0x7a,0x00);   //puple
				     }
			   	}
			 else if(WordColor==2)
			 	displaybyte(kColumn,kPage+j,0xef,0x5d,0x00);
		}
		else
		{		// if(!kReverseDispOnOff)	
			if(WordColor==0)
				 displaybit(kColumn,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff); 

			else if(WordColor==1)
				 displaybit(kColumn,kPage+j,0x69,0x40,0x00,kReverseDispOnOff);  
			
			else if(WordColor==2)
				 displaybit(kColumn,kPage+j,0x69,0x40,0x00,kReverseDispOnOff); 
		}

		tempchar=pkbuf[i+1];
		if(tempchar==0)
		{
			 if(WordColor==0)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn+8,kPage+j,0xf7,0x7a,0x00);
				     }
				     else
				     {	
						displaybyte(kColumn+8,kPage+j,0xe3,0xa4,0x00);   //puple
				     }
			   	}
			 else if(WordColor==1)
			   	{
				    if(kReverseDispOnOff)
				    {
						displaybyte(kColumn+8,kPage+j,0xe3,0xa4,0x00);
				     }
				     else
				     {	
						displaybyte(kColumn+8,kPage+j,0xf7,0x7a,0x00);   //puple
				     }
			   	}
			 else if(WordColor==2)
			 	displaybyte(kColumn+8,kPage+j,0xef,0x5d,0x00);
		}
		else
		{		// if(!kReverseDispOnOff)	
			if(WordColor==0)
				 displaybit(kColumn+8,kPage+j,0xcf,0xd1,0x00,kReverseDispOnOff); 

			else if(WordColor==1)
				 displaybit(kColumn+8,kPage+j,0x69,0x40,0x00,kReverseDispOnOff);   

			else if(WordColor==2)
				 displaybit(kColumn+8,kPage+j,0x69,0x40,0x00,kReverseDispOnOff);   
		}
		 i=i+2;
		 j++;
	}
  #endif
}
/************************************************************************
* function LcdHEXToBCD(int kNum,pdrvLcd_DataStruct_t *pkBCDDataStruct)
* it will convert the kNum HEX to the decimal save at *pkBCDDataStruct
* input kNum : 				the value will be converted 
* 		pkBCDDataStruct:	the convered result will stores at it
****************************************************************************/
void LcdHEXToBCD(int kNum,pdrvLcd_DataStruct_t pkBCDDataStruct)
{
	int tempnum;
	pkBCDDataStruct->First=(U8)(kNum/100000);
	tempnum=kNum%100000;
	pkBCDDataStruct->Second=(U8)(tempnum/10000);
	tempnum=tempnum%10000;
	pkBCDDataStruct->Third=(U8)(tempnum/1000);
	tempnum=tempnum%1000;
	pkBCDDataStruct->Fourth=(U8)(tempnum/100);
	tempnum=tempnum%100;
	pkBCDDataStruct->Fifth=(U8)(tempnum/10);
	tempnum=tempnum%10;
	pkBCDDataStruct->Sixth=(U8)tempnum;
}

/************************************************************************
* function drvLcd_PrintfEnglishWord(U8 kPage,U8 kColumn,const U8 *pkPointer)
* it will show a english string at the kPage,kColumn
* input kPage : 			the value should be 0-7,select the LCD page 
* 		kColumn:			the value should be 0-128,select the LCD column	
*		kReverseDispOnOff:	select normal show it or reverse show it
*		*pkPointer:			the string will be shown
****************************************************************************/
#if 1
void drvLcd_PrintfEnglishWord(U8 kPage,U8 kColumn,const U8 *pkPointer)
{
	U8 reverse=0;	
	U8 i,mycount;
	U8 temp;	
	i=0;
	mycount=0;
	while(*(pkPointer+i)!='\0') 
	{	
		temp=*(pkPointer+i);
		if(temp=='~')
		{
			reverse=(U8)(~reverse);
		}else{
			drvLcd_WriteChar((U8)(kPage),(U8)(kColumn+mycount*8),reverse,temp);
			mycount++;	
		}
		i++;
		if(i>=16) break;
	}	
}
#endif


void LcdGetEGBMP(U8 kQu, U8 kWei,U8 *buff)	//取ISO8859-1259字模
{
	int offset;
	offset = (int)((U32)kQu*256+(kWei))*24+108932+4+19008;
	PSA_AccessReservedArea((char *)buff, offset, 24);

⌨️ 快捷键说明

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