forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

wujiazhi
2024-06-13 72def895431ad7a08e635b11f3da738e2b2c4618
Function/LCD/lcd.c
@@ -13,37 +13,53 @@
 */
#include "lcd.h"
#include "lcd_cfg_api.h"
#include "gpio.h"
#include "sundry.h"
#include "string.h"
#include "system_general_para.h"
#include "power_manage.h"
#include "billing.h"
#include "master_slave_inter.h"
#include "gprs.h"
#include "low_pwr_test.h"
uint8_t LCD_DRIVE_MODE_14_13[1] = {0};    //   1/4duty  1/3bias
uint8_t LCD_DRIVE_MODE_14_14[1] = {1};    //   1/4duty  1/4bias
uint8_t LCD_DRIVE_MODE_18_13[1] = {2};    //   1/8duty  1/3bias   48pinµÄÖ»Ö§³Ö1/8duty£¬µØÖ·¼ÓÔØµ½33H
uint8_t LCD_DRIVE_MODE_18_14[1] = {3};    //   1/8duty  1/4bias
uint8_t LCD_SYSTEM_MODE_OFF_OFF[1] = {0}; //  ÄÚ²¿ÏµÍ³Õñµ´Æ÷OFF£¬LCDÏÔʾOFF
uint8_t LCD_SYSTEM_MODE_ON_OFF[1] = {2};  //  ÄÚ²¿ÏµÍ³Õñµ´Æ÷ON£¬LCDÏÔʾOFF
uint8_t LCD_SYSTEM_MODE_ON_ON[1] = {3};   //  ÄÚ²¿ÏµÍ³Õñµ´Æ÷ON£¬LCDÏÔʾON
//uint8_t LCD_DRIVE_MODE_14_13[1] = {0};    //   1/4duty  1/3bias
//uint8_t LCD_DRIVE_MODE_14_14[1] = {1};    //   1/4duty  1/4bias
//uint8_t LCD_DRIVE_MODE_18_13[1] = {2};    //   1/8duty  1/3bias   48pinµÄÖ»Ö§³Ö1/8duty£¬µØÖ·¼ÓÔØµ½33H
//uint8_t LCD_DRIVE_MODE_18_14[1] = {3};    //   1/8duty  1/4bias
//uint8_t LCD_SYSTEM_MODE_OFF_OFF[1] = {0}; //  ÄÚ²¿ÏµÍ³Õñµ´Æ÷OFF£¬LCDÏÔʾOFF
//uint8_t LCD_SYSTEM_MODE_ON_OFF[1] = {2};  //  ÄÚ²¿ÏµÍ³Õñµ´Æ÷ON£¬LCDÏÔʾOFF
//uint8_t LCD_SYSTEM_MODE_ON_ON[1] = {3};   //  ÄÚ²¿ÏµÍ³Õñµ´Æ÷ON£¬LCDÏÔʾON
uint8_t lcd_wake_up_flag_g = 0;
SYS_DISPLAY_PAPA_T sys_display_para_g = {
   .temp_sys_mode_flag = CNV_NONE,
   .sys_and_display_mode = (SYS_DISPLAY_MODE)SYS_MODE_DEFAULT,
   .display_page_status = {
      .normal_page_status = SC_INSTANT_TOTAL,
      .para_page_status = METER_NUM
   }
};
/*ÓÃÓÚ¾¯¸æÏÔʾµÄ״̬×Öid*/
SYS_ALARM_VALVE_T sys_show_state_bytes_id_g = AV_NORMAL;
// LCD³õʼ»¯
SYS_ALARM_VALVE_T sys_clear_state_bytes_id_g = AV_NORMAL; // Çå³ý±¨¾¯ÏÔʾ
/* LCD³õʼ»¯*/
void Lcd_Init(void)
{
  //   Lcd_Write(LCD_DRIVE_MODE_COMMAND_ADDR,(uint8_t *)LCD_DRIVE_MODE_18_14,1);
//  //   Lcd_Write(LCD_DRIVE_MODE_COMMAND_ADDR,(uint8_t *)LCD_DRIVE_MODE_18_14,1);
  Lcd_Write(LCD_SYSTEM_MODE_COMMAND_ADDR, LCD_SYSTEM_MODE_ON_ON, 1);
//  Lcd_Write(LCD_SYSTEM_MODE_COMMAND_ADDR, LCD_SYSTEM_MODE_ON_ON, 1);
}
void Lcd_DeInit(void)
{
//  LCD_ALL_DISPLAY;
  Lcd_Write(LCD_SYSTEM_MODE_COMMAND_ADDR, LCD_SYSTEM_MODE_OFF_OFF, 1);
   LCD_BACKLIGHT_OFF;
  LCD_PWR_OFF;
//  Lcd_Write(LCD_SYSTEM_MODE_COMMAND_ADDR, LCD_SYSTEM_MODE_OFF_OFF, 1);
//   LCD_BACKLIGHT_OFF;
//  LCD_PWR_OFF;
}
/**************************************
Ãû³Æ£ºLcd_Sys_Init(void)
@@ -52,9 +68,9 @@
**************************************/
void Lcd_Sys_Init(void)
{
   Lcd_GPIO_Init();
   I2c0_GPIO_Clk_Init();
  LCD_PWR_ON;
   LCD_BACKLIGHT_SELECT(__SYS_STATUS_BYTES_GET(alka_low));
  delay_ms(1);
  // LCD_ALL_CLEAR;
  Lcd_Init();
@@ -196,7 +212,7 @@
****************************************/
void Lcd_Clear_AllTest(void)
{
  memset(LCD_Buffer, 0, sizeof(LCD_Buffer));
  memset(LCD_buffer, 0, sizeof(LCD_buffer));
  LCD_ALL_DISPLAY;
}
/****************************************
@@ -402,165 +418,154 @@
  }
}
void Lcd_Show_MenuProcess(void)//? ÐèÒªÍêÉÆ
void Lcd_Show_MenuProcess(SYS_DISPLAY_PAPA_T *sys_display_para_p, ErrorStatus_STM32 *pCnv_result_flag)
{
  lcd_wake_up_flag_g = 0;
   /*ʼÖÕÐèÒªµÄÏÔʾÄÚÈÝ£¨¹«Ë¾LOGO µç³ØµçÁ¿ Ë®Æ½Ïߣ©*/
//   if(__SYS_FUNC_CFG_BYTES_GET(logo_display_set) == 0)
//      LCD_DISPLAY_SEG(_LCD_SIZHULOG_23A);
//   LCD_DISPLAY_SEG(_LCD_HORIZONTALLINE_1_23A);
//   LCD_DISPLAY_SEG(_LCD_HORIZONTALLINE_2_23A);
//   Lcd_Battery(pwr_vol_g.alka_vcc, pwr_vol_g.lith_vcc);
   if(__SYS_FUNC_CFG_BYTES_GET(logo_display_set) == 0)
      LCD_DISPLAY_SEG(_LCD_SIZHULOG_23A);
   LCD_DISPLAY_SEG(_LCD_HORIZONTALLINE_1_23A);
   LCD_DISPLAY_SEG(_LCD_HORIZONTALLINE_2_23A);
   Lcd_Battery(pwr_vol_g.alka_vcc, pwr_vol_g.lith_vcc);
//   /*Ìõ¼þÅжϵÄÏÔʾÄÚÈÝ£¨·§¿Ø ±¨¾¯ Ô¶´« ÆøÌå½éÖÊ ÏÔʾģʽ ¼Æ·Ñģʽ ÄæÁ÷ ¿ª»§±êÖ¾ É豸/ºǫ́½áËãģʽ£©*/
////   sys_admin_g.sys_admin.state_bytes.media_status = AIR;
//   Lcd_MediumShow((MEDIA_STATUS)sys_admin_g.sys_admin.state_bytes.media_status);
//   Lcd_BacksetShow(sys_admin_g.sys_admin.state_bytes.flow_direction);
//   Lcd_ValveShow((VALVE_STATUS)sys_admin_g.sys_admin.state_bytes.valve_state, op_cl_valve_cause_id,
//                        sys_admin_g.sys_admin.state_bytes.valve_lock);
//   Lcd_WaringShow_New(alarm_list_cnt,calendar_g.Second);
////   Lcd_WarningShow(&sys_show_state_bytes_id_g, &sys_clear_state_bytes_id_g);
//   Lcd_GprsShow(sys_admin_g.sys_admin.state_bytes.gprs_status, NB_OR_4G_FLAG, gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.signal_intensity);
//   Lcd_BillingShow(sys_admin_g.sys_admin.state_bytes.billing_type, 1, ladder_price_cfg_para_true_g.set_price_type_mode);
//   Lcd_ModeFlagActiveShow(&sys_some_flag_g);
//   if (sys_admin_g.sys_admin.state_bytes.account_state)
//      LCD_DISPLAY_SEG(_LCD_ACCOUNT_23A);
   /*Ìõ¼þÅжϵÄÏÔʾÄÚÈÝ£¨·§¿Ø ±¨¾¯ Ô¶´« ÆøÌå½éÖÊ ÏÔʾģʽ ¼Æ·Ñģʽ ÄæÁ÷ ¿ª»§±êÖ¾ É豸/ºǫ́½áËãģʽ£©*/
//   sys_admin_g.sys_admin.state_bytes.media_status = AIR;
   Lcd_MediumShow((MEDIA_STATUS)sys_admin_g.sys_admin.state_bytes.media_status);
   Lcd_BacksetShow(sys_admin_g.sys_admin.state_bytes.flow_direction);
   Lcd_ValveShow((VALVE_STATE_T)sys_admin_g.sys_admin.state_bytes.valve_state, op_cl_valve_cause_id,
                        sys_admin_g.sys_admin.state_bytes.valve_lock);
   Lcd_WaringShow_New(alarm_list_cnt,calendar_g.Second);
//   Lcd_WarningShow(&sys_show_state_bytes_id_g, &sys_clear_state_bytes_id_g);
   Lcd_GprsShow(sys_admin_g.sys_admin.state_bytes.gprs_status, NB_OR_4G_FLAG, gprs_protocol_head_tail_g.gprs_protocol_normal_data_head.signal_intensity);
   Lcd_BillingShow(sys_admin_g.sys_admin.state_bytes.billing_type, 1, ladder_price_cfg_para_true_g.set_price_type_mode);
   Lcd_ModeFlagActiveShow(&sys_some_flag_g);
   if (sys_admin_g.sys_admin.state_bytes.account_state)
      LCD_DISPLAY_SEG(_LCD_ACCOUNT_23A);
//   /*²»Í¬Ò³ÃæµÄÏÔʾÄÚÈÝ*/
//   if (sys_display_para_p->sys_and_display_mode == NORMAL_MODE)
//   {
//      if(sys_display_para_p->display_page_status.normal_page_status == PRICE_BALANCE &&
//            __SYS_FUNC_CFG_BYTES_GET(balance_display_set) == 1 && __SYS_FUNC_CFG_BYTES_GET(price_display_set) == 1)
//         sys_display_para_p->display_page_status.normal_page_status++;
//      switch (sys_display_para_p->display_page_status.normal_page_status) // Õý³£ÏÔÊ¾Ò³Ãæ
//      {
//      case SC_INSTANT_TOTAL:
//         Lcd_NormalPage_1(sys_realtime_data_g.measure_para_s.instant_sc, sys_realtime_data_g.measure_para_s.forward_cumulate_sc);
//         break;
//      case PRICE_BALANCE:
//         Lcd_NormalPage_2(billing_real_para_g.price_now * 0.0001f, billing_real_para_g.balance_now, ladder_price_cfg_para_true_g.set_price_type_mode);
//         break;
//      case TEMP_SC_TOTAL:
//         Lcd_NormalPage_3(sys_realtime_data_g.measure_para_s.temperature, sys_realtime_data_g.measure_para_s.forward_cumulate_sc);
//         break;
//      case PRESS_SC_TOTAL:
//         Lcd_NormalPage_4(sys_realtime_data_g.measure_para_s.pressure, sys_realtime_data_g.measure_para_s.forward_cumulate_sc);
//         break;
////         case WC_INSTANT_TOTAL:
////            Lcd_NormalPage_5(sys_realtime_data_g.measure_para_s.instant_wc, sys_realtime_data_g.measure_para_s.forward_cumulate_wc);
////            break;
//      default:
//         break;
//      }
//   }
//   else if (sys_display_para_p->sys_and_display_mode == DISPLAY_PARA)
//   {
//      LCD_DISPLAY_SEG(_LCD_LOOKUP_23A);                                 // ²éÕÒͼ±ê
//      switch (sys_display_para_p->display_page_status.para_page_status) // ²ÎÊýÏÔÊ¾Ò³Ãæ
//      {
//      case METER_NUM:
//         Lcd_ParaPage_MeterNum(master_basic_papa_g.factory_number);
//         break;
//      case OTHER_METER_NUM:
//         Lcd_ParaPage_ThirdParty_MeterNum(0,NULL);
//         break;
//      case DATE_TIME:
//         Lcd_Show_time(Bcd_2_Hex(calendar_g.Year), Bcd_2_Hex(calendar_g.Month), Bcd_2_Hex(calendar_g.Date),
//                              Bcd_2_Hex(calendar_g.Hour), Bcd_2_Hex(calendar_g.Minute), Bcd_2_Hex(calendar_g.Second));
//         break;
//      case IP_PORT:
//         Lcd_ParaPage_IpPort(gprs_network_cfg_para_g.gprs_ip_1, &gprs_network_cfg_para_g.gprs_port_1);
//         break;
//      case OTHER_IP_PORT:
//         Lcd_ParaPage_ThirdParty_IpPort(0,gprs_network_cfg_para_g.gprs_ip_1, &gprs_network_cfg_para_g.gprs_port_1);
//         break;
//      case SW_VER:
//         Lcd_ParaPage_SoftVer(master_soft_hard_para_g.master_firmware_ver);
//         break;
//      case HW_VER:
//         Lcd_ParaPage_HardVer(master_soft_hard_para_g.master_hardware_ver);
//         break;
//    case SOUND_VEL:
//         Lcd_ParaPage_SoundVel(sys_realtime_data_g.state_para_s.sound_vel);
//          break;
//      case SEC_CORR_NOW:
//         Lcd_SecCorr_FixedShow(SEC_CORR_NOW);
//         break;
//      case SEC_CORR_NOW_PARA_1:
//         Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_1,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_NOW_PARA_2:
//         Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_2,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_NOW_PARA_3:
//         Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_3,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_NOW_PARA_4:
//         Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_4,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_NOW_PARA_5:
//         Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_5,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_OLD:
//         Lcd_SecCorr_FixedShow(SEC_CORR_OLD);
//         break;
//      case SEC_CORR_OLD_PARA_1:
//         Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_1,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_OLD_PARA_2:
//         Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_2,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_OLD_PARA_3:
//         Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_3,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_OLD_PARA_4:
//         Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_4,&sec_order_corr_set_g);
//         break;
//      case SEC_CORR_OLD_PARA_5:
//         Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_5,&sec_order_corr_set_g);
//         break;
//      default:
//         break;
//      }
//   }
//   else if (sys_display_para_p->sys_and_display_mode == CALIB_MODE)
//   {
//      LCD_DISPLAY_SEG(_LCD_CHECK_23A); // ¼ì¶¨Í¼±ê
//      Lcd_CalibPage(cal_display_exit_data_g, sys_realtime_data_g.measure_para_s.cal_cumulate_reserve[1]);
//   }
//   else if (sys_display_para_p->sys_and_display_mode == SET_PARA_MODE)
//   {
//      LCD_DISPLAY_SEG(_LCD_CONFIGURATION_23A); // ÉèÖÃͼ±ê
//      Lcd_SuccErrPage(SUCCESS_0);
//   }
  if (*pCnv_result_flag == ERROR_1) // Ä£Ê½Çл»´íÎó
  {
    Lcd_SuccErrPage(ERROR_1);
      ErrorShow_TxtendTimer_Clk_Init();
      ETx_CR_CEN_Setable(ET1,ENABLE);
      if(   ETx_ISR_OVIF_Chk(ET1)==SET)
      {
         ETx_ISR_OVIF_Clr(ET1);
         ETx_CR_CEN_Setable(ET1,DISABLE);
         *pCnv_result_flag = SUCCESS_0;
      }
  }
  else
  {
    /*²»Í¬Ò³ÃæµÄÏÔʾÄÚÈÝ*/
    if (sys_display_para_p->sys_and_display_mode == NORMAL_MODE)
    {
         if(sys_display_para_p->display_page_status.normal_page_status == PRICE_BALANCE &&
               __SYS_FUNC_CFG_BYTES_GET(balance_display_set) == 1 && __SYS_FUNC_CFG_BYTES_GET(price_display_set) == 1)
            sys_display_para_p->display_page_status.normal_page_status++;
      switch (sys_display_para_p->display_page_status.normal_page_status) // Õý³£ÏÔÊ¾Ò³Ãæ
      {
      case SC_INSTANT_TOTAL:
        Lcd_NormalPage_1(sys_realtime_data_g.measure_para_s.instant_sc, sys_realtime_data_g.measure_para_s.forward_cumulate_sc);
            break;
         case PRICE_BALANCE:
            Lcd_NormalPage_2(billing_real_para_g.price_now * 0.0001f, billing_real_para_g.balance_now, ladder_price_cfg_para_true_g.set_price_type_mode);
            break;
         case TEMP_SC_TOTAL:
            Lcd_NormalPage_3(sys_realtime_data_g.measure_para_s.temperature, sys_realtime_data_g.measure_para_s.forward_cumulate_sc);
            break;
         case PRESS_SC_TOTAL:
            Lcd_NormalPage_4(sys_realtime_data_g.measure_para_s.pressure, sys_realtime_data_g.measure_para_s.forward_cumulate_sc);
            break;
//         case WC_INSTANT_TOTAL:
//            Lcd_NormalPage_5(sys_realtime_data_g.measure_para_s.instant_wc, sys_realtime_data_g.measure_para_s.forward_cumulate_wc);
//            break;
      default:
        break;
      }
    }
    else if (sys_display_para_p->sys_and_display_mode == DISPLAY_PARA)
    {
      LCD_DISPLAY_SEG(_LCD_LOOKUP_23A);                                 // ²éÕÒͼ±ê
      switch (sys_display_para_p->display_page_status.para_page_status) // ²ÎÊýÏÔÊ¾Ò³Ãæ
      {
         case METER_NUM:
        Lcd_ParaPage_MeterNum(master_basic_papa_g.factory_number);
        break;
         case OTHER_METER_NUM:
            Lcd_ParaPage_ThirdParty_MeterNum(0,NULL);
            break;
      case DATE_TIME:
        Lcd_Show_time(Bcd_2_Hex(calendar_g.Year), Bcd_2_Hex(calendar_g.Month), Bcd_2_Hex(calendar_g.Date),
                      Bcd_2_Hex(calendar_g.Hour), Bcd_2_Hex(calendar_g.Minute), Bcd_2_Hex(calendar_g.Second));
        break;
      case IP_PORT:
        Lcd_ParaPage_IpPort(gprs_network_cfg_para_g.gprs_ip_1, &gprs_network_cfg_para_g.gprs_port_1);
        break;
         case OTHER_IP_PORT:
        Lcd_ParaPage_ThirdParty_IpPort(0,gprs_network_cfg_para_g.gprs_ip_1, &gprs_network_cfg_para_g.gprs_port_1);
        break;
      case SW_VER:
        Lcd_ParaPage_SoftVer(master_soft_hard_para_g.master_firmware_ver);
        break;
      case HW_VER:
        Lcd_ParaPage_HardVer(master_soft_hard_para_g.master_hardware_ver);
        break;
       case SOUND_VEL:
            Lcd_ParaPage_SoundVel(sys_realtime_data_g.state_para_s.sound_vel);
             break;
         case SEC_CORR_NOW:
            Lcd_SecCorr_FixedShow(SEC_CORR_NOW);
            break;
         case SEC_CORR_NOW_PARA_1:
            Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_1,&sec_order_corr_set_g);
            break;
         case SEC_CORR_NOW_PARA_2:
            Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_2,&sec_order_corr_set_g);
            break;
         case SEC_CORR_NOW_PARA_3:
            Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_3,&sec_order_corr_set_g);
            break;
         case SEC_CORR_NOW_PARA_4:
            Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_4,&sec_order_corr_set_g);
            break;
         case SEC_CORR_NOW_PARA_5:
            Lcd_SecCorr_ParaShow(SEC_CORR_NOW_PARA_5,&sec_order_corr_set_g);
            break;
         case SEC_CORR_OLD:
            Lcd_SecCorr_FixedShow(SEC_CORR_OLD);
            break;
         case SEC_CORR_OLD_PARA_1:
            Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_1,&sec_order_corr_set_g);
            break;
         case SEC_CORR_OLD_PARA_2:
            Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_2,&sec_order_corr_set_g);
            break;
         case SEC_CORR_OLD_PARA_3:
            Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_3,&sec_order_corr_set_g);
            break;
         case SEC_CORR_OLD_PARA_4:
            Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_4,&sec_order_corr_set_g);
            break;
         case SEC_CORR_OLD_PARA_5:
            Lcd_SecCorr_ParaShow(SEC_CORR_OLD_PARA_5,&sec_order_corr_set_g);
            break;
      default:
        break;
      }
    }
    else if (sys_display_para_p->sys_and_display_mode == CALIB_MODE)
    {
      LCD_DISPLAY_SEG(_LCD_CHECK_23A); // ¼ì¶¨Í¼±ê
      Lcd_CalibPage(cal_display_exit_data_g, sys_realtime_data_g.measure_para_s.cal_cumulate_reserve[1]);
    }
    else if (sys_display_para_p->sys_and_display_mode == SET_PARA_MODE)
    {
      LCD_DISPLAY_SEG(_LCD_CONFIGURATION_23A); // ÉèÖÃͼ±ê
      Lcd_SuccErrPage(SUCCESS_0);
    }
  }
   /*È«²¿Êä³öÏÔʾ*/
   LCD_ALL_DISPLAY;
   /*Çå³ýÏÔʾÊý×é,ÓÃÓÚÏÂÒ»´ÎÌî³ä*/
   memset(LCD_Buffer, 0, sizeof(LCD_Buffer));
   memset(LCD_buffer, 0, sizeof(LCD_buffer));
}
void lcdDisplayPro(void)
{
   if(__SYS_DELAY_SEC_TIME_GET_(sys_active_time) >0)
   {
      if(LCD_PWR_IO_READ==Bit_RESET)
      {
         //Ê×´ÎÉϵç³õʼ»¯
         Lcd_Sys_Init();
      }else
      {
         //Ö»¸üÐÂÏÔʾÄÚÈÝ
      }
      Lcd_Show_MenuProcess();
   }else
   {
      Lcd_DeInit();
   }
}