⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.c

📁 430系列开发之MSP430FE42x开发代码实例
💻 C
字号:
/** \file 
  * ESP430CE1 Application Program Example
  * Display Data
  *
  * This file displays the data on the LCD display
  *
  * \author Stefan Schauer
  * \date   07/28/2003
  */
//====================================================================

#include "device.h"
#include "fet4xx_rtclcd.h"
#include "display.h"
#include "emeter.h"
#include "parameter.h"

#ifdef withDisplay

// ************************************************************
// Definitions & Declarations
// ************************************************************

enum {
     display_startup,
     display_off,
     display_clock,
     display_date,
     display_volt,
     display_current,
     display_vpeak,
     display_ipeak,
     display_freq,
     display_cosphi,
//     display_ch1,
//     display_ch2,
//     display_ch3,
     display_temp,
     display_power,
     display_energy,
     display_last
    };

const char * txt_idle = "IDLE";

const char *  txt_display[]= {
    "",
    "OFF",
    "TIME",
    "DATE",
    "VOLT",
    "CURR",
    "VPEAK",
    "IPEAK",
    "FREQ",
    "COSPHI",
    "TEMP",
    "POWER",
    "ENERGY",
    "OFF",
  };

unsigned char Display_Mode = display_startup;
unsigned char Display_Hold = 0;

// ************************************************************
// functions
// ************************************************************
void DisplayIDLE(void)
{
      LCDtext ((unsigned char *) txt_idle, 6, 6);
}


void DisplayNextData(void)
{
      LCD_ON;
      Display_Mode ++; 
      Display_Hold = 2;
      LCDtext ((unsigned char *) txt_display[Display_Mode], 6, 6);
}

void DisplayData(void)
{
  int svalue;
  unsigned int value;
  unsigned long lvalue;

  if (Display_Hold > 0)
  {
    Display_Hold--;
  }
  else
  {
    if (Display_Mode > 1) LCDM1 = (unsigned char) * ((unsigned char*)(TLCD_Tab + Display_Mode));
    
    switch (Display_Mode)
    {
      case display_startup:
              //for (i=0; i <= sbanner + 5; )
              {
                //LPM0;
                static unsigned char i = 0;
                if (i < 6)
                { LCDtext ((unsigned char *) &banner[0], i + 1, 6); }
                else
                { LCDtext ((unsigned char *) &banner[i - 5], 6, 6); }
                i++;
                if (i > sbanner + 5) Display_Mode = display_clock;
              }
              break;
      case display_off:
              Display_Mode = display_off;
              LCD_OFF;
              break;
      case display_clock:
              Dis_Clock();
              break;
      case display_date:
              Dis_Date();
              break;
      case display_volt:
              lvalue = ((unsigned long) ((V1RMS) * (s_parameters.VRatio*1000))/1000);
              LCDdecu32(lvalue, 7, 7, 3);
              break;
      case display_current:
              lvalue = ((unsigned long) (IRMS_HI * s_parameters.IRatio*1000))/1000;
              LCDdecu32(lvalue, 7, 7, 3);
              break;
      case display_vpeak:
              lvalue = ((unsigned long) ((VPEAK) * (s_parameters.VRatio*1000))/1000);
              LCDdecu32(lvalue, 7, 7, 3);
              break;
      case display_ipeak:
              lvalue = ((unsigned long) (IPEAK * s_parameters.IRatio*1000))/1000;
              LCDdecu32(lvalue, 7, 7, 3);
              break;
      case display_freq:
              lvalue = (unsigned long)((float)(1000/((float)savedRET[22])/((long)256 * (long)4096)));
              LCDdecu32(lvalue, 7, 7, 3);
              break;
      case display_cosphi:
              value = (unsigned int)((((unsigned long)POWERFCT*1000)/POW_2_14));
              ((signed char)CAPIND < 0) ? (svalue = -(signed int)value) : (svalue = value);
              LCDdec16(svalue, 5, 7, 3);
              break;
/*      case display_ch1:
                LCDdecu16(wfs1, 5, 7, 0);
              break;
      case display_ch2:
                LCDdecu16(wfs2, 5, 7, 0);
              break;
      case display_ch3:
                LCDdecu16(wfs3, 5, 7, 0);
              break;  */
      case display_temp:
              lvalue = (unsigned long) (((unsigned long)temperature * (TempGain*100)) - (TempOffset*100));
              LCDdecu32(lvalue, 4, 7, 2); // Temperature (degree)
              break;
      case display_power:
              lvalue = (unsigned long)((float) energy.l * (float)(s_parameters.EnergyRatio)/(1000000));
              LCDdecu32(lvalue, 7, 7, 3); // Active Power (kW);
              break;
      case display_energy:
              lvalue = (unsigned long)((float) total_energy * (float)(s_parameters.EnergyRatio)/((float)1000000*(float)3600));
              LCDdecu32(lvalue, 7, 7, 3); // Active Energy1 (kWh):
              break;
      case display_last:
      default:  
              Display_Mode = display_off;
              SetupLCD();
              break;
    }    
  }
}

#endif // withDisplay

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -