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

📄 lcd.c

📁 str71arm平台下的sed1335驱动
💻 C
📖 第 1 页 / 共 4 页
字号:


/**************************************************************************
函数名称: void ShowPowerVolume(u8 PowerPoint,u8 x,u8 y)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.01.07       
函数功能说明:显示电池电量状态
输入参数:x,y为起始点坐标,PowerPoint为电池电量各种状态,从0~12,0为空,12为满
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void ShowPowerVolume(u8 PowerPoint,u8 x,u8 y)
{
	u8 TempStatus[4];
	ReadFontData(&TempStatus[0],BatteryStatus + PowerPoint*4,1);
	ReadFontData(&TempStatus[1],BatteryStatus + PowerPoint*4+1,1);
	ReadFontData(&TempStatus[2],BatteryStatus + PowerPoint*4+2,1);
	ReadFontData(&TempStatus[3],BatteryStatus + PowerPoint*4+3,1);
	fDispHZ16(TempStatus[0],TempStatus[1],x,y,NORVIEW);
	fDispHZ16(TempStatus[2],TempStatus[3],x+16,y,NORVIEW);
}

/**************************************************************************
函数名称: void DrawLine(x1,y1,x2,y2)
函数版本: 1.00  
作者:     ysh
创建日期: 2003.01.07       
函数功能说明:在LCD屏上两点之间划一条直线
输入参数:(x1,y1)为起始坐标点,(x2,y2)为结束坐标点
		   在x方向取值在0-160之间,y方向在0-128之间
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
增加批注:此划线程序在划斜线时只能实现45度角,即x和y步距只能一样
***************************************************************************/
void DrawLine(u8 x1,u8 y1,u8 x2,u8 y2)
{
	u8 ii,jj,linetemp[8];

	ReadFontData(linetemp,LineChar,8);
	
	if(y1==y2)
	{
		for(ii=x1;ii<x2;ii++)		
		{
			Temp_LcdBuffer[ii+(15-y1/8)*160] |= linetemp[y1%8];
		}
	}
	else if(x1==x2)
	{
		for(ii=y1;ii<y2;ii+=8)		
		{
			if(ii+8 > y2)
			{
				for(jj=ii;jj<y2;jj++)
					
				{

					Temp_LcdBuffer[x1+(15-jj/8)*160] |= linetemp[jj%8];
				
				}
			}
			else
			{
				Temp_LcdBuffer[x1+(15-ii/8)*160] |= 0xff;
			}
			
		}
	}
	else
	{
		jj = y1;
		for(ii=x1;ii<x2;ii++)		
		{
			Temp_LcdBuffer[ii+(15-jj/8)*160] |= linetemp[jj%8];
			if(jj<y2)
			{
				jj++;
			}
		}

	}
}

/**************************************************************************
函数名称: void DrawSquare(x1,y1,x2,y2)
函数版本: 1.00  
作者:     ysh
创建日期: 2003.01.07       
函数功能说明:在LCD屏上两点之间划一个矩形
输入参数:(x1,y1)为起始坐标点,(x2,y2)为结束坐标点
		在x方向取值在0-160之间,y方向在0-128之间
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void DrawSquare(u8 x1,u8 y1,u8 x2,u8 y2)
{
	DrawLine(x1,y1,x2,y1);
	DrawLine(x1,y1,x1,y2);
	DrawLine(x1,y2,x2,y2);
	DrawLine(x2,y1,x2,y2);
}

/**************************************************************************
函数名称: void DevideByte(u8 DispChar,u16 GrayClass)
函数版本: 1.00  
作者:     ysh
创建日期: 2003.02.07       
函数功能说明:将单个字节按灰度等级将各位转换为对应的两位,即两个字节。
输入参数:DispChar为待转换的字节,GrayClass为灰度等级,取值范围在0x00~0x04之间。
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void DevideByte(u16 GrayClass)
{
	u8 temp;
	u16 kk;
#if 0
	
	GrayVal.DataAdd_I = 0x00;
	
	for(temp = 0x01; temp != 0x0 ; temp <<= 1)
	{
		if(temp&DispChar)
		{
			GrayVal.DataAdd_I |= GrayClass;
		}
		GrayClass <<= 2;
	}
	
#else
	
	for(kk = 0 ; kk < 2560 ; kk++)
	{
	
		GrayVal.DataAdd_I = 0x00;
	
		for(temp = 0x01; temp != 0x0 ; temp <<= 1)
		{
			if(temp&Temp_LcdBuffer[kk])
			{
				GrayVal.DataAdd_I |= GrayClass;
			}
			GrayClass <<= 2;
		}
		Temp_LcdBuffer_Gray[2*kk] = GrayVal.DataAdd_I >> 8;
		Temp_LcdBuffer_Gray[2*kk+1] = GrayVal.DataAdd_I;

	}
#endif
}

/**************************************************************************
函数名称: void ViewScrollText(void)
函数版本: 1.00  
作者:     ysh
创建日期: 2003.02.07       
函数功能说明:滚屏显示程序
输入参数:无
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void ViewScrollText(void)
{
	delay_ms(10);
	S1D15E05_Command(SETAREASCROLL); //屏幕局部滚动设置(17)
	S1D15E05_Data(0x01);		     //向上滚动
	S1D15E05_Data(0x0);	
	S1D15E05_Data(0x80);
	S1D15E05_Data(0x00);	
	S1D15E05_Data(0x80);	
	delay_ms(10);
}

/**************************************************************************
函数名称: void Disp_Bmp(u8 x, u8 y,u8 BMP_CLASS)
函数版本: 1.00  
作者:     ysh
创建日期: 2007.4.4       
函数功能说明:表图标显示
输入参数: x,y为图片显示坐标
		   BMP_CLASS为表图片选择:Disp_Play_Bmp表播放,Disp_Pause_Bmp表暂停,Disp_Stop_Bmp表停止,
		   Disp_PlayHole_Bmp表空心播放,Disp_PauseHole_Bmp表空心暂停,Disp_StopHole_Bmp表空心停止
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void Disp_Bmp(u8 x, u8 y,u8 BMP_CLASS)
{
	u8 ii,m;
	u16 Sch1,Sch2;
	u8 TempBuf[33];
	u8 temp[32];

	switch(BMP_CLASS)
	{
		case Disp_Play_Bmp:
		{
			ReadFontData(temp,play,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		case Disp_Pause_Bmp:
		{
			ReadFontData(temp,pause,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		case Disp_Stop_Bmp:
		{
			
			ReadFontData(temp,stop,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		
		case Disp_PlayHole_Bmp:
		{
			ReadFontData(temp,play_new,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		case Disp_PauseHole_Bmp:
		{
			ReadFontData(temp,pause_new,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		case Disp_StopHole_Bmp:
		{
			ReadFontData(temp,stop_new,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		case Disp_Charge1_Bmp:
		{
			
			ReadFontData(temp,charge1,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		case Disp_Charge2_Bmp:
		{
			ReadFontData(temp,charge2,32);
			for(ii=0;ii<32;ii++)
			{
				TempBuf[ii]=temp[ii];
			}
		}break;
		default:
		return;
	}
	for(m=0;m<2;m++)				//每行共为两页
	{
		Sch1 = x+(15-2*y-m)*160;	//更新显示数据地址
		Sch2 = 16*m;				//共32个字节的点阵数据
		for(ii=0;ii<16;ii++)		//每个汉字为16列
		{
			Temp_LcdBuffer[Sch1+ii] =  TempBuf[Sch2+ii];	//点阵数据取反放入缓冲区
		}
	}
}

/**************************************************************************
函数名称: void ShowPower(u8 PowerPoint)
函数版本: 1.00  
作者:     yht
创建日期: 2007.04.19       
函数功能说明:在右上角显示电池电量
输入参数:     PowerPoint为电池电量各种状态,从0~12,0为空,12为满
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void ShowPower(u8 PowerPoint)
{
	u8 ii,jj;
	u16 Sch1;

	for(ii=14;ii<16;ii++)                  //在Y方向共16行
	{
		Sch1 = 160*ii;	                   //在X方向共160列,变化一行就偏移160。
		for(jj=128;jj<160;jj++)
		{
			Temp_LcdBuffer[Sch1+jj] = 0x0;//缓冲区清零	
		}
	}
	if(PowerPoint>12)
	{
		ShowPowerVolume(12,128,0);
	}
	else
	{
		ShowPowerVolume(PowerPoint,128,0);
	}
	FlushRec(0,0);
}

/**************************************************************************
函数名称: void DispCDMA(u8 x, u8 y,u8 quality)
函数版本: 1.00  
作者:     ysh
创建日期: 2007.4.4       
函数功能说明:CDMA信号量显示图标
输入参数: x,y为图片显示坐标
		   quality为表图片选择:信号量分0-5级
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void DispCDMA(u8 x, u8 y,u8 quality)
{
	u8 ii,m;
	u16 Sch1,Sch2;
	u8 LQItemp[32];
	
	if(quality==0)
	{
		ReadFontData(LQItemp,LQI0,32);	
	}
	else if(quality==1)
	{
		ReadFontData(LQItemp,LQI1,32);				
	}				
	else if(quality==2)
	{
		ReadFontData(LQItemp,LQI2,32);				
	}
	else if(quality==3)
	{
		ReadFontData(LQItemp,LQI3,32);				
	}					
	else if(quality==4)
	{
		ReadFontData(LQItemp,LQI4,32);				
	}
	else if(quality==5)
	{
		ReadFontData(LQItemp,LQI5,32);				
	}
	for(m=0;m<2;m++)				//每行共为两页
	{
		Sch1 = x+(15-2*y-m)*160;	//更新显示数据地址
		Sch2 = 16*m;				//共32个字节的点阵数据
		for(ii=0;ii<16;ii++)		//每个汉字为16列
		{
			Temp_LcdBuffer[Sch1+ii] =  LQItemp[Sch2+ii];	//点阵数据取反放入缓冲区
		}	
	}			
			
}


void DisPowerNew(u8 PowerValue)
{
	u8 ii,m;
	u16 Sch1,Sch2;
	u8 TempBuf[48];
	
	if(PowerValue>12)
	{
		PowerValue=12;
	}
	ReadFontData(TempBuf,BatteryAddress+PowerValue*48,48);
	for(m=0;m<2;m++)					//每行共为两页
	{
		Sch1 = 136+(15-m)*160;		    //更新显示数据地址
		Sch2 = 24*m;					//共24个字节的点阵数据
		for(ii=0;ii<24;ii++)			//电池图标为24列,即一个半字
		{
			Temp_LcdBuffer[Sch1+ii] = TempBuf[Sch2+ii];	//点阵数据取反放入缓冲区
		}
	}
	FlushRec(0,0);
}

/**************************************************************************
函数名称: void DisplayArrow(u8 x, u8 y,u8 direction,u8 attr)
函数版本: 1.00  
作者:     yht
创建日期: 2007.05.23       
函数功能说明:显示左右箭头
输入参数:     direction 为 	RIGHT_DIRT  显示右箭头
			   			   	LEFT_DIRT  显示左箭头
			  				BOTH_DIRT  显示左右箭头
			 attr为显示属性 
						 	NORVIEW 正显数据
						 	REVVIEW 反显数据
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空      
更新后的上述资源:空
***************************************************************************/
void DisplayArrow(u8 x, u8 y,u8 direction,u8 attr)
{
	u8 ii,m;
	u16 Sch1,Sch2;
	
	ReadFontData(PicBuf,ArrowAddress + 64*direction,64);
	
	for(m=0;m<2;m++)					//每行共为两页
	{
		Sch1 = x+(15-2*y-m)*160;	    //更新显示数据地址
		Sch2 = 32*m;					//共24个字节的点阵数据
		 
		for(ii=0;ii<32;ii++)			//电池图标为24列,即一个半字
		{
			if(attr==NORVIEW)
				Temp_LcdBuffer[Sch1+ii] = PicBuf[Sch2+ii];	
			else if(attr==REVVIEW)  
				Temp_LcdBuffer[Sch1+ii] = ~PicBuf[Sch2+ii];//点阵数据取反放入缓冲区	
		}
	}
	
	//FlushRec(y,y);
}

/**************************************************************************
函数名称: void Display_Icon(u8 icon)
函数版本: 1.00  
作者:     yht
创建日期: 2007.06.28      
函数功能说明:显示CDMA、UT-NET、IRDA左上角图标
输入参数:     icon 为 	    CDMA_Icon    显示CDMA Icon
			   			   	UT_NET_Icon  显示UT_NET Icon
			  				IRDA_Icon    显示IRDA Icon
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空      
更新后的上述资源:空
***************************************************************************/
void Display_Icon(u8 icon)
{
	u8 ii,m,k;
	u16 Sch1,Sch2;
	
	if(icon == 0)
	{
		k = 23; 
		ReadFontData(PicBuf,Icon_Address,46);
	}
	else if(icon == 1)
	{
		k = 29; 
		ReadFontData(PicBuf,Icon_Address+46,58);
	}
	else if(icon == 2)
	{
		k = 21; 
		ReadFontData(PicBuf,Icon_Address+46+58,42);
	}
	
	for(m=0;m<2;m++)				//每行共为两页
	{
		Sch1 = (15-m)*160;		    //更新显示数据地址
		Sch2 = k*m;					//共24个字节的点阵数据
		
		for(ii=0;ii<29;ii++)			
		{
			Temp_LcdBuffer[Sch1+ii] = 0;//点阵数据取反放入缓冲区
		}
		for(ii=0;ii<k;ii++)			
		{
			Temp_LcdBuffer[Sch1+ii] = PicBuf[Sch2+ii];	//点阵数据取反放入缓冲区
		}
	}
	FlushRec(0,0);
}

⌨️ 快捷键说明

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