#include "SEG_DISPLAY.h"
#include "Seg_Ref.h"
#include "Common_Interface.h"
#include "Data_Fuel_User.h"
#include "Data_AirPressure.h"
#include "Data_CoolantTemperature.h"
#include "Data_EngineSpeed.h"
#include "Data_VehicleSpeed.h"
#include "GaugesInterface.h"

#define   PRI_SEG_NUM_MAX       17U
#define   SEC_SEG_NUM_MAX       17U
#define   COOLANT_SEG_NUM_MAX   12U
#define   FUEL_SEG_NUM_MAX      12U
#define   TACHO_SEG_NUM_MAX     27U
#define   VEH_SEG_NUM_MAX       30U


static void Seg_General_Digit_Display(uint32_t Digit, uint8_t Len, uint8_t Blank , uint8_t *DigitBuf , uint8_t *Reg );
static void Seg_Digit_1_Disp (uint8_t Digit);
static void Seg_Digit_2_Disp (uint8_t Digit);
static void Seg_Digit_3_Disp (uint8_t Digit);
static void SEG_PRI_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status) ;
static void SEG_SEC_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status) ;
static void SEG_Coolant_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status) ;
static void SEG_Fuel_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status) ;
static void SEG_Tacho_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status) ;
static void SEG_VehicleSpeed_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status) ;
static void SEG_VehicleSpeed_Num(uint16_t Value, uint8_t Valid) ;








/*ZH:*/
/*****************************************************************************
某某灯(红)//_1_差速器锁
******************************************************************************/
void SEG_LED_INTER_DIFF_LOCK_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_36, seg_status);
}

/*****************************************************************************
某某灯(红)//_2_智能四驱故障
******************************************************************************/
void SEG_LED_FOUR_MUL_FOUR_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_35, seg_status);
}
/*****************************************************************************
某某灯(红)//_3_再生指示灯
******************************************************************************/
void SEG_LED_EXH_BRAKE_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_33, seg_status);
}
/*****************************************************************************
//_4_预热指示灯
******************************************************************************/
void SEG_LED_QOS_GLOW_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_32, seg_status);
}
/*****************************************************************************
//_5_远光灯开启提示
******************************************************************************/
void SEG_LED_HI_BEAM_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_31, seg_status);
}
/*****************************************************************************
//_6_后雾灯开启提示
******************************************************************************/
void SEG_LED_Rr_FOG_LAMP_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_161, seg_status);
}
/*****************************************************************************
//_7_发动机故障灯
******************************************************************************/
void SEG_LED_MIL_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_160, seg_status);
}
/*****************************************************************************
//_8_维修保养指示灯
******************************************************************************/
void SEG_LED_SVS_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_159, seg_status);
}
/*****************************************************************************
//_9_上坡起步辅助系统
******************************************************************************/
void SEG_LED_H_S_A__T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_158, seg_status);
}
/*****************************************************************************
//_10_减速器指示灯
******************************************************************************/
void SEG_LED_RETARDER_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_157, seg_status);
}
/*****************************************************************************
//_11_自动调灯
******************************************************************************/
void SEG_LED_AUTO_LEVELING_T(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_156, seg_status);
}
/*****************************************************************************
//_12_行侧报警灯
******************************************************************************/
void SEG_LED_ROWS_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_126, seg_status);
}
/*****************************************************************************
//_13_后视镜bsm警报信号灯
******************************************************************************/
void SEG_LED_BSM_OFF_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_127, seg_status);
}
/*****************************************************************************
//_14_紧急刹车辅助系统
******************************************************************************/
void SEG_LED_AEBS_OFF_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_128, seg_status);
}
/*****************************************************************************
//_15_LDW系统状态提示故障报警
******************************************************************************/
void SEG_LED_LDWS_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_129, seg_status);
}
/*****************************************************************************
//_16_安全气囊
******************************************************************************/
void SEG_LED_SRS_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_122, seg_status);
}
/*****************************************************************************
//_17_机油压力异常报警
******************************************************************************/
void SEG_LED_ENG_OIL_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_123, seg_status);
}
/*****************************************************************************
//_18_蓄电池充电状态提示
******************************************************************************/
void SEG_LED_CHARG_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_124, seg_status);
}
/*****************************************************************************
//_19_安全带
******************************************************************************/
void SEG_LED_SEAT_BELT_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_125, seg_status);
}
/*****************************************************************************
//_20_智能四驱故障
******************************************************************************/
void SEG_LED_RR_DIFF_LOCK_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_118, seg_status);
}
/*****************************************************************************
//TPMS系统故障报警
******************************************************************************/
void SEG_LED_TPMS_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_119, seg_status);
}
/*****************************************************************************
//_22_ASR/EVSC/ESC系统关闭提示
******************************************************************************/
void SEG_LED_ASR_or_EVSC_OFF_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_120, seg_status);
}
/*****************************************************************************
//_23_EVSC/ESP/ESC/TCS系统介入提示//故障报警
******************************************************************************/
void SEG_LED_EVSC_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_121, seg_status);
}
/*****************************************************************************
//_24_怠速启停系统状态提示-停机
******************************************************************************/
void SEG_LED_eco_stop_OFF_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_76, seg_status);
}
/*****************************************************************************
//_25_自动变速箱系统故障报警
******************************************************************************/
void SEG_LED_AMT_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_77, seg_status);
}
/*****************************************************************************
//_26_制动刹车片磨损指示灯
******************************************************************************/
void SEG_LED_WEAR_IND_L(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_78, seg_status);
}
/*****************************************************************************
//_27_挂车制动阀指示灯
******************************************************************************/
void SEG_LED_TRAILER_BRAKE_R(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_107, seg_status);
}
/*****************************************************************************
//_28_制动液不足报警-制动系统故障报警 (下黄)
******************************************************************************/
void SEG_LED_BRAKE_AIR_or_EBS_YELLOW_R(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_108, seg_status);
}
/*****************************************************************************
//_29_气动避震指示灯
******************************************************************************/
void SEG_LED_ACC_AIR_R(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_109, seg_status);
}
/*****************************************************************************
//_30_ABS系统故障报警
******************************************************************************/
void SEG_LED_ABS_R(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_110, seg_status);
}
/*****************************************************************************
//_31_驻车制动器/EPB系统处于制动状态提示/AUTO HOLD驻车提示
******************************************************************************/
void SEG_LED_PARK_BRAKE_R(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_31, seg_status);
}
/*****************************************************************************
//_32_制动液不足报警/制动系统故障报警 (上红)
******************************************************************************/
void SEG_LED_BRAKE_AIR_or_EBS_RED_R(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_32, seg_status);
}
/*****************************************************************************
//_34_制动器锁
******************************************************************************/
void SEG_LED_BRAKE_LOCK_R(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_33, seg_status);
}
/*****************************************************************************
//_35_空气悬架指示灯----FULL
******************************************************************************/
void SEG_LED_AIR_SUS_R(uint8_t seg_status)
{
   SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_34, seg_status);
}
/*****************************************************************************
//_36_拖车ABS系统故障报警
******************************************************************************/
void SEG_LED_TRAILER_ABS_U(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_138, seg_status);
}
/*****************************************************************************
//_37_工作灯
******************************************************************************/
void SEG_LED_WORKING_LAMP_U(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_55, seg_status);
}
/*****************************************************************************
//_38_拖车ABS信息
******************************************************************************/
void SEG_LED_TRAILER_ABS_INFO_U(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_137, seg_status);
}
/*****************************************************************************
//_39_右转向灯
******************************************************************************/
void SEG_LED_TURN_RIGHT(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_155, seg_status);
}
/*****************************************************************************
//_40_左转向灯
******************************************************************************/
void SEG_LED_TURN_LEFT(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_37, seg_status);
}
/*:ZH*/


/*****************************************************************************
常显示
******************************************************************************/
//左侧弧线
void SEG_A25_Disp(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_56, seg_status);
}
//右侧弧线
void SEG_C25_Disp(uint8_t seg_status)
{
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_136, seg_status);
}

/******************************************************************************
段码对应表
******************************************************************************/
#define NUM_1A(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_45, x);
#define NUM_1B(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_44, x);
#define NUM_1C(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_41, x);
#define NUM_1D(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_39, x);
#define NUM_1E(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_38, x);
#define NUM_1F(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_35, x);
#define NUM_1G(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_40, x);
#define NUM_1H(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_36, x);
#define NUM_1J(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_37, x);
#define NUM_1K(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_42, x);
#define NUM_1L(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_43, x);

#define NUM_2A(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_56, x);
#define NUM_2B(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_55, x);
#define NUM_2C(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_52, x);
#define NUM_2D(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_50, x);
#define NUM_2E(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_49, x);
#define NUM_2F(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_46, x);
#define NUM_2G(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_51, x);
#define NUM_2H(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_47, x);
#define NUM_2J(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_48, x);
#define NUM_2K(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_53, x);
#define NUM_2L(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_54, x);

#define NUM_3A(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_67, x);
#define NUM_3B(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_66, x);
#define NUM_3C(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_63, x);
#define NUM_3D(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_61, x);
#define NUM_3E(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_60, x);
#define NUM_3F(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_57, x);
#define NUM_3G(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_62, x);
#define NUM_3H(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_58, x);
#define NUM_3J(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_59, x);
#define NUM_3K(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_64, x);
#define NUM_3L(x) SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_65, x);
//      L K J //H G F E D C B A 
//0     1 1 1 //1 0 1 1 1 1 1 1  // 0x07Bf
//1     1 1 0 //0 0 0 0 0 1 1 0  // 0x0606
//2     0 1 1 //0 1 0 1 1 0 1 1  // 0x035b
//3     1 1 0 //0 1 0 0 1 1 1 1  // 0x064f
//4     1 1 1 //0 1 1 0 0 1 1 0  // 0x0766
//5     0 1 1 //0 1 1 0 1 1 0 1  // 0x036d
//6     0 1 1 //1 1 1 1 1 1 0 1  // 0x03fd
//7     1 1 0 //0 0 0 0 0 1 1 1  // 0x0607
//8     0 1 1 //0 1 1 1 1 1 1 1  // 0x037f
//9     1 1 1 //0 1 1 0 1 1 1 1  // 0x076f
//      0 0 0   0 0 0 0 0 0 0 0  // 0x0000
//'-'   0 0 0   0 1 0 0 0 0 0 0  // 0x0040
static const uint16_t Seg_Digit_Nomal[] =
{
    /**0**  | **1**   |**2**    | **3**  |  **4**   | **5**  | **6**    | **7**   | **8**   |  **9** | **10 black** | **11 --** | **all light --**/
    0x07Bf ,  0x0606 , 0x035b  ,  0x064f ,  0x0766 ,  0x036d ,  0x03fd ,  0x0607 ,  0x037f ,  0x076f ,   0x0000      , 0x0040 , 0xffff ,
} ;


static void Seg_Digit_1_Disp (uint8_t Digit)
{
    uint8_t MUN_A;
    uint8_t MUN_B;
    uint8_t MUN_C;
    uint8_t MUN_D;
    uint8_t MUN_E;
    uint8_t MUN_F;
    uint8_t MUN_G;
    uint8_t MUN_H;
    uint8_t MUN_J;
    uint8_t MUN_K;
    uint8_t MUN_L;

    MUN_A = ( ((1 << 0)  & Seg_Digit_Nomal[Digit]) >> 0)  ? 7 : 0;
    MUN_B = ( ((1 << 1)  & Seg_Digit_Nomal[Digit]) >> 1)  ? 7 : 0;
    MUN_C = ( ((1 << 2)  & Seg_Digit_Nomal[Digit]) >> 2)  ? 7 : 0;
    MUN_D = ( ((1 << 3)  & Seg_Digit_Nomal[Digit]) >> 3)  ? 7 : 0;
    MUN_E = ( ((1 << 4)  & Seg_Digit_Nomal[Digit]) >> 4)  ? 7 : 0;
    MUN_F = ( ((1 << 5)  & Seg_Digit_Nomal[Digit]) >> 5)  ? 7 : 0;
    MUN_G = ( ((1 << 6)  & Seg_Digit_Nomal[Digit]) >> 6)  ? 7 : 0; 
    MUN_H = ( ((1 << 7)  & Seg_Digit_Nomal[Digit]) >> 7)  ? 7 : 0;
    MUN_J = ( ((1 << 8)  & Seg_Digit_Nomal[Digit]) >> 8)  ? 7 : 0;
    MUN_K = ( ((1 << 9)  & Seg_Digit_Nomal[Digit]) >> 9)  ? 7 : 0;
    MUN_L = ( ((1 << 10) & Seg_Digit_Nomal[Digit]) >> 10) ? 7 : 0;  

    NUM_1A (MUN_A);
    NUM_1B (MUN_B);
    NUM_1C (MUN_C);
    NUM_1D (MUN_D);
    NUM_1E (MUN_E);
    NUM_1F (MUN_F);
    NUM_1G (MUN_G);
    NUM_1H (MUN_H);
    NUM_1J (MUN_J);
    NUM_1K (MUN_K);
    NUM_1L (MUN_L);

}
static void Seg_Digit_2_Disp (uint8_t Digit)
{
    uint8_t MUN_A;
    uint8_t MUN_B;
    uint8_t MUN_C;
    uint8_t MUN_D;
    uint8_t MUN_E;
    uint8_t MUN_F;
    uint8_t MUN_G;
    uint8_t MUN_H;
    uint8_t MUN_J;
    uint8_t MUN_K;
    uint8_t MUN_L;

    MUN_A = ( ((1 << 0)  & Seg_Digit_Nomal[Digit]) >> 0)  ? 7 : 0;
    MUN_B = ( ((1 << 1)  & Seg_Digit_Nomal[Digit]) >> 1)  ? 7 : 0;
    MUN_C = ( ((1 << 2)  & Seg_Digit_Nomal[Digit]) >> 2)  ? 7 : 0;
    MUN_D = ( ((1 << 3)  & Seg_Digit_Nomal[Digit]) >> 3)  ? 7 : 0;
    MUN_E = ( ((1 << 4)  & Seg_Digit_Nomal[Digit]) >> 4)  ? 7 : 0;
    MUN_F = ( ((1 << 5)  & Seg_Digit_Nomal[Digit]) >> 5)  ? 7 : 0;
    MUN_G = ( ((1 << 6)  & Seg_Digit_Nomal[Digit]) >> 6)  ? 7 : 0; 
    MUN_H = ( ((1 << 7)  & Seg_Digit_Nomal[Digit]) >> 7)  ? 7 : 0;
    MUN_J = ( ((1 << 8)  & Seg_Digit_Nomal[Digit]) >> 8)  ? 7 : 0;
    MUN_K = ( ((1 << 9)  & Seg_Digit_Nomal[Digit]) >> 9)  ? 7 : 0;
    MUN_L = ( ((1 << 10) & Seg_Digit_Nomal[Digit]) >> 10) ? 7 : 0;  

    NUM_2A (MUN_A);
    NUM_2B (MUN_B);
    NUM_2C (MUN_C);
    NUM_2D (MUN_D);
    NUM_2E (MUN_E);
    NUM_2F (MUN_F);
    NUM_2G (MUN_G);
    NUM_2H (MUN_H);
    NUM_2J (MUN_J);
    NUM_2K (MUN_K);
    NUM_2L (MUN_L);
}

static void Seg_Digit_3_Disp (uint8_t Digit)
{
    uint8_t MUN_A;
    uint8_t MUN_B;
    uint8_t MUN_C;
    uint8_t MUN_D;
    uint8_t MUN_E;
    uint8_t MUN_F;
    uint8_t MUN_G;
    uint8_t MUN_H;
    uint8_t MUN_J;
    uint8_t MUN_K;
    uint8_t MUN_L;

    MUN_A = ( ((1 << 0)  & Seg_Digit_Nomal[Digit]) >> 0)  ? 7 : 0;
    MUN_B = ( ((1 << 1)  & Seg_Digit_Nomal[Digit]) >> 1)  ? 7 : 0;
    MUN_C = ( ((1 << 2)  & Seg_Digit_Nomal[Digit]) >> 2)  ? 7 : 0;
    MUN_D = ( ((1 << 3)  & Seg_Digit_Nomal[Digit]) >> 3)  ? 7 : 0;
    MUN_E = ( ((1 << 4)  & Seg_Digit_Nomal[Digit]) >> 4)  ? 7 : 0;
    MUN_F = ( ((1 << 5)  & Seg_Digit_Nomal[Digit]) >> 5)  ? 7 : 0;
    MUN_G = ( ((1 << 6)  & Seg_Digit_Nomal[Digit]) >> 6)  ? 7 : 0; 
    MUN_H = ( ((1 << 7)  & Seg_Digit_Nomal[Digit]) >> 7)  ? 7 : 0;
    MUN_J = ( ((1 << 8)  & Seg_Digit_Nomal[Digit]) >> 8)  ? 7 : 0;
    MUN_K = ( ((1 << 9)  & Seg_Digit_Nomal[Digit]) >> 9)  ? 7 : 0;
    MUN_L = ( ((1 << 10) & Seg_Digit_Nomal[Digit]) >> 10) ? 7 : 0;  

    NUM_3A (MUN_A);
    NUM_3B (MUN_B);
    NUM_3C (MUN_C);
    NUM_3D (MUN_D);
    NUM_3E (MUN_E);
    NUM_3F (MUN_F);
    NUM_3G (MUN_G);
    NUM_3H (MUN_H);
    NUM_3J (MUN_J);
    NUM_3K (MUN_K);
    NUM_3L (MUN_L);
}

static void SEG_VehicleSpeed_Num(uint16_t Value, uint8_t Valid)
{

    uint32_t VSPEED_FLAG ;
    uint8_t Dig[3u];
    uint8_t Seg_Trip_Display_Reg = 0u ;

    if (Valid == GUI_DISP_MODE_BLANK)
    {
        Seg_Digit_1_Disp(10u);
        Seg_Digit_2_Disp(10u);
        Seg_Digit_3_Disp(10u);
    }
    else
    {
        VSPEED_FLAG = Value ;
        VSPEED_FLAG = VSPEED_FLAG / 10u;

        if (VSPEED_FLAG > 225u)
            VSPEED_FLAG = 225u;

        Seg_General_Digit_Display( (uint32_t)VSPEED_FLAG , 3u, 2u , Dig , &Seg_Trip_Display_Reg ) ;
        switch ( Seg_Trip_Display_Reg )
        {
        case 0x02://二位数
            Dig[2u] = 10u;
            break;
        case 0x03://一位数
            Dig[2u] = 10u;
            Dig[1u] = 10u;
            break;
        default :
            break;
        }

        if (Valid == GUI_DISP_MODE_NORMAL)
        {
            Seg_Digit_1_Disp(Dig[2u]);
            Seg_Digit_2_Disp(Dig[1u]);
            Seg_Digit_3_Disp(Dig[0u]);
        }
        else
        {
            Seg_Digit_1_Disp(11u);//--
            Seg_Digit_2_Disp(11u);//--
            Seg_Digit_3_Disp(11u);//--
        }
    }
}
//主气压
static void SEG_PRI_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status)
{
    uint8_t i ;
    static OldValue = 0xff ;
    static uint8_t mSEG[ PRI_SEG_NUM_MAX ] = {0} ;
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_95, seg_status) ;//A63
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_96, seg_status) ;//A64
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_114, seg_status);//A82
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_115, seg_status);//A83
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_116, seg_status);//A84
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_117, seg_status);//A85
    if (Valid == GUI_DISP_MODE_BLANK)
    {
        for(i = 0 ;i < PRI_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;
        }
        OldValue = 0xff ;
    }
    else if(Valid == GUI_DISP_MODE_INVALID)
    {
        SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_114, 0);//A82
        SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_115, 0);//A83
        SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_116, 0);//A84
        SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_117, 0);//A85
        for(i = 0 ;i < PRI_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;
        }
        OldValue = 0xff ;
    }
    else
    {       
        if (Valid == GUI_DISP_MODE_NORMAL)
        {//eg: 5 -> 100000-> 11111
        //mSEG[0] = ((((1 << Value) - 1) & ( 1 << 0)) >> 0) ? seg_status : 0;
            if(OldValue != Value)
            {
                OldValue = Value ;

                for(i = 0 ;i < PRI_SEG_NUM_MAX ;i ++ )
                {
                    mSEG[i] = ((((1 << Value) - 1) & ( 1 << i)) >> i) ;
                    if(mSEG[i])
                    {
                        mSEG[i] = seg_status ;
                    }
                    else
                    {
                        mSEG[i] = 0 ;
                    }
                } 
            }            
        }
    }

    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_97, mSEG[0])  ;//A65
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_98, mSEG[1])  ;//A66
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_99, mSEG[2])  ;//A67
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_100, mSEG[3]) ;//A68
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_101, mSEG[4]) ;//A69
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_102, mSEG[5]) ;//A70
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_103, mSEG[6]) ;//A71
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_104, mSEG[7]) ;//A72
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_105, mSEG[8]) ;//A73
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_106, mSEG[9]) ;//A74
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_107, mSEG[10]) ;//A75
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_108, mSEG[11]) ;//A76
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_109, mSEG[12]) ;//A77
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_110, mSEG[13]) ;//A78
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_111, mSEG[14]) ;//A79
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_112, mSEG[15]) ;//A80
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_113, mSEG[16]) ;//A81

}
//副气压
static void SEG_SEC_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status)
{
    uint8_t i ;
    static OldValue = 0xff ;
    static uint8_t mSEG[ SEC_SEG_NUM_MAX ] = {0} ;
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_68, seg_status);//B5
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_69, seg_status);//B6
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_70, seg_status);//B7
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_71, seg_status);//B8
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_72, seg_status);//B9
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_90, seg_status);//B27

    if (Valid == GUI_DISP_MODE_BLANK)
    {
        for(i = 0 ;i < SEC_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;
        }
        OldValue = 0xff ;
    }
    else if (Valid == GUI_DISP_MODE_INVALID)
    {
        SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_70, 0);//B7
        SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_71, 0);//B8
        SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_72, 0);//B9
        SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_90, 0);//B27
        for(i = 0 ;i < SEC_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;
        }
        OldValue = 0xff ;
    }
    else
    {       
        if (Valid == GUI_DISP_MODE_NORMAL)
        {//eg: 5 -> 100000-> 11111
            if(OldValue != Value)
            {
                for(i = 0 ;i < SEC_SEG_NUM_MAX ;i ++ )
                {
                    mSEG[i] = ((((1 << Value) - 1) & ( 1 << i)) >> i) ;
                    if(mSEG[i])
                    {
                        mSEG[i] = seg_status ;
                    }
                    else
                    {
                        mSEG[i] = 0 ;
                    }
                }
            }
        }
    }

    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_73, mSEG[0])  ;//B10
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_74, mSEG[1])  ;//B11
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_75, mSEG[2])  ;//B12
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_76, mSEG[3]) ;//B13
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_77, mSEG[4]) ;//B14
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_78, mSEG[5]) ;//B15
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_79, mSEG[6]) ;//B16
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_80, mSEG[7]) ;//B17
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_81, mSEG[8]) ;//B18
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_82, mSEG[9]) ;//B19
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_83, mSEG[10]) ;//B20
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_84, mSEG[11]) ;//B21
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_85, mSEG[12]) ;//B22
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_86, mSEG[13]) ;//B23
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_87, mSEG[14]) ;//B24
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_88, mSEG[15]) ;//B25
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_89, mSEG[16]) ;//B26

}
//水温
static void SEG_Coolant_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status)
{
    uint8_t i ;
    static uint8_t  OldValue = 0 ;
    static uint8_t mSEG[ COOLANT_SEG_NUM_MAX ] = {0} ;
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_79, seg_status);//A47
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_92, seg_status);//A60
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_93, seg_status);//A61
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_94, seg_status);//A62


    if (Valid == GUI_DISP_MODE_BLANK)
    {
        for(i = 0 ;i < COOLANT_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;            
        }
        OldValue = 0 ;
    }
    else if(Valid == GUI_DISP_MODE_INVALID)
    {
        SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_92, 0u);//A60
        SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_93, 0u);//A61
        SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_94, 0u);//A62
        for(i = 0 ;i < COOLANT_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;            
        }
        OldValue = 0 ;
    }
    else
    {       
        if (Valid == GUI_DISP_MODE_NORMAL)
        {//eg: 5 -> 100000-> 11111
            if(OldValue != Value)
            {
                OldValue = Value ;
                for(i = 0 ;i < COOLANT_SEG_NUM_MAX ;i ++ )
                {
                    mSEG[i] = ((((1 << Value) - 1) & ( 1 << i)) >> i) ;
                    if(mSEG[i])
                    {
                        mSEG[i] = seg_status ;
                    }
                    else
                    {
                        mSEG[i] = 0 ;
                    }
                }
            }
        }
    }

    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_80, mSEG[0])  ;//A48
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_81, mSEG[1])  ;//A49
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_82, mSEG[2])  ;//A50
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_83, mSEG[3])  ;//A51
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_84, mSEG[4])  ;//A52
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_85, mSEG[5])  ;//A53
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_86, mSEG[6])  ;//A54
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_87, mSEG[7])  ;//A55
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_88, mSEG[8])  ;//A56
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_89, mSEG[9])  ;//A57
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_90, mSEG[10])  ;//A58
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_91, mSEG[11])  ;//A59

}
//燃油
static void SEG_Fuel_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status)
{
    uint8_t i ;
    uint8_t mSEG[ FUEL_SEG_NUM_MAX ] = {0} ;
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_91, seg_status);//B28
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_92, seg_status);//B29
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_93, seg_status);//B30
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_106, seg_status);//B43

    if (Valid == GUI_DISP_MODE_BLANK)
    {
        for(i = 0 ;i < FUEL_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;
        }
    }
    else
    {       
        if (Valid == GUI_DISP_MODE_NORMAL)
        {//eg: 5 -> 100000-> 11111
            for(i = 0 ;i < FUEL_SEG_NUM_MAX ;i ++ )
            {
                mSEG[i] = ((((1 << Value) - 1) & ( 1 << i)) >> i) ;
                if(mSEG[i])
                {
                    mSEG[i] = seg_status ;
                }
                else
                {
                    mSEG[i] = 0 ;
                }
            }
        }
    }

    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_94 , mSEG[0])  ;//B31
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_95 , mSEG[1])  ;//B32
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_96 , mSEG[2])  ;//B33
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_97 , mSEG[3])  ;//B34
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_98 , mSEG[4])  ;//B35
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_99 , mSEG[5])  ;//B36
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_100, mSEG[6])  ;//B37
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_101, mSEG[7])  ;//B38
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_102, mSEG[8])  ;//B39
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_103, mSEG[9])  ;//B40
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_104, mSEG[10])  ;//B41
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_105, mSEG[11])  ;//B42
}
//转速
static void SEG_Tacho_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status)
{
    uint8_t i ;
    uint8_t mSEG[ TACHO_SEG_NUM_MAX ] = {0} ;
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_38, seg_status);//A8
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_59, seg_status);//A27
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_65, seg_status);//A33
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_71, seg_status);//A39
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_40, seg_status);//A10
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_46, seg_status);//A16
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_51, seg_status);//A21

    if (Valid == GUI_DISP_MODE_BLANK)
    {
        for(i = 0 ;i < TACHO_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;
        }
    }
    else
    {       
        if (Valid == GUI_DISP_MODE_NORMAL)
        {//eg: 5 -> 100000-> 11111
            for(i = 0 ;i < TACHO_SEG_NUM_MAX ;i ++ )
            {
                mSEG[i] = ((((1 << Value) - 1) & ( 1 << i)) >> i) ;
                if(mSEG[i])
                {
                    mSEG[i] = seg_status ;
                }
                else
                {
                    mSEG[i] = 1 ;
                }
            }
        }
    }

    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_58, mSEG[0]);//A26
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_60, mSEG[1]);//A28
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_61, mSEG[2]);//A29
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_62, mSEG[3]);//A30
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_63, mSEG[4]);//A31
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_64, mSEG[5]);//A32
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_66, mSEG[6]);//A34
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_67, mSEG[7]);//A35
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_68, mSEG[8]);//A36
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_69, mSEG[9]);//A37
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_70, mSEG[10]);//A38
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_72, mSEG[11]);//A40
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_73, mSEG[12]);//A41
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_74, mSEG[13]);//A42
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_75, mSEG[14]);//A43
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_39, mSEG[15]);//A9
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_41, mSEG[16]);//A11
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_42, mSEG[17]);//A12
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_43, mSEG[18]);//A13
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_44, mSEG[19]);//A14
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_45, mSEG[20]);//A15
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_47, mSEG[21]);//A17
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_48, mSEG[22]);//A18
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_49, mSEG[23]);//A19
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_53, mSEG[24]);//A23
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_52, mSEG[25]);//A22
    SEG_BUFF_Set(BU98_CHIP1, SEG_REDEFINE_50, mSEG[26]);//A20

}
//车速
static void SEG_VehicleSpeed_Display(uint8_t Value, uint8_t Valid,uint8_t seg_status)
{
    uint8_t i ;
    uint8_t mSEG[ VEH_SEG_NUM_MAX ] = {0} ;

    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_154, seg_status);//C42
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_133, seg_status);//C23
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_128, seg_status);//C18
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_123, seg_status);//C13
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_118, seg_status);//C8
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_113, seg_status);//C3
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_151, seg_status);//C39
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_146, seg_status);//C34
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_141, seg_status);//C29

    if(Value > VEH_SEG_NUM_MAX)
    {
        Value = VEH_SEG_NUM_MAX ;
    }

    if (Valid == GUI_DISP_MODE_BLANK)
    {
        for(i = 0 ;i < VEH_SEG_NUM_MAX ;i ++ )
        {
            mSEG[i] = 0 ;
        }
    }
    else
    {       
        if (Valid == GUI_DISP_MODE_NORMAL)
        {//eg: 5 -> 100000-> 11111
            for(i = 0 ;i < VEH_SEG_NUM_MAX ;i ++ )
            {
                mSEG[i] = ((((1 << Value) - 1) & ( 1 << i)) >> i) ;
                if(mSEG[i])
                {
                    mSEG[i] = seg_status ;
                }
                else
                {
                    mSEG[i] = 1 ;
                }
            }
        }
    }

    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_134, mSEG[0]);//C24
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_132, mSEG[1]);//C22
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_131, mSEG[2]);//C21
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_130, mSEG[3]);//C20
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_129, mSEG[4]);//C19
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_127, mSEG[5]);//C17
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_126, mSEG[6]);//C16
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_125, mSEG[7]);//C15
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_124, mSEG[8]);//C14
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_122, mSEG[9]);//C12
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_121, mSEG[10]);//C11
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_120, mSEG[11]);//C10
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_119, mSEG[12]);//C9
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_117, mSEG[13]);//C7
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_116, mSEG[14]);//C6
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_115, mSEG[15]);//C5
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_114, mSEG[16]);//C4
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_112, mSEG[17]);//C2
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_111, mSEG[18]);//C1
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_153, mSEG[19]);//C41
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_152, mSEG[20]);//C40
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_150, mSEG[21]);//C38
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_149, mSEG[22]);//C37
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_148, mSEG[23]);//C36
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_147, mSEG[24]);//C35
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_145, mSEG[25]);//C33
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_144, mSEG[26]);//C32
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_143, mSEG[27]);//C31
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_142, mSEG[28]);//C30
    SEG_BUFF_Set(BU98_CHIP0, SEG_REDEFINE_140, mSEG[29]);//C28
}
/******************************************************************************
函数名:Seg_General_Digit_Display
功  能:通用段数字显示程序
参  数:Digit:要显示的数字

        Len  : 需要显示的数字长度
        Blank:首位数字为零消隐位数,从最高位起算
        Reg : 寄存器变量
返回值:无
******************************************************************************/
static void Seg_General_Digit_Display(uint32_t Digit, uint8_t Len, uint8_t Blank , uint8_t *DigitBuf , uint8_t *Reg )
{
    uint8_t i;
    uint8_t ActLen;
    ActLen = 0;
    i = 0;

    //以10进制形式拆分数字并计算实际数字长度
    while (Digit)
    {
        DigitBuf[ActLen] = Digit % 10;
        Digit /= 10;
        ActLen++;
    }

    //数字为0时的特殊处理
    if (ActLen == 0)
    {
        ActLen = 1;
        DigitBuf[0] = 0;
    }

    //对未计算到的数字位作0填充
    for (i = ActLen; i < Len; i++ )
        DigitBuf[i] = 0;

    //数字首部按消隐位数做零消隐
    i = (Len - 1);
    while ((DigitBuf[i] == 0) && (i >= (Len - Blank)))
    {
        DigitBuf[i] = 0xFF;
        i--;

        (*Reg)  |= (1 << i) ;
    }

}

static uint8_t wbyTestSeg = 0;
static uint16_t wbyTestNum ;
static uint8_t WBY_SET = 0 ;

void Seg_Display_Service(void)
{
    uint32_t Ign_Time ;
    Ign_Time = Common_GetIgnOnTime();
    if (Common_Get_IG_Sts() == COMMON_POWER_ON)
    {  
        if(WBY_SET == 1)  
        {
            Seg_Display_ON();
        }             
        else
        {
            SEG_A25_Disp(7u) ;//左侧弧线
            SEG_C25_Disp(7u) ;//右侧弧线            
            if(Ign_Time < 3100)
            //if(0)
            {
                SEG_PRI_Display(GetGaugesCurrentPos(PRIGasGauges),GUI_DISP_MODE_NORMAL,7u) ;//PRI气压格
                SEG_SEC_Display(GetGaugesCurrentPos(SECGasGauges),GUI_DISP_MODE_NORMAL,7u) ;//SEC气压格
                SEG_Coolant_Display(GetGaugesCurrentPos(TempGauges),GUI_DISP_MODE_NORMAL,7u) ;//水温格
                SEG_Fuel_Display(GetGaugesCurrentPos(TempGauges), GUI_DISP_MODE_NORMAL,7u);//燃油格
                SEG_Tacho_Display(GetGaugesCurrentPos(RevGauges),GUI_DISP_MODE_NORMAL,7u);//转速格
                SEG_VehicleSpeed_Display(GetGaugesCurrentPos(VehGauges) ,GUI_DISP_MODE_NORMAL,7u);//车速格
                Seg_Digit_1_Disp(12);
                Seg_Digit_2_Disp(12);
                Seg_Digit_3_Disp(12);

                return ;
            }            

            if(AirPressure_Get_Valid(0))
            {
                SEG_PRI_Display(AirPressure_Get_CurSeg(0),GUI_DISP_MODE_NORMAL,7u) ;//PRI气压格
            }
            else
            {
                SEG_PRI_Display(AirPressure_Get_CurSeg(0),GUI_DISP_MODE_INVALID,7u) ;//PRI气压格
            }
            if(AirPressure_Get_Valid(1))
            {
                SEG_SEC_Display(AirPressure_Get_CurSeg(1),GUI_DISP_MODE_NORMAL,7u) ;//SEC气压格
            }
            else
            {
                SEG_SEC_Display(AirPressure_Get_CurSeg(1),GUI_DISP_MODE_INVALID,7u) ;//SEC气压格
            }
            
            
            if(Coolant_Get_Valid())
            {
                SEG_Coolant_Display(Coolant_Get_CurSeg(),GUI_DISP_MODE_NORMAL,7u) ;//水温格
            }
            else
            {
                SEG_Coolant_Display(Coolant_Get_CurSeg(),GUI_DISP_MODE_INVALID,7u) ;//水温格
            }
            
            SEG_Fuel_Display(Fuel_Get_CurSeg(), GUI_DISP_MODE_NORMAL,7u);//燃油格
            SEG_Tacho_Display(Tacho_Get_CurSeg(),GUI_DISP_MODE_NORMAL,7u);//转速格
            SEG_VehicleSpeed_Display(Speed_Get_CurSeg(),GUI_DISP_MODE_NORMAL,7u);//车速格
            wbyTestNum = Common_Get_Disp_V_Speed() ;
            //Speed_Get_Display_Value()
            SEG_VehicleSpeed_Num(wbyTestNum,GUI_DISP_MODE_NORMAL);//车速值

            
            //SEG_PRI_Display(wbyTestSeg,GUI_DISP_MODE_NORMAL,7u) ;//PRI气压格
            //SEG_SEC_Display(wbyTestSeg,GUI_DISP_MODE_NORMAL,7u) ;//SEC气压格
            //SEG_Coolant_Display(wbyTestSeg,GUI_DISP_MODE_NORMAL,7u) ;//水温格
            //SEG_Fuel_Display(wbyTestSeg, GUI_DISP_MODE_NORMAL,7u);//燃油格
            //SEG_Tacho_Display(wbyTestSeg,GUI_DISP_MODE_NORMAL,7u);//转速格
            //SEG_VehicleSpeed_Display(wbyTestSeg,GUI_DISP_MODE_NORMAL,7u);//车速格
            //SEG_VehicleSpeed_Num(wbyTestNum,GUI_DISP_MODE_NORMAL);//车速值
        }  


    }
    else
    {
        SEG_A25_Disp(0u) ;//左侧弧线
        SEG_C25_Disp(0u) ;//右侧弧线
        SEG_PRI_Display(AirPressure_Get_CurSeg(0),GUI_DISP_MODE_BLANK,0u) ;//PRI气压格
        SEG_SEC_Display(AirPressure_Get_CurSeg(1),GUI_DISP_MODE_BLANK,0u) ;//SEC气压格
        SEG_Coolant_Display(Coolant_Get_CurSeg(),GUI_DISP_MODE_BLANK,0u) ;//水温格
        SEG_Fuel_Display(Fuel_Get_CurSeg(), GUI_DISP_MODE_BLANK,0u);//燃油格
        SEG_Tacho_Display(Tacho_Get_CurSeg(),GUI_DISP_MODE_BLANK,0u);//转速格
        SEG_VehicleSpeed_Display(Speed_Get_CurSeg(),GUI_DISP_MODE_BLANK,0u);//车速格
        SEG_VehicleSpeed_Num(0u,GUI_DISP_MODE_BLANK);//车速值
    }
}

void Seg_Display_ON(void)
{
    BU98_CHIP_NUM_t chip_num;
    BU98_SEG_NUM_t seg_num;

    for (chip_num = BU98_CHIP0; chip_num < BU98_CHIP_MAX; chip_num++)
    {
        for (seg_num = SEG_REDEFINE_1; seg_num < BU98R10_SEG_MAX; seg_num++)
        {
            SEG_BUFF_Set(chip_num,seg_num,7);
        }
    }
}
void Seg_Display_OFF(void)
{
    BU98_CHIP_NUM_t chip_num;
    BU98_SEG_NUM_t seg_num;

    for (chip_num = BU98_CHIP0; chip_num < BU98_CHIP_MAX; chip_num++)
    {
        for (seg_num = SEG_REDEFINE_1; seg_num < BU98R10_SEG_MAX; seg_num++)
        {
            SEG_BUFF_Set(chip_num,seg_num,0);
        }
    }
}