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

📄 lcd.c

📁 str71arm平台下的sed1335驱动
💻 C
📖 第 1 页 / 共 4 页
字号:
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void DispCursor(void)
{
	u8 ii,Temp;
	
	CursorBit = !CursorBit;				 //反复将光标标志取反
	Temp = CursorBit;
	LcdGotoxy(PositionX,14-2*PositionY); //根据显示完字符串后的坐标值确定光标位置	
	S1D15E05_Command(DISPDATAWRITE);
	for(ii=0;ii<8;ii++)					 //显示光标,一个光标占8列
	{
		XBYTE[WR_D15E05] = Temp;
	}
}

/**************************************************************************
函数名称: void LogonPic(void)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.11.10       
函数功能说明:开机后的启动画面
输入参数:无
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void LogonPic(void)
{
	u8 ii,jj,tt;
	u16 Sch1,kk;
	u32 TempSch1;
	
	TempSch1 = PICTUREDATA-2560;		  //确定全幅图片点阵数据的起始地址
	ReadFontData(PicBuf,TempSch1,2560);	  //取出2560个字节到显示缓冲   
	kk =0;
	for(ii=0;ii<16;ii++)					
	{
		Sch1 = 160*(15-ii);
		for(jj=0;jj<160;jj++)
		{
			Temp_LcdBuffer[Sch1+jj] = PicBuf[kk];
			kk++;
		}
	}
	OpenLcd();	
	
	for(tt=0;tt<15;tt++)
	{
		TempSch1 = PICTUREDATA+104*tt;			//确定部分图片点阵数据的起始地址
		ReadFontData(PicBuf,TempSch1,104);		//取出104个字节到显示缓冲    
		kk =0;
      	for(ii=5;ii<9;ii++)
      	{
      		Sch1 = 160*(15-ii);
			for(jj=28;jj<54;jj++)
			{
				Temp_LcdBuffer[Sch1+jj] = PicBuf[kk];
				kk++;
			}
		}
		FlushRec(2,4);						   //循环显示更新数据以达到动画效果
		delay_ms(20);	
	}
}

/**************************************************************************
函数名称: void LogonPic(void)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.11.10       
函数功能说明:显示优特LOGO及电脑钥匙图标
输入参数:无
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:把原来lcd.c中的logo数组写到了flash中,这里是从flash中把它读出来
***************************************************************************/
void LogonPic_1E(void)
{
    u8 ii,jj,tt;
	u16 Sch1,kk;

	ReadFontData(PicBuf,Logo1,2560);	//取出2560个字节到显示缓冲	
    
    
	kk = 0;
	for(ii=0;ii<16;ii++)					
	{
		Sch1 = 160*(15-ii);
		for(jj=0;jj<160;jj++)
		{
			Temp_LcdBuffer[Sch1+jj] = PicBuf[kk];
			kk++;
		}
	}
	OpenLcd();
	

	for(tt=0;tt<3;tt++)
	{
		ReadFontData(PicBuf,Logo4,640);
		kk =0;
		for(ii=0;ii<4;ii++)
		{
			Sch1 = 160*(15-ii);
			for(jj=0;jj<160;jj++)
			{
				Temp_LcdBuffer[Sch1+jj] = PicBuf[kk];
				kk++;
			}
		}
	    FlushRec(0,2);							//循环显示更新数据以达到动画效果
		delay_ms(100);
		
		ReadFontData(PicBuf,Logo3,640);
		kk =0;
		for(ii=0;ii<4;ii++)
		{
			Sch1 = 160*(15-ii);
			for(jj=0;jj<160;jj++)
			{
				Temp_LcdBuffer[Sch1+jj] = PicBuf[kk];
				kk++;
			}
		}
		FlushRec(0,2);							//循环显示更新数据以达到动画效果
		delay_ms(100);

		ReadFontData(PicBuf,Logo2,640);
		kk =0;
		for(ii=0;ii<4;ii++)
		{
			Sch1 = 160*(15-ii);
			for(jj=0;jj<160;jj++)
			{
				Temp_LcdBuffer[Sch1+jj] = PicBuf[kk];
				kk++;
			}
		}
		FlushRec(0,2);							//循环显示更新数据以达到动画效果
		delay_ms(100);
		
		ReadFontData(PicBuf,Logo1,640);
		kk =0;
		for(ii=0;ii<4;ii++)
		{
			Sch1 = 160*(15-ii);
			for(jj=0;jj<160;jj++)
			{
				Temp_LcdBuffer[Sch1+jj] = PicBuf[kk];
				kk++;
			}
		}
		FlushRec(0,2);							//循环显示更新数据以达到动画效果
		delay_ms(100);
	}	 
}


//====================增值服务函数==================================//

/**************************************************************************
函数名称: u16 HEX_TO_BCD(u16 hexnumber)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.12.10       
函数功能说明:把十六进制数换算成十进制数,最大到9999.
输入参数:hexnumber十六进制数,
输出参数:无
返回值:  返回值为整型.
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
u32 HEX_TO_BCD(u16 hexnumber)
{
	u32 bcdnumber1;
	u16 bcdnumber2;
	u16 bcdnumber3;
	u16 bcdnumber4;
	u16 temp;
	u32 temp1;
	
	bcdnumber1=hexnumber/10000;
	temp=hexnumber%10000;
	
	bcdnumber2=temp/1000;	
	temp%=1000;
	
	bcdnumber3=temp/100;
    temp%=100;
	
	bcdnumber4=temp/10;
    temp%=10;
    
	temp1=temp+(bcdnumber4<<=4)+(bcdnumber3<<=8)+(bcdnumber2<<=12)+(bcdnumber1<<=16);
    return(temp1);
}


/**************************************************************************
函数名称: u8 BCD_TO_ASC(u8 InputData)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.12.10       
函数功能说明:BCD变成ASC码
输入参数:InputData BCD数,
输出参数:无
返回值:  返回值为BCD.
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
u8 BCD_TO_ASC(u8 InputData)
{
	InputData&=0x0f;
	InputData=InputData+0x30;
	return(InputData);
}

/**************************************************************************
函数名称: void fDispQuickNum(u16 InputData,u8 x,u8 y,u8 attr)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.12.10       
函数功能说明:供通讯使用,即时显示一个整数,最大到999.输入的十六进制数,显示的是BCD十进制数.
输入参数:InputData 输入的十六进制数
输出参数:无
返回值:  
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void fDispQuickNum(u16 InputData,u8 x,u8 y,u8 attr)
{
	u8 TempDataH,TempDataL,TempData,ii;
	u32 ttt=0;
	ii = 0;

	 if(InputData ==0)
	 	LcdClrBlock(x,x+40,y);
	if(InputData > 9999)
	{
		ttt = HEX_TO_BCD(InputData);
		DispBCDBuf[ii]=BCD_TO_ASC(ttt>>16);
		ii++;
		
		InputData = ttt;
		TempDataL = InputData&0x00ff;
		TempDataH = (InputData&0xff00)>>8;
		
		TempData=TempDataH;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataH);
		ii++;
		
		TempData=TempDataL;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataL);
		ii++;
		DispBCDBuf[ii]=0;
		
	}
	else if(InputData > 99)
	{
		InputData = HEX_TO_BCD(InputData);
		
		TempDataL = InputData&0x00ff;
		TempDataH = (InputData&0xff00)>>8;
		
		TempData=TempDataH;
		TempData>>=4;
		if(TempData!=0)
		{
			DispBCDBuf[ii]=BCD_TO_ASC(TempData);
			ii++;
		}
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataH);
		ii++;
		
		TempData=TempDataL;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataL);
		ii++;
		DispBCDBuf[ii]=0;
	}
	else
	{
		InputData = HEX_TO_BCD(InputData);
		TempData=InputData;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		DispBCDBuf[ii]=BCD_TO_ASC(InputData);
		ii++;
		DispBCDBuf[ii]=0;
	}
	
	ii++;
	DispBCDBuf[ii]=0;
	
	LcdPrintf(DispBCDBuf,x,y,attr);
	FlushRec(y,y);

}

/**************************************************************************
函数名称: void fDispIntNum(u16 InputData,u8 x,u8 y,u8 attr)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.12.10       
函数功能说明:显示一个整数,最大到999.输入的十六进制数,显示的是BCD十进制数.
输入参数:InputData 输入的十六进制数
输出参数:无
返回值:  
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void fDispIntNum(u16 InputData,u8 x,u8 y,u8 attr)
{
	u8 TempDataH,TempDataL,TempData,ii;
	u32 ttt=0;
	ii = 0;

	if(InputData > 9999)
	{
		ttt = HEX_TO_BCD(InputData);
		DispBCDBuf[ii]=BCD_TO_ASC(ttt>>16);
		ii++;
		
		InputData = ttt;
		TempDataL = InputData&0x00ff;
		TempDataH = (InputData&0xff00)>>8;
		
		TempData=TempDataH;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataH);
		ii++;
		
		TempData=TempDataL;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataL);
		ii++;
		DispBCDBuf[ii]=0;
		
	}
	else if(InputData > 99)
	{
		InputData = HEX_TO_BCD(InputData);
		
		TempDataL = InputData&0x00ff;
		TempDataH = (InputData&0xff00)>>8;
		
		TempData=TempDataH;
		TempData>>=4;
		if(TempData!=0)
		{
			DispBCDBuf[ii]=BCD_TO_ASC(TempData);
			ii++;
		}
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataH);
		ii++;
		
		TempData=TempDataL;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		DispBCDBuf[ii]=BCD_TO_ASC(TempDataL);
		ii++;
		DispBCDBuf[ii]=0;
	}
	else
	{
		InputData = HEX_TO_BCD(InputData);
		TempData=InputData;
		TempData>>=4;
		DispBCDBuf[ii]=BCD_TO_ASC(TempData);
		ii++;
		DispBCDBuf[ii]=BCD_TO_ASC(InputData);
		ii++;
		DispBCDBuf[ii]=0;
	}
	
	ii++;
	DispBCDBuf[ii]=0;
	
	LcdPrintf(DispBCDBuf,x,y,attr);
}

/**************************************************************************
函数名称: void fDispCharHex(u8 InputData,u8 x,u8 y,u8 attr)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.12.10       
函数功能说明:显示一个整数,最大到255.输入的十制数,显示的是十六进制数.
输入参数:InputData 输入的十进制数,x范围为0-159,y为0-7
输出参数:无
返回值:  
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void fDispCharHex(u8 InputData,u8 x,u8 y,u8 attr)
{
	u8 TempH,TempL,iii;

	iii = 0;
	TempH=(InputData>>4) & 0x0f;
	TempL=InputData & 0x0f;

	if(TempH<0x0a)
	{
		TempH=TempH+0x30;
	}
	else
	{
		TempH=TempH+0x37; //add #'A'-0x0a;
	}
	
	if(TempL<0x0a)
	{
		TempL=TempL+0x30;
	}
	else
	{
		TempL=TempL+0x37; //add #'A'-0x0a;
	}
		DispBCDBuf[iii]=TempH;
		iii++;
		DispBCDBuf[iii]=TempL;
	iii++;
	DispBCDBuf[iii]=0;
	
	LcdPrintf(DispBCDBuf,x,y,attr);
}

/**************************************************************************
函数名称: void fDrawHorLine(x1,x2,y)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.12.10       
函数功能说明:画线函数,水平线在一行字符的中间(占用一行字符空间)    
输入参数:x1,x2为线的起点和终点的x方向坐标在0~153,y为本行的y方向坐标0~7
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
***************************************************************************/
void fDrawHorLine(u8 x1,u8 x2,u8 y)
{
	u8 iii;
	for(iii=x1;iii<x2;iii+=8)          //线字符同ASCII码一样占8列
	{
		fDispAsc16(0xcd,iii,y,NORVIEW);//显示线字符,连续即为一条水平直线
	}
}


/**************************************************************************
函数名称: void fShowArrow(x,y,SpecialChar)
函数版本: 1.00  
作者:     ysh
创建日期: 2002.12.10       
函数功能说明:显示特殊字符的专用函数    
输入参数:x,y为起始点坐标,SpecialChar特殊字符标志,其中
		LEFTARROW表示左箭头
		RIHGTARROW表示右箭头
输出参数:无
返回值:  无
函数扇出清单:空
函数扇入清单:空
函数体中用到的公共资源:空 
更新后的上述资源:空
增加标注:y-x的跨度为7
***************************************************************************/
void fShowArrow(u8 x,u8 y,u8 SpecialChar)
{
	switch(SpecialChar)
	{
		case LEFTARROW://左箭头标志
		{
			fDispAsc16(0xd0,x,y,NORVIEW);
		}break;
		
		case RIGHTARROW://右箭头标志
		{
			fDispAsc16(0xd1,x,y,NORVIEW);
		}break;
		
		default : break;
	}
}

⌨️ 快捷键说明

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