Commit f83c27e1 authored by zhengyuan.bai's avatar zhengyuan.bai

feat: 故障码支持显示16进制数

parent dcb6b00a
...@@ -148,8 +148,8 @@ void Gauge_flue_Display(void) ...@@ -148,8 +148,8 @@ void Gauge_flue_Display(void)
void Gauge_faultcode_Display(void) void Gauge_faultcode_Display(void)
{ {
uint8_t u8faucodeValid = Get_FaultCode_Valid(); uint8_t u8faucodeValid = Get_FaultCode_Valid();
uint8_t u8faucodelValue = Get_FaultCode_Value(); uint16_t u16faucodelValue = Get_FaultCode_Value();
SEG_SET_Fault_Code(u8faucodeValid, u8faucodelValue, 0); SEG_SET_Fault_Code(u8faucodeValid, u16faucodelValue, 0);
} }
void Clear_Bu98(void) void Clear_Bu98(void)
......
...@@ -7,8 +7,8 @@ ...@@ -7,8 +7,8 @@
#define Bit_Is_Set(p, b) ((p) & (1u << (b))) #define Bit_Is_Set(p, b) ((p) & (1u << (b)))
#define Bit_Is_Clr(p, b) (!((p) & (1u << (b)))) #define Bit_Is_Clr(p, b) (!((p) & (1u << (b))))
/*数字显示数组*/ /*0, 1 2 3 4 5 6 7 8 9 null - P A b C d E F*/ /*数字显示数组*/ /*0, 1 2 3 4 5 6 7 8 9 A b C d E F*/
const uint8_t SEG_DISPLAY_NUMBER0[] = {0x3Fu, 0x06u, 0x5Bu, 0x4Fu, 0x66u, 0x6Du, 0x7Du, 0x07u, 0x7Fu, 0x6Fu, 0x00, 0x40, 0x73, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; const uint8_t SEG_DISPLAY_NUMBER0[] = {0x3Fu, 0x06u, 0x5Bu, 0x4Fu, 0x66u, 0x6Du, 0x7Du, 0x07u, 0x7Fu, 0x6Fu, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71};
const uint8_t SEG_UNDISPLAY_NUMBER0[] = {0x00u, 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};
uint8_t SOC_charge_seg_Flag = 0; uint8_t SOC_charge_seg_Flag = 0;
uint8_t checkself_seg_Flag = 0; uint8_t checkself_seg_Flag = 0;
...@@ -1014,6 +1014,7 @@ _Fun_Res SEG_SET_EleDial_AllSOC(uint8_t m_Flag, uint16_t m_NUM) ...@@ -1014,6 +1014,7 @@ _Fun_Res SEG_SET_EleDial_AllSOC(uint8_t m_Flag, uint16_t m_NUM)
/**@brief 故障码显示 /**@brief 故障码显示
* @param[in] m_Flag 故障码是否显示 -1 显示 -0 不显示 * @param[in] m_Flag 故障码是否显示 -1 显示 -0 不显示
* @param[in] m_NUM 故障码数据 0<=m_NUM<=299 * @param[in] m_NUM 故障码数据 0<=m_NUM<=299
* @param[in] checkself 是否自检 0<=m_NUM<=299
* @return 函数执行结果 * @return 函数执行结果
* - EX_OK 上报成功 * - EX_OK 上报成功
* - EX_ERR 上报失败 * - EX_ERR 上报失败
...@@ -1021,9 +1022,11 @@ _Fun_Res SEG_SET_EleDial_AllSOC(uint8_t m_Flag, uint16_t m_NUM) ...@@ -1021,9 +1022,11 @@ _Fun_Res SEG_SET_EleDial_AllSOC(uint8_t m_Flag, uint16_t m_NUM)
_Fun_Res SEG_SET_Fault_Code(uint8_t m_Flag, uint16_t m_NUM, uint8_t checkself) _Fun_Res SEG_SET_Fault_Code(uint8_t m_Flag, uint16_t m_NUM, uint8_t checkself)
{ {
_Fun_Res m_Res; _Fun_Res m_Res;
uint16_t Num;
uint8_t m8; uint8_t m8;
if ((m_Flag > 3u) || (m_NUM > 9999u)) uint8_t high, mid, low;
uint16_t Num;
if ((m_Flag > 3u) || (m_NUM > 0xFFFFu))
{ {
m_Res = EX_ERR; m_Res = EX_ERR;
} }
...@@ -1031,293 +1034,333 @@ _Fun_Res SEG_SET_Fault_Code(uint8_t m_Flag, uint16_t m_NUM, uint8_t checkself) ...@@ -1031,293 +1034,333 @@ _Fun_Res SEG_SET_Fault_Code(uint8_t m_Flag, uint16_t m_NUM, uint8_t checkself)
{ {
if (m_Flag == 1u) if (m_Flag == 1u)
{ {
if(checkself != 1) if (checkself == 1)
{ {
if (FLASH_SYNC_1Hz) IC1_SEG087 = IC_SEG_ON;
/*千位*/
Num = (m_NUM / 1000u) % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{ {
IC1_SEG087 = IC_SEG_ON; IC1_SEG094 = IC_SEG_ON;
} }
else else
{ {
IC1_SEG087 = IC_SEG_GREY; IC1_SEG094 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG093 = IC_SEG_ON;
}
else
{
IC1_SEG093 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG091 = IC_SEG_ON;
}
else
{
IC1_SEG091 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG090 = IC_SEG_ON;
}
else
{
IC1_SEG090 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG088 = IC_SEG_ON;
}
else
{
IC1_SEG088 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG089 = IC_SEG_ON;
}
else
{
IC1_SEG089 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG092 = IC_SEG_ON;
}
else
{
IC1_SEG092 = IC_SEG_OFF;
}
/*百位*/
Num = (m_NUM / 100u) % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{
IC1_SEG101 = IC_SEG_ON;
}
else
{
IC1_SEG101 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG100 = IC_SEG_ON;
}
else
{
IC1_SEG100 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG098 = IC_SEG_ON;
}
else
{
IC1_SEG098 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG097 = IC_SEG_ON;
}
else
{
IC1_SEG097 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG095 = IC_SEG_ON;
}
else
{
IC1_SEG095 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG096 = IC_SEG_ON;
}
else
{
IC1_SEG096 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG099 = IC_SEG_ON;
}
else
{
IC1_SEG099 = IC_SEG_OFF;
}
/*十位*/
Num = (m_NUM / 10u) % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{
IC1_SEG108 = IC_SEG_ON;
}
else
{
IC1_SEG108 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG107 = IC_SEG_ON;
}
else
{
IC1_SEG107 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG105 = IC_SEG_ON;
}
else
{
IC1_SEG105 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG104 = IC_SEG_ON;
}
else
{
IC1_SEG104 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG102 = IC_SEG_ON;
}
else
{
IC1_SEG102 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG103 = IC_SEG_ON;
}
else
{
IC1_SEG103 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG106 = IC_SEG_ON;
}
else
{
IC1_SEG106 = IC_SEG_OFF;
}
/*个位*/
Num = m_NUM % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{
IC1_SEG115 = IC_SEG_ON;
}
else
{
IC1_SEG115 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG114 = IC_SEG_ON;
}
else
{
IC1_SEG114 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG113 = IC_SEG_ON;
}
else
{
IC1_SEG113 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG112 = IC_SEG_ON;
}
else
{
IC1_SEG112 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG109 = IC_SEG_ON;
}
else
{
IC1_SEG109 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG111 = IC_SEG_ON;
}
else
{
IC1_SEG111 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG110 = IC_SEG_ON;
}
else
{
IC1_SEG110 = IC_SEG_OFF;
} }
} }
else else
{ {
IC1_SEG087 = IC_SEG_ON; if (FLASH_SYNC_1Hz)
} {
IC1_SEG087 = IC_SEG_ON;
IC1_SEG094 = IC_SEG_ON; }
IC1_SEG093 = IC_SEG_ON; else
IC1_SEG091 = IC_SEG_ON; {
IC1_SEG090 = IC_SEG_ON; IC1_SEG087 = IC_SEG_GREY;
IC1_SEG089 = IC_SEG_ON; }
IC1_SEG088 = IC_SEG_ON;
IC1_SEG092 = IC_SEG_ON;
IC1_SEG101 = IC_SEG_ON;
IC1_SEG100 = IC_SEG_ON;
IC1_SEG098 = IC_SEG_ON;
IC1_SEG097 = IC_SEG_ON;
IC1_SEG096 = IC_SEG_ON;
IC1_SEG095 = IC_SEG_ON;
IC1_SEG099 = IC_SEG_ON;
IC1_SEG108 = IC_SEG_ON;
IC1_SEG107 = IC_SEG_ON;
IC1_SEG105 = IC_SEG_ON;
IC1_SEG104 = IC_SEG_ON;
IC1_SEG103 = IC_SEG_ON;
IC1_SEG102 = IC_SEG_ON;
IC1_SEG106 = IC_SEG_ON;
IC1_SEG115 = IC_SEG_ON;
IC1_SEG114 = IC_SEG_ON;
IC1_SEG113 = IC_SEG_ON;
IC1_SEG112 = IC_SEG_ON;
IC1_SEG111 = IC_SEG_ON;
IC1_SEG109 = IC_SEG_ON;
IC1_SEG110 = IC_SEG_ON;
/*千位*/
Num = (m_NUM / 1000u) % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{
IC1_SEG094 = IC_SEG_ON; IC1_SEG094 = IC_SEG_ON;
}
else
{
IC1_SEG094 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG093 = IC_SEG_ON; IC1_SEG093 = IC_SEG_ON;
}
else
{
IC1_SEG093 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG091 = IC_SEG_ON; IC1_SEG091 = IC_SEG_ON;
}
else
{
IC1_SEG091 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG090 = IC_SEG_ON; IC1_SEG090 = IC_SEG_ON;
}
else
{
IC1_SEG090 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG088 = IC_SEG_ON;
}
else
{
IC1_SEG088 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG089 = IC_SEG_ON; IC1_SEG089 = IC_SEG_ON;
} IC1_SEG088 = IC_SEG_ON;
else
{
IC1_SEG089 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG092 = IC_SEG_ON; IC1_SEG092 = IC_SEG_ON;
}
else
{
IC1_SEG092 = IC_SEG_OFF;
}
/*百位*/
Num = (m_NUM / 100u) % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{
IC1_SEG101 = IC_SEG_ON; IC1_SEG101 = IC_SEG_ON;
}
else
{
IC1_SEG101 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG100 = IC_SEG_ON; IC1_SEG100 = IC_SEG_ON;
}
else
{
IC1_SEG100 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG098 = IC_SEG_ON; IC1_SEG098 = IC_SEG_ON;
}
else
{
IC1_SEG098 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG097 = IC_SEG_ON; IC1_SEG097 = IC_SEG_ON;
}
else
{
IC1_SEG097 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG095 = IC_SEG_ON;
}
else
{
IC1_SEG095 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG096 = IC_SEG_ON; IC1_SEG096 = IC_SEG_ON;
} IC1_SEG095 = IC_SEG_ON;
else
{
IC1_SEG096 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG099 = IC_SEG_ON; IC1_SEG099 = IC_SEG_ON;
}
else
{
IC1_SEG099 = IC_SEG_OFF;
}
/*十位*/
Num = (m_NUM / 10u) % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{
IC1_SEG108 = IC_SEG_ON; IC1_SEG108 = IC_SEG_ON;
}
else
{
IC1_SEG108 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG107 = IC_SEG_ON; IC1_SEG107 = IC_SEG_ON;
}
else
{
IC1_SEG107 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG105 = IC_SEG_ON; IC1_SEG105 = IC_SEG_ON;
}
else
{
IC1_SEG105 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG104 = IC_SEG_ON; IC1_SEG104 = IC_SEG_ON;
}
else
{
IC1_SEG104 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG102 = IC_SEG_ON;
}
else
{
IC1_SEG102 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG103 = IC_SEG_ON; IC1_SEG103 = IC_SEG_ON;
} IC1_SEG102 = IC_SEG_ON;
else
{
IC1_SEG103 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG106 = IC_SEG_ON; IC1_SEG106 = IC_SEG_ON;
}
else
{
IC1_SEG106 = IC_SEG_OFF;
}
/*个位*/
Num = m_NUM % 10u;
m8 = SEG_DISPLAY_NUMBER0[Num];
if (Bit_Is_Set(m8, 0))
{
IC1_SEG115 = IC_SEG_ON; IC1_SEG115 = IC_SEG_ON;
}
else
{
IC1_SEG115 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 1))
{
IC1_SEG114 = IC_SEG_ON; IC1_SEG114 = IC_SEG_ON;
}
else
{
IC1_SEG114 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 2))
{
IC1_SEG113 = IC_SEG_ON; IC1_SEG113 = IC_SEG_ON;
}
else
{
IC1_SEG113 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 3))
{
IC1_SEG112 = IC_SEG_ON; IC1_SEG112 = IC_SEG_ON;
}
else
{
IC1_SEG112 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 5))
{
IC1_SEG109 = IC_SEG_ON;
}
else
{
IC1_SEG109 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 4))
{
IC1_SEG111 = IC_SEG_ON; IC1_SEG111 = IC_SEG_ON;
} IC1_SEG109 = IC_SEG_ON;
else
{
IC1_SEG111 = IC_SEG_OFF;
}
if (Bit_Is_Set(m8, 6))
{
IC1_SEG110 = IC_SEG_ON; IC1_SEG110 = IC_SEG_ON;
}
else high = (m_NUM >> 12) & 0x0F; // 高
{ mid = (m_NUM >> 8) & 0x0F; // 次高
IC1_SEG110 = IC_SEG_OFF; low = (m_NUM >> 4) & 0x0F; // 次低
uint8_t lowest = m_NUM & 0x0F; // 低
m8 = SEG_DISPLAY_NUMBER0[high];
IC1_SEG094 = Bit_Is_Set(m8, 0) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG093 = Bit_Is_Set(m8, 1) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG091 = Bit_Is_Set(m8, 2) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG090 = Bit_Is_Set(m8, 3) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG089 = Bit_Is_Set(m8, 4) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG088 = Bit_Is_Set(m8, 5) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG092 = Bit_Is_Set(m8, 6) ? IC_SEG_ON : IC_SEG_OFF;
m8 = SEG_DISPLAY_NUMBER0[mid];
IC1_SEG101 = Bit_Is_Set(m8, 0) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG100 = Bit_Is_Set(m8, 1) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG098 = Bit_Is_Set(m8, 2) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG097 = Bit_Is_Set(m8, 3) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG096 = Bit_Is_Set(m8, 4) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG095 = Bit_Is_Set(m8, 5) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG099 = Bit_Is_Set(m8, 6) ? IC_SEG_ON : IC_SEG_OFF;
m8 = SEG_DISPLAY_NUMBER0[low];
IC1_SEG108 = Bit_Is_Set(m8, 0) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG107 = Bit_Is_Set(m8, 1) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG105 = Bit_Is_Set(m8, 2) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG104 = Bit_Is_Set(m8, 3) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG103 = Bit_Is_Set(m8, 4) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG102 = Bit_Is_Set(m8, 5) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG106 = Bit_Is_Set(m8, 6) ? IC_SEG_ON : IC_SEG_OFF;
// 显示低位
m8 = SEG_DISPLAY_NUMBER0[lowest];
IC1_SEG115 = Bit_Is_Set(m8, 0) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG114 = Bit_Is_Set(m8, 1) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG113 = Bit_Is_Set(m8, 2) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG112 = Bit_Is_Set(m8, 3) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG111 = Bit_Is_Set(m8, 4) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG109 = Bit_Is_Set(m8, 5) ? IC_SEG_ON : IC_SEG_OFF;
IC1_SEG110 = Bit_Is_Set(m8, 6) ? IC_SEG_ON : IC_SEG_OFF;
} }
} }
else else
{ {
IC1_SEG074 = IC_SEG_OFF; IC1_SEG074 = IC_SEG_OFF;
IC1_SEG114 = IC_SEG_OFF; IC1_SEG114 = IC_SEG_OFF;
IC1_SEG115 = IC_SEG_OFF; IC1_SEG115 = IC_SEG_OFF;
...@@ -1328,7 +1371,6 @@ _Fun_Res SEG_SET_Fault_Code(uint8_t m_Flag, uint16_t m_NUM, uint8_t checkself) ...@@ -1328,7 +1371,6 @@ _Fun_Res SEG_SET_Fault_Code(uint8_t m_Flag, uint16_t m_NUM, uint8_t checkself)
IC1_SEG083 = IC_SEG_OFF; IC1_SEG083 = IC_SEG_OFF;
IC1_SEG084 = IC_SEG_OFF; IC1_SEG084 = IC_SEG_OFF;
IC1_SEG085 = IC_SEG_OFF; IC1_SEG085 = IC_SEG_OFF;
// IC1_SEG086 = IC_SEG_OFF;
IC1_SEG087 = IC_SEG_OFF; IC1_SEG087 = IC_SEG_OFF;
IC1_SEG088 = IC_SEG_OFF; IC1_SEG088 = IC_SEG_OFF;
IC1_SEG089 = IC_SEG_OFF; IC1_SEG089 = IC_SEG_OFF;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment