lcd1.c

来自「凌阳MP3 spSPCA755yuanma」· C语言 代码 · 共 861 行 · 第 1/2 页

C
861
字号
/*============================================================================
Copyright (c) 2001 Sunplus Technology Co., Ltd.
Module Name:          LCD1.C
Abstract:             Module related to SPL10 routine
Environment:          Keil C51 Compiler
Revision History:     11/13/2002    XYQ    created
=============================================================================*/

#include "general.h"
#include "spl10.h"
#include "lcd1.h"
#include "main.h"
#include "uiflow.h"

#define SPL10
//temparary

code unsigned char ASCIITable1[]=
{
//  MDigit0  MDigit1  MDigit2  MDigit3  MDigit4  MDigit5  MDigit6  MDigit7  MDigit8  MDigit9
    0xEB,    0x60,    0xC7,    0xE5,    0x6C,    0xAD,    0xAF,    0xE0,    0xEf,    0xED,
//  'A'      'B'      'C'      'D'      'E'      'F'      'G'      'H'      'I'      'J'
    0xEE,    0x2F,    0x8B,    0x67,    0x8F,    0x8E,    0xAF,    0x6E,    0x60,    0x63,
//  'K'      'L'      'M'      'N'      'O'      'P'      'Q'      'R'      'S'      'T'
	0x00,    0x0B,    0x00,    0x26,    0x27,    0xCE,    0x00,    0x0E,    0xAD,    0x0F,
//  'U'      //'V'    //'W'    //'X'    //'Y'    //'Z'    //' '     //'_'    //'-'    
    0x6B,    0x6B,    0x00,    0x00,    0x6d,    0xc7,     0x00,    0x01,	0x04
};

//CGBXDEFA
code unsigned char ASCIITable2[]=
{
//  MDigit0  MDigit1  MDigit2  MDigit3  MDigit4  MDigit5  MDigit6  MDigit7  MDigit8  MDigit9
    0xAF,    0xA0,    0x6D,    0xE9,    0xE2,    0xCB,    0xCF,    0xA1,    0xEF,    0xEB,
//  'A'      'B'      'C'      'D'      'E'      'F'      'G'      'H'      'I'      'J'
    0xE7,    0xCE,    0x39,    0xEC,    0x4F,    0x47,    0xCF,    0xE6,    0xA0,    0xAC,
//  'K'      'L'      'M'      'N'      'O'      'P'      'Q'      'R'      'S'      'T'
	0x00,    0x0E,    0x00,    0xc4,    0xcc,    0x67,    0x00,    0x46,    0xCB,    0x4E,
//  'U'      //'V'    //'W'    //'X'    //'Y'    //'Z'    //' '   //'_'    //'-'   
    0xAE,    0xAE,    0x00,    0x00,    0xE8,    0x6D,     0x00,   0x08,   0x40
};

extern xdata    UCHAR   G_LCDTMoutCnt;
extern  data    BIT     _G723; 
//=====================================================================
//xyq 021226
unsigned char xdata L10_disp_Count;
bit                  SPL10_Disp_Event;
unsigned char data  Disp_Buff[16];
//unsigned char xdata  Disp_7Seg_StartAddr;
extern xdata ULONG   G_FreeTotalSecond;
extern bit G_RecLeftTimeOn;
extern unsigned char xdata  G_SPL_BlinkTimer;
extern unsigned char xdata  G_SPL_BattBlinkTimer;
//extern unsigned int  xdata  G_OLD_LCD_Seconds;
extern xdata WORD           G_W_OldTime;
extern unsigned char xdata  G_Busy_Timer;
//extern unsigned char xdata  G_LCDTrackNum_OldState;//0: show track; 1:show A-->B; 2:show OP Mode

extern unsigned char code   G_Battery_GroupValue[][4];
//===========================================================================
void LCD_Reset(void)
{
	unsigned char i;
	for(i=0;i<11;i++)
	{
		Disp_Buff[i] = 0x00;
//		SPL10_WriteLCD(i,0x00);
	}
	LCD10_Disp_AllIcon();
}
//=========================================add by xyq=====================================
#include "LCDVASO.H"

//================================================
void LCD10_SetIcon(unsigned char addr,unsigned char set_val)
{
	Disp_Buff[addr]|=set_val;
	SPL10_Disp_Event=true;
	L10_disp_Count=0;
}
void LCD10_ClearIcon(unsigned char addr,unsigned char set_val)
{
	Disp_Buff[addr]&=set_val;
	SPL10_Disp_Event=true;
	L10_disp_Count=0;
}
//========================================================================================
void SPL10_7SegmentDisp(unsigned char Data,unsigned char Address)//Address == IconAddress/7 , (s0==0,s1==1,m0==2....)
{
	unsigned char TempData;
	if(Data>=0 && Data<=9)
	{
		TempData=Data;
		//0,1,2...9
	}
	else if(Data>=48 && Data<=57)
	{
		TempData = Data-48;//0,1,2...9
	}
	else if(Data>=65 && Data<=90)
	{
		TempData = Data-55;//A,B,C,...Y,Z
	}else if(Data>=97 && Data<=122)
	{
		TempData = Data-87;//a,b,c...y,z
	}
	
	switch(Data)
	{
	case ' ':
		TempData = 36;
		break;
	case '_':
		TempData = 37;
		break;
	case '-':
		TempData = 38;
		break;
	}
	if(Address>=5)
		Data = ASCIITable2[TempData];
	else
		Data = ASCIITable1[TempData];
	Disp_Buff[Address] = (Disp_Buff[Address]&0x1f)|(Data&0xe0);
	Address++;
	Disp_Buff[Address] = (Disp_Buff[Address]&0xf0)|(Data&0x0F);
	SPL10_Disp_Event=true;
}
//========================================================================================
void LCD10_Printf(unsigned char *DispPoint)
{
	unsigned char Disp_7Seg_StartAddr;
	Disp_7Seg_StartAddr=4;

	while(*DispPoint)
	{
		SPL10_7SegmentDisp(*DispPoint,Disp_7Seg_StartAddr);
		DispPoint++;
		Disp_7Seg_StartAddr--;
	}
	L10_disp_Count=0;
	LCD10_ClearIcon(Icon_COL_Add,(~Icon_COL));
}
//========================================================================================
void LCD10_HEX_BCD(unsigned int num,unsigned char *Hi,unsigned char *Mid,unsigned char *Low){
	*Hi=num/100;
	*Mid=(num-(unsigned int)*Hi*100)/10;
	*Low=num%10;
	if(*Hi>10){
		*Hi=*Hi%10;
	}
}
//=============================================================================
//void LCD10_Disp_CurrentFileMode(unsigned char CurrentFileMode)
void LCD10_Disp_Mode(void)
{
	
//	LCD10_ClearIcon(Icon_Appo_Add,(~Icon_Appo));
	LCD10_ClearIcon(Icon_HQ_Add,(~Icon_HQ));
	LCD10_ClearIcon(Icon_MP3_Add,(~Icon_MP3));
	LCD10_ClearIcon(Icon_LP_Add,(~Icon_LP));
	if(G_UIMODE==0x00)
	{
	  LCD10_SetIcon(Icon_MP3_Add,Icon_MP3);
	}
	else
	{	 
		if(G_STATE!=STATE_IDLE)
		{
			if(_G723)
				LCD10_SetIcon(Icon_LP_Add,Icon_LP);
			else
				LCD10_SetIcon(Icon_HQ_Add,Icon_HQ);
		}
		else
		{
			if(G_RecMode)
				LCD10_SetIcon(Icon_LP_Add,Icon_LP);
			else
				LCD10_SetIcon(Icon_HQ_Add,Icon_HQ);
		}
	}	
}
//=============================================================================
//void LCD10_Disp_Icon_DVRE()
//{
//	SPL10_IconFillToDataBuf(Icon_MP3, OFF);//MP3 icon
//	SPL10_IconFillToDataBuf(Icon_WMA, OFF);//WMA icon
//	SPL10_IconFillToDataBuf(Icon_DVRD, OFF);//DVRD icon
//	SPL10_IconFillToDataBuf(Icon_DVRE, ON);//DVRE icon
//}
//=============================================================================
void LCD10_Disp_VOL_LEVEL(unsigned char G_DSP_Volume)
{
	unsigned char Hi,Mid,Low;
		unsigned char code Char_VOL[]="VOL";

//	SPL10_7SegmentDisp(' ',8);
//	SPL10_7SegmentDisp('V',7);
//	SPL10_7SegmentDisp('L',6);

	LCD10_Printf(Char_VOL);
	
	LCD10_HEX_BCD(G_DSP_Volume,&Hi,&Mid,&Low);

	//SPL10_7SegmentDisp(' ',3);
	//SPL10_7SegmentDisp(' ',2);
	SPL10_7SegmentDisp(Mid,1);
	SPL10_7SegmentDisp(Low,0);
}
//====================================================================================
void LCD10_Disp_FileIndex_InDIR(unsigned int FileIndex)
{                                        
	unsigned char Hi,Mid,Low;
                                                     
	LCD10_HEX_BCD(FileIndex,&Hi,&Mid,&Low);
                           
	if(Hi==0) Hi=' ';        //if Hi==0 don't display
	SPL10_7SegmentDisp(Hi,7);
	SPL10_7SegmentDisp(Mid,6);
	SPL10_7SegmentDisp(Low,5);
	SPL10_7SegmentDisp(' ',8);
	//SPL10_IconFillToDataBuf(Icon_Dash1, ON);
	//SPL10_IconFillToDataBuf(Icon_DELETE, OFF);
}
void LCD10_Disp_FileLength(unsigned long length)
{
	unsigned char pos,m1;
    //pos =0;
	LCD10_ClearIcon(Icon_P_Add,(~Icon_P));
	LCD10_SetIcon(Icon_COL_Add,Icon_COL);
	if(length>=100000)
	{
		LCD10_SetIcon(Icon_P_Add,Icon_P);
	    length %=100000;
        for(pos=0;pos<5;pos++)
        {
		  m1 =(unsigned char)(length%10);
          length /= 10;
          SPL10_7SegmentDisp(m1,pos);
		};
   }
   else
	{
		pos = 0;
		while(length)
        {
		  m1 =(unsigned char)(length%10);
          length /= 10;
          SPL10_7SegmentDisp(m1,pos);
		  pos++;
		};
		while(pos<3)
       {
		  SPL10_7SegmentDisp(0,pos);
		  pos++;
		};
        while(pos<5)
        {
		  SPL10_7SegmentDisp(' ',pos);
		  pos++;
		};
	};	
	
	_G_DispUSBBSY=0;
}
//====================================================================================
void LCD10_Disp_HHMMSS(unsigned int LCD_SecondNum)
{
	unsigned char h0,m1,m0,s1,s0;

	h0=LCD_SecondNum/6000;//don't disp hour, so the largest minute is 99
	m0=(LCD_SecondNum-(unsigned int)h0*6000)/60;

	m1=m0/10;m0=m0%10;
	s0=LCD_SecondNum%60;
	s1=s0/10;s0=s0%10;
    LCD10_ClearIcon(Icon_P_Add,(~Icon_P));
	if(h0>10)
	{
		h0=h0%10;
		LCD10_SetIcon(Icon_P_Add,Icon_P);
	   
    }
	else if(h0==0)
	{
	 h0=' ';
	 if(m1==0) m1=' ';        //if m1==0 don't display
	};
	SPL10_7SegmentDisp(h0,4);
	SPL10_7SegmentDisp(m1,3);
	SPL10_7SegmentDisp(m0,2);
	SPL10_7SegmentDisp(s1,1);
	SPL10_7SegmentDisp(s0,0);
	LCD10_SetIcon(Icon_COL_Add, Icon_COL);
	_G_DispUSBBSY=0;
}

//=============================================================================
void LCD10_Disp_DSPEQ(unsigned char G_Play_EQ)
{
	unsigned char code *Char_EQMode[]=
	{" NONE",
	 "  DBB",
	 " JAZZ",
	 " DISC",
	 "  POP",
	 "CLASS"};
	LCD10_Printf(Char_EQMode[G_Play_EQ]);
}
//=============================================================================
void LCD10_Disp_REP1ALL(unsigned char G_Rep_Cnt)
{
	LCD10_ClearIcon(Icon_REP_Add,(~Icon_REP));
	LCD10_ClearIcon(Icon_1_Add,(~Icon_1));
	if(G_Rep_Cnt)
	{
		LCD10_SetIcon(Icon_REP_Add,Icon_REP);
		if(G_Rep_Cnt!=1)
			LCD10_SetIcon(Icon_1_Add,Icon_1);
	};
}
//=============================================================================
void LCD10_Disp_Apoint(bit OnOff)
{
	if(OnOff)
	{
		LCD10_SetIcon(Icon_A_Add, Icon_A);
	}
	else
	{
		LCD10_ClearIcon(Icon_A_Add, (~Icon_A));
	}
}
void LCD10_DispIconAppo(bit OnOff)
{
	if(OnOff)
	{
		LCD10_SetIcon(Icon_Appo_Add, Icon_Appo);
	}
	else
	{
		LCD10_ClearIcon(Icon_Appo_Add, (~Icon_Appo));
	}
}
//======================================================
void LCD10_Disp_Folder(void)
{
	LCD10_ClearIcon(Icon_FoldA_Add,(~Icon_FoldA));
	LCD10_ClearIcon(Icon_FoldB_Add,(~Icon_FoldB));
	LCD10_ClearIcon(Icon_FoldC_Add,(~Icon_FoldC));
	LCD10_ClearIcon(Icon_FoldD_Add,(~Icon_FoldD));
	if(G_UIMODE!=KUI_MP3_MODE)
	{
		switch(Current_Dvr_Dir)
		{
			case 1:
				LCD10_SetIcon(Icon_FoldA_Add,Icon_FoldA);
				break;
			case 2:
				LCD10_SetIcon(Icon_FoldB_Add,Icon_FoldB);
				break;
			case 3:
				LCD10_SetIcon(Icon_FoldC_Add,Icon_FoldC);
				break;
			case 4:
				LCD10_SetIcon(Icon_FoldD_Add,Icon_FoldD);
				break;

		}
	}
}
//......................................
void LCD10_DispHQLP(bit OnOff)
{
	LCD10_ClearIcon(Icon_HQ_Add,(~Icon_HQ));
	LCD10_ClearIcon(Icon_LP_Add,(~Icon_LP));
	if(OnOff)
	{
		if(_G723)
			LCD10_SetIcon(Icon_LP_Add,Icon_LP);
		else
			LCD10_SetIcon(Icon_HQ_Add,Icon_HQ);
	};
}
//............................................
/*void LCD10_Disp_Scope(void)
{
	SPL10_7SegmentDisp(' ',8);
	SPL10_7SegmentDisp(' ',7);
	if(G_Scope==SCOPE_FAR)
	{
		SPL10_7SegmentDisp('H',6);
		SPL10_7SegmentDisp('I',5);
	}
	else
	{
		SPL10_7SegmentDisp('L',6);
		SPL10_7SegmentDisp('O',5);
	};
}*/
//==================================================================
void LCD10_MenuDisplay(void)
{
	UCHAR i;
	unsigned char Char_Fold[]=" FOLD";
	for	(i=0;i<9;i++)
	 SPL10_7SegmentDisp(' ',i);
	switch(G_SubMenu)
	{
		case SUBMENU_FOLD:
			LCD10_Printf(Char_Fold);
			LCD10_Disp_Folder();
			if(G_FileLock)
				LCD10_DispFileLock(1);
			else
				LCD10_DispFileLock(0);
			LCD10_Disp_FileIndex_InDIR(G_FileCurrentIndex);
			break;
		case SUBMENU_APPO:
			LCD10_Blink_CharIcon(BLINK_APPO);
			LCD10_Disp_HHMMSS(G_AppoMinute*30);
			break;
		/*case SUBMENU_SCOPE:
			LCD10_ClearIcon(Icon_Appo_Add,(~Icon_Appo));
			LCD10_Printf(" SENS");
			LCD10_Disp_Scope();
			break;*/
		case SUBMENU_LOCK:
			LCD10_Disp_FileIndex_InDIR(G_FileCurrentIndex);

⌨️ 快捷键说明

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