交给吴工的第二版显示程序
1.将浓度显示部分新增了断码表显示 2.去除了中间88的显示
This commit is contained in:
parent
2251469662
commit
5429711e5f
@ -230,7 +230,7 @@ static const PanelDisplayInfo panel_display_default =
|
||||
|
||||
.total_time =
|
||||
{
|
||||
.time_mode = MODE_TOTAL_TIME,
|
||||
.time_mode = MODE_TIME_TOTAL_TIME,
|
||||
.hours = 88888,
|
||||
.first8_segtable_index = 10,
|
||||
.second8_segtable_index = 10,
|
||||
@ -240,14 +240,6 @@ static const PanelDisplayInfo panel_display_default =
|
||||
.is_light = LIGHT_ON
|
||||
},
|
||||
|
||||
|
||||
.error =
|
||||
{
|
||||
.first8_segtable_index = 8,
|
||||
.second8_segtable_index = 8,
|
||||
.is_light = LIGHT_ON
|
||||
},
|
||||
|
||||
.oxg =
|
||||
{
|
||||
.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.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;
|
||||
@ -440,7 +432,7 @@ void user_display_refresh(void)
|
||||
|
||||
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;
|
||||
@ -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)
|
||||
{
|
||||
|
||||
oxg_decimal = panel_display_info.oxg.value % 10;
|
||||
oxg_unit = (panel_display_info.oxg.value / 10) % 10;
|
||||
oxg_ten = (panel_display_info.oxg.value / 100) % 10;
|
||||
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_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);
|
||||
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;
|
||||
}else if(panel_display_info.oxg.oxg_mode == MODE_OXG_INDEX)
|
||||
{
|
||||
|
||||
display_buffer[OXG_FIRST8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.first8_segtable_index]&0x0F);
|
||||
display_buffer[OXG_FIRST8_BGC_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.first8_segtable_index]&0xF0);
|
||||
|
||||
display_buffer[OXG_SECOND8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.second8_segtable_index]&0x0F);
|
||||
display_buffer[OXG_SECOND8_BGC_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.second8_segtable_index]&0xF0);
|
||||
|
||||
display_buffer[OXG_THIRD8_AFED_SEG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.third8_segtable_index]&0x0F);
|
||||
display_buffer[OXG_THIRD8_BGC_SG_NUM/2] |= (SEG_TAB[panel_display_info.oxg.third8_segtable_index]&0xF0);
|
||||
|
||||
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起始条件
|
||||
|
||||
@ -187,14 +187,25 @@ typedef enum
|
||||
LIGHT_ON = 1 // 亮起,值为1
|
||||
}LightState;
|
||||
|
||||
|
||||
// 用于选择累时部分显示模式
|
||||
typedef enum
|
||||
{
|
||||
MODE_TOTAL_TIME, // 累时部分五个8按照total_time的值进行显示 用于显示H及累时
|
||||
MODE_INDEX // 累时部分五个8使用index的值进行显示,不显示H 用于上电显示Hello
|
||||
MODE_TIME_TOTAL_TIME, // 累时部分五个8按照total_time的值进行显示 用于显示H及累时
|
||||
MODE_TIME_INDEX // 累时部分五个8使用index的值进行显示,不显示H 用于上电显示Hello
|
||||
|
||||
}Time_Mode;
|
||||
|
||||
|
||||
// 用于选择浓度部分显示模式
|
||||
typedef enum
|
||||
{
|
||||
MODE_OXG_VALUE, // 用于显示浓度当前浓度值 该模式下将同时显示字符与数字
|
||||
MODE_OXG_INDEX // 用于按照索引值进行显示 该模式下数字根据索引进行显示 字符根据配置选择是否显示
|
||||
|
||||
}OXG_Mode;
|
||||
|
||||
|
||||
// 用于设置界面显示的内容的结构体
|
||||
typedef struct
|
||||
{
|
||||
@ -208,7 +219,7 @@ typedef 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; // 累时小时数
|
||||
|
||||
@ -221,18 +232,20 @@ typedef struct
|
||||
LightState is_light; // 显示控制
|
||||
}total_time;
|
||||
|
||||
struct
|
||||
{
|
||||
uint8_t first8_segtable_index; // 从左向右第1个8 显示内容对应断码表索引
|
||||
uint8_t second8_segtable_index;
|
||||
|
||||
LightState is_light; // 故障码显示控制
|
||||
}error;
|
||||
|
||||
struct
|
||||
{
|
||||
uint16_t value; // 浓度值 999对应99.9%
|
||||
LightState is_light; // 显示控制
|
||||
OXG_Mode oxg_mode; // 显示模式 MODE_OXG_VALUE显示当前浓度值 MODE_OXG_INDEX根据索引显示当前值
|
||||
|
||||
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;
|
||||
|
||||
|
||||
|
||||
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>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
<Name>岏~</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
|
||||
@ -107,7 +107,6 @@ int main(void)
|
||||
|
||||
User_PowerMeter_Init(); // 初始化电量计芯片
|
||||
|
||||
panel_display_info.error.is_light = LIGHT_OFF;
|
||||
while(1)
|
||||
{
|
||||
FL_DelayMs(500);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user