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 + -
显示快捷键?