交给吴工的第二版显示程序
1.将浓度显示部分新增了断码表显示 2.去除了中间88的显示
This commit is contained in:
parent
2251469662
commit
5429711e5f
@ -230,7 +230,7 @@ static const PanelDisplayInfo panel_display_default =
|
|||||||
|
|
||||||
.total_time =
|
.total_time =
|
||||||
{
|
{
|
||||||
.time_mode = MODE_TOTAL_TIME,
|
.time_mode = MODE_TIME_TOTAL_TIME,
|
||||||
.hours = 88888,
|
.hours = 88888,
|
||||||
.first8_segtable_index = 10,
|
.first8_segtable_index = 10,
|
||||||
.second8_segtable_index = 10,
|
.second8_segtable_index = 10,
|
||||||
@ -240,14 +240,6 @@ static const PanelDisplayInfo panel_display_default =
|
|||||||
.is_light = LIGHT_ON
|
.is_light = LIGHT_ON
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
.error =
|
|
||||||
{
|
|
||||||
.first8_segtable_index = 8,
|
|
||||||
.second8_segtable_index = 8,
|
|
||||||
.is_light = LIGHT_ON
|
|
||||||
},
|
|
||||||
|
|
||||||
.oxg =
|
.oxg =
|
||||||
{
|
{
|
||||||
.value = 888,
|
.value = 888,
|
||||||
@ -414,7 +406,7 @@ void user_display_refresh(void)
|
|||||||
if(panel_display_info.total_time.is_light == LIGHT_ON)
|
if(panel_display_info.total_time.is_light == LIGHT_ON)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(panel_display_info.total_time.time_mode == MODE_TOTAL_TIME)
|
if(panel_display_info.total_time.time_mode == MODE_TIME_TOTAL_TIME)
|
||||||
{
|
{
|
||||||
// 永远只取前五位 不用防止溢出
|
// 永远只取前五位 不用防止溢出
|
||||||
total_time_unit = panel_display_info.total_time.hours % 10;
|
total_time_unit = panel_display_info.total_time.hours % 10;
|
||||||
@ -440,7 +432,7 @@ void user_display_refresh(void)
|
|||||||
|
|
||||||
display_buffer[TOTAL_TIME_H2_ARRAY_INDEX] |= ADDITION_SEG_POS;
|
display_buffer[TOTAL_TIME_H2_ARRAY_INDEX] |= ADDITION_SEG_POS;
|
||||||
|
|
||||||
}else if(panel_display_info.total_time.time_mode == MODE_INDEX)
|
}else if(panel_display_info.total_time.time_mode == MODE_TIME_INDEX)
|
||||||
{
|
{
|
||||||
// 中间累时部分按照索引显示
|
// 中间累时部分按照索引显示
|
||||||
display_buffer[TIME_FIRST8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.total_time.first8_segtable_index]&0x0F)<<4;
|
display_buffer[TIME_FIRST8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.total_time.first8_segtable_index]&0x0F)<<4;
|
||||||
@ -463,46 +455,50 @@ void user_display_refresh(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 故障码显示
|
|
||||||
if(panel_display_info.error.is_light == LIGHT_ON)
|
|
||||||
{
|
|
||||||
// 防止超出断码表范围
|
|
||||||
panel_display_info.error.first8_segtable_index = panel_display_info.error.first8_segtable_index >= SEG_TABLE_SIZE?\
|
|
||||||
(SEG_TABLE_SIZE-1):panel_display_info.error.first8_segtable_index;
|
|
||||||
|
|
||||||
panel_display_info.error.second8_segtable_index = panel_display_info.error.second8_segtable_index >= SEG_TABLE_SIZE?\
|
|
||||||
(SEG_TABLE_SIZE-1):panel_display_info.error.second8_segtable_index;
|
|
||||||
|
|
||||||
display_buffer[ERROR_FIRT8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.error.first8_segtable_index]&0x0F);
|
|
||||||
display_buffer[ERROR_FIRT8_BGC_SEG_NUM/2] |= (SEG_TAB[panel_display_info.error.first8_segtable_index]&0xF0);
|
|
||||||
|
|
||||||
display_buffer[ERROR_SECOND8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.error.second8_segtable_index]&0x0F);
|
|
||||||
display_buffer[ERROR_SECOND8_BGC_SEG_NUM/2] |= (SEG_TAB[panel_display_info.error.second8_segtable_index]&0xF0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// 氧浓度显示
|
// 氧浓度显示
|
||||||
if(panel_display_info.oxg.is_light == LIGHT_ON)
|
if(panel_display_info.oxg.is_light == LIGHT_ON)
|
||||||
{
|
{
|
||||||
|
if(panel_display_info.oxg.oxg_mode == MODE_OXG_VALUE)
|
||||||
oxg_decimal = panel_display_info.oxg.value % 10;
|
{
|
||||||
oxg_unit = (panel_display_info.oxg.value / 10) % 10;
|
oxg_decimal = panel_display_info.oxg.value % 10;
|
||||||
oxg_ten = (panel_display_info.oxg.value / 100) % 10;
|
oxg_unit = (panel_display_info.oxg.value / 10) % 10;
|
||||||
|
oxg_ten = (panel_display_info.oxg.value / 100) % 10;
|
||||||
|
|
||||||
|
display_buffer[OXG_FIRST8_AFED_SEG_NUM/2] |= (SEG_TAB[oxg_ten]&0x0F);
|
||||||
|
display_buffer[OXG_FIRST8_BGC_SEG_NUM/2] |= (SEG_TAB[oxg_ten]&0xF0);
|
||||||
|
|
||||||
|
display_buffer[OXG_SECOND8_AFED_SEG_NUM/2] |= (SEG_TAB[oxg_unit]&0x0F);
|
||||||
|
display_buffer[OXG_SECOND8_BGC_SEG_NUM/2] |= (SEG_TAB[oxg_unit]&0xF0);
|
||||||
|
|
||||||
|
display_buffer[OXG_THIRD8_AFED_SEG_NUM/2] |= (SEG_TAB[oxg_decimal]&0x0F);
|
||||||
|
display_buffer[OXG_THIRD8_BGC_SG_NUM/2] |= (SEG_TAB[oxg_decimal]&0xF0);
|
||||||
|
|
||||||
|
display_buffer[OXG_S1_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
||||||
|
display_buffer[OXG_POINT_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
||||||
|
display_buffer[OXG_PERCEENET_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
||||||
|
|
||||||
display_buffer[OXG_FIRST8_AFED_SEG_NUM/2] |= (SEG_TAB[oxg_ten]&0x0F);
|
}else if(panel_display_info.oxg.oxg_mode == MODE_OXG_INDEX)
|
||||||
display_buffer[OXG_FIRST8_BGC_SEG_NUM/2] |= (SEG_TAB[oxg_ten]&0xF0);
|
{
|
||||||
|
|
||||||
display_buffer[OXG_SECOND8_AFED_SEG_NUM/2] |= (SEG_TAB[oxg_unit]&0x0F);
|
display_buffer[OXG_FIRST8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.first8_segtable_index]&0x0F);
|
||||||
display_buffer[OXG_SECOND8_BGC_SEG_NUM/2] |= (SEG_TAB[oxg_unit]&0xF0);
|
display_buffer[OXG_FIRST8_BGC_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.first8_segtable_index]&0xF0);
|
||||||
|
|
||||||
display_buffer[OXG_THIRD8_AFED_SEG_NUM/2] |= (SEG_TAB[oxg_decimal]&0x0F);
|
display_buffer[OXG_SECOND8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.second8_segtable_index]&0x0F);
|
||||||
display_buffer[OXG_THIRD8_BGC_SG_NUM/2] |= (SEG_TAB[oxg_decimal]&0xF0);
|
display_buffer[OXG_SECOND8_BGC_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.second8_segtable_index]&0xF0);
|
||||||
|
|
||||||
display_buffer[OXG_S1_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
display_buffer[OXG_THIRD8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.third8_segtable_index]&0x0F);
|
||||||
display_buffer[OXG_POINT_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
display_buffer[OXG_THIRD8_BGC_SG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.third8_segtable_index]&0xF0);
|
||||||
display_buffer[OXG_PERCEENET_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
|
||||||
|
if(panel_display_info.oxg.chn_is_light == LIGHT_ON)
|
||||||
|
{
|
||||||
|
display_buffer[OXG_S1_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
||||||
|
display_buffer[OXG_POINT_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
||||||
|
display_buffer[OXG_PERCEENET_ARRAY_INDEX] |= ADDITION_SEG_POS<<4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------- 加载显示缓冲区数据 -------------------
|
// ------------------- 加载显示缓冲区数据 -------------------
|
||||||
// 发送I2C起始条件
|
// 发送I2C起始条件
|
||||||
|
|||||||
@ -187,14 +187,25 @@ typedef enum
|
|||||||
LIGHT_ON = 1 // 亮起,值为1
|
LIGHT_ON = 1 // 亮起,值为1
|
||||||
}LightState;
|
}LightState;
|
||||||
|
|
||||||
|
|
||||||
// 用于选择累时部分显示模式
|
// 用于选择累时部分显示模式
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
MODE_TOTAL_TIME, // 累时部分五个8按照total_time的值进行显示 用于显示H及累时
|
MODE_TIME_TOTAL_TIME, // 累时部分五个8按照total_time的值进行显示 用于显示H及累时
|
||||||
MODE_INDEX // 累时部分五个8使用index的值进行显示,不显示H 用于上电显示Hello
|
MODE_TIME_INDEX // 累时部分五个8使用index的值进行显示,不显示H 用于上电显示Hello
|
||||||
|
|
||||||
}Time_Mode;
|
}Time_Mode;
|
||||||
|
|
||||||
|
|
||||||
|
// 用于选择浓度部分显示模式
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
MODE_OXG_VALUE, // 用于显示浓度当前浓度值 该模式下将同时显示字符与数字
|
||||||
|
MODE_OXG_INDEX // 用于按照索引值进行显示 该模式下数字根据索引进行显示 字符根据配置选择是否显示
|
||||||
|
|
||||||
|
}OXG_Mode;
|
||||||
|
|
||||||
|
|
||||||
// 用于设置界面显示的内容的结构体
|
// 用于设置界面显示的内容的结构体
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
@ -208,7 +219,7 @@ typedef struct
|
|||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
Time_Mode time_mode; // 显示累时还是HELLO MODE_TOTAL_TIME显示累时 MODE_INDEX用于按照索引值显示
|
Time_Mode time_mode; // 显示累时还是HELLO MODE_TIME_TOTAL_TIME显示累时 MODE_TIME_INDEX用于按照索引值显示
|
||||||
|
|
||||||
uint32_t hours; // 累时小时数
|
uint32_t hours; // 累时小时数
|
||||||
|
|
||||||
@ -221,18 +232,20 @@ typedef struct
|
|||||||
LightState is_light; // 显示控制
|
LightState is_light; // 显示控制
|
||||||
}total_time;
|
}total_time;
|
||||||
|
|
||||||
struct
|
|
||||||
{
|
|
||||||
uint8_t first8_segtable_index; // 从左向右第1个8 显示内容对应断码表索引
|
|
||||||
uint8_t second8_segtable_index;
|
|
||||||
|
|
||||||
LightState is_light; // 故障码显示控制
|
|
||||||
}error;
|
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
uint16_t value; // 浓度值 999对应99.9%
|
OXG_Mode oxg_mode; // 显示模式 MODE_OXG_VALUE显示当前浓度值 MODE_OXG_INDEX根据索引显示当前值
|
||||||
LightState is_light; // 显示控制
|
|
||||||
|
uint16_t value; // 浓度值 999对应99.9% 用于MODE_OXG_VALUE显示当前浓度值
|
||||||
|
|
||||||
|
uint8_t first8_segtable_index; // 从左向右数第一个8显示内容对应断码表索引
|
||||||
|
uint8_t second8_segtable_index;
|
||||||
|
uint8_t third8_segtable_index;
|
||||||
|
|
||||||
|
LightState chn_is_light; // 用于选择在 MODE_OXG_INDEX模式下是否还要显示浓度相关的字符
|
||||||
|
|
||||||
|
LightState is_light; // 整个浓度区域显示控制 包含字符与数字
|
||||||
}oxg;
|
}oxg;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
5506
MDK-ARM/JLinkLog.txt
5506
MDK-ARM/JLinkLog.txt
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -117,11 +117,6 @@
|
|||||||
<pMon>Segger\JL2CM3.dll</pMon>
|
<pMon>Segger\JL2CM3.dll</pMon>
|
||||||
</DebugOpt>
|
</DebugOpt>
|
||||||
<TargetDriverDllRegistry>
|
<TargetDriverDllRegistry>
|
||||||
<SetRegEntry>
|
|
||||||
<Number>0</Number>
|
|
||||||
<Key>DLGUARM</Key>
|
|
||||||
<Name>岏~</Name>
|
|
||||||
</SetRegEntry>
|
|
||||||
<SetRegEntry>
|
<SetRegEntry>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Key>JL2CM3</Key>
|
<Key>JL2CM3</Key>
|
||||||
|
|||||||
@ -107,7 +107,6 @@ int main(void)
|
|||||||
|
|
||||||
User_PowerMeter_Init(); // 初始化电量计芯片
|
User_PowerMeter_Init(); // 初始化电量计芯片
|
||||||
|
|
||||||
panel_display_info.error.is_light = LIGHT_OFF;
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
FL_DelayMs(500);
|
FL_DelayMs(500);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user