📄 菜单.c
字号:
#include "display.h"
#include "gps.h"
#include "菜单.h"
#include "string.h"
#include "gps_collect.h"
extern GPS_LINE_INFO gps_8line[8];
extern unsigned char cur_line;
extern unsigned char cur_direction;
extern GPS_STRING gps_string;
unsigned char gps_OK;
//存点时显示的界面
void menu_main(void)
{
unsigned char xdata lcd_row0[17]="纬度: ----.---- ";
unsigned char xdata lcd_row1[17]="经度:-----.---- ";
unsigned char xdata lcd_row2[17]="----路- 速度--";
unsigned char xdata lcd_row3[17]="站--拐-- --.--";
if(gps_OK)
{
memcpy(lcd_row0+6,gps_string.latitude,9);
memcpy(lcd_row1+5,gps_string.longitude,10);
memcpy(lcd_row2+14,gps_string.speed,2);
lcd_row2[8]=gps_string.valid;
}
else lcd_row2[8]='V';
memcpy(lcd_row2,gps_8line[cur_line].linename,4);
memcpy(lcd_row2+6,&cur_direction,1);
if(cur_direction==24)
{
lcd_row3[2]=(gps_8line[cur_line].station_counter_up)/10+'0';
lcd_row3[3]=(gps_8line[cur_line].station_counter_up)%10+'0';
lcd_row3[6]=(gps_8line[cur_line].corner_counter_up)/10+'0';
lcd_row3[7]=(gps_8line[cur_line].corner_counter_up)%10+'0';
if(gps_8line[cur_line].gps_counter_up==0||gps_8line[cur_line].gps_counter_up>6000)
memcpy(lcd_row3+10,"100.00",6);
else
{
lcd_row3[11]=(6000-gps_8line[cur_line].gps_counter_up)/600+'0';
lcd_row3[12]=(6000-gps_8line[cur_line].gps_counter_up)/60%10+'0';
lcd_row3[14]=(6000-gps_8line[cur_line].gps_counter_up)%60/10+'0';
lcd_row3[15]=(6000-gps_8line[cur_line].gps_counter_up)%60%10+'0';
}
}
else if(cur_direction==25)
{
lcd_row3[2]=(gps_8line[cur_line].station_counter_down)/10+'0';
lcd_row3[3]=(gps_8line[cur_line].station_counter_down)%10+'0';
lcd_row3[6]=(gps_8line[cur_line].corner_counter_down)/10+'0';
lcd_row3[7]=(gps_8line[cur_line].corner_counter_down)%10+'0';
if(gps_8line[cur_line].gps_counter_down==0||gps_8line[cur_line].gps_counter_down>6000)
memcpy(lcd_row3+10,"100.00",6);
else
{
lcd_row3[11]=(6000-gps_8line[cur_line].gps_counter_down)/600+'0';
lcd_row3[12]=(6000-gps_8line[cur_line].gps_counter_down)/60%10+'0';
lcd_row3[14]=(6000-gps_8line[cur_line].gps_counter_down)%60/10+'0';
lcd_row3[15]=(6000-gps_8line[cur_line].gps_counter_down)%60%10+'0';
}
}
lcd_clear_srceen();
display_attribute(0,0,0);
display_string(lcd_row0);
display_attribute(0,1,0);
display_string(lcd_row1);
display_attribute(0,2,0);
display_string(lcd_row2);
display_attribute(0,3,0);
display_string(lcd_row3);
}
//显示功能选择菜单界面
unsigned char code fun_menu[5][17]=
{"1 线路选择 ",
"2 开始采集 ",
"3 删除gps数据 ",
"4 上传至电脑 ",
"2 暂停采集 "
};
extern unsigned char gps_receive_flg;
void menu_fun(void)
{
lcd_clear_srceen();
display_attribute(0,0,0);
display_string(fun_menu[0]);
if(gps_receive_flg!=0)
{
display_attribute(0,1,0);
display_string(fun_menu[4]);
}
else
{
display_attribute(0,1,0);
display_string(fun_menu[1]);
}
display_attribute(0,2,0);
display_string(fun_menu[2]);
display_attribute(0,3,0);
display_string(fun_menu[3]);
}
//线路选择界面
void menu_line(void)
{
unsigned char xdata lcd_row0[17]="1-????路5-????路";
unsigned char xdata lcd_row1[17]="2-????路6-????路";
unsigned char xdata lcd_row2[17]="3-????路7-????路";
unsigned char xdata lcd_row3[17]="4-????路8-????路";
memcpy(lcd_row0+2,gps_8line[0].linename,4);
memcpy(lcd_row1+2,gps_8line[1].linename,4);
memcpy(lcd_row2+2,gps_8line[2].linename,4);
memcpy(lcd_row3+2,gps_8line[3].linename,4);
memcpy(lcd_row0+10,gps_8line[4].linename,4);
memcpy(lcd_row1+10,gps_8line[5].linename,4);
memcpy(lcd_row2+10,gps_8line[6].linename,4);
memcpy(lcd_row3+10,gps_8line[7].linename,4);
lcd_clear_srceen();
display_attribute(0,0,0);
display_string(lcd_row0);
display_attribute(0,1,0);
display_string(lcd_row1);
display_attribute(0,2,0);
display_string(lcd_row2);
display_attribute(0,3,0);
display_string(lcd_row3);
}
//显示上下行选择界面
unsigned char code direction_menu[4][17]=
{
"请选择上下行! ",
"1 上行 ",
"2 下行 ",
" ",
};
void menu_direction(void)
{
lcd_clear_srceen();
display_attribute(0,0,0);
display_string(direction_menu[0]);
display_attribute(0,1,0);
display_string(direction_menu[1]);
display_attribute(0,2,0);
display_string(direction_menu[2]);
display_attribute(0,3,0);
display_string(direction_menu[3]);
}
//上传到电脑等待界面
unsigned char code up_gps_record[4][17]=
{"上行: ----/---- ",
"下行: ----/---- ",
"正在上传到电脑! ",
"请稍后... ... ",
};
void menu_up_gps_record(void)
{
lcd_clear_srceen();
display_attribute(0,0,0);
display_string(up_gps_record[0]);
display_attribute(0,1,0);
display_string(up_gps_record[1]);
display_attribute(0,2,0);
display_string(up_gps_record[2]);
display_attribute(0,3,0);
display_string(up_gps_record[3]);
}
//针对所有的操作完成界面
unsigned char code process_over[4][17]=
{" ",
" 成功! ",
" ",
" ",
};
void menu_process_over(void)
{
lcd_clear_srceen();
display_attribute(0,0,0);
display_string(process_over[0]);
display_attribute(0,1,0);
display_string(process_over[1]);
display_attribute(0,2,0);
display_string(process_over[2]);
display_attribute(0,3,0);
display_string(process_over[3]);
}
//线路名修改界面
unsigned char code inputline_menu[4][17]=
{"请输入线路名: ",
" ----路 ",
" ",
" ",
};
void menu_inputline(void)
{
lcd_clear_srceen();
display_attribute(0,0,0);
display_string(inputline_menu[0]);
display_attribute(0,1,0);
display_string(inputline_menu[1]);
display_attribute(0,2,0);
display_string(inputline_menu[2]);
display_attribute(0,3,0);
display_string(inputline_menu[3]);
}
//在指定位置显示一个字符
//参数依次为:列号,行号,字符串,模式(0:正显,1反显)
void menu_display_char(unsigned char columh,unsigned char row,unsigned char c,unsigned char mode)
{
unsigned char a[2];
a[0]=c;
a[1]='\0';
display_attribute(columh,row,mode);
display_string(a);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -