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

📄 display.c

📁 此源代码为电力系统中的RTU终端反馈!具有GPRS通讯功能!
💻 C
📖 第 1 页 / 共 2 页
字号:
/////////////////////////
//     LCDDisPlay.c
/////////////////////////
#include "display.h"
#include "yx_key.h"
 char Code[6]={'0'};
 char Value[8]={'0'};
 char Sign;
 char *LCD = LCDMEM;
 void displaydata(long data);
 void disp( char code1[], long data, char  Sign);
 void disp1( char code1[], long data);
 const int BTL[]={0,300,600,1200,2400,4800,9600};
const char digit[] = {
0xAF,  // "0"    LCD segments a+b+c+d+e+f+g 
0xA0,  // "1" 
0xCB,  // "2" 
0xE9,  // "3" 
0xE4,  // "4" 
0x6D,  // "5" 
0x6F,  // "6" 
0xA8,  // "7" 
0xEF,  // "8" 
0xED,  // "9" 
0x40   //"-"
};

void  Display_Bit(char i,char x) //第1个参数是表示显示的值,第2个参数是表示第几位,
{
  int m, n;
  switch (x)
  {
     case 1:  LCD[0]=digit[i];break;
     case 2:  m=digit[i]<<4; 
              LCD[1]=m;
              n=digit[i]>>4;
              LCD[2]=n;break;
     case 3:  LCD[3]=digit[i];break;
     case 4:  m=digit[i]<<4;
              LCD[4]=m;
              n=digit[i]>>4; 
              LCD[5]=n;break;
     case 5:  LCD[6]=digit[i];break;
     case 6:  LCD[7]=digit[i];break;
     case 7:  m=digit[i]<<4;
              n=digit[i]>>4;
              LCD[19]=m|n;break;
     case 8:  m=digit[i]<<4;
              n=digit[i]>>4;
              LCD[18]=m|n;break;
     case 9:  m=digit[i]<<4;
              n=digit[i]>>4;
              LCD[16]=m|n;break;
     case 10: m=digit[i]<<4;
              n=digit[i]>>4;
              LCD[15]=m|n;break;
     case 11: m=digit[i]<<4;
              LCD[8]=m;
              n=digit[i]>>4;
              LCD[9]=n;  break;
     case 12: LCD[10]=digit[i];break;
     case 13: m=digit[i]<<4;
              LCD[11]=m;
              n=digit[i]>>4;
              LCD[12]=n;  break; 
     case 14: LCD[13]=digit[i];break;                        
     default:break;
  }
}

void Display_Code(char* Code)
{ 
   char i;
   for(i=0;i<6;i++)
   {
    Display_Bit((Code[i]-48),(i+1));  
   }
}

void Display_Digital(char* Value)
{
   char i,j=0;
   for(i=0;i<8;i++)
   {
    j=14 - i; 
    Display_Bit(Value[i],j);
   }
}
void Display_Letter (char Sign)
{
    char *LCD = LCDMEM;

  LCD[14] &= ~0x02;      // =L13
  LCD[12] &= ~0x20;      // =L12
  LCD[11] &= ~0x02;      // =L11
  LCD[9] &= ~0x20;      // =L10
  LCD[8] &= ~0x02;      // =L9
  LCD[16] &= ~0x01;      // =L8
  LCD[17] &= ~0x20;      // =L7
  LCD[18] &= ~0x01;      // =L6

    switch (Sign)
    {        
    case UA_LCD: 
    LCD[4] |= 0x08;      //L1
    LCD[9] |= 0x10;     //U  
    LCD[12] |= 0x40;    //dot
    break;
    
    case IA_LCD:
    LCD[4] |= 0x08;      //L1
    LCD[11] |= 0x01;      //A
    LCD[12] |= 0x01;  
    LCD[9] |= 0x40;      //dot 
    break;
    
    case UB_LCD:
    LCD[5] |= 0x80;     //L2
    LCD[9] |=0x10;      //U
    LCD[12] |= 0x40;   //dot
    break;
    
    case IB_LCD:
    LCD[5] |= 0x80;    //L2
    LCD[11] |= 0x01;    //A
    LCD[12] |= 0x01; 
    LCD[9] |= 0x40;    //dot 
    break;
    
    case UC_LCD:
    LCD[5] |=0x10;     //L3  
    LCD[9] |=0x10;    //U
    LCD[12] |= 0x40;  //dot
    break;
    
    case IC_LCD:
    LCD[5] |=0x10;    //L3 
    LCD[11] |=0x01;   //A
    LCD[12] |=0x01;  
    LCD[9] |= 0x40;   //dot 
    break;
    
    case P_LCD:
    if( BD_data.P > 0)
    {
     LCD[2] |= 0x80;    //+P
    }
    else
    {
     LCD[1] |= 0x80;    //-P
    } 
    LCD[9]|=0x10;       //W
    LCD[10]|=0x10;
    LCD[11]|=0x01;
    break;
    
    case Q_LCD:
    if( BD_data.P > 0)
    {
      LCD[2] |= 0x10;    //+Q
    }
    else
    {
      LCD[1] |= 0x01;    //-Q
    } 
    LCD[9]|=0x10;        //VAR
    LCD[11]|=0x01;
    LCD[12]|=0x11;
    break;
   
    case COS_LCD:
    LCD[9] |= 0x40;      //dot 
    break; 
  
    case PA_LCD:
    if(BD_data.Pa > 0) 
    {
     LCD[2]|=0x80;     //+P
    }
    else 
    {
      LCD[1]|=0x08;   //-P
    }   
    LCD[4]|=0x08;     //L1
    LCD[9]|=0x10;     //W
    LCD[10]|=0x10;
    LCD[11]|=0x01;
    break;
    
    case PB_LCD:
    if(BD_data.Pb>0) 
    {
      LCD[2]|=0x80;     //+P
    }   
    else 
    {
      LCD[1]|=0x08;    //-P 
    }
    LCD[5]|=0x80;      //L2
    LCD[9]|=0x10;      //W
    LCD[10]|=0x10;
    LCD[11]|=0x01;
    break;
    
    case PC_LCD:
    if(BD_data.Pc > 0) 
    {
      LCD[2]|=0x80;    //+P
    }
    else 
    {
      LCD[1]|=0x08;    //-P
    }
    LCD[5]|=0x10;     //L3 
    LCD[9]|=0x10;     //W
    LCD[10]|=0x10;
    LCD[11]|=0x01;
    break;
    
  case QA_LCD:
  if(BD_data.Qa>0)
  {
    LCD[2]|=0x10;   //+Q
  }  
  else
  { 
    LCD[2]|=0x01;   //-Q
  }
  LCD[4]|=0x08 ;   //L1
  LCD[9]|=0x10;    //VAR
  LCD[11]|=0x01;
  LCD[12]|=0x11;
  break;
  
  
  case QB_LCD:
  if(BD_data.Qb>0) 
  {
    LCD[2]|=0x10;     //+Q
  }
  else 
  {
    LCD[2]|=0x01;    //-Q
  }
  LCD[5] |= 0x80;    //L2
  LCD[9]|=0x10;      //VAR
  LCD[11]|=0x01;
  LCD[12]|=0x11;
  break;
  
  case QC_LCD:
  if(BD_data.Qc>0) 
  {
    LCD[2]|=0x10;     //+Q
  } 
  else 
  {
    LCD[2]|=0x01;     //-Q
  }
  LCD[5]|=0x10;      //L3 
  LCD[9]|=0x10;      //VAR
  LCD[11]|=0x01;
  LCD[12]|=0x11;
  break;
  
  case COSA_LCD:
  LCD[4]|=0x08 ;        //L1,无量纲值  
  LCD[9] |= 0x40;      //dot 
  break;
  
  case COSB_LCD:
  LCD[5] |= 0x80;    //L2
  LCD[9] |= 0x40;      //dot 
  break;
  
  case COSC_LCD:
  LCD[5]|=0x10;        //L3 
  LCD[9] |= 0x40;      //dot 
  break;

  case I0_LCD:
  LCD[11] |= 0x01;      //A
  LCD[12] |= 0x01;  
  LCD[9] |= 0x40;      //dot 
  break;

////////////////////////////////////////////////=============0608========
  case WEI_1:
  LCD[14] |= 0x02;      // =L13
  break;

  case WEI_2:
  LCD[12] |= 0x20;      // =L12
  break;

  case WEI_3:
  LCD[11] |= 0x02;      // =L11
  break;

  case WEI_4:
  LCD[9] |= 0x20;      // =L10
  break;

  case WEI_5:
  LCD[8] |= 0x02;      // =L9
  break;

  case WEI_6:
  LCD[16] |= 0x01;      // =L8
  break;

  case WEI_7:
  LCD[17] |= 0x20;      // =L7
  break;

  case WEI_8:
  LCD[18] |= 0x01;      // =L6
  break;

  default : break;
 } 
}

////////////////////////////////////////////////=============0601========
void Display()
{
   int   i = 0;  
  for(i=0;i<20;i++)
   {
    LCD[i]=0;
   }
   if( (P2Counter) ==1)
   {
     switch(P1Counter)
      {         
         case UA_LCD:
            disp("000001", BD_data.Ua, UA_LCD);      break;         
         case IA_LCD:
         disp("000002", BD_data.Ia, IA_LCD);        break;      
         case UB_LCD:
         disp("000003", BD_data.Ub, UB_LCD);         break;         
         case IB_LCD:
          disp("000004", BD_data.Ib, IB_LCD);         break;         
         case UC_LCD:
         disp("000005", BD_data.Uc, UC_LCD);         break;         
         case IC_LCD:
          disp("000006", BD_data.Ic, IC_LCD);         break;         
         case P_LCD:
          disp("000007", BD_data.P, P_LCD);         break;         
         case Q_LCD:
          disp("000008", BD_data.Q, Q_LCD);         break;         
         case COS_LCD:
          disp("000009", BD_data.COS, COS_LCD);         break;         
         case PA_LCD:
         disp("000010", BD_data.Pa, PA_LCD);         break;         
         case PB_LCD:
          disp("000011", BD_data.Pb, PB_LCD);         break;         
         case PC_LCD:
          disp("000012",BD_data.Pc, PC_LCD);         break;         
         case QA_LCD:
         disp("000013",BD_data.Qa, QA_LCD);         break;         

⌨️ 快捷键说明

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