forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
Function/LCD/lcd_cfg_api.c
@@ -15,40 +15,83 @@
 
#include "lcd_cfg_api.h"
#include "lcd_io_api.h"
#include "system_general_para.h"
#include "extern_rtc.h"
#include "wireless_remote_comm.h"
#include "sundry.h"
#include "master_slave_inter.h"
#include "gprs.h"
#include "billing.h"
#include "linked_list.h"
#include "working_time_calculate.h"
/*µçÁ¿ÏÔʾ*/
void Lcd_Battery(PWR_VOL_T pwr_para_in)
void Lcd_Battery(float alka_vcc,float lith_vcc)
{
   __IO static uint8_t cal_cnt = 0;
   LCD_DISPLAY_SEG(_LCD_BATTERY_SHELL_23A); //×ÜÊÇÏÔʾµç³Ø¿Ç
   if((sys_clockBCD_g.sec & 0x04 ) == 0){
      //ÏÔʾ﮵ç
      LCD_DISPLAY_SEG(_LCD_METER_23A);  //¡°¼ÆÁ¿¡±×Ö·û
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_0)
         LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_1)
         LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_2)
         LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
      if(pwr_para_in.lith_synthesize_per > BAT_PERSENT_LEVEL_3)
         LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
   }else{
      //ÏÔʾ¼îµç
      LCD_DISPLAY_SEG(_LCD_SIGNAL_COMMUNICATION_23A); //¡°Í¨Ñ¶¡±×Ö·û
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_0)
         LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_1)
         LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_2)
         LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
      if(pwr_para_in.alka_vcc_per > BAT_PERSENT_LEVEL_3)
         LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
   if(sys_display_para_g.sys_and_display_mode != CALIB_MODE)
   {
      if((calendar_g.Second & 4) == 0) //¼ÆÁ¿³ÖÐø6Ã룬ͨѶ³ÖÐø4Ã룬һ´ÎÑ­»·
      {
         LCD_DISPLAY_SEG(_LCD_METER_23A);  //¡°¼ÆÁ¿¡±×Ö·û
         if(lith_bat_real_per_g > 0)
            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
         if(lith_bat_real_per_g > 20)
            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
         if(lith_bat_real_per_g > 40)
            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
         if(lith_bat_real_per_g > 70)
            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
      }
      else
      {
         LCD_DISPLAY_SEG(_LCD_SIGNAL_COMMUNICATION_23A); //¡°Í¨Ñ¶¡±×Ö·û
         if(alka_vcc >= 4.5f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
         if(alka_vcc >= 4.85f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
         if(alka_vcc >= 5.25f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
         if(alka_vcc >= 5.65f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
      }
   }else//¼ì¶¨Ä£Ê½ÏÂʵʱʱ¼ä²»¸üУ¬ËùÒÔÒª»»ÖÖ·½Ê½
   {
      cal_cnt++;
      if(cal_cnt <= 24)
      {
         LCD_DISPLAY_SEG(_LCD_METER_23A);  //¡°¼ÆÁ¿¡±×Ö·û
//         if(lith_vcc >= 2.9f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
//         if(lith_vcc >= 3.2f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
//         if(lith_vcc >= 3.3f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
//         if(lith_vcc >= 3.4f)
//            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
         if(lith_bat_real_per_g > 0)
            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
         if(lith_bat_real_per_g > 20)
            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
         if(lith_bat_real_per_g > 40)
            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
         if(lith_bat_real_per_g > 70)
            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
      }else
      {
         if(cal_cnt > 40)
            cal_cnt = 0;
         LCD_DISPLAY_SEG(_LCD_SIGNAL_COMMUNICATION_23A); //¡°Í¨Ñ¶¡±×Ö·û
         if(alka_vcc >= 4.5f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_1_23A);
         if(alka_vcc >= 4.85f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_2_23A);
         if(alka_vcc >= 5.25f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_3_23A);
         if(alka_vcc >= 5.65f)
            LCD_DISPLAY_SEG(_LCD_BATTERY_4_23A);
      }
   }
}
@@ -76,23 +119,23 @@
 */
void Lcd_NormalPage_2(float price,float balance,uint8_t price_mode)
{
//   if(__SYS_FUNC_CFG_BYTES_GET(balance_display_set) == 0)
//   {
//      /*Óà¶îÏÔʾ*/
//      LCD_DISPLAY_SEG(_LCD_SURPLUSE_23A); //×Ö·û¡°Ê£Óࡱ
//      LCD_DISPLAY_SEG(_LCD_YUAN_1_23A);
//      Lcd_DisplayFirstLine_23A(1,balance);
//   }
//   if(__SYS_FUNC_CFG_BYTES_GET(price_display_set) == 0)
//   {
//      /*µ¥¼Û*/
//      if(price_mode == SPM_LADDER)
//            LCD_DISPLAY_SEG(_LCD_LADDER_23A);//×Ö·û¡°½×ÌÝ¡±
//      LCD_DISPLAY_SEG(_LCD_UNIT_PRICE_23A); //×Ö·û¡°µ¥¼Û¡±
//      LCD_DISPLAY_SEG(_LCD_YUAN_2_23A); //×Ö·û¡°Ôª¡±
//      LCD_DISPLAY_SEG(_LCD_YUAN_M3_23A);//×Ö·û¡°/m^3¡±
//      Lcd_DisplaySecondLine_23A(1,price);
//   }
   if(__SYS_FUNC_CFG_BYTES_GET(balance_display_set) == 0)
   {
      /*Óà¶îÏÔʾ*/
      LCD_DISPLAY_SEG(_LCD_SURPLUSE_23A); //×Ö·û¡°Ê£Óࡱ
      LCD_DISPLAY_SEG(_LCD_YUAN_1_23A);
      Lcd_DisplayFirstLine_23A(1,balance);
   }
   if(__SYS_FUNC_CFG_BYTES_GET(price_display_set) == 0)
   {
      /*µ¥¼Û*/
      if(price_mode == SPM_LADDER)
            LCD_DISPLAY_SEG(_LCD_LADDER_23A);//×Ö·û¡°½×ÌÝ¡±
      LCD_DISPLAY_SEG(_LCD_UNIT_PRICE_23A); //×Ö·û¡°µ¥¼Û¡±
      LCD_DISPLAY_SEG(_LCD_YUAN_2_23A); //×Ö·û¡°Ôª¡±
      LCD_DISPLAY_SEG(_LCD_YUAN_M3_23A);//×Ö·û¡°/m^3¡±
      Lcd_DisplaySecondLine_23A(1,price);
   }
}
/*
 *ÆÕÍ¨Ò³Ãæ3
@@ -148,23 +191,23 @@
   uint8_t i = 0;
#ifdef LCD_NEW
   i = 2;
   Lcd_DisplayDigit_23A(5,BCD_2_DECIMAL(pMeterNum_bcd[0]) / 10);
   Lcd_DisplayDigit_23A(5,BCD_2_HEX_U8(pMeterNum_bcd[0]) / 10);
#endif   
   Lcd_DisplayDigit_23A(4 + i,BCD_2_DECIMAL(pMeterNum_bcd[0]) % 10);
   Lcd_DisplayDigit_23A(5 + i,BCD_2_DECIMAL(pMeterNum_bcd[1]) / 10);
   Lcd_DisplayDigit_23A(6 + i,BCD_2_DECIMAL(pMeterNum_bcd[1]) % 10);
   Lcd_DisplayDigit_23A(7 + i,BCD_2_DECIMAL(pMeterNum_bcd[2]) / 10);
   Lcd_DisplayDigit_23A(8 + i,BCD_2_DECIMAL(pMeterNum_bcd[2]) % 10);
   Lcd_DisplayDigit_23A(9 + i,BCD_2_DECIMAL(pMeterNum_bcd[3]) / 10);
   Lcd_DisplayDigit_23A(10 + i,BCD_2_DECIMAL(pMeterNum_bcd[3]) % 10);
   Lcd_DisplayDigit_23A(11 + i,BCD_2_DECIMAL(pMeterNum_bcd[4]) / 10);
   Lcd_DisplayDigit_23A(12 + i,BCD_2_DECIMAL(pMeterNum_bcd[4]) % 10);
   Lcd_DisplayDigit_23A(13 + i,BCD_2_DECIMAL(pMeterNum_bcd[5]) / 10);
   Lcd_DisplayDigit_23A(14 + i,BCD_2_DECIMAL(pMeterNum_bcd[5]) % 10);
   Lcd_DisplayDigit_23A(15 + i,BCD_2_DECIMAL(pMeterNum_bcd[6]) / 10);
   Lcd_DisplayDigit_23A(16 + i,BCD_2_DECIMAL(pMeterNum_bcd[6]) % 10);
   Lcd_DisplayDigit_23A(17 + i,BCD_2_DECIMAL(pMeterNum_bcd[7]) / 10);
   Lcd_DisplayDigit_23A(18 + i,BCD_2_DECIMAL(pMeterNum_bcd[7]) % 10);
   Lcd_DisplayDigit_23A(4 + i,BCD_2_HEX_U8(pMeterNum_bcd[0]) % 10);
   Lcd_DisplayDigit_23A(5 + i,BCD_2_HEX_U8(pMeterNum_bcd[1]) / 10);
   Lcd_DisplayDigit_23A(6 + i,BCD_2_HEX_U8(pMeterNum_bcd[1]) % 10);
   Lcd_DisplayDigit_23A(7 + i,BCD_2_HEX_U8(pMeterNum_bcd[2]) / 10);
   Lcd_DisplayDigit_23A(8 + i,BCD_2_HEX_U8(pMeterNum_bcd[2]) % 10);
   Lcd_DisplayDigit_23A(9 + i,BCD_2_HEX_U8(pMeterNum_bcd[3]) / 10);
   Lcd_DisplayDigit_23A(10 + i,BCD_2_HEX_U8(pMeterNum_bcd[3]) % 10);
   Lcd_DisplayDigit_23A(11 + i,BCD_2_HEX_U8(pMeterNum_bcd[4]) / 10);
   Lcd_DisplayDigit_23A(12 + i,BCD_2_HEX_U8(pMeterNum_bcd[4]) % 10);
   Lcd_DisplayDigit_23A(13 + i,BCD_2_HEX_U8(pMeterNum_bcd[5]) / 10);
   Lcd_DisplayDigit_23A(14 + i,BCD_2_HEX_U8(pMeterNum_bcd[5]) % 10);
   Lcd_DisplayDigit_23A(15 + i,BCD_2_HEX_U8(pMeterNum_bcd[6]) / 10);
   Lcd_DisplayDigit_23A(16 + i,BCD_2_HEX_U8(pMeterNum_bcd[6]) % 10);
   Lcd_DisplayDigit_23A(17 + i,BCD_2_HEX_U8(pMeterNum_bcd[7]) / 10);
   Lcd_DisplayDigit_23A(18 + i,BCD_2_HEX_U8(pMeterNum_bcd[7]) % 10);
}
/*µÚÈý·½±íºÅ
third_flag£ºÊÇ·ñÓеÚÈý·½±ê־λ
@@ -239,7 +282,7 @@
   Lcd_DisplayLetter(5 + i,LCD_P);
   //IP³ÖÐø6Ã룬¶Ë¿Ú³ÖÐø4Ã룬һ´ÎÑ­»·
   if((sys_clockBCD_g.sec & 4) == 0) //IP
   if((calendar_g.Second & 4) == 0) //IP
   {
      Lcd_DisplayLetter(4 + i,LCD_I);
         
@@ -288,7 +331,7 @@
      LCD_DISPLAY_SEG(_LCD_POINT6_23A);
      Lcd_DisplayLetter(6 + i,LCD_P);
      //IP³ÖÐø6Ã룬¶Ë¿Ú³ÖÐø4Ã룬һ´ÎÑ­»·
      if((sys_clockBCD_g.sec & 4) == 0) //IP
      if((calendar_g.Second & 4) == 0) //IP
      {
         /*ÏÔʾOIP£¨other ip£©£¬ÓÃÓÚÇø·Ö˼ÖþIPºÍµÚÈý·½IP*/
         Lcd_DisplayLetter(5 + i,LCD_I);
@@ -351,23 +394,23 @@
   LCD_DISPLAY_SEG(_LCD_POINT3_23A);
   LCD_DISPLAY_SEG(_LCD_POINT4_23A);
   
   Lcd_DisplayDigit_23A(7 + i,BCD_2_DECIMAL(pSoftVer[0]) / 10);
   Lcd_DisplayDigit_23A(8 + i,BCD_2_DECIMAL(pSoftVer[0]) % 10);
   Lcd_DisplayDigit_23A(7 + i,BCD_2_HEX_U8(pSoftVer[0]) / 10);
   Lcd_DisplayDigit_23A(8 + i,BCD_2_HEX_U8(pSoftVer[0]) % 10);
   
   LCD_DISPLAY_SEG(_LCD_POINT10_23A);
   
   Lcd_DisplayDigit_23A(9 + i,BCD_2_DECIMAL(pSoftVer[1]) / 10);
   Lcd_DisplayDigit_23A(10 + i,BCD_2_DECIMAL(pSoftVer[1]) % 10);
   Lcd_DisplayDigit_23A(9 + i,BCD_2_HEX_U8(pSoftVer[1]) / 10);
   Lcd_DisplayDigit_23A(10 + i,BCD_2_HEX_U8(pSoftVer[1]) % 10);
   
   LCD_DISPLAY_SEG(_LCD_POINT14_23A);
   
   Lcd_DisplayDigit_23A(11 + i,BCD_2_DECIMAL(pSoftVer[2]) / 10);
   Lcd_DisplayDigit_23A(12 + i,BCD_2_DECIMAL(pSoftVer[2]) % 10);
   Lcd_DisplayDigit_23A(11 + i,BCD_2_HEX_U8(pSoftVer[2]) / 10);
   Lcd_DisplayDigit_23A(12 + i,BCD_2_HEX_U8(pSoftVer[2]) % 10);
   
   LCD_DISPLAY_SEG(_LCD_POINT18_23A);
   
   Lcd_DisplayDigit_23A(14 + i,BCD_2_DECIMAL(pSoftVer[3]) / 10);
   Lcd_DisplayDigit_23A(15 + i,BCD_2_DECIMAL(pSoftVer[3]) % 10);
   Lcd_DisplayDigit_23A(14 + i,BCD_2_HEX_U8(pSoftVer[3]) / 10);
   Lcd_DisplayDigit_23A(15 + i,BCD_2_HEX_U8(pSoftVer[3]) % 10);
}
/*Ó²¼þ°æ±¾ºÅ*/
void Lcd_ParaPage_HardVer(uint8_t * pHardVer)
@@ -382,18 +425,18 @@
   LCD_DISPLAY_SEG(_LCD_POINT3_23A);
   LCD_DISPLAY_SEG(_LCD_POINT4_23A);
   
   Lcd_DisplayDigit_23A(7 + i,BCD_2_DECIMAL(pHardVer[0]) / 10);
   Lcd_DisplayDigit_23A(8 + i,BCD_2_DECIMAL(pHardVer[0]) % 10);
   Lcd_DisplayDigit_23A(9 + i,BCD_2_DECIMAL(pHardVer[1]) / 10);
   Lcd_DisplayDigit_23A(10 + i,BCD_2_DECIMAL(pHardVer[1]) % 10);
   Lcd_DisplayDigit_23A(11 + i,BCD_2_DECIMAL(pHardVer[2]) / 10);
   Lcd_DisplayDigit_23A(7 + i,BCD_2_HEX_U8(pHardVer[0]) / 10);
   Lcd_DisplayDigit_23A(8 + i,BCD_2_HEX_U8(pHardVer[0]) % 10);
   Lcd_DisplayDigit_23A(9 + i,BCD_2_HEX_U8(pHardVer[1]) / 10);
   Lcd_DisplayDigit_23A(10 + i,BCD_2_HEX_U8(pHardVer[1]) % 10);
   Lcd_DisplayDigit_23A(11 + i,BCD_2_HEX_U8(pHardVer[2]) / 10);
   
   LCD_DISPLAY_SEG(_LCD_POINT16_23A);
   
   Lcd_DisplayDigit_23A(12 + i,BCD_2_DECIMAL(pHardVer[2]) % 10);
   Lcd_DisplayDigit_23A(13 + i,BCD_2_DECIMAL(pHardVer[3]) / 10);
   Lcd_DisplayDigit_23A(14 + i,BCD_2_DECIMAL(pHardVer[3]) % 10);
   Lcd_DisplayDigit_23A(15 + i,BCD_2_DECIMAL(pHardVer[4]) / 10);
   Lcd_DisplayDigit_23A(12 + i,BCD_2_HEX_U8(pHardVer[2]) % 10);
   Lcd_DisplayDigit_23A(13 + i,BCD_2_HEX_U8(pHardVer[3]) / 10);
   Lcd_DisplayDigit_23A(14 + i,BCD_2_HEX_U8(pHardVer[3]) % 10);
   Lcd_DisplayDigit_23A(15 + i,BCD_2_HEX_U8(pHardVer[4]) / 10);
   
   LCD_DISPLAY_SEG(_LCD_POINT22_23A);
   
@@ -454,53 +497,78 @@
   }
}
/*½éÖÊÅжÏÏÔʾ*/
void Lcd_MediumShow(MEDIA_STATUS media_state)
{
   switch(media_state)
   {
      case AIR:
         LCD_DISPLAY_SEG(_LCD_K_23A);
         break;
      case GAS:
         LCD_DISPLAY_SEG(_LCD_T_23A);
         break;
      default:break;
   }
}
/*Á÷ÏòÅжÏÏÔʾ*/
void Lcd_BacksetShow(uint8_t flow_direction)
{
   if(flow_direction == 1)
      LCD_DISPLAY_SEG(_LCD_BACKSET_23A);
}
/*·§ÃÅÏÔʾ*/
void Lcd_ValveShow(VALVE_STATUS valve_state,uint16_t valve_close_ID,VALVE_LOCK_STATE_T valve_lock_status)
void Lcd_ValveShow(VALVE_STATE_T valve_state,SYS_ALARM_VALVE_T cl_valve_cause,uint8_t valve_lock)
{
   static uint8_t show_flag = 0;
   switch(valve_state)
   {
      case VALVE_NONE:
         break;
      case VALVE_OPEN:
      case VALVE_OP:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         LCD_DISPLAY_SEG(_LCD_OPEN_23A);
         break;
      case VALVE_CLOSE:
      case VALVE_CL:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         LCD_DISPLAY_SEG(_LCD_CLOSE_23A);
         break;
      case VALVE_OPENING:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         if((sys_clockBCD_g.sec & 0x01) == 0)
         show_flag = !show_flag;
         if(show_flag)
            LCD_DISPLAY_SEG(_LCD_OPEN_23A);
         break;
      case VALVE_CLOSING:
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         if((sys_clockBCD_g.sec & 0x01) == 0)
         show_flag = !show_flag;
         if(show_flag)
            LCD_DISPLAY_SEG(_LCD_CLOSE_23A);
         break;
      case VALVE_ERROR:
         if((sys_clockBCD_g.sec & 0x01) == 0)
            LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         LCD_DISPLAY_SEG(_LCD_VALVE_M_23A);
         break;
      default:break;
   }
   if(valve_lock_status == VL_LOCK)
   if(valve_lock)
      LCD_DISPLAY_SEG(_LCD_LOCK_23A);
   valve_close_ID &=(~0x8000);
   if(valve_state == VALVE_CLOSE && (valve_close_ID <= 0xff))
   if(valve_state == VALVE_CL && (cl_valve_cause <= 0x99))
   {
      Lcd_DisplayDigit_23A(1,BCD_2_DECIMAL(valve_close_ID) / 10);
      Lcd_DisplayDigit_23A(2,BCD_2_DECIMAL(valve_close_ID) % 10);
#ifdef LCD_NEW
      Lcd_DisplayDigit_23A(1,BCD_2_HEX_U8(cl_valve_cause) / 10);
      Lcd_DisplayDigit_23A(2,BCD_2_HEX_U8(cl_valve_cause) % 10);
#else
      switch(cl_valve_cause) //ÔÝδÏëºÃÔõô·ÖÀà
      {
         default:
//            Lcd_DisplayDigit_23A(1,5);
            break;
      }
#endif
   }
}
/*¾¯¸æÏÔʾ*/
#define ALARM_ID_SHOW_MAX 5
void Lcd_WaringShow(uint8_t list_cnt,uint8_t sec_bcd)
void Lcd_WaringShow_New(uint8_t list_cnt,uint8_t sec_bcd)
{
   uint8_t i = 0;
#ifdef LCD_NEW
@@ -510,7 +578,7 @@
   static uint8_t temp_list_cnt_flag = 0; //ÓÃÓÚÅжϱ¨¾¯ÊÇ·ñÔöɾ
   static uint8_t show_min_flag = 0; //ÏÔʾÅжϵÄ×îСֵ±ê־λ
   __IO static int8_t alarm_show_num = 0; //±¨¾¯ÏÔʾµÄ³¤¶È£¬ÓÃÓÚ²éÕÒÁ´±íÖеı¨¾¯ID
   __IO static SYS_ALARM_VALVE_T alarm_id = ALARM_ID_NORMAL;
   __IO static SYS_ALARM_VALVE_T alarm_id = AV_NORMAL;
   ALARM_NODE_T * ptr = pList_head;
   if((sec_bcd & 1) && (ptr != NULL))//ÿ2SÐÞ¸ÄÒ»´ÎÊý¾Ý & ±¨¾¯Á´±íÊý¾ÝÓÐ
   {
@@ -534,27 +602,50 @@
      }
   }else if(ptr == NULL && temp_list_cnt_flag != 0) // ÒÔǰÓб¨¾¯£¬ÏÖÔÚûÁË
   {
      alarm_id = ALARM_ID_NORMAL;
      alarm_id = AV_NORMAL;
      temp_list_cnt_flag = list_cnt;
   }
   /*±¨¾¯ÏÔʾ*/
   if((alarm_id != ALARM_ID_NORMAL)&&(alarm_id <= 0xff))
   if(alarm_id != AV_NORMAL)
   {
      LCD_DISPLAY_SEG(_LCD_WARNING_23A);
      Lcd_DisplayDigit_23A(2 + i,BCD_2_DECIMAL(alarm_id) / 10);
      Lcd_DisplayDigit_23A(3 + i,BCD_2_DECIMAL(alarm_id) % 10);
      Lcd_DisplayDigit_23A(2 + i,BCD_2_HEX_U8(alarm_id) / 10);
      Lcd_DisplayDigit_23A(3 + i,BCD_2_HEX_U8(alarm_id) % 10);
   }
}
/*¾¯¸æÏÔʾ*/
void Lcd_WarningShow(SYS_ALARM_VALVE_T * warning_state,SYS_ALARM_VALVE_T * clear_state)
{
   uint8_t display_alarm_id_bcd = BCD_2_HEX_U8(*warning_state);
   //µ±±¨¾¯ÏÔʾºÍÇå³ý±¨¾¯ÏÔʾÏàͬʱ
   if(*warning_state == *clear_state && *clear_state != AV_NORMAL)
      *warning_state = *clear_state = AV_NORMAL;
   if(*warning_state == AV_NORMAL && *clear_state != AV_NORMAL)
      *clear_state = AV_NORMAL;
   switch(*warning_state)
   {
      case AV_NORMAL:
      case V_KEY_OP: //¾¯¸æÖ»ÓÐÁ½Î»Êý×ÖÏÔʾ
      case V_KEY_CL:
      case V_GPRS_CMD_OP:
      case V_GPRS_CMD_CL:
         break;
      default:
         LCD_DISPLAY_SEG(_LCD_WARNING_23A);
         Lcd_DisplayDigit_23A(2,display_alarm_id_bcd / 10);
         Lcd_DisplayDigit_23A(3,display_alarm_id_bcd % 10);
         break;
   }
}
/*Ô¶´«ÏÔʾ*/
void Lcd_WrcShow(FlagStatus wrc_running_status,ErrorStatus last_wrc_result,uint8_t flag_4g,uint8_t signal_intensity)
void Lcd_GprsShow(uint8_t gprs_state,uint8_t flag_4g,uint8_t signal_intensity)
{
   static uint8_t temp_sig = 0;
   if((flag_4g>>4) == 4)
   if(!flag_4g)
      LCD_DISPLAY_SEG(_LCD_4G_Flag_23A);
   /*ÕýÔÚÉÏ´«Ê±ÏÔʾ*/
   if(wrc_running_status == SET)
   if(gprs_soft_para_g.gprs_state != GPRS_IDLE && gprs_soft_para_g.gprs_state != GPRS_RESTART)
   {
      LCD_DISPLAY_SEG(_LCD_WIFI_23A);
      temp_sig++;
@@ -592,7 +683,7 @@
   }
   else
   {
      if(last_wrc_result == PASS)//ÉÏÒ»´ÎͨѶÕý³£
      if(!gprs_state)//ÉÏÒ»´ÎͨѶÕý³£
      {   
         LCD_DISPLAY_SEG(_LCD_WIFI_23A);
         LCD_DISPLAY_SEG(_LCD_4G_1_23A);
@@ -609,66 +700,110 @@
   
}
/*¼Æ·ÑÏÔʾ*/
void Lcd_BillingShow(uint8_t bill_mode,uint8_t ladder_now)
void Lcd_BillingShow(uint8_t bill_flag,uint8_t bill_mode,uint8_t price_mode)
{
   if(bill_mode == BM_DEVICE || bill_mode == BM_PLATFORM){
      if(bill_mode == BM_PLATFORM)//ºǫ́¼Æ·Ñģʽ
   if(bill_flag)//ÓмƷÑ
   {
      if(bill_mode)//ºǫ́¼Æ·Ñģʽ
         LCD_DISPLAY_SEG(_LCD_BILLBACK_23A);
      if(ladder_now > 0)
      if(price_mode == SPM_LADDER)
         LCD_DISPLAY_SEG(_LCD_LADDERBILL_23A);//½×Ìݼ۸ñ
      else
         LCD_DISPLAY_SEG(_LCD_SINGLEBILL_23A);//µ¥Ò»¼Û¸ñ
   }
}
/*Çл»Ä£Ê½µÄÊÚȨ±ê־λ³ÖÐøÊ±¼äÏÔʾ*/
void Lcd_ModeFlagActiveShow(SYS_SOME_FLAG_T * mode_flag_p)
{
   static uint8_t flag_active = 0;
   if((mode_flag_p->para_display_flag || mode_flag_p->uncap_flag) && __SYS_DELAY_SEC_TIME_GET_(mode_flag_active_time))
   {
      flag_active = !flag_active;
      if(flag_active && mode_flag_p->para_display_flag)
         LCD_DISPLAY_SEG(_LCD_LOOKUP_23A);
      if(flag_active && mode_flag_p->uncap_flag)
         LCD_DISPLAY_SEG(_LCD_CONFIGURATION_23A);
   }
   if(__SYS_DELAY_SEC_FLAG_GET(mode_flag_active_time) == SET)
   {
      __SYS_DELAY_SEC_FLAG_CLEAR_(mode_flag_active_time);
      __SYS_PARA_FLAG_CLEAR_(uncap_flag);
      __SYS_PARA_FLAG_CLEAR_(para_display_flag);
   }
}
/*¶þ¼¶ÐÞÕýµÄ¹Ì¶¨ÏÔʾÄÚÈÝ*/
void Lcd_SecCorr_FixedShow(PARA_DISPLAY_PAGE sec_corr_fix)
{
   uint8_t i = 0;
#ifdef LCD_NEW
   i = 1;
#endif
   Lcd_DisplayLetter(5 + i,LCD_S);
   Lcd_DisplayLetter(6 + i,LCD_E);
   Lcd_DisplayLetter(7 + i,LCD_C);
   Lcd_DisplayLetter(9 + i,LCD_C);
   Lcd_DisplayLetter(10 + i,LCD_O);
   Lcd_DisplayLetter(11 + i,LCD_R);
   Lcd_DisplayLetter(12 + i,LCD_R);
   if(sec_corr_fix == SEC_CORR_NOW)
   {
      Lcd_DisplayLetter(14 + i,LCD_N);
      Lcd_DisplayLetter(15 + i,LCD_O);
      Lcd_DisplayLetter(16 + i,LCD_W);
   }else if(sec_corr_fix == SEC_CORR_OLD)
   {
      Lcd_DisplayLetter(14 + i,LCD_O);
      Lcd_DisplayLetter(15 + i,LCD_L);
      Lcd_DisplayLetter(16 + i,LCD_D);
   }
}
void Lcd_SecCorr_ParaShow(PARA_DISPLAY_PAGE sec_corr_fix,SECOND_ORDER_CORR_T * sec_coor_set_p)
{
   if(sec_corr_fix == SEC_CORR_NOW_PARA_1)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[0]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[0]);
   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_2)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[1]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[1]);
   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_3)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[2]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[2]);
   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_4)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[3]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[3]);
   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_5)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[4]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[4]);
   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_1)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[0]); //ÔÝÓÃÔ¤ÁôÖµµ±oldÖµ
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[5]);
   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_2)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[1]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[6]);
   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_3)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[2]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[7]);
   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_4)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[3]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[8]);
   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_5)
   {
      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[4]);
      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[9]);
   }
//void Lcd_SecCorr_ParaShow(PARA_DISPLAY_PAGE sec_corr_fix,SECOND_ORDER_CORR_T * sec_coor_set_p)
//{
//   if(sec_corr_fix == SEC_CORR_NOW_PARA_1)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[0]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[0]);
//   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_2)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[1]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[1]);
//   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_3)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[2]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[2]);
//   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_4)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[3]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[3]);
//   }else if(sec_corr_fix == SEC_CORR_NOW_PARA_5)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->second_flow_data_point[4]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->second_corr_factor[4]);
//   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_1)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[0]); //ÔÝÓÃÔ¤ÁôÖµµ±oldÖµ
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[5]);
//   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_2)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[1]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[6]);
//   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_3)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[2]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[7]);
//   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_4)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[3]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[8]);
//   }else if(sec_corr_fix == SEC_CORR_OLD_PARA_5)
//   {
//      Lcd_DisplayFirstLine_23A(1,sec_coor_set_p->reserve[4]);
//      Lcd_DisplaySecondLine_23A(1,sec_coor_set_p->reserve[9]);
//   }
//
//}
}