📄 menu.c
字号:
static unsigned char OSD_transmission_buff[7*36]= {0};
#endif
unsigned char Picture_cnt=0;
//***********************************************************************************
void Download_OSD_Library_Display_Menu(void);
#ifdef Download_outside_eeprom
void Doawload_all_library_to_outside_eeprom(void);
#endif
#ifndef Outside_eeprom
static void Read_mcu_rom_library_transmission_data_to_OSD_library(void);
#endif
#ifdef Outside_eeprom
static void Read_outside_eeprom_library_transmission_data_to_OSD_library(void);
#endif
void Display_one_mode_all_osd_item(void);
void Display_Jump_back_picture(void);
void Display_Jump_front_picture(void);
void Display_Slow_back_picture(void);
void Display_Fast_front_picture(void);
void Display_Scan_picture(void);
void Display_8pcs_Mute_picture(void);
void Display_4pcs_DEC_picture(void);
void Display_4pcs_Adding_picture(void);
void Display_volume_picture(unsigned char Volume);
void Display_Total_Volume_picture(void);
void Display_Total_Volume_data(void);
void Display_volume_data(unsigned char Volume);
void Display_8pcs_main_menu_picture(void);
void Display_8pcs_exitting_picture(void);
void Display_4pcs_Main_menu_picture(void);
void Display_4pcs_exitting_picture(void);
void Display_stop_picture(void);
void Display_play_pause_picture(void);
void Display_time_picture(void);
void Download_OSD_Library_Display_Menu(void)
{
unsigned char i;
if(System_mode == BACK_CAR_mode)
{
OSDDisable();
return;
}
OSDCfgWr(OSD_CTRL,0x18); //disable osd and width*1
OSDSetRamAddr(FONT_DATA_START_ADDRESS);
OSDCfgWr(CHAR_FONT_SIZE,FONT_SIZE);
OSDCfgWr(CHAR_RAM_BASE_A,CHAR_MAIN_MENU_START); //To setup character index start address.
//If start address is 0x9c0,
//You have get ((0x9c0 >> 5) & 0x7f) to store it
OSDCfgWr(CHAR_RAM_END_A,CHAR_RAM_END); //This is to set index end address.
OSDCfgWr(CHAR_BS_CTRL,0x40);
OSDCfgWr(CHAR_BS_COLOR,0x00);
OSDCfgWr(CHAR_HEIGHT_CTRL,0x20);
//OSDCfgWr(CHAR_HEIGHT_CTRL,0x40); //For malata only
OSDCfgWr(BLINK_CTRL,0x01);
//OSDCfgWr(ALPHA_BLD_CTRL,0x80); /* Alpha blending is disable */
OSDCfgWr(ALPHA_BLD_CTRL,0x87); //0x86 // Alpha blending is disable; for malata only
//OSDLoadColor(); //tomi 2006 03 01 delete
//OSDSetRamAddr(FONT_DATA_START_ADDRESS)
twdWr_Burst_A(OSD_RAM_DL);
//Below is re-writted
#ifndef Outside_eeprom //Use the mcu's rom to keep the data
Read_mcu_rom_library_transmission_data_to_OSD_library(); //Why must setup one program to do this?Beause the short ram(128pcs) not enough to use,so you must setup one new program!
#else //The library's data are from outside eeprom
Read_outside_eeprom_library_transmission_data_to_OSD_library(); //Why must setup one program to do this?Beause the short ram(128pcs) not enough to use,so you must setup one new program!
#endif
twdWr_Burst_P();
Clear_osd();
OSDPosition(1);
OSDDisable();
//OSDEnable();
Display_one_mode_all_osd_item();
}
//*********************************************************************************************************************************************************************
#ifdef Download_outside_eeprom
void Doawload_all_library_to_outside_eeprom(void)
{
unsigned char i;
unsigned char Library_number;
unsigned int **Libaray_name;
unsigned int *Front_name;
unsigned char Front_cnt = 0; //IF full 7pcs then must ust the next page
unsigned int Page_cnt = 0; //Total 2048pcs page
unsigned Start_address = 0;
Chinese_english_system == Chinese_system
System_mode = Main_menu_mode;
while(System_mode != GPS_mode) //Finish in Bell setting mode
{
Library_number = Total_menu_libary_number_list[System_mode];
Libaray_name = Chinese_total_menu_library_list[System_mode];
for(i=0;i<Library_number;i++)
{
Front_name = *(Libaray_name +i);
AT45DB041B_BufferToMainMemoryPageProgramWithBuilt_inErase(1,(Page_cnt+Chinese_outside_eeprom_every_library_start_page_list[System_mode]),Start_address,Front_name,36);
if(++Front_cnt >= 7)
{
Front_cnt = 0;
Page_cnt++;
}
Start_address = Front_cnt * 36;
WAIT_3ms();
}
Page_cnt = 0;
Start_address = 0;
Front_cnt = 0;
System_mode++;
}
Front_cnt = 0; //IF full 7pcs then must ust the next page
Page_cnt = 0; //Total 2048pcs page
Start_address = 0;
System_mode = Main_menu_mode;
Chinese_english_system == English_system;
while(System_mode != GPS_mode) //Finish in Bell setting mode
{
Library_number = Total_menu_libary_number_list[System_mode];
Libaray_name = English_total_menu_library_list[System_mode];
for(i=0;i<Library_number;i++)
{
Front_name = *(Libaray_name +i);
AT45DB041B_BufferToMainMemoryPageProgramWithBuilt_inErase(1,(Page_cnt+Chinese_outside_eeprom_every_library_start_page_list[System_mode]),Start_address,Front_name,36);
if(++Front_cnt >= 7)
{
Front_cnt = 0;
Page_cnt++;
}
Start_address = Front_cnt * 36;
WAIT_3ms();
}
Page_cnt = 0;
Start_address = 0;
Front_cnt = 0;
System_mode++;
}
}
#endif
#ifndef Outside_eeprom
static void Read_mcu_rom_library_transmission_data_to_OSD_library(void)
{
#ifndef Download_outside_eeprom
unsigned char i;
unsigned char j;
unsigned char Library_number;
unsigned int **Libaray_name;
unsigned int *Front_name;
unsigned int Front_data;
unsigned char High_byte;
unsigned char Low_byte;
Library_number = Total_menu_libary_number_list[System_mode];
Libaray_name = Chinese_total_menu_library_list[System_mode];
for(i=0;i<Library_number;i++)
{
Front_name = *(Libaray_name +i);
for(j=0;j<36/2;j++)
{
Front_data = *(Front_name+j);
High_byte = HIBYTE(Front_data);
Low_byte = LOBYTE(Front_data);
twdWr_Burst_D(High_byte);
twdWr_Burst_D(Low_byte);
}
}
#endif
}
#endif
#ifdef Outside_eeprom
static void Read_outside_eeprom_library_transmission_data_to_OSD_library(void)
{
unsigned char i;
unsigned char j;
unsigned char Library_number;
unsigned char Temp_front_data[36];
unsigned char Front_cnt = 0;
unsigned char Page_cnt = 0;
unsigned char Start_address = 0;
unsigned int Page_number=0;
if(Chinese_english_system == Chinese_system)
Page_number = Chinese_outside_eeprom_every_library_start_page_list[System_mode+1] -Chinese_outside_eeprom_every_library_start_page_list[System_mode];
else
Page_number = English_outside_eeprom_every_library_start_page_list[System_mode+1] -English_outside_eeprom_every_library_start_page_list[System_mode];
for(i=0;i<Page_number;i++)
{
if(Chinese_english_system == Chinese_system)
AT45DB041B_ContinuousArrayRead(Page_cnt+Chinese_outside_eeprom_every_library_start_page_list[System_mode],0,OSD_transmission_buff,7*36);
else
AT45DB041B_ContinuousArrayRead(Page_cnt+English_outside_eeprom_every_library_start_page_list[System_mode],0,OSD_transmission_buff,7*36);
Page_cnt++;
for(j=0;j<7*36;j++)
{
twdWr_Burst_D(OSD_transmission_buff[j]);
}
}
#if 0
Library_number = Total_menu_libary_number_list[System_mode];
for(i=0;i<Library_number;i++)
{
AT45DB041B_ContinuousArrayRead(Page_cnt+Outside_eeprom_every_library_start_page_list[System_mode],Start_address,Temp_front_data,36);
if(++Front_cnt >= 7)
{
Page_cnt++;
Front_cnt = 0;
}
Start_address = Front_cnt * 36;
for(j=0;j<36;j++)
{
twdWr_Burst_D(Temp_front_data[j]);
}
}
#endif
}
#endif
void Display_one_mode_all_osd_item(void)
{
Picture_cnt = 0;
while( ((MENU_LIST *)Total_menu_list[System_mode])[Picture_cnt].item)
{
UICCFuncPtr=((MENU_LIST *)Total_menu_list[System_mode])[Picture_cnt].DisplayPicture;
Head_colume =((MENU_LIST *)Total_menu_list[System_mode])[Picture_cnt].Pos_color.x;
Head_row = ((MENU_LIST *)Total_menu_list[System_mode])[Picture_cnt].Pos_color.y;
if(Picture_cnt == (Select_item -DEFAULT_MENU_ITEM))
cColor = Select_osd_item_color;
else
cColor = ((MENU_LIST *)Total_menu_list[System_mode])[Picture_cnt].Pos_color.color;
(*UICCFuncPtr) ();
Picture_cnt++;
}
OSDEnable();
SetBit(System_flag1,OSD_on_flag);
Clear_OSD_delay = 500;
}
//Function:Display the JUMP BACK picture
void Display_Jump_back_picture(void)
{
OSDShowLine(Jump_back_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Jump_back_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the Jump front picture
void Display_Jump_front_picture(void)
{
OSDShowLine(Jump_front_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Jump_front_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the SLOW BACK picture
void Display_Slow_back_picture(void)
{
OSDShowLine(Slow_back_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Slow_back_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the Fast front picture
void Display_Fast_front_picture(void)
{
OSDShowLine(Fast_front_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Fast_front_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the scan picture
void Display_Scan_picture(void)
{
OSDShowLine(Scan_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Scan_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the mute picture
void Display_8pcs_Mute_picture(void)
{
asm nop;
OSDShowLine(Mute_picture_line_0,Head_colume,Head_row,cColor,29);
asm nop;
OSDShowLine(Mute_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the DEC picture
void Display_4pcs_DEC_picture(void)
{
OSDShowLine(DEC_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(DEC_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the Adding picture
void Display_4pcs_Adding_picture(void)
{
OSDShowLine(Adding_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Adding_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the 8pcs main menu picture
void Display_8pcs_main_menu_picture(void)
{
OSDShowLine(Main_menu_8pcs_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Main_menu_8pcs_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the 8pcs exitting picture
void Display_8pcs_exitting_picture(void)
{
OSDShowLine(Exitting_8pcs_picture_line_0,Head_colume,Head_row,cColor,29);
OSDShowLine(Exitting_8pcs_picture_line_1,Head_colume,Head_row+1,cColor,29);
}
//Function:Display the Main menu picture
void Display_4pcs_Main_menu_picture(void)
{
OSDShowLine(Main_menu_4pcs_picture_line,Head_colume,Head_row,cColor,29);
}
//Function:Display the small exitting picture
void Display_4pcs_exitting_picture(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -