📄 fmdisplay.c
字号:
/*
********************************************************************************
* Copyright (C),2004-2005, tonyzyz, Fuzhou Rockchip Co.,Ltd.
* All Rights Reserved
* V1.00
* FileName : FmDisplay.c
* Author : tonyzyz
* Description:
* History :
* <author> <time> <version> <desc>
* tonyzyz 06/01/11 1.0 ORG
********************************************************************************
*/
#include "Macro.h"
#include "MsgDef.h"
#include "Struct.h"
#include "Resource.h"
#include "Global.h"
#include "Lcd.h"
#ifdef FM_MODULE
#define _IN_FMDISPLAY
#include "FmMacro.h"
#include "FmStruct.h"
#include "FmGlobal.h"
#include "Global.h"
#include "Lcd.h"
#define DEL_FM_SCREEN_PER_LINE 4
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__attribute__((section(".fm_text,\"ax\"")))
void DISP_Fm(void)
{
unsigned int FmDispBuf[MENU_PER_BYTE];
unsigned int temp, temp1, TempColor, TempFlag;
unsigned int *pFmDispBuf;
unsigned int Temp_DrawMode;
unsigned long CharAddrL;
unsigned long TempDispFlag, TempDisplayFlag1;
TempColor = LCD_GetColor();
TempDispFlag = FmDisplayFlag;
FmDisplayFlag = MUSIC_DISPFLAG_NULL;
TempFlag = 0x00000001;
while (TempDispFlag != 0) {
TempDisplayFlag1 = TempDispFlag & TempFlag;
TempDispFlag &= (~TempFlag);
TempFlag = TempFlag << 1;
if (TempDisplayFlag1 != 0) {
switch (TempDisplayFlag1) {
case FM_DISPFLAG_BACKGROUND:
{
DisplayPicture(0, 0, MAX_PIC_XSIZE, MAX_PIC_YSIZE, RADIO_BKGROUND_PIC);
DisplayPicture(RADIO_FREQDOT_PIC_X, RADIO_FREQDOT_PIC_Y, RADIO_FREQDOT_PIC_XSIZE, RADIO_FREQDOT_PIC_YSIZE, RADIO_FREQDOT_PIC);
LCD_SetDispRect(0, 0, MAX_PIC_XSIZE - 1, MAX_PIC_YSIZE - 1);
break;
}
case FM_DISPFLAG_FREQ:
{
temp1 = GlobalFmVar.FmFreq / 10000;
temp = GlobalFmVar.FmFreq % 10000;
if (temp1 > 0) {
DisplayPicture(RADIO_FREQNUM_PIC_X, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp1) * RADIO_FREQNUM_PIC_SIZE));
} else {
DisplayPicture(RADIO_FREQNUM_PIC_X, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(10) * RADIO_FREQNUM_PIC_SIZE));
}
temp1 = temp / 1000;
temp = temp % 1000;
DisplayPicture(RADIO_FREQNUM_PIC_X + RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp1) * RADIO_FREQNUM_PIC_SIZE));
temp1 = temp / 100;
temp = temp % 100;
DisplayPicture(RADIO_FREQNUM_PIC_X + (RADIO_FREQNUM_PIC_XSIZE << 1), RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp1) * RADIO_FREQNUM_PIC_SIZE));
temp = temp / 10;
DisplayPicture(RADIO_FREQNUM_PIC_X + (RADIO_FREQNUM_PIC_XSIZE * 3) + RADIO_FREQDOT_PIC_XSIZE, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp) * RADIO_FREQNUM_PIC_SIZE));
break;
}
case FM_DISPFLAG_GUAGE:
{
DisplayPicture(RADIO_GUAGEBK_PIC_X + FmGuageX, RADIO_GUAGEBK_PIC_Y, RADIO_GUAGEBK_PIC_XSIZE, RADIO_GUAGEBK_PIC_YSIZE, RADIO_GUAGE_BKGROUND_PIC);
DisplayPicture(RADIO_GUAGEFRONT_PIC_X + FmGuageVal, RADIO_GUAGEFRONT_PIC_Y, RADIO_GUAGEFRONT_PIC_XSIZE, RADIO_GUAGEFRONT_PIC_YSIZE, RADIO_GUAGE_FRONT_PIC);
FmGuageX = FmGuageVal;
break;
}
case FM_DISPFLAG_BATT:
{
DisplayPicture(RADIO_BATT_PIC_X, RADIO_BATT_PIC_Y, RADIO_BATT_PIC_XSIZE, RADIO_BATT_PIC_YSIZE, (NFA_RADIO_BATT_PIC + (unsigned long)(BatteryLevel) * RADIO_BATT_PIC_SIZE));
break;
}
// case FM_DISPFLAG_SENS:
// {
// DisplayPicture(RADIO_SEN_PIC_X, RADIO_SEN_PIC_Y, RADIO_SEN_PIC_XSIZE, RADIO_SEN_PIC_YSIZE, (NFA_RADIO_SEN_PIC + (unsigned long)(FmSensitive) * RADIO_SEN_PIC_SIZE));
// break;
// }
// case FM_DISPFLAG_STEREO:
// {
// DisplayPicture(RADIO_SOUND_PIC_X, RADIO_SOUND_PIC_Y, RADIO_SOUND_PIC_XSIZE, RADIO_SOUND_PIC_YSIZE, (NFA_RADIO_SOUND_PIC + (unsigned long)(FmStereoState) * RADIO_SOUND_PIC_SIZE));
// break;
// }
case FM_DISPFLAG_CH:
{
DisplayPicture(RADIO_PRESETBK_PIC_X, RADIO_PRESETBK_PIC_Y, RADIO_PRESETBK_PIC_XSIZE, RADIO_PRESETBK_PIC_YSIZE, RADIO_PRESETBK_PIC);
if ((GlobalFmVar.FmState == FM_STATE_AUTO) || (GlobalFmVar.FmState == FM_STATE_PRESET)) {
FmDispBuf[0] = (GlobalFmVar.FmSaveNum + 1)/ 10 + '0';
if (FmDispBuf[0] == '0') FmDispBuf[0] = ' ';
FmDispBuf[1] = (GlobalFmVar.FmSaveNum + 1) % 10 + '0';
FmDispBuf[2] = '/';
FmDispBuf[3] = '2';
FmDispBuf[4] = '0';
FmDispBuf[5] = 0;
LCD_SetColor(COLOR_BLACK);
LCD_NFDispStringAt(RADIO_PRESETBK_PIC_X, RADIO_PRESETBK_PIC_Y, FmDispBuf);
}
break;
}
case FM_DISPFLAG_VOL:
{
DisplayPicture(RADIO_VOLLEVEL_PIC_X, RADIO_VOLLEVEL_PIC_Y, RADIO_VOLLEVEL_PIC_XSIZE, RADIO_VOLLEVEL_PIC_YSIZE,
(NFA_RADIO_VOLLEVEL_PIC + (unsigned long)(OutputVolume) * RADIO_VOLLEVEL_PIC_SIZE));
DisplayPicture(RADIO_VOLBK_PIC_X, RADIO_VOLBK_PIC_Y, RADIO_VOLBK_PIC_XSIZE, RADIO_VOLBK_PIC_YSIZE, RADIO_VOLBK_PIC);
FmDispBuf[0] = OutputVolume / 10 + '0';
FmDispBuf[1] = OutputVolume % 10 +'0';
FmDispBuf[2] = 0;
LCD_SetColor(COLOR_BLACK);
LCD_NFDispStringAt(RADIO_VOLBK_PIC_X + 2, RADIO_VOLBK_PIC_Y + 2, FmDispBuf);
break;
}
case FM_DISPFLAG_REGION:
{
DisplayPicture(RADIO_REGIONBK_PIC_X, RADIO_REGIONBK_PIC_Y, RADIO_REGIONBK_PIC_XSIZE, RADIO_REGIONBK_PIC_YSIZE, RADIO_REGIONBK_PIC);
LCD_SetColor(COLOR_BLACK);
DisplayMenuStr(RADIO_REGIONBK_PIC_X, RADIO_REGIONBK_PIC_Y + 2, RADIO_REGIONBK_PIC_XSIZE, RADIO_REGIONBK_PIC_YSIZE, LCD_TEXTALIGN_CENTER, (SETUP_RADIO_REGION_TXT + (unsigned long)(GlobalFmVar.FmArea + 1) * MENU_PER_BYTE));
FmDispBuf[0] = FmFreqMinVal / 10000 + '0';
temp = FmFreqMinVal % 10000;
if(FmDispBuf[0] == '0') FmDispBuf[0] = ' ';
FmDispBuf[1] = temp / 1000 + '0';
temp = temp % 1000;
FmDispBuf[2] = temp / 100 +'0';
FmDispBuf[4] = temp % 100 + '0';
FmDispBuf[3] = '.';
FmDispBuf[5] = 'M';
FmDispBuf[6] = 'H';
FmDispBuf[7] = 'z';
FmDispBuf[8] = 0;
DisplayPicture(RADIO_REGIONBK_START_PIC_X, RADIO_REGIONBK_START_PIC_Y, RADIO_REGIONBK_PIC_XSIZE, RADIO_REGIONBK_PIC_YSIZE, RADIO_REGIONBK_START_PIC);
LCD_NFDispStringAt(RADIO_REGIONBK_START_PIC_X, RADIO_REGIONBK_START_PIC_Y, FmDispBuf);
FmDispBuf[0] = FmFreqMaxVal / 10000 + '0';
temp = FmFreqMaxVal % 10000;
if(FmDispBuf[0] == '0') FmDispBuf[0] = ' ';
FmDispBuf[1] = temp / 1000 + '0';
temp = temp % 1000;
FmDispBuf[2] = temp / 100 +'0';
FmDispBuf[4] = temp % 100 + '0';
DisplayPicture(RADIO_REGIONBK_END_PIC_X, RADIO_REGIONBK_END_PIC_Y, RADIO_REGIONBK_PIC_XSIZE, RADIO_REGIONBK_PIC_YSIZE, RADIO_REGIONBK_END_PIC);
LCD_NFDispStringAt(RADIO_REGIONBK_END_PIC_X, RADIO_REGIONBK_END_PIC_Y, FmDispBuf);
break;
}
case FM_DISPFLAG_HOLD:
{
DisplayPicture(RADIO_HOLD_PIC_X, RADIO_HOLD_PIC_Y, RADIO_HOLD_PIC_XSIZE, RADIO_HOLD_PIC_YSIZE, (NFA_RADIO_HOLD_PIC + (unsigned long)(SystemInfo.bc.bHoldOn) * RADIO_HOLD_PIC_SIZE));
break;
}
default:
break;
}
}
}
LCD_SetColor(TempColor);
}
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
void DisplayFmMenu(void)
{
unsigned int FmDispBuf[MENU_PER_BYTE];
unsigned int temp, TempColor;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -