#include "SEG_DISPLAY\SEG_DISPLAY.h" #include "GPIO_USER\GpioUser.h" #define Clr_Bit(p, b) (p) &= (~(1u << (b))) #define Set_Bit(p, b) (p) |= (1u << (b)) #define Bit_Is_Set(p, b) ((p) & (1u << (b))) #define Bit_Is_Clr(p, b) (!((p) & (1u << (b)))) /*数字显示数组*/ /*0, 1 2 3 4 5 6 7 8 9 */ const uint8_t SEG_DISPLAY_NUMBER0[] = {0x3Fu, 0x06u, 0x5Bu, 0x4Fu, 0x66u, 0x6Du, 0x7Du, 0x07u, 0x7Fu, 0x6Fu}; const uint8_t SEG_UNDISPLAY_NUMBER0[] = {0x00u, 0x06u, 0x5Bu, 0x4Fu, 0x66u, 0x6Du, 0x7Du, 0x07u, 0x7Fu, 0x6Fu}; /**@brief 边框线显示函数 * @param[in] m_Flag 是否显示 -1 显示 -0 不显示 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_Frame(uint8_t m_Flag) { _Fun_Res m_Res; if (m_Flag >= 2u) { m_Res = EX_ERR; } else { if (m_Flag == 0u) { /*边框*/ IC2_SEG134 = IC_SEG_OFF; IC2_SEG135 = IC_SEG_OFF; IC2_SEG136 = IC_SEG_OFF; IC2_SEG137 = IC_SEG_OFF; IC2_SEG138 = IC_SEG_OFF; IC2_SEG139 = IC_SEG_OFF; IC2_SEG140 = IC_SEG_OFF; IC2_SEG141 = IC_SEG_OFF; } else { /*边框*/ IC2_SEG134 = IC_SEG_ON; IC2_SEG135 = IC_SEG_ON; IC2_SEG136 = IC_SEG_ON; IC2_SEG137 = IC_SEG_ON; IC2_SEG138 = IC_SEG_ON; IC2_SEG139 = IC_SEG_ON; IC2_SEG140 = IC_SEG_ON; IC2_SEG141 = IC_SEG_ON; } m_Res = EX_OK; } return m_Res; } /**@brief 指示灯显示函数 * @param[in] m_Flag 是否显示 -1 显示 -0 不显示 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_LED_STS(uint8_t LED_NUM, uint8_t m_Flag) { _Fun_Res m_Res; uint8_t Flag; uint8_t Num; if ((m_Flag > 7u) || (LED_NUM >= SEG_LED_MAX)) { m_Res = EX_ERR; } else { if (m_Flag == 0u) { Flag = IC_SEG_OFF; } else { Flag = IC_SEG_ON; } Num = LED_NUM; switch (Num) { case 0u: IC2_SEG032 = Flag; break; /* SEG_LED_Voltage, */ case 1u: IC2_SEG033 = Flag; break; /* SEG_LED_Auto_Start_Stop, */ case 2u: IC2_SEG128 = Flag; break; /* SEG_LED_Fuel, */ default: break; } m_Res = EX_OK; } return m_Res; } /**@brief 挡位显示函数 * @param[in] m_Gear_Flag 挡位符号是否显示 -1 显示 -0 不显示 * @param[in] m_Gear 符号 Gear_P = 0, //P Gear_R, //R Gear_N, //N Gear_D, //D * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_GEAR(uint8_t m_Gear_Flag, uint8_t m_Gear) { _Fun_Res m_Res; if ((m_Gear_Flag >= 2u) || (m_Gear > 3u)) { m_Res = EX_ERR; } else { /*挡位符号*/ if (m_Gear_Flag == 1u) { if (m_Gear == Gear_P) { IC2_SEG034 = IC_SEG_ON; IC2_SEG033 = IC_SEG_ON; IC2_SEG031 = IC_SEG_ON; IC2_SEG050 = IC_SEG_ON; IC2_SEG036 = IC_SEG_ON; IC2_SEG035 = IC_SEG_OFF; IC2_SEG049 = IC_SEG_ON; IC2_SEG037 = IC_SEG_ON; IC2_SEG041 = IC_SEG_ON; IC2_SEG032 = IC_SEG_ON; IC2_SEG030 = IC_SEG_ON; IC2_SEG048 = IC_SEG_ON; IC2_SEG038 = IC_SEG_ON; IC2_SEG046 = IC_SEG_OFF; IC2_SEG047 = IC_SEG_OFF; IC2_SEG045 = IC_SEG_OFF; IC2_SEG039 = IC_SEG_ON; IC2_SEG040 = IC_SEG_ON; IC2_SEG042 = IC_SEG_OFF; IC2_SEG043 = IC_SEG_OFF; IC2_SEG044 = IC_SEG_OFF; } else if (m_Gear == Gear_R) { IC2_SEG034 = IC_SEG_ON; IC2_SEG033 = IC_SEG_ON; IC2_SEG031 = IC_SEG_ON; IC2_SEG050 = IC_SEG_ON; IC2_SEG036 = IC_SEG_ON; IC2_SEG035 = IC_SEG_OFF; IC2_SEG049 = IC_SEG_ON; IC2_SEG037 = IC_SEG_ON; IC2_SEG041 = IC_SEG_ON; IC2_SEG032 = IC_SEG_ON; IC2_SEG030 = IC_SEG_ON; IC2_SEG048 = IC_SEG_ON; IC2_SEG038 = IC_SEG_ON; IC2_SEG046 = IC_SEG_ON; IC2_SEG047 = IC_SEG_OFF; IC2_SEG045 = IC_SEG_ON; IC2_SEG039 = IC_SEG_ON; IC2_SEG040 = IC_SEG_ON; IC2_SEG042 = IC_SEG_OFF; IC2_SEG043 = IC_SEG_ON; IC2_SEG044 = IC_SEG_ON; } else if (m_Gear == Gear_N) { IC2_SEG034 = IC_SEG_OFF; IC2_SEG033 = IC_SEG_ON; IC2_SEG031 = IC_SEG_OFF; IC2_SEG050 = IC_SEG_ON; IC2_SEG036 = IC_SEG_ON; IC2_SEG035 = IC_SEG_ON; IC2_SEG049 = IC_SEG_ON; IC2_SEG037 = IC_SEG_ON; IC2_SEG041 = IC_SEG_OFF; IC2_SEG032 = IC_SEG_ON; IC2_SEG030 = IC_SEG_OFF; IC2_SEG048 = IC_SEG_ON; IC2_SEG038 = IC_SEG_ON; IC2_SEG046 = IC_SEG_ON; IC2_SEG047 = IC_SEG_ON; IC2_SEG045 = IC_SEG_ON; IC2_SEG039 = IC_SEG_OFF; IC2_SEG040 = IC_SEG_ON; IC2_SEG042 = IC_SEG_OFF; IC2_SEG043 = IC_SEG_ON; IC2_SEG044 = IC_SEG_ON; } else { IC2_SEG034 = IC_SEG_ON; IC2_SEG033 = IC_SEG_ON; IC2_SEG031 = IC_SEG_ON; IC2_SEG050 = IC_SEG_ON; IC2_SEG036 = IC_SEG_ON; IC2_SEG035 = IC_SEG_OFF; IC2_SEG049 = IC_SEG_ON; IC2_SEG037 = IC_SEG_ON; IC2_SEG041 = IC_SEG_OFF; IC2_SEG032 = IC_SEG_OFF; IC2_SEG030 = IC_SEG_OFF; IC2_SEG048 = IC_SEG_ON; IC2_SEG038 = IC_SEG_ON; IC2_SEG046 = IC_SEG_OFF; IC2_SEG047 = IC_SEG_ON; IC2_SEG045 = IC_SEG_ON; IC2_SEG039 = IC_SEG_ON; IC2_SEG040 = IC_SEG_ON; IC2_SEG042 = IC_SEG_ON; IC2_SEG043 = IC_SEG_ON; IC2_SEG044 = IC_SEG_ON; } } else { IC2_SEG034 = IC_SEG_OFF; IC2_SEG033 = IC_SEG_OFF; IC2_SEG031 = IC_SEG_OFF; IC2_SEG050 = IC_SEG_OFF; IC2_SEG036 = IC_SEG_OFF; IC2_SEG035 = IC_SEG_OFF; IC2_SEG049 = IC_SEG_OFF; IC2_SEG037 = IC_SEG_OFF; IC2_SEG041 = IC_SEG_OFF; IC2_SEG032 = IC_SEG_OFF; IC2_SEG030 = IC_SEG_OFF; IC2_SEG048 = IC_SEG_OFF; IC2_SEG038 = IC_SEG_OFF; IC2_SEG046 = IC_SEG_OFF; IC2_SEG047 = IC_SEG_OFF; IC2_SEG045 = IC_SEG_OFF; IC2_SEG039 = IC_SEG_OFF; IC2_SEG040 = IC_SEG_OFF; IC2_SEG042 = IC_SEG_OFF; IC2_SEG043 = IC_SEG_OFF; IC2_SEG044 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief 燃油表盘显示函数 * @param[in] m_Flag 段与数字是否显示 -1 显示 -0 不显示 * @param[in] m_SEG 燃油表盘段数0<=m_SEG<=5 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_FuelDial(uint8_t m_Flag, uint8_t m_SEG) { _Fun_Res m_Res; // uint8_t Num; uint8_t m8; if ((m_Flag >= 2u) || (m_SEG > 5u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC2_SEG049 = IC_SEG_GREY; IC2_SEG048 = IC_SEG_GREY; IC2_SEG052 = IC_SEG_GREY; IC2_SEG107 = IC_SEG_GREY; IC2_SEG108 = IC_SEG_GREY; IC2_SEG060 = IC_SEG_ON; IC2_SEG110 = IC_SEG_ON; IC2_SEG111 = IC_SEG_ON; IC2_SEG114 = IC_SEG_ON; IC2_SEG113 = IC_SEG_ON; IC2_SEG115 = IC_SEG_ON; IC2_SEG106 = IC_SEG_ON; IC2_SEG109 = IC_SEG_ON; if ((Get_Fuel_Sensor_State() == 2) && (ClearODO_Flag != 1)) { if (FLASH_SYNC_1Hz) { IC2_SEG108 = IC_SEG_ON; IC2_SEG107 = IC_SEG_ON; IC2_SEG052 = IC_SEG_ON; IC2_SEG048 = IC_SEG_ON; IC2_SEG049 = IC_SEG_ON; } else { IC2_SEG108 = IC_SEG_GREY; IC2_SEG107 = IC_SEG_GREY; IC2_SEG052 = IC_SEG_GREY; IC2_SEG048 = IC_SEG_GREY; IC2_SEG049 = IC_SEG_GREY; } } else { switch (m_SEG) { case 5u: IC2_SEG108 = IC_SEG_ON; case 4u: IC2_SEG107 = IC_SEG_ON; case 3u: IC2_SEG052 = IC_SEG_ON; case 2u: IC2_SEG048 = IC_SEG_ON; case 1u: IC2_SEG049 = IC_SEG_ON; case 0u: break; default: break; } } m8 = SEG_DISPLAY_NUMBER0[m_SEG]; if (Bit_Is_Set(m8, 0)) { IC2_SEG059 = IC_SEG_ON; } else { IC2_SEG059 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG058 = IC_SEG_ON; } else { IC2_SEG058 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG056 = IC_SEG_ON; } else { IC2_SEG056 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG055 = IC_SEG_ON; } else { IC2_SEG055 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG053 = IC_SEG_ON; } else { IC2_SEG053 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG054 = IC_SEG_ON; } else { IC2_SEG054 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG057 = IC_SEG_ON; } else { IC2_SEG057 = IC_SEG_OFF; } } else { IC2_SEG049 = IC_SEG_OFF; IC2_SEG048 = IC_SEG_OFF; IC2_SEG052 = IC_SEG_OFF; IC2_SEG107 = IC_SEG_OFF; IC2_SEG108 = IC_SEG_OFF; IC2_SEG060 = IC_SEG_OFF; IC2_SEG110 = IC_SEG_OFF; IC2_SEG111 = IC_SEG_OFF; IC2_SEG114 = IC_SEG_OFF; IC2_SEG113 = IC_SEG_OFF; IC2_SEG115 = IC_SEG_OFF; IC2_SEG106 = IC_SEG_OFF; IC2_SEG109 = IC_SEG_OFF; IC2_SEG116 = IC_SEG_OFF; IC2_SEG112 = IC_SEG_OFF; IC2_SEG053 = IC_SEG_OFF; IC2_SEG054 = IC_SEG_OFF; IC2_SEG055 = IC_SEG_OFF; IC2_SEG056 = IC_SEG_OFF; IC2_SEG057 = IC_SEG_OFF; IC2_SEG058 = IC_SEG_OFF; IC2_SEG059 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief 转速表盘显示函数 * @param[in] m_Flag 段与数字是否显示 -1 显示 -0 不显示 * @param[in] m_SEG 转速表盘段数0<=m_SEG<=11 * @param[in] m_NUM 显示转速值 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_EspeedDial(uint8_t m_Flag, uint8_t m_SEG, uint16_t m_NUM) { _Fun_Res m_Res; uint8_t Num; uint8_t m8; if ((m_Flag >= 2u) || (m_SEG > 11u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC1_SEG127 = IC_SEG_GREY; IC1_SEG126 = IC_SEG_GREY; IC1_SEG125 = IC_SEG_GREY; IC1_SEG124 = IC_SEG_GREY; IC1_SEG123 = IC_SEG_GREY; IC1_SEG122 = IC_SEG_GREY; IC1_SEG121 = IC_SEG_GREY; IC1_SEG120 = IC_SEG_GREY; IC1_SEG119 = IC_SEG_GREY; IC1_SEG118 = IC_SEG_GREY; IC1_SEG117 = IC_SEG_GREY; switch (m_SEG) { case 11u: IC1_SEG127 = IC_SEG_ON; case 10u: IC1_SEG126 = IC_SEG_ON; case 9u: IC1_SEG125 = IC_SEG_ON; case 8u: IC1_SEG124 = IC_SEG_ON; case 7u: IC1_SEG123 = IC_SEG_ON; case 6u: IC1_SEG122 = IC_SEG_ON; case 5u: IC1_SEG121 = IC_SEG_ON; case 4u: IC1_SEG120 = IC_SEG_ON; case 3u: IC1_SEG119 = IC_SEG_ON; case 2u: IC1_SEG118 = IC_SEG_ON; case 1u: IC1_SEG117 = IC_SEG_ON; case 0u: break; default: break; } IC1_SEG067 = IC_SEG_ON; if (m_NUM > 9999) { Num = m_NUM / 10000; IC1_SEG076 = IC_SEG_OFF; } else { Num = m_NUM / 1000u; IC1_SEG076 = IC_SEG_ON; } /*个位*/ m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG075 = IC_SEG_ON; } else { IC1_SEG075 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG073 = IC_SEG_ON; } else { IC1_SEG073 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG071 = IC_SEG_ON; } else { IC1_SEG071 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG070 = IC_SEG_ON; } else { IC1_SEG070 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG068 = IC_SEG_ON; } else { IC1_SEG068 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG069 = IC_SEG_ON; } else { IC1_SEG069 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG072 = IC_SEG_ON; } else { IC1_SEG072 = IC_SEG_OFF; } /*十分位*/ if (m_NUM > 9999) { Num = (m_NUM % 10000u) / 1000; } else { Num = (m_NUM % 1000u) / 100; } m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG112 = IC_SEG_ON; } else { IC1_SEG112 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG111 = IC_SEG_ON; } else { IC1_SEG111 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG080 = IC_SEG_ON; } else { IC1_SEG080 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG079 = IC_SEG_ON; } else { IC1_SEG079 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG077 = IC_SEG_ON; } else { IC1_SEG077 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG078 = IC_SEG_ON; } else { IC1_SEG078 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG081 = IC_SEG_ON; } else { IC1_SEG081 = IC_SEG_OFF; } } else { IC1_SEG127 = IC_SEG_OFF; IC1_SEG126 = IC_SEG_OFF; IC1_SEG125 = IC_SEG_OFF; IC1_SEG124 = IC_SEG_OFF; IC1_SEG123 = IC_SEG_OFF; IC1_SEG122 = IC_SEG_OFF; IC1_SEG121 = IC_SEG_OFF; IC1_SEG120 = IC_SEG_OFF; IC1_SEG119 = IC_SEG_OFF; IC1_SEG118 = IC_SEG_OFF; IC1_SEG117 = IC_SEG_OFF; IC1_SEG076 = IC_SEG_OFF; IC1_SEG067 = IC_SEG_OFF; IC1_SEG068 = IC_SEG_OFF; IC1_SEG069 = IC_SEG_OFF; IC1_SEG070 = IC_SEG_OFF; IC1_SEG071 = IC_SEG_OFF; IC1_SEG072 = IC_SEG_OFF; IC1_SEG073 = IC_SEG_OFF; IC1_SEG075 = IC_SEG_OFF; IC1_SEG077 = IC_SEG_OFF; IC1_SEG078 = IC_SEG_OFF; IC1_SEG079 = IC_SEG_OFF; IC1_SEG080 = IC_SEG_OFF; IC1_SEG081 = IC_SEG_OFF; IC1_SEG111 = IC_SEG_OFF; IC1_SEG112 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief 电量表盘显示函数 * @param[in] m_Flag 段与数字是否显示 -1 显示 -0 不显示 * @param[in] m_SEG 车速表盘段数0<=m_SEG<=10 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_EleDial(uint8_t m_Flag, uint8_t m_SEG, uint8_t m_NUM) { _Fun_Res m_Res; uint8_t Num; uint8_t m8; if ((m_Flag >= 2u) || (m_SEG > 10u) || (m_NUM >= 200u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC1_SEG022 = IC_SEG_GREY; IC1_SEG021 = IC_SEG_GREY; IC1_SEG020 = IC_SEG_GREY; IC1_SEG019 = IC_SEG_GREY; IC1_SEG018 = IC_SEG_GREY; IC1_SEG017 = IC_SEG_GREY; IC1_SEG016 = IC_SEG_GREY; IC1_SEG015 = IC_SEG_GREY; IC1_SEG014 = IC_SEG_GREY; IC1_SEG013 = IC_SEG_GREY; switch (m_SEG) { case 10u: IC1_SEG022 = IC_SEG_ON; case 9u: IC1_SEG021 = IC_SEG_ON; case 8u: IC1_SEG020 = IC_SEG_ON; case 7u: IC1_SEG019 = IC_SEG_ON; case 6u: IC1_SEG018 = IC_SEG_ON; case 5u: IC1_SEG017 = IC_SEG_ON; case 4u: IC1_SEG016 = IC_SEG_ON; case 3u: IC1_SEG015 = IC_SEG_ON; case 2u: IC1_SEG014 = IC_SEG_ON; case 1u: IC1_SEG013 = IC_SEG_ON; case 0u: break; default: break; } IC1_SEG027 = IC_SEG_ON; IC1_SEG023 = IC_SEG_ON; /*单位*/ IC1_SEG028 = IC_SEG_ON; /*百位*/ Num = m_NUM / 100u; if (Num == 1u) { IC1_SEG043 = IC_SEG_ON; } else { IC1_SEG043 = IC_SEG_OFF; } /*十位*/ Num = (m_NUM / 10u) % 10u; if (m_NUM >= 100u) { m8 = SEG_DISPLAY_NUMBER0[Num]; } else { m8 = SEG_UNDISPLAY_NUMBER0[Num]; } if (Bit_Is_Set(m8, 0)) { IC1_SEG040 = IC_SEG_ON; } else { IC1_SEG040 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG039 = IC_SEG_ON; } else { IC1_SEG039 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG037 = IC_SEG_ON; } else { IC1_SEG037 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG036 = IC_SEG_ON; } else { IC1_SEG036 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG042 = IC_SEG_ON; } else { IC1_SEG042 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG041 = IC_SEG_ON; } else { IC1_SEG041 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG038 = IC_SEG_ON; } else { IC1_SEG038 = IC_SEG_OFF; } /*个位*/ Num = m_NUM % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG033 = IC_SEG_ON; } else { IC1_SEG033 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG032 = IC_SEG_ON; } else { IC1_SEG032 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG030 = IC_SEG_ON; } else { IC1_SEG030 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG029 = IC_SEG_ON; } else { IC1_SEG029 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG035 = IC_SEG_ON; } else { IC1_SEG035 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG034 = IC_SEG_ON; } else { IC1_SEG034 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG031 = IC_SEG_ON; } else { IC1_SEG031 = IC_SEG_OFF; } } else { IC1_SEG022 = IC_SEG_OFF; IC1_SEG021 = IC_SEG_OFF; IC1_SEG020 = IC_SEG_OFF; IC1_SEG019 = IC_SEG_OFF; IC1_SEG018 = IC_SEG_OFF; IC1_SEG017 = IC_SEG_OFF; IC1_SEG016 = IC_SEG_OFF; IC1_SEG015 = IC_SEG_OFF; IC1_SEG014 = IC_SEG_OFF; IC1_SEG013 = IC_SEG_OFF; IC1_SEG027 = IC_SEG_OFF; IC1_SEG023 = IC_SEG_OFF; IC1_SEG028 = IC_SEG_OFF; IC1_SEG043 = IC_SEG_OFF; IC1_SEG040 = IC_SEG_OFF; IC1_SEG039 = IC_SEG_OFF; IC1_SEG037 = IC_SEG_OFF; IC1_SEG036 = IC_SEG_OFF; IC1_SEG042 = IC_SEG_OFF; IC1_SEG041 = IC_SEG_OFF; IC1_SEG038 = IC_SEG_OFF; IC1_SEG033 = IC_SEG_OFF; IC1_SEG032 = IC_SEG_OFF; IC1_SEG030 = IC_SEG_OFF; IC1_SEG029 = IC_SEG_OFF; IC1_SEG035 = IC_SEG_OFF; IC1_SEG034 = IC_SEG_OFF; IC1_SEG031 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } _Fun_Res SEG_Scan_SET_EleDial(uint8_t m_SEG) { _Fun_Res m_Res = EX_OK; IC1_SEG022 = IC_SEG_GREY; IC1_SEG021 = IC_SEG_GREY; IC1_SEG020 = IC_SEG_GREY; IC1_SEG019 = IC_SEG_GREY; IC1_SEG018 = IC_SEG_GREY; IC1_SEG017 = IC_SEG_GREY; IC1_SEG016 = IC_SEG_GREY; IC1_SEG015 = IC_SEG_GREY; IC1_SEG014 = IC_SEG_GREY; IC1_SEG013 = IC_SEG_GREY; switch (m_SEG) { case 10u: IC1_SEG022 = IC_SEG_ON; case 9u: IC1_SEG021 = IC_SEG_ON; case 8u: IC1_SEG020 = IC_SEG_ON; case 7u: IC1_SEG019 = IC_SEG_ON; case 6u: IC1_SEG018 = IC_SEG_ON; case 5u: IC1_SEG017 = IC_SEG_ON; case 4u: IC1_SEG016 = IC_SEG_ON; case 3u: IC1_SEG015 = IC_SEG_ON; case 2u: IC1_SEG014 = IC_SEG_ON; case 1u: IC1_SEG013 = IC_SEG_ON; case 0u: break; default: break; } IC1_SEG027 = IC_SEG_OFF; IC1_SEG023 = IC_SEG_OFF; IC1_SEG028 = IC_SEG_OFF; IC1_SEG043 = IC_SEG_OFF; IC1_SEG040 = IC_SEG_OFF; IC1_SEG039 = IC_SEG_OFF; IC1_SEG037 = IC_SEG_OFF; IC1_SEG036 = IC_SEG_OFF; IC1_SEG042 = IC_SEG_OFF; IC1_SEG041 = IC_SEG_OFF; IC1_SEG038 = IC_SEG_OFF; IC1_SEG033 = IC_SEG_OFF; IC1_SEG032 = IC_SEG_OFF; IC1_SEG030 = IC_SEG_OFF; IC1_SEG029 = IC_SEG_OFF; IC1_SEG035 = IC_SEG_OFF; IC1_SEG034 = IC_SEG_OFF; IC1_SEG031 = IC_SEG_OFF; return m_Res; } /**@brief 功率表盘显示函数 * @param[in] m_Flag 段与数字是否显示 -1 显示 -0 不显示 * @param[in] m_SEG 车速表盘段数0<=m_SEG<=12 * @param[in] m_Sign 显示功率值 负号 * @param[in] m_NUM 显示功率值 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_PowerDial(uint8_t m_Flag, uint8_t m_SEG, uint8_t m_Sign, uint8_t m_NUM) { _Fun_Res m_Res; uint8_t Num; uint8_t m8; if ((m_Flag >= 2u) || (m_Sign >= 2u) || ((m_NUM >= 200u) && (m_NUM != 255u))) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC2_SEG148 = IC_SEG_ON; IC2_SEG145 = IC_SEG_ON; IC2_SEG064 = IC_SEG_ON; IC2_SEG067 = IC_SEG_GREY; IC2_SEG069 = IC_SEG_GREY; IC2_SEG071 = IC_SEG_GREY; IC2_SEG073 = IC_SEG_GREY; IC2_SEG141 = IC_SEG_GREY; IC2_SEG142 = IC_SEG_GREY; IC2_SEG143 = IC_SEG_GREY; IC2_SEG144 = IC_SEG_GREY; IC2_SEG147 = IC_SEG_GREY; IC2_SEG146 = IC_SEG_GREY; if ((m_SEG & 0x80) == 0x00u) { switch (m_SEG) { case 8u: IC2_SEG067 = IC_SEG_ON; case 7u: IC2_SEG069 = IC_SEG_ON; case 6u: IC2_SEG071 = IC_SEG_ON; case 5u: IC2_SEG073 = IC_SEG_ON; case 4u: IC2_SEG141 = IC_SEG_ON; case 3u: IC2_SEG142 = IC_SEG_ON; case 2u: IC2_SEG143 = IC_SEG_ON; case 1u: IC2_SEG144 = IC_SEG_ON; case 0u: break; default: break; } } else { switch (m_SEG) { case 0x82u: IC2_SEG147 = IC_SEG_ON; case 0x81u: IC2_SEG146 = IC_SEG_ON; case 0x80u: break; default: break; } } /*负号*/ if (m_Sign == 1u) { IC2_SEG139 = IC_SEG_ON; } else { IC2_SEG139 = IC_SEG_OFF; } /*单位*/ IC2_SEG140 = IC_SEG_ON; /*百位*/ if (m_NUM == 0xFF) { IC2_SEG133 = IC_SEG_ON; IC2_SEG126 = IC_SEG_ON; IC2_SEG138 = IC_SEG_OFF; IC2_SEG135 = IC_SEG_OFF; IC2_SEG134 = IC_SEG_OFF; IC2_SEG132 = IC_SEG_OFF; IC2_SEG131 = IC_SEG_OFF; IC2_SEG137 = IC_SEG_OFF; IC2_SEG136 = IC_SEG_OFF; IC2_SEG128 = IC_SEG_OFF; IC2_SEG127 = IC_SEG_OFF; IC2_SEG125 = IC_SEG_OFF; IC2_SEG124 = IC_SEG_OFF; IC2_SEG130 = IC_SEG_OFF; IC2_SEG129 = IC_SEG_OFF; } else { Num = m_NUM / 100u; if (Num == 1u) { IC2_SEG138 = IC_SEG_ON; } else { IC2_SEG138 = IC_SEG_OFF; } /*十位*/ Num = (m_NUM / 10u) % 10u; if (m_NUM >= 100u) { m8 = SEG_DISPLAY_NUMBER0[Num]; } else { m8 = SEG_UNDISPLAY_NUMBER0[Num]; } if (Bit_Is_Set(m8, 0)) { IC2_SEG135 = IC_SEG_ON; } else { IC2_SEG135 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG134 = IC_SEG_ON; } else { IC2_SEG134 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG132 = IC_SEG_ON; } else { IC2_SEG132 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG131 = IC_SEG_ON; } else { IC2_SEG131 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG137 = IC_SEG_ON; } else { IC2_SEG137 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG136 = IC_SEG_ON; } else { IC2_SEG136 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG133 = IC_SEG_ON; } else { IC2_SEG133 = IC_SEG_OFF; } /*个位*/ Num = m_NUM % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG128 = IC_SEG_ON; } else { IC2_SEG128 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG127 = IC_SEG_ON; } else { IC2_SEG127 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG125 = IC_SEG_ON; } else { IC2_SEG125 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG124 = IC_SEG_ON; } else { IC2_SEG124 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG130 = IC_SEG_ON; } else { IC2_SEG130 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG129 = IC_SEG_ON; } else { IC2_SEG129 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG126 = IC_SEG_ON; } else { IC2_SEG126 = IC_SEG_OFF; } } } else { IC2_SEG067 = IC_SEG_OFF; IC2_SEG069 = IC_SEG_OFF; IC2_SEG071 = IC_SEG_OFF; IC2_SEG073 = IC_SEG_OFF; IC2_SEG141 = IC_SEG_OFF; IC2_SEG142 = IC_SEG_OFF; IC2_SEG143 = IC_SEG_OFF; IC2_SEG144 = IC_SEG_OFF; IC2_SEG147 = IC_SEG_OFF; IC2_SEG146 = IC_SEG_OFF; IC2_SEG148 = IC_SEG_OFF; IC2_SEG145 = IC_SEG_OFF; IC2_SEG064 = IC_SEG_OFF; IC2_SEG139 = IC_SEG_OFF; IC2_SEG140 = IC_SEG_OFF; IC2_SEG138 = IC_SEG_OFF; IC2_SEG135 = IC_SEG_OFF; IC2_SEG134 = IC_SEG_OFF; IC2_SEG132 = IC_SEG_OFF; IC2_SEG131 = IC_SEG_OFF; IC2_SEG137 = IC_SEG_OFF; IC2_SEG136 = IC_SEG_OFF; IC2_SEG133 = IC_SEG_OFF; IC2_SEG128 = IC_SEG_OFF; IC2_SEG127 = IC_SEG_OFF; IC2_SEG125 = IC_SEG_OFF; IC2_SEG124 = IC_SEG_OFF; IC2_SEG130 = IC_SEG_OFF; IC2_SEG129 = IC_SEG_OFF; IC2_SEG126 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } _Fun_Res SEG_Scan_SET_PowerDial(uint8_t m_SEG) { _Fun_Res m_Res; IC2_SEG148 = IC_SEG_ON; IC2_SEG145 = IC_SEG_ON; IC2_SEG064 = IC_SEG_ON; IC2_SEG067 = IC_SEG_GREY; IC2_SEG069 = IC_SEG_GREY; IC2_SEG071 = IC_SEG_GREY; IC2_SEG073 = IC_SEG_GREY; IC2_SEG141 = IC_SEG_GREY; IC2_SEG142 = IC_SEG_GREY; IC2_SEG143 = IC_SEG_GREY; IC2_SEG144 = IC_SEG_GREY; IC2_SEG147 = IC_SEG_GREY; IC2_SEG146 = IC_SEG_GREY; switch (m_SEG) { case 10u: IC2_SEG067 = IC_SEG_ON; case 9u: IC2_SEG069 = IC_SEG_ON; case 8u: IC2_SEG071 = IC_SEG_ON; case 7u: IC2_SEG073 = IC_SEG_ON; case 6u: IC2_SEG141 = IC_SEG_ON; case 5u: IC2_SEG142 = IC_SEG_ON; case 4u: IC2_SEG143 = IC_SEG_ON; case 3u: IC2_SEG144 = IC_SEG_ON; case 2u: IC2_SEG146 = IC_SEG_ON; case 1u: IC2_SEG147 = IC_SEG_ON; case 0u: break; default: break; } IC2_SEG148 = IC_SEG_OFF; IC2_SEG145 = IC_SEG_OFF; IC2_SEG064 = IC_SEG_OFF; IC2_SEG139 = IC_SEG_OFF; IC2_SEG140 = IC_SEG_OFF; IC2_SEG138 = IC_SEG_OFF; IC2_SEG135 = IC_SEG_OFF; IC2_SEG134 = IC_SEG_OFF; IC2_SEG132 = IC_SEG_OFF; IC2_SEG131 = IC_SEG_OFF; IC2_SEG137 = IC_SEG_OFF; IC2_SEG136 = IC_SEG_OFF; IC2_SEG133 = IC_SEG_OFF; IC2_SEG128 = IC_SEG_OFF; IC2_SEG127 = IC_SEG_OFF; IC2_SEG125 = IC_SEG_OFF; IC2_SEG124 = IC_SEG_OFF; IC2_SEG130 = IC_SEG_OFF; IC2_SEG129 = IC_SEG_OFF; IC2_SEG126 = IC_SEG_OFF; m_Res = EX_OK; return m_Res; } /**@brief 续航里程显示函数 * @param[in] m_Flag 续航里程是否显示 -2 显示---km -1 显示 -0 不显示 * @param[in] m_NUM 续航里程数值 0<=m_NUM<=999 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_DTE_NUM(uint8_t m_Flag, uint16_t m_NUM) { _Fun_Res m_Res; uint16_t Num; uint8_t m8; if ((m_Flag > 2u) || (m_NUM > 999u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC1_SEG099 = IC_SEG_ON; IC1_SEG065 = IC_SEG_ON; /*百位*/ Num = m_NUM / 100u; m8 = SEG_UNDISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG050 = IC_SEG_ON; } else { IC1_SEG050 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG049 = IC_SEG_ON; } else { IC1_SEG049 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG047 = IC_SEG_ON; } else { IC1_SEG047 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG046 = IC_SEG_ON; } else { IC1_SEG046 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG045 = IC_SEG_ON; } else { IC1_SEG045 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG044 = IC_SEG_ON; } else { IC1_SEG044 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG048 = IC_SEG_ON; } else { IC1_SEG048 = IC_SEG_OFF; } /*十位*/ Num = (m_NUM / 10u) % 10u; if (m_NUM >= 100u) { m8 = SEG_DISPLAY_NUMBER0[Num]; } else { m8 = SEG_UNDISPLAY_NUMBER0[Num]; } if (Bit_Is_Set(m8, 0)) { IC1_SEG057 = IC_SEG_ON; } else { IC1_SEG057 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG056 = IC_SEG_ON; } else { IC1_SEG056 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG054 = IC_SEG_ON; } else { IC1_SEG054 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG053 = IC_SEG_ON; } else { IC1_SEG053 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG052 = IC_SEG_ON; } else { IC1_SEG052 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG051 = IC_SEG_ON; } else { IC1_SEG051 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG055 = IC_SEG_ON; } else { IC1_SEG055 = IC_SEG_OFF; } /*个位*/ Num = m_NUM % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG064 = IC_SEG_ON; } else { IC1_SEG064 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG063 = IC_SEG_ON; } else { IC1_SEG063 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG061 = IC_SEG_ON; } else { IC1_SEG061 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG060 = IC_SEG_ON; } else { IC1_SEG060 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG059 = IC_SEG_ON; } else { IC1_SEG059 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG058 = IC_SEG_ON; } else { IC1_SEG058 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG062 = IC_SEG_ON; } else { IC1_SEG062 = IC_SEG_OFF; } } else if (m_Flag == 2u) { IC1_SEG099 = IC_SEG_ON; IC1_SEG065 = IC_SEG_ON; IC1_SEG044 = IC_SEG_OFF; IC1_SEG045 = IC_SEG_OFF; IC1_SEG046 = IC_SEG_OFF; IC1_SEG047 = IC_SEG_OFF; IC1_SEG048 = IC_SEG_ON; IC1_SEG049 = IC_SEG_OFF; IC1_SEG050 = IC_SEG_OFF; IC1_SEG051 = IC_SEG_OFF; IC1_SEG052 = IC_SEG_OFF; IC1_SEG053 = IC_SEG_OFF; IC1_SEG054 = IC_SEG_OFF; IC1_SEG055 = IC_SEG_ON; IC1_SEG056 = IC_SEG_OFF; IC1_SEG057 = IC_SEG_OFF; IC1_SEG058 = IC_SEG_OFF; IC1_SEG059 = IC_SEG_OFF; IC1_SEG060 = IC_SEG_OFF; IC1_SEG061 = IC_SEG_OFF; IC1_SEG062 = IC_SEG_ON; IC1_SEG063 = IC_SEG_OFF; IC1_SEG064 = IC_SEG_OFF; } else { IC1_SEG099 = IC_SEG_OFF; IC1_SEG065 = IC_SEG_OFF; IC1_SEG044 = IC_SEG_OFF; IC1_SEG045 = IC_SEG_OFF; IC1_SEG046 = IC_SEG_OFF; IC1_SEG047 = IC_SEG_OFF; IC1_SEG048 = IC_SEG_OFF; IC1_SEG049 = IC_SEG_OFF; IC1_SEG050 = IC_SEG_OFF; IC1_SEG051 = IC_SEG_OFF; IC1_SEG052 = IC_SEG_OFF; IC1_SEG053 = IC_SEG_OFF; IC1_SEG054 = IC_SEG_OFF; IC1_SEG055 = IC_SEG_OFF; IC1_SEG056 = IC_SEG_OFF; IC1_SEG057 = IC_SEG_OFF; IC1_SEG058 = IC_SEG_OFF; IC1_SEG059 = IC_SEG_OFF; IC1_SEG060 = IC_SEG_OFF; IC1_SEG061 = IC_SEG_OFF; IC1_SEG062 = IC_SEG_OFF; IC1_SEG063 = IC_SEG_OFF; IC1_SEG064 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief 车速8字段显示函数 * @param[in] m_Flag 车速是否显示 -1 显示 -0 不显示 * @param[in] m_NUM 车速数据 0<=m_NUM<=299 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_VSpeed_NUM(uint8_t m_Flag, uint16_t m_NUM) { _Fun_Res m_Res; uint16_t Num; uint8_t m8; if (m_NUM > 9) { //RTE_GPIO_Set_Level(VSPEED_TEN_OUT, 1); } else { // RTE_GPIO_Set_Level(VSPEED_TEN_OUT, 0); } if (m_NUM > 99) { // RTE_GPIO_Set_Level(VSPEED_HUNDREDS_OUT, 1); } else { // RTE_GPIO_Set_Level(VSPEED_HUNDREDS_OUT, 0); } if ((m_Flag > 2u) || (m_NUM > 299u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { if (ClearODO_Flag == 1) { IC1_SEG059 = IC_SEG_ON; IC1_SEG058 = IC_SEG_ON; //LED_Driver_Channel_Set(LampChannel_0, LampCh0_29_MPH, 100); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_30_KM_H, 100); } else { if (Common_GetIgnOnTime() < 3000) { IC1_SEG059 = IC_SEG_ON; IC1_SEG058 = IC_SEG_ON; //LED_Driver_Channel_Set(LampChannel_0, LampCh0_29_MPH, 100); //LED_Driver_Channel_Set(LampChannel_0, LampCh0_30_KM_H, 100); } else { if ((Get_Dis_KM_Unit() == 1)) { IC1_SEG059 = IC_SEG_OFF; IC1_SEG058 = IC_SEG_ON; //LED_Driver_Channel_Set(LampChannel_0, LampCh0_29_MPH, 100); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_30_KM_H, 0); } else { IC1_SEG059 = IC_SEG_ON; IC1_SEG058 = IC_SEG_OFF; //LED_Driver_Channel_Set(LampChannel_0, LampCh0_29_MPH, 0); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_30_KM_H, 100); } } } /*百位*/ Num = m_NUM / 100u; if (Num == 1u) { IC1_SEG060 = IC_SEG_ON; } else { IC1_SEG060 = IC_SEG_OFF; } /*十位*/ Num = (m_NUM / 10u) % 10u; if (m_NUM >= 100u) { m8 = SEG_DISPLAY_NUMBER0[Num]; } else { m8 = SEG_UNDISPLAY_NUMBER0[Num]; } if (Bit_Is_Set(m8, 0)) { IC1_SEG129 = IC_SEG_ON; } else { IC1_SEG129 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG066 = IC_SEG_ON; } else { IC1_SEG066 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG065 = IC_SEG_ON; } else { IC1_SEG065 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG064 = IC_SEG_ON; } else { IC1_SEG064 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG063 = IC_SEG_ON; } else { IC1_SEG063 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG061 = IC_SEG_ON; } else { IC1_SEG061 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG062 = IC_SEG_ON; } else { IC1_SEG062 = IC_SEG_OFF; } /*个位*/ Num = m_NUM % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG130 = IC_SEG_ON; } else { IC1_SEG130 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG136 = IC_SEG_ON; } else { IC1_SEG136 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG135 = IC_SEG_ON; } else { IC1_SEG135 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG134 = IC_SEG_ON; } else { IC1_SEG134 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG131 = IC_SEG_ON; } else { IC1_SEG131 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG133 = IC_SEG_ON; } else { IC1_SEG133 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG132 = IC_SEG_ON; } else { IC1_SEG132 = IC_SEG_OFF; } } else { IC1_SEG058 = IC_SEG_OFF; IC1_SEG059 = IC_SEG_OFF; IC1_SEG060 = IC_SEG_OFF; IC1_SEG061 = IC_SEG_OFF; IC1_SEG062 = IC_SEG_OFF; IC1_SEG063 = IC_SEG_OFF; IC1_SEG064 = IC_SEG_OFF; IC1_SEG065 = IC_SEG_OFF; IC1_SEG066 = IC_SEG_OFF; IC1_SEG129 = IC_SEG_OFF; IC1_SEG130 = IC_SEG_OFF; IC1_SEG131 = IC_SEG_OFF; IC1_SEG132 = IC_SEG_OFF; IC1_SEG133 = IC_SEG_OFF; IC1_SEG134 = IC_SEG_OFF; IC1_SEG135 = IC_SEG_OFF; IC1_SEG136 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief L8字段显示函数 * @param[in] m_Flag 车速是否显示 -2 L- -1 显示 -0 不显示 * @param[in] m_NUM 车速数据 0<=m_NUM<=9 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_L8_NUM(uint8_t m_Flag, uint8_t m_NUM) { _Fun_Res m_Res; uint8_t Num; uint8_t m8; if ((m_Flag > 2u) || (m_NUM > 9u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC2_SEG051 = IC_SEG_ON; Num = m_NUM; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG058 = IC_SEG_ON; } else { IC2_SEG058 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG057 = IC_SEG_ON; } else { IC2_SEG057 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG055 = IC_SEG_ON; } else { IC2_SEG055 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG054 = IC_SEG_ON; } else { IC2_SEG054 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG053 = IC_SEG_ON; } else { IC2_SEG053 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG052 = IC_SEG_ON; } else { IC2_SEG052 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG056 = IC_SEG_ON; } else { IC2_SEG056 = IC_SEG_OFF; } } else if (m_Flag == 2u) { IC2_SEG051 = IC_SEG_ON; IC2_SEG052 = IC_SEG_OFF; IC2_SEG053 = IC_SEG_OFF; IC2_SEG054 = IC_SEG_OFF; IC2_SEG055 = IC_SEG_OFF; IC2_SEG056 = IC_SEG_ON; IC2_SEG057 = IC_SEG_OFF; IC2_SEG058 = IC_SEG_OFF; } else { IC2_SEG051 = IC_SEG_OFF; IC2_SEG052 = IC_SEG_OFF; IC2_SEG053 = IC_SEG_OFF; IC2_SEG054 = IC_SEG_OFF; IC2_SEG055 = IC_SEG_OFF; IC2_SEG056 = IC_SEG_OFF; IC2_SEG057 = IC_SEG_OFF; IC2_SEG058 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief 总计里程显示函数 * @param[in] m_Flag 是否显示 -1 显示 -0 不显示 * @param[in] m_NUM 显示数值 0 2u) || (m_NUM > 999999u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC2_SEG051 = IC_SEG_ON; IC2_SEG104 = IC_SEG_ON; if (ClearODO_Flag == 0) { if (Common_GetIgnOnTime() < 3000) { IC2_SEG103 = IC_SEG_ON; IC2_SEG105 = IC_SEG_ON; } else { if (Get_Dis_KM_Unit() == 1) { IC2_SEG103 = IC_SEG_OFF; IC2_SEG105 = IC_SEG_ON; } else { IC2_SEG103 = IC_SEG_ON; IC2_SEG105 = IC_SEG_OFF; } } } else { IC2_SEG103 = IC_SEG_ON; IC2_SEG105 = IC_SEG_ON; } /*十万位*/ Num = (m_NUM / 100000u); m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG067 = IC_SEG_ON; } else { IC2_SEG067 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG066 = IC_SEG_ON; } else { IC2_SEG066 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG064 = IC_SEG_ON; } else { IC2_SEG064 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG063 = IC_SEG_ON; } else { IC2_SEG063 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG061 = IC_SEG_ON; } else { IC2_SEG061 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG062 = IC_SEG_ON; } else { IC2_SEG062 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG065 = IC_SEG_ON; } else { IC2_SEG065 = IC_SEG_OFF; } /*万位*/ Num = (m_NUM / 10000u) % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG068 = IC_SEG_ON; } else { IC2_SEG068 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG074 = IC_SEG_ON; } else { IC2_SEG074 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG073 = IC_SEG_ON; } else { IC2_SEG073 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG072 = IC_SEG_ON; } else { IC2_SEG072 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG069 = IC_SEG_ON; } else { IC2_SEG069 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG071 = IC_SEG_ON; } else { IC2_SEG071 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG070 = IC_SEG_ON; } else { IC2_SEG070 = IC_SEG_OFF; } /*千位*/ Num = (m_NUM / 1000u) % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG075 = IC_SEG_ON; } else { IC2_SEG075 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG081 = IC_SEG_ON; } else { IC2_SEG081 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG080 = IC_SEG_ON; } else { IC2_SEG080 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG079 = IC_SEG_ON; } else { IC2_SEG079 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG076 = IC_SEG_ON; } else { IC2_SEG076 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG078 = IC_SEG_ON; } else { IC2_SEG078 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG077 = IC_SEG_ON; } else { IC2_SEG077 = IC_SEG_OFF; } /*百位*/ Num = (m_NUM / 100u) % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG082 = IC_SEG_ON; } else { IC2_SEG082 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG088 = IC_SEG_ON; } else { IC2_SEG088 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG087 = IC_SEG_ON; } else { IC2_SEG087 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG086 = IC_SEG_ON; } else { IC2_SEG086 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG083 = IC_SEG_ON; } else { IC2_SEG083 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG085 = IC_SEG_ON; } else { IC2_SEG085 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG084 = IC_SEG_ON; } else { IC2_SEG084 = IC_SEG_OFF; } /*十位*/ Num = (m_NUM / 10u) % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG089 = IC_SEG_ON; } else { IC2_SEG089 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG095 = IC_SEG_ON; } else { IC2_SEG095 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG094 = IC_SEG_ON; } else { IC2_SEG094 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG093 = IC_SEG_ON; } else { IC2_SEG093 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG090 = IC_SEG_ON; } else { IC2_SEG090 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG092 = IC_SEG_ON; } else { IC2_SEG092 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG091 = IC_SEG_ON; } else { IC2_SEG091 = IC_SEG_OFF; } /*个位*/ Num = m_NUM % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG096 = IC_SEG_ON; } else { IC2_SEG096 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG102 = IC_SEG_ON; } else { IC2_SEG102 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG101 = IC_SEG_ON; } else { IC2_SEG101 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG100 = IC_SEG_ON; } else { IC2_SEG100 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG097 = IC_SEG_ON; } else { IC2_SEG097 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG099 = IC_SEG_ON; } else { IC2_SEG099 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG098 = IC_SEG_ON; } else { IC2_SEG098 = IC_SEG_OFF; } } else { IC2_SEG051 = IC_SEG_OFF; IC2_SEG103 = IC_SEG_OFF; IC2_SEG104 = IC_SEG_OFF; IC2_SEG105 = IC_SEG_OFF; IC2_SEG061 = IC_SEG_OFF; IC2_SEG062 = IC_SEG_OFF; IC2_SEG063 = IC_SEG_OFF; IC2_SEG064 = IC_SEG_OFF; IC2_SEG065 = IC_SEG_OFF; IC2_SEG066 = IC_SEG_OFF; IC2_SEG067 = IC_SEG_OFF; IC2_SEG068 = IC_SEG_OFF; IC2_SEG069 = IC_SEG_OFF; IC2_SEG070 = IC_SEG_OFF; IC2_SEG071 = IC_SEG_OFF; IC2_SEG072 = IC_SEG_OFF; IC2_SEG073 = IC_SEG_OFF; IC2_SEG074 = IC_SEG_OFF; IC2_SEG075 = IC_SEG_OFF; IC2_SEG076 = IC_SEG_OFF; IC2_SEG077 = IC_SEG_OFF; IC2_SEG078 = IC_SEG_OFF; IC2_SEG079 = IC_SEG_OFF; IC2_SEG080 = IC_SEG_OFF; IC2_SEG081 = IC_SEG_OFF; IC2_SEG082 = IC_SEG_OFF; IC2_SEG083 = IC_SEG_OFF; IC2_SEG084 = IC_SEG_OFF; IC2_SEG085 = IC_SEG_OFF; IC2_SEG086 = IC_SEG_OFF; IC2_SEG087 = IC_SEG_OFF; IC2_SEG088 = IC_SEG_OFF; IC2_SEG089 = IC_SEG_OFF; IC2_SEG090 = IC_SEG_OFF; IC2_SEG091 = IC_SEG_OFF; IC2_SEG092 = IC_SEG_OFF; IC2_SEG093 = IC_SEG_OFF; IC2_SEG094 = IC_SEG_OFF; IC2_SEG095 = IC_SEG_OFF; IC2_SEG096 = IC_SEG_OFF; IC2_SEG097 = IC_SEG_OFF; IC2_SEG098 = IC_SEG_OFF; IC2_SEG099 = IC_SEG_OFF; IC2_SEG100 = IC_SEG_OFF; IC2_SEG101 = IC_SEG_OFF; IC2_SEG102 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief 小计里程显示函数 * @param[in] m_Flag 是否显示 -1 显示 -0 不显示 * @param[in] m_NUM 显示数值 0 3u) || (m_NUM > 9999u)) { m_Res = EX_ERR; } else { if (m_Flag == 1u) { IC1_SEG074 = IC_SEG_ON; IC1_SEG115 = IC_SEG_ON; IC1_SEG101 = IC_SEG_ON; if (ClearODO_Flag == 0) { if (Common_GetIgnOnTime() < 3000) { IC1_SEG114 = IC_SEG_ON; IC1_SEG116 = IC_SEG_ON; } else { if (Get_Dis_KM_Unit() == 1) { IC1_SEG114 = IC_SEG_OFF; IC1_SEG116 = IC_SEG_ON; } else { IC1_SEG114 = IC_SEG_ON; IC1_SEG116 = IC_SEG_OFF; } } } else { IC1_SEG114 = IC_SEG_ON; IC1_SEG116 = IC_SEG_ON; } /*千位*/ Num = (m_NUM / 1000u) % 10u; if (ClearODO_Flag == 1) { m8 = SEG_DISPLAY_NUMBER0[Num]; } else { m8 = SEG_UNDISPLAY_NUMBER0[Num]; } if (Bit_Is_Set(m8, 0)) { IC1_SEG082 = IC_SEG_ON; } else { IC1_SEG082 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG088 = IC_SEG_ON; } else { IC1_SEG088 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG086 = IC_SEG_ON; } else { IC1_SEG086 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG085 = IC_SEG_ON; } else { IC1_SEG085 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG083 = IC_SEG_ON; } else { IC1_SEG083 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG084 = IC_SEG_ON; } else { IC1_SEG084 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG087 = IC_SEG_ON; } else { IC1_SEG087 = IC_SEG_OFF; } /*百位*/ Num = (m_NUM / 100u) % 10u; if (ClearODO_Flag == 1) { m8 = SEG_DISPLAY_NUMBER0[Num]; } else { if (m_NUM > 999u) { m8 = SEG_DISPLAY_NUMBER0[Num]; } else { m8 = SEG_UNDISPLAY_NUMBER0[Num]; } } if (Bit_Is_Set(m8, 0)) { IC1_SEG095 = IC_SEG_ON; } else { IC1_SEG095 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG094 = IC_SEG_ON; } else { IC1_SEG094 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG093 = IC_SEG_ON; } else { IC1_SEG093 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG092 = IC_SEG_ON; } else { IC1_SEG092 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG089 = IC_SEG_ON; } else { IC1_SEG089 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG091 = IC_SEG_ON; } else { IC1_SEG091 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG090 = IC_SEG_ON; } else { IC1_SEG090 = IC_SEG_OFF; } /*十位*/ Num = (m_NUM / 10u) % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG096 = IC_SEG_ON; } else { IC1_SEG096 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG110 = IC_SEG_ON; } else { IC1_SEG110 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG100 = IC_SEG_ON; } else { IC1_SEG100 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG099 = IC_SEG_ON; } else { IC1_SEG099 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG097 = IC_SEG_ON; } else { IC1_SEG097 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG098 = IC_SEG_ON; } else { IC1_SEG098 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG109 = IC_SEG_ON; } else { IC1_SEG109 = IC_SEG_OFF; } /*个位*/ Num = m_NUM % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC1_SEG106 = IC_SEG_ON; } else { IC1_SEG106 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC1_SEG105 = IC_SEG_ON; } else { IC1_SEG105 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC1_SEG104 = IC_SEG_ON; } else { IC1_SEG104 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC1_SEG103 = IC_SEG_ON; } else { IC1_SEG103 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC1_SEG107 = IC_SEG_ON; } else { IC1_SEG107 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC1_SEG102 = IC_SEG_ON; } else { IC1_SEG102 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC1_SEG108 = IC_SEG_ON; } else { IC1_SEG108 = IC_SEG_OFF; } } else { IC1_SEG074 = IC_SEG_OFF; IC1_SEG114 = IC_SEG_OFF; IC1_SEG115 = IC_SEG_OFF; IC1_SEG116 = IC_SEG_OFF; IC1_SEG101 = IC_SEG_OFF; IC1_SEG082 = IC_SEG_OFF; IC1_SEG083 = IC_SEG_OFF; IC1_SEG084 = IC_SEG_OFF; IC1_SEG085 = IC_SEG_OFF; IC1_SEG086 = IC_SEG_OFF; IC1_SEG087 = IC_SEG_OFF; IC1_SEG088 = IC_SEG_OFF; IC1_SEG089 = IC_SEG_OFF; IC1_SEG090 = IC_SEG_OFF; IC1_SEG091 = IC_SEG_OFF; IC1_SEG092 = IC_SEG_OFF; IC1_SEG093 = IC_SEG_OFF; IC1_SEG094 = IC_SEG_OFF; IC1_SEG095 = IC_SEG_OFF; IC1_SEG096 = IC_SEG_OFF; IC1_SEG097 = IC_SEG_OFF; IC1_SEG098 = IC_SEG_OFF; IC1_SEG099 = IC_SEG_OFF; IC1_SEG100 = IC_SEG_OFF; IC1_SEG102 = IC_SEG_OFF; IC1_SEG103 = IC_SEG_OFF; IC1_SEG104 = IC_SEG_OFF; IC1_SEG105 = IC_SEG_OFF; IC1_SEG106 = IC_SEG_OFF; IC1_SEG107 = IC_SEG_OFF; IC1_SEG108 = IC_SEG_OFF; IC1_SEG109 = IC_SEG_OFF; IC1_SEG110 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } /**@brief 时间显示函数 * @param[in] m_hour 小时 * @param[in] m_minute 分钟 * @param[in] m_icon 中间冒号是否显示 -1 显示 -0 不显示 * @param[in] m_Flag1 小时是否显示 -1 显示 -0 不显示 * @param[in] m_Flag2 分钟是否显示 -1 显示 -0 不显示 * @return 函数执行结果 * - EX_OK 上报成功 * - EX_ERR 上报失败 */ _Fun_Res SEG_SET_Clock(uint8_t m_hour, uint8_t m_minute, uint8_t m_icon, uint8_t m_Flag1, uint8_t m_Flag2) { _Fun_Res m_Res; uint8_t Num; uint8_t m8; if ((m_hour > 99u) || (m_minute > 99u) || (m_icon > 1u) || (m_Flag1 > 1u) || (m_Flag2 > 1u)) { m_Res = EX_ERR; } else { if (m_icon == 1u) { IC2_SEG042 = IC_SEG_ON; } else { IC2_SEG042 = IC_SEG_OFF; } if (m_Flag1 == 1u) { Num = m_hour / 10u; /*86104-11*/ m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG119 = IC_SEG_ON; } else { IC2_SEG119 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG118 = IC_SEG_ON; } else { IC2_SEG118 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG123 = IC_SEG_ON; } else { IC2_SEG123 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG122 = IC_SEG_ON; } else { IC2_SEG122 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG120 = IC_SEG_ON; } else { IC2_SEG120 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG121 = IC_SEG_ON; } else { IC2_SEG121 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG117 = IC_SEG_ON; } else { IC2_SEG117 = IC_SEG_OFF; } Num = m_hour % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG046 = IC_SEG_ON; } else { IC2_SEG046 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG045 = IC_SEG_ON; } else { IC2_SEG045 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG043 = IC_SEG_ON; } else { IC2_SEG043 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG125 = IC_SEG_ON; } else { IC2_SEG125 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG047 = IC_SEG_ON; } else { IC2_SEG047 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG124 = IC_SEG_ON; } else { IC2_SEG124 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG044 = IC_SEG_ON; } else { IC2_SEG044 = IC_SEG_OFF; } } else { IC2_SEG119 = IC_SEG_OFF; IC2_SEG118 = IC_SEG_OFF; IC2_SEG123 = IC_SEG_OFF; IC2_SEG122 = IC_SEG_OFF; IC2_SEG121 = IC_SEG_OFF; IC2_SEG120 = IC_SEG_OFF; IC2_SEG117 = IC_SEG_OFF; IC2_SEG046 = IC_SEG_OFF; IC2_SEG045 = IC_SEG_OFF; IC2_SEG044 = IC_SEG_OFF; IC2_SEG043 = IC_SEG_OFF; IC2_SEG047 = IC_SEG_OFF; IC2_SEG124 = IC_SEG_OFF; IC2_SEG125 = IC_SEG_OFF; } if (m_Flag2 == 1u) { Num = m_minute / 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG040 = IC_SEG_ON; } else { IC2_SEG040 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG039 = IC_SEG_ON; } else { IC2_SEG039 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG129 = IC_SEG_ON; } else { IC2_SEG129 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG127 = IC_SEG_ON; } else { IC2_SEG127 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG041 = IC_SEG_ON; } else { IC2_SEG041 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG126 = IC_SEG_ON; } else { IC2_SEG126 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG130 = IC_SEG_ON; } else { IC2_SEG130 = IC_SEG_OFF; } Num = m_minute % 10u; m8 = SEG_DISPLAY_NUMBER0[Num]; if (Bit_Is_Set(m8, 0)) { IC2_SEG037 = IC_SEG_ON; } else { IC2_SEG037 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 1)) { IC2_SEG036 = IC_SEG_ON; } else { IC2_SEG036 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 2)) { IC2_SEG035 = IC_SEG_ON; } else { IC2_SEG035 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 3)) { IC2_SEG133 = IC_SEG_ON; } else { IC2_SEG133 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 5)) { IC2_SEG038 = IC_SEG_ON; } else { IC2_SEG038 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 4)) { IC2_SEG132 = IC_SEG_ON; } else { IC2_SEG132 = IC_SEG_OFF; } if (Bit_Is_Set(m8, 6)) { IC2_SEG131 = IC_SEG_ON; } else { IC2_SEG131 = IC_SEG_OFF; } } else { IC2_SEG040 = IC_SEG_OFF; IC2_SEG039 = IC_SEG_OFF; IC2_SEG129 = IC_SEG_OFF; IC2_SEG127 = IC_SEG_OFF; IC2_SEG041 = IC_SEG_OFF; IC2_SEG126 = IC_SEG_OFF; IC2_SEG130 = IC_SEG_OFF; IC2_SEG037 = IC_SEG_OFF; IC2_SEG036 = IC_SEG_OFF; IC2_SEG035 = IC_SEG_OFF; IC2_SEG133 = IC_SEG_OFF; IC2_SEG038 = IC_SEG_OFF; IC2_SEG132 = IC_SEG_OFF; IC2_SEG131 = IC_SEG_OFF; } m_Res = EX_OK; } return m_Res; } uint8_t fuel_check_SEG_step = 0; void SEG_Scan_SET_FuelDial(void) { uint8_t a = 0; a = fuel_check_SEG_step / 10u; SEG_SET_FuelDial(1, a); if (fuel_check_SEG_step < 59) { fuel_check_SEG_step++; } else { fuel_check_SEG_step = 0; } } uint8_t Espeed_check_SEG_step = 0; void SEG_Scan_SET_EspeedDial(void) { uint16_t a = 0; a = (Espeed_check_SEG_step / 2) * 100; SEG_SET_EspeedDial(1, a / 1000, a); } uint8_t check_SEG_step = 0; /*仪表段码扫描函数*/ void Check_SEG_Display(void) { uint32_t a; a = check_SEG_step / 25u; SEG_SET_TRIP_NUM(1u, ((a * 1000u) + (a * 100u) + (a * 10u) + a)); SEG_SET_ODO_NUM(1u, ((a * 100000u) + (a * 10000u) + (a * 1000u) + (a * 100u) + (a * 10u) + a)); SEG_SET_VSpeed_NUM(1u, (100u + (a * 10u) + a)); SEG_SET_Clock(((a * 10u) + a), ((a * 10u) + a), 1u, 1u, 1u); SEG_SET_LED_STS(0, 1); SEG_SET_LED_STS(1, 1); SEG_SET_LED_STS(2, 1); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_07_Key_ISTOP, LED_ON); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_02_Normal_Voltage, LED_ON); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_03_High_Low_Voltage, LED_ON); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Fuel_Y, LED_ON); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_04_Fuel_W, LED_ON); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Screen_Time, LED_ON); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_29_MPH, LED_ON); // LED_Driver_Channel_Set(LampChannel_0, LampCh0_30_KM_H, LED_ON); // RTE_GPIO_Set_Level(VSPEED_TEN_OUT, 1); // RTE_GPIO_Set_Level(VSPEED_HUNDREDS_OUT, 1); SEG_Scan_SET_FuelDial(); SEG_Scan_SET_EspeedDial(); } uint8_t Checkself_SEG_step = 0; uint8_t Checkself_SEG_step_count = 0; void Checkself_Init(void) { Checkself_SEG_step = 0; Checkself_SEG_step_count = 0; check_SEG_step = 0; Espeed_check_SEG_step = 0; fuel_check_SEG_step = 0; } void Checkself_SEG_Display(void) { uint16_t Vspeed = 0; uint16_t Espeed = 0; uint16_t Fuel = 0; uint16_t Trip = 0; uint16_t hour = 0; uint16_t min = 0; uint32_t ODO = 0; Fuel = Checkself_SEG_step / 5u; SEG_SET_FuelDial(1, Fuel); Espeed = (Checkself_SEG_step * 2 / 5) * 1000; SEG_SET_EspeedDial(1, Espeed / 1000, Espeed); Vspeed = Checkself_SEG_step * 7; if (Vspeed > 198) { Vspeed = 198; } SEG_SET_VSpeed_NUM(1, Vspeed); Trip = (Checkself_SEG_step / 3) * 1111; SEG_SET_TRIP_NUM(1, Trip); ODO = (Checkself_SEG_step / 3) * 111111; SEG_SET_ODO_NUM(1, ODO); hour = (Checkself_SEG_step / 3) * 11; min = (Checkself_SEG_step / 3) * 11; SEG_SET_Clock(hour, min, 1, 1, 1); if (Checkself_SEG_step_count < 60) { Checkself_SEG_step_count++; } else { Checkself_SEG_step_count = 60; } if (Checkself_SEG_step_count < 30) { Checkself_SEG_step++; } else { if (Checkself_SEG_step == 0) { Checkself_SEG_step = 0; } else { Checkself_SEG_step--; } } } void TYW_Check_Count(void) { if ((ClearODO_Flag == 1)&&( Common_Get_IG_Sts( ) == COMMON_POWER_ON )) { if (check_SEG_step < 249u) { check_SEG_step++; } else { check_SEG_step = 0u; } if (Espeed_check_SEG_step < 239) { Espeed_check_SEG_step++; } else { Espeed_check_SEG_step = 0; } } }