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

📄 lcd501.c

📁 凌阳SPDA1000 MP3开发资料
💻 C
📖 第 1 页 / 共 2 页
字号:
//======================================================================================================
//   Project Name(项目名称):  SPCA755 rebuild
//   File Name(模块名称): lcd501.c
//   Built Date(创建日期):
//   Abstract(模块描述): 
//   Revision History(版本信息):
//   Rev      Date           Author       Comment(修改说明)
//   1.0                                  created
//======================================================================================================
#include "..\userdefine.h"
#include "lcd501.h"
#include "..\USER\user.h"
#include "..\USER\userinit.h"
#include "..\USER\main.h"
//======================================================================================================
U8				X_G_OverStep_DispArea;//lyh add to indicate the screen to show is beyond the LCD or not!
data	U16		gw_PowerOffTimer;//lyh add
//U8 xdata X_G_DispFileName_ByteOffset;//lyh add multi with gw_DispFileName_ByteOffset
xdata	U8		gc_PlaySequenceMode;//lyh add
xdata 	U16 	gw_DispFileName_ByteOffset;//lyh add
//======================================================================================================
void LCD501_Disp_ABPoint(U8 gc_AB_Cnt);
void LCD501_Disp_Apoint(U8 OnOff);
void LCD501_Disp_Battery();
void LCD501_Disp_BattValue();
void LCD501_Disp_Bitrate(unsigned int bitrate);
void LCD501_Disp_Bpoint(U8 OnOff);
void LCD501_Disp_CheckDisk();
void LCD501_Disp_CurrentFileMode(U8 CurrentFileMode);
void LCD501_Disp_DeleteOrnot();
void LCD501_Disp_DSPEQ(U8 gc_PlayEQMode);
void LCD501_Disp_ENG_Menu(U8 SubState);
void LCD501_Disp_FileIndex_InDIR(unsigned int FileIndex,unsigned int DirTotalFile);
U8 LCD501_Disp_FileName(U8 *DataBuf, U8 nByte,U8 DispOnOff);
void LCD501_Disp_FreeMemory();
void LCD501_Disp_Full();
void LCD501_Disp_FWVersion();
void LCD501_Disp_HHMMSS(unsigned int LCD_SecondNum);
void LCD501_Disp_Icon_Lock(U8 OnOff);
void LCD501_Disp_IconMenu(U8 SubState);
void LCD501_Disp_LowBattery();
void LCD501_Disp_NoFile(U8 selectDir);
void LCD501_Disp_PCConnect();
void LCD501_Disp_PowerOff();
void LCD501_Disp_REP1ALL(U8 G_Rep_Cnt);
void LCD501_Disp_Saving();
void LCD501_Disp_StorageError(U8 ErrNo);
void LCD501_Disp_TotalMemory();
void LCD501_Disp_VOL_LEVEL(U8 G_DSP_Volume);
void LCD501_HEX_BCD(unsigned int num,U8 *Hi,U8 *MidH, U8 *MidL, U8 *Low);
void LCD501_MP3_Playing_LCDHandle();
void LCD501_Playing_Pause_Stop_Record(U8 XState);
void LCD501_PlayingRecording_HandleTime();
void LCD501_Adjust_Contrast(U8 G_Current_Contrast);

void SPLC501_Disp_TASOLogo();//lyh lss
//======================================================================================================
void LCD501_Disp_Icon_Lock(U8 OnOff)
{
   SPLC501_Disp_Lock(OnOff);
}
//======================================================================================================
void LCD501_Disp_VOL_LEVEL(U8 G_DSP_Volume)
{
   SPLC501_Disp_Volume(G_DSP_Volume/3);
}
//======================================================================================================
void LCD501_Disp_ABPoint(U8 gc_AB_Cnt)
{
    switch(gc_AB_Cnt)
	{
	case 0:
		SPLC501_Disp_Apoint(OFF);
		SPLC501_Disp_Bpoint(OFF);
		break;
	case 1:
		SPLC501_Disp_Apoint(ON);
		SPLC501_Disp_Bpoint(OFF);
		break;
	case 2:
		SPLC501_Disp_Apoint(ON);
		SPLC501_Disp_Bpoint(ON);
		break;
	}
}
//======================================================================================================
void LCD501_Disp_Apoint(U8 OnOff)
{
   SPLC501_Disp_Apoint(OnOff);
}
//======================================================================================================
void LCD501_Disp_Bpoint(U8 OnOff)
{
   SPLC501_Disp_Bpoint(OnOff);
}
//======================================================================================================
void LCD501_Disp_IconMenu(U8 SubState)
{
	SubState--;
	LCD501_Disp_ENG_Menu(SubState);
}
//======================================================================================================
void LCD501_Disp_REP1ALL(U8 G_Rep_Cnt)
{
    SPLC501_Disp_REP1ALL(G_Rep_Cnt);
}
//======================================================================================================
void LCD501_Disp_DSPEQ(U8 gc_PlayEQMode)
{
	U8 code X_EQ[][4]=
	{
		{'N','O','R','M'},
		{'D','B','B',' '},
		{'J','A','Z','Z'},
		{'D','I','S','C'},
		{'P','O','P',' '},
		{'C','L','A','S'},
		{' ',' ',' ',' '}
	};
	if(gc_UIMode)//if DVR mode, don't disp EQ mode
	{
		gc_PlayEQMode=6;
	}
	SPLC501_Disp_LittleString(0,34,&X_EQ[gc_PlayEQMode][0],4);
}
//======================================================================================================
void LCD501_Disp_Battery()
{
	if(gc_Battery_Level<gc_Battery_GroupValue[0])//small than 0.9v,show low battery!
	{
		gc_LowBatt_SecondCount++;
		if(gc_LowBatt_SecondCount%2)
		{
			SPLC501_Disp_Battery(0);
		}else{
			SPLC501_Disp_Battery(5);
		}
		if(gc_LowBatt_SecondCount>10) gb_LowBatt_State=1;
	}
	else
	{
		LCD501_Disp_BattValue();
	}
}
//======================================================================================================
void LCD501_Disp_BattValue()
{
	gc_LowBatt_SecondCount=0;
	gb_LowBatt_State=0;
	if(gc_Battery_Level<gc_Battery_GroupValue[1])
	{
		SPLC501_Disp_Battery(0);
	}else{
		if(gc_Battery_Level<gc_Battery_GroupValue[2])
		{
			SPLC501_Disp_Battery(1);
		}else{
			if(gc_Battery_Level<gc_Battery_GroupValue[3])
			{
				SPLC501_Disp_Battery(2);
			}else{
				if(gc_Battery_Level<gc_Battery_GroupValue[4])
				{
					SPLC501_Disp_Battery(3);
				}else{
					SPLC501_Disp_Battery(4);
				}
			}
		}
	}
}
//======================================================================================================
void LCD501_Disp_CurrentFileMode(U8 CurrentFileMode)
{
	U8 X_PlayMode;

	switch(CurrentFileMode)
	{
	case KDSP_MP3_MODE:
		if(gc_SystemStateMode==SYSTEM_STATE1_PLAYING)
		{
			if(_WMA)
			{
				X_PlayMode=2;//WMA
			}else{
				X_PlayMode=0;//MP3
			}
		}else{
			X_PlayMode=3;//MP3
		}
		break;
	case KDSP_DVRD_MODE:
	case KDSP_DVRE_MODE:
		if(gc_SystemStateMode==SYSTEM_STATE1_PLAYING)
		{
			if(_G723)//now convert
			{
				X_PlayMode=4;//WAV  X_PlayMode=5;//ASF
			}else{
				X_PlayMode=5;//ASF  X_PlayMode=4;//WAV
			}
		}else{
			X_PlayMode=1;//Voice
		}
		break;
	default:
		break;
	}

	SPLC501_Disp_PlayMode(X_PlayMode);
}
//======================================================================================================
//extern U8 code BmpDigitNDChar[][5];///====need to add here!
void LCD501_Disp_Bitrate(unsigned int bitrate)
{
	U8 Data[3];
	U8 i;
	U8 code BMP_KBPS[]=
	{
		0xFC,0x30,0x48,0x84,0xFC,0x90,0x90,0x60,0xFC,0x24,0x24,0x18,0x48,0x94,0xA4,0x48,
	};

	LCD501_HEX_BCD(bitrate,&i,(Data),(Data+1),(Data+2));
	#if (Glass_ColumnNum==132)
	SPLC501_Set_PageNColumn_Address(3,42);
	#else
	SPLC501_Set_PageNColumn_Address(3,34);
	#endif

	if(bitrate==0)
	{//disp space
/*		for(i=0;i<16+15+1;i++)
		{
			write_SPLC501CD(0);//whne the bitrate is 0,show space.
		}
*/
		SPLC501_Disp_LittleChar(0);
	}else{
		SPLC501_Disp_LittleChar(Data[0]);
		SPLC501_Disp_LittleChar(Data[1]);
		SPLC501_Disp_LittleChar(Data[2]);
	#if 0
		#if (Glass_ColumnNum==132)
		SPLC501_Disp_LittleString(3,34+2,Data,3);
		#else
		SPLC501_Disp_LittleString(3,34,Data,3);
		#endif
	#endif
}
		for(i=0;i<16;i++)
		{
			write_SPLC501CD(BMP_KBPS[i]);
		}
		write_SPLC501CD(0);
}
//======================================================================================================
void LCD501_HEX_BCD(unsigned int num,U8 *Hi,U8 *MidH, U8 *MidL, U8 *Low)
{
	*Hi=num/1000;
	*MidH=(num-((unsigned int)*Hi*1000) )/100;
	*MidL=(num- ((unsigned int)*Hi*1000) - ((unsigned int)*MidH*100) )/10;
	*Low=num%10;
	if(*Hi>10){ 
		*Hi=*Hi%10;
	}
}
//======================================================================================================
void LCD501_Disp_FileIndex_InDIR(unsigned int FileIndex,unsigned int DirTotalFile)
{
	U8 Data[5];
	LCD501_HEX_BCD(FileIndex,(Data+2),(Data+2),(Data),(Data+1));
	LCD501_HEX_BCD(DirTotalFile,(Data+2),(Data+2),(Data+3),(Data+4));
	Data[2]=11;            //11 offset means '/'
	#if (Glass_ColumnNum==132)
	SPLC501_Disp_TrackOrTime(Data,102);
	#else
	SPLC501_Disp_TrackOrTime(Data,98);
	#endif
}
//======================================================================================================
void LCD501_Disp_HHMMSS(unsigned int LCD_SecondNum)//show the time
{
	U8 Time[5];
	Time[1]=(U8)(LCD_SecondNum/60);
	Time[0]=(Time[1]/10)%10;Time[1]=Time[1]%10;

	Time[4]=LCD_SecondNum%60;
	Time[3]=Time[4]/10;Time[4]=Time[4]%10;

	Time[2]=10; //10 offset means ':'
	#if (Glass_ColumnNum==132)
	SPLC501_Disp_TrackOrTime(Time,74);
	#else
	SPLC501_Disp_TrackOrTime(Time,70);
	#endif
}
//======================================================================================================
void LCD501_Playing_Pause_Stop_Record(U8 XState)
{

	SPLC501_Playing_Pause_Stop_Record(XState);
}
//======================================================================================================
void LCD501_Disp_NoFile(U8 selectDir)
{
	SPLC501_Disp_NoFile(selectDir);
}
//======================================================================================================
U8 LCD501_Disp_FileName(U8 *DataBuf, U8 nByte,U8 DispOnOff)
{
	U8 i,Column;
	U8 Tmp_DataBuf[24];
	U8 Sts;
	//L2_MCUClock_Select(L2K_MCU06to24);
//  USER_MCUClock_Select(0);
	i=0;
	Column=7;
	while(i<nByte)
	{
		if(DispOnOff)
		{
		
			X_HZK_Get_BMP(*(DataBuf+i),*(DataBuf+i+1),Tmp_DataBuf);
		}
		//	printf("data1=%bx\n",*(DataBuf+i));
		//	printf("data2=%bx\n",(DataBuf+i+1));
		if( ((*(DataBuf+i))&0x80) && (G_CurrentHZK!=Language_German))
		{//Chinese characters
			if((Column+12)>Glass_ColumnNum)
			{
				Sts=1;
				goto DispOver;
			}
			if(DispOnOff)
			{
				LCD_disp_HZKCharBMP(1,Column,Tmp_DataBuf,IsWord,0);
			}
			Column+=12;
			i+=2;
		}else{
			if((Column+8)>Glass_ColumnNum)
			{
				Sts=1;
				goto DispOver;
			}
			if(DispOnOff)
			{
				LCD_disp_HZKCharBMP(1,Column,Tmp_DataBuf,IsChar,0);
			}
			Column+=8;			
			i++;
		}
	}
	Sts=0;
DispOver:
	while(Column<Glass_ColumnNum && DispOnOff)//没显示的地方补零
	{
		SPLC501_Set_PageNColumn_Address(1,Column);
		write_SPLC501CD(0x00);
		SPLC501_Set_PageNColumn_Address(2,Column);
		write_SPLC501CD(0x00);
		Column++;
/*
		for(i=0;i<24;i++)
		{
			Tmp_DataBuf[i]=0x00;
		}
		if(DispOnOff)
		{
			LCD_disp_HZKCharBMP(1,Column,Tmp_DataBuf,IsWord);
		}
		Column+=12;
*/
	}
	if(Sts)
	{
		if( ((*DataBuf)&0x80) && (G_CurrentHZK!=Language_German))
		{
			gw_DispFileName_ByteOffset++;
		}
		gw_DispFileName_ByteOffset++;
	}else{
		gw_DispFileName_ByteOffset=0;
	}
	//L2_MCUClock_Select(L2K_MCU24to06);
//printf("Sts=%bu\n",Sts);
	return Sts;//overstep display area
}
//======================================================================================================
void LCD501_Disp_StorageError(U8 ErrNo)
{

	U8  XDOSERROR[] = {'D','O','S',' ','E','R','R','O','R',' ',' '};
	U8 code XPLSFORMAT[]={'P','L','E','A','S','E',' ','F','O','R','M','A','T'};
	LCD501_Clear_ALL();
    //printf("doss error = %bx\n",ErrNo);
    XDOSERROR[10] = (ErrNo >> 4) ;
    XDOSERROR[11] = (ErrNo & 0x0f) ;
	SPLC501_Disp_LittleString(1,20,XDOSERROR,12);
	SPLC501_Disp_LittleString(2,10,XPLSFORMAT,13);
}
//======================================================================================================
void LCD501_Disp_TotalMemory()
{
    U8 i	 ;
	U8 Data[7];
    U32 tdw_CARD_TotalSizeMB;
	U8 code *TotalMemory[]={"Total Memory:","总容量:",};

    tdw_CARD_TotalSizeMB=USER_Get_SYSInformation(1);//lyh add
//	printf("tdw_CARD_TotalSizeMB = %lx\n",tdw_CARD_TotalSizeMB);//lixt memory
	LCD501_Clear_ALL();
	LCD501_HEX_BCD(tdw_CARD_TotalSizeMB,(Data+1),(Data+2),(Data+3),(Data+4));//modified by lyh!
 	//Data[3]='.';Data[4]='0';Data[5]='M';Data[6]='\0';
    Data[5]='M';Data[6]='\0';
	Data[0]=' ';
    for( i =0; i <4;i++)
     if (Data[i] == 0) Data[i] =' ';
   

#if (Glass_ColumnNum==132)
	SPLC501_Printf(0x00,0x07,TotalMemory[gc_MenuHZK]);
	SPLC501_Printf(0x02,50,Data);
#else
	SPLC501_Printf(0x00,0x00,TotalMemory[gc_MenuHZK]);
	SPLC501_Printf(0x02,50,Data);
#endif
}
//======================================================================================================
void LCD501_Disp_FreeMemory()
{  
	U8 Data[8];
	U8 code *FreeMemory[]={"Free Memory:","剩余容量:",};

	LCD501_Clear_ALL();
	if(/*_G_FAT32Error||*/gc_DOS_ErrorStatus)//xyq modify 040614
	{
		gdw_Dos_FreeMemorySizeMB=0;
	}  
	LCD501_HEX_BCD(gdw_Dos_FreeMemorySizeMB,(Data),(Data+1),(Data+2),(Data+4));
	//Data[0]=gdw_Dos_FreeMemorySizeMB/1000;
	if(Data[0]==0)
	{
		Data[0]=' ';
		if(Data[1]==0) Data[1]=' ';
	}
	Data[3]='.';
	Data[5]='M';
	Data[6]='\0';
//printf("Data[0]=%bu\n",Data[0]);
//printf("Data[1]=%bu\n",Data[1]);
//printf("Data[2]=%bu\n",Data[2]);
//printf("Data[3]=%bu\n",Data[3]);
//printf("Data[4]=%bu\n",Data[4]);

/*
    if(Data[0] >= 10)
    {
	 for ( i=0;i<6;i++)
    	    Data[7-i]=Data[6-i];
     Data[1] = Data[0] %10;    
     Data[0] = Data[0] /10;     
    }
    for ( i=0;i<7;i++)
    		if(Data[i]==0)Data[i]='0';

⌨️ 快捷键说明

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