📄 lcd501.c
字号:
//======================================================================================================
// 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 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 + -