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

📄 113.c

📁 用MSP430(C)写的红外抄表程序,是初学者好代码
💻 C
📖 第 1 页 / 共 4 页
字号:
      else if((Clock_iic_buffer0[5]&0x0F)==0x0F)
      {Clock_iic_buffer0[5] -=0x06;}
     
      LCD[2]=Digit[Clock_iic_buffer0[5]>>4];
      LCD[3]=Digit[Clock_iic_buffer0[5]&0xF];
      LCD[5] |=0X08; LCD[6] |=0X08;
      delayms(10);
    }    
    if(setup_lcd_ok==1)
    {
      LCD[2]=Digit[Clock_iic_buffer0[5]>>4];
      LCD[3]=Digit[Clock_iic_buffer0[5]&0XF];
      LCD[5] |=0X08; LCD[6] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
      LCD[2]=0;LCD[3]=0;setup_lcd_ok=1;
       LCD[5] &=0XF7; LCD[6] &=0XF7;
       delayms(10); 
    }
    break;
     }
    
  case miniter:
    {
      while(P3IN==0xBF) 
    {
      Clock_iic_buffer0[6]++;
      
      if( Clock_iic_buffer0[6]>0x59)  {Clock_iic_buffer0[6]=0; }
      
      if((Clock_iic_buffer0[6]&0x0f)==0x0A){Clock_iic_buffer0[6] +=0x06;}
      
      LCD[4]=Digit[Clock_iic_buffer0[6]>>4];
      LCD[5]=Digit[Clock_iic_buffer0[6]&0x0F];
      LCD[5] |=0X08; LCD[6] |=0X08;
      delayms(10);
     }
   while(P3IN==0xEF)
    {
     Clock_iic_buffer0[6]=Clock_iic_buffer0[6]-1;
      if( Clock_iic_buffer0[6]==0XFF)  {Clock_iic_buffer0[6]=0x59;}
      if((Clock_iic_buffer0[6]&0x0f)==0x0F){Clock_iic_buffer0[6] -=0x06;}
      LCD[4]=Digit[Clock_iic_buffer0[6]>>4];
      LCD[5]=Digit[Clock_iic_buffer0[6]&0x0F];
      LCD[5] |=0X08; LCD[6] |=0X08;
      delayms(10);
    }    
    if(setup_lcd_ok==1)
    {
      LCD[2]=Digit[Clock_iic_buffer0[5]>>4];
      LCD[3]=Digit[Clock_iic_buffer0[5]&0x0F];
      LCD[4]=Digit[Clock_iic_buffer0[6]>>4];
      LCD[5]=Digit[Clock_iic_buffer0[6]&0x0F];
      LCD[6]=Digit[Clock_iic_buffer0[7]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[7]&0x0F];
      LCD[5] |=0X08; LCD[6] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
      LCD[4]=0;LCD[5]=0;setup_lcd_ok=1;
       LCD[5] &=0XF7; LCD[6] &=0XF7;
       delayms(10); 
    }
    break; 
      
    }
 case second:
    {
      while(P3IN==0xBF) 
    {
      Clock_iic_buffer0[7]=Clock_iic_buffer0[7]+ 1;
      if( Clock_iic_buffer0[7]>0x59)  {Clock_iic_buffer0[7]=0; }
      if((Clock_iic_buffer0[7]&0x0f)==0x0A){Clock_iic_buffer0[7] +=0x06;}
      LCD[6]=Digit[Clock_iic_buffer0[7]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[7]&0x0F];
      LCD[5] |=0X08; LCD[6] |=0X08;
      delayms(10);
     }
   while(P3IN==0xEF)
    {
      Clock_iic_buffer0[7]=Clock_iic_buffer0[7]-1;
      if( Clock_iic_buffer0[7]==0xFF)  {Clock_iic_buffer0[7]=0x59;}
      if((Clock_iic_buffer0[7]&0x0f)==0x0F){Clock_iic_buffer0[7] -=0x06;}
      LCD[6]=Digit[Clock_iic_buffer0[7]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[7]&0x0F];
      LCD[5] |=0X08; LCD[6] |=0X08;
      delayms(10);
    }    
    if(setup_lcd_ok==1)
    {
      LCD[2]=Digit[Clock_iic_buffer0[5]>>4];
      LCD[3]=Digit[Clock_iic_buffer0[5]&0x0F];
      LCD[4]=Digit[Clock_iic_buffer0[6]>>4];
      LCD[5]=Digit[Clock_iic_buffer0[6]&0x0F];
      LCD[6]=Digit[Clock_iic_buffer0[7]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[7]&0x0F];
      LCD[5] |=0X08; LCD[6] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
     
      LCD[6]=0;LCD[7]=0;setup_lcd_ok=1;
      LCD[5] &=0XF7; LCD[6] &=0XF7;
       delayms(10); 
    }
    break; 
      
    }
 case sampl:
    {
      while(P3IN==0xBF) 
    {
      sampling=sampling+ 1;
      if( sampling>99)  {sampling=0; }
      LCD[6]=Digit[sampling/10];
      LCD[7]=Digit[sampling%10]; LCD[7] |=0X08;
      delayms(10);
     }
   while(P3IN==0xEF)
    {
      sampling=sampling-1;
      if( sampling<0)  {sampling=99;}
      LCD[6]=Digit[sampling/10];
      LCD[7]=Digit[sampling%10]; LCD[7] |=0X08;
      delayms(10);
    }    
    if(setup_lcd_ok==1)
      
    {
      LCD[2]=0;LCD[3]=0;LCD[4]=0;LCD[5]=0;
      LCD[6]=Digit[sampling/10];
      LCD[7]=Digit[sampling%10];
      LCD[7] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
      LCD[6]=0;LCD[7]=0;setup_lcd_ok=1;LCD[7] &=0XF7;
       delayms(10); 
    }
    break; 
      
    }    

 case day:
    {
      while(P3IN==0xBF) 
    {
      Clock_iic_buffer0[3]=Clock_iic_buffer0[3]+ 1;
      if( Clock_iic_buffer0[3]>0x12)  {Clock_iic_buffer0[3]=1; }
      if((Clock_iic_buffer0[3]&0x0f)==0x0A){Clock_iic_buffer0[3] +=0x06;}
      LCD[4]=Digit[Clock_iic_buffer0[3]>>4];
      LCD[5]=Digit[Clock_iic_buffer0[3]&0X0F];
      delayms(10);
     }
   while(P3IN==0xEF)
    {
      Clock_iic_buffer0[3]=Clock_iic_buffer0[3]-1;
      if( Clock_iic_buffer0[3]==0)  {Clock_iic_buffer0[3]=0x12;}
      if((Clock_iic_buffer0[3]&0x0f)==0x0F){Clock_iic_buffer0[3] -=0x06;}
      LCD[4]=Digit[Clock_iic_buffer0[3]>>4];
      LCD[5]=Digit[Clock_iic_buffer0[3]&0X0F];
      delayms(10);
    }    
    if(setup_lcd_ok==1)
    {
      LCD[2]=Digit[Clock_iic_buffer0[2]&0x0F]; LCD[3]=0x00;
       LCD[4]=Digit[Clock_iic_buffer0[3]>>4];
       LCD[5]=Digit[Clock_iic_buffer0[3]&0X0F];
       LCD[6]=Digit[Clock_iic_buffer0[4]>>4];
       LCD[7]=Digit[Clock_iic_buffer0[4]&0X0F];
       LCD[4] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
      LCD[4]=0;LCD[5]=0;setup_lcd_ok=1;LCD[4] &=0XF7;
       delayms(10); 
    }
    break; 
      
    }    

 case month:
    {
      while(P3IN==0xBF) 
    {
      Clock_iic_buffer0[4]=Clock_iic_buffer0[4]+ 1;
      if( Clock_iic_buffer0[4]>0x31)  {Clock_iic_buffer0[4]=1; }
      if((Clock_iic_buffer0[4]&0x0f)==0x0A){Clock_iic_buffer0[4] +=0x06;}  
      LCD[6]=Digit[Clock_iic_buffer0[4]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[4]&0X0F];
      delayms(10);
     }
   while(P3IN==0xEF)
    {
      Clock_iic_buffer0[4]=Clock_iic_buffer0[4]-1;
      if( Clock_iic_buffer0[4]==0)  {Clock_iic_buffer0[4]=0x31;}
      if((Clock_iic_buffer0[4]&0x0f)==0x0F){Clock_iic_buffer0[4] -=0x06;}
      LCD[6]=Digit[Clock_iic_buffer0[4]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[4]&0X0F];
      delayms(10);
    }    
    if(setup_lcd_ok==1)
    {
       LCD[2]=Digit[Clock_iic_buffer0[2]&0X0F]; LCD[3]=0x00;
       LCD[4]=Digit[Clock_iic_buffer0[3]>>4];
       LCD[5]=Digit[Clock_iic_buffer0[3]&0X0F];
       LCD[6]=Digit[Clock_iic_buffer0[4]>>4];
       LCD[7]=Digit[Clock_iic_buffer0[4]&0X0F];
       LCD[4] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
      LCD[6]=0;LCD[7]=0;setup_lcd_ok=1;LCD[4] &=0XF7;
       delayms(10); 
    }
    break; 
      
    } 
    
  case week:
    {
      while(P3IN==0xBF) 
    {
      Clock_iic_buffer0[2]=Clock_iic_buffer0[2]+ 1;
      if( Clock_iic_buffer0[2]>7)  {Clock_iic_buffer0[2]=1; }
      LCD[2]=Digit[Clock_iic_buffer0[2]&0X0F]; LCD[3]=0x00;LCD[4] |=0X08;
      delayms(10);
     }
   while(P3IN==0xEF)
    {
      Clock_iic_buffer0[2]=Clock_iic_buffer0[2]-1;
      if( Clock_iic_buffer0[2]==0)  {Clock_iic_buffer0[2]=7;}
       LCD[2]=Digit[Clock_iic_buffer0[2]&0X0F]; LCD[3]=0x00;LCD[4] |=0X08;
      delayms(10);
    }    
    if(setup_lcd_ok==1)
    {
       LCD[2]=Digit[Clock_iic_buffer0[2]&0X0F]; LCD[3]=0x00;
       LCD[4]=Digit[Clock_iic_buffer0[3]>>4];
       LCD[5]=Digit[Clock_iic_buffer0[3]&0X0F];
       LCD[6]=Digit[Clock_iic_buffer0[4]>>4];
       LCD[7]=Digit[Clock_iic_buffer0[4]&0X0F];
       LCD[4] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
      LCD[2]=0;LCD[3]=0;setup_lcd_ok=1;LCD[4] &=0XF7;
       delayms(10); 
    }
    break; 
      
    }  

 case year:
    {
      while(P3IN==0xBF) 
    {
      Clock_iic_buffer0[1]=Clock_iic_buffer0[1]+ 1;
      if( Clock_iic_buffer0[1]>0x99)  {Clock_iic_buffer0[1]=0; }
       if((Clock_iic_buffer0[1]&0x0f)==0x0A){Clock_iic_buffer0[1] +=0x06;}
      LCD[6]=Digit[Clock_iic_buffer0[1]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[1]&0X0F];
      delayms(10);
     }
   while(P3IN==0xEF)
    {
      Clock_iic_buffer0[1]=Clock_iic_buffer0[1]-1;
      if( Clock_iic_buffer0[1]==0xFF)  {Clock_iic_buffer0[1]=0x99;}
       if((Clock_iic_buffer0[1]&0x0f)==0x0F){Clock_iic_buffer0[1] -=0x06;}
      LCD[6]=Digit[Clock_iic_buffer0[1]>>4];
      LCD[7]=Digit[Clock_iic_buffer0[1]&0X0F];
      delayms(10);
    }    
    if(setup_lcd_ok==1)
    {
       LCD[2]=0x00; LCD[3]=0x00;
       LCD[4]=Digit[2];
       LCD[5]=Digit[0];
       LCD[6]=Digit[Clock_iic_buffer0[1]>>4];
       LCD[7]=Digit[Clock_iic_buffer0[1]&0X0F]; 
       LCD[3] |=0X08;
      setup_lcd_ok=0; delayms(10);
    }
    else
    {
      LCD[6]=0;LCD[7]=0;setup_lcd_ok=1;LCD[3] &=0XF7;
       delayms(10); 
    }
    break; 
      
    }    
    
 
}
mode_status=0;

}

//----------------------------------------------------------------------------------------
void lcd_display(void)
{
  _DINT();
  
  switch(Level)
  {
  
  case level2:
    { 
      status0 &=0xFC;status0|=0x01;ad_k=1;
      P1OUT &=0X3F;LCD[13] =0X00;LCD[14]&=0XF0;
      if(UNITS==UNITS_lux) {LCD[13] |=0X02;LCD[14] |=0X02;LCD[1] |=0x08;
     // if(real_data<=20){tmp9=0;}
     // else
      tmp9=(int)ad_k*(real_data);
     //if(tmp9>3998) {tmp9+=2;}             //3960  41
      if(tmp9>4095){tmp9=4095;}
      }
      else {LCD[0] |=0x08;LCD[13] |=0X01;LCD[14] |=0X04;
      if(real_data<=1){tmp9=0;}          ///5
      else {tmp9=(int)((ad_k*(real_data-1))*1000/1076);}
      if(tmp9<0) {tmp9=0;}
      }break;
    }
   case level3:
    { status0 &=0xFC;status0|=0x02; ad_k=1;
      P1OUT &=0X7F;P1OUT |=0X40;LCD[13] =0X00;LCD[14]&=0XF0;
      if(UNITS==UNITS_lux) {LCD[13] |=0X08;LCD[14] |=0X02; LCD[11] &=0xF7;LCD[0] &=0xF7;LCD[1] &=0xF7;tmp9=(int)ad_k*real_data-13;
      if(tmp9<0){tmp9=0;}
      if(tmp9>4095){tmp9=4095;}
      }
      else  {LCD[13] |=0X02;LCD[14]|=0X04;LCD[1] |=0x08;tmp9=(int)ad_k*real_data*1000/1076-3;if(tmp9<0){tmp9=0;}}break;
      
    }
   case level4:
    { status0|=0x03;ad_k=1;
      P1OUT &=0XBF;P1OUT |=0X80;LCD[13] =0X00;LCD[14]&=0XF0;
      if(UNITS==UNITS_lux) {LCD[13] |=0X04;LCD[14] |=0X03; LCD[0] |=0x08;tmp9=(int)ad_k*real_data;if(tmp9>4095){tmp9=4095;}}
      else  {LCD[13] |=0X08;LCD[14]|=0X04;LCD[11] &=0xF7;LCD[0] &=0xF7;LCD[1] &=0xF7;tmp9=(int)ad_k*real_data*1000/1076;}break;
    }
   case level1:
    { 
      status0 &=0xFC; 
      P1OUT |=0XC0;LCD[13] =0X00;LCD[14]&=0XF0;ad_k=1;
      if(UNITS==UNITS_lux) {LCD[13] |=0X80;LCD[14] |=0X03;LCD[1] |=0x08;tmp9=(int)ad_k*real_data; }
      else  {LCD[13] |=0X04;LCD[14]|=0X0C;LCD[0] |=0x08;tmp9=(int)ad_k*real_data*1000/1076;}break;
    }
  default  : break;
  }
  real_usb_data=(int)tmp9;
  switch(mode_status)
  {
  case GEN:
    {LCD[12] &=0X0C;fu_data=0;data_display=tmp9;
     status0 &=0xc7;if(Set_Data==timehold) Set_Data=0;
    break;
    }

  case PMIN:
    {fu_data=0;LCD[12] &=0X0C;LCD[12] |=0XC1;status0&=0XC7;status0 |=0x10;Set_Data=timehold;
      if(tmp9*1.414<=data_display) {data_display=tmp9*1.414;Set_Data=0;}
       break;
    }
  case PMAX:
    {fu_data=0;LCD[12] &=0X0C;LCD[12] |=0X31;status0 &=0XC7;status0 |=0x18;Set_Data=timehold;
    if(tmp9*1.414>=data_display) {data_display=tmp9*1.414;Set_Data=0;}
     break;
    }
  case MAX:
    {
      fu_data=0;LCD[12] &=0X0C;LCD[12] |=0X21;status0 &=0XC7;status0 |=0x20;Set_Data=timehold;
      if(tmp9>=souce_data) {data_display=tmp9;Set_Data=0;} else {data_display=souce_data;}
     break;
    }
  case MIN:
    {fu_data=0;LCD[12] &=0X0C;LCD[12] |=0X81;status0 &=0XC7;status0 |=0x28;Set_Data=timehold;
    if(tmp9<=data_display) {data_display=tmp9;Set_Data=0;}
     break;
    }
  case REL:
    { LCD[12] &=0X0C; LCD[12] |=0X01;status0 &=0XC7;status0 |=0x30;
    if(tmp9>=rel_data) {data_display=tmp9-rel_data;fu_data=0;}
    else {data_display=rel_data-tmp9;fu_data=1;}
    
    break;
    }
  case POWEROFF:
      
      {
  WriteWord(80,mem_no);
  WriteWord(81,read_mem_no);
  WriteWord(90,Dataloger_I2c_Addr/256);
  WriteWord(91,Dataloger_I2c_Addr);
  WriteWord(92,dataloger_no);
  
  LCD[10]=0;LCD[11]=0;LCD[0]=0;LCD[1]=0;
  LCD[10]|=0X37;LCD[11]|=0X02;LCD[0]|=0X02;LCD[1]=Digit[3];delayms(130);
  LCD[10]|=0X37;LCD[11]|=0X02;LCD[0]|=0X02;LCD[1]=Digit[2];delayms(130);
  LCD[10]|=0X37;LCD[11]|=0X02;LCD[0]|=0X02;LCD[1]=Digit[1];delayms(130);
  P4OUT |=BIT0;
      }
  }
   
  switch(Set_Data)     //display time day year sampling 
  {
  case Time:
    { 
      LCD[2]=Digit[ClocK_read_data[5]>>4]; 
       LCD[3]=Digit[ClocK_read_data[5]&0X0F];  
       LCD[4]=Digit[ClocK_read_data[6]>>4]; 
       LCD[5]=Digit[ClocK_read_data[6]&0X0F];
       LCD[6]=Digit[ClocK_read_data[7]>>4];
       LCD[7]=Digit[ClocK_read_data[7]&0X0F];
        LCD[5] |=0X08; LCD[6] |=0X08;status1 &=0xF3;
       break;
      
    }
  case Day:
    {  
       LCD[2]=Digit[ClocK_read_data[2]&0X0F]; LCD[3]=0x00;
       LCD[4]=Digit[ClocK_read_data[3]>>4];
       LCD[5]=Digit[ClocK_read_data[3]&0X0F];
       LCD[6]=Digit[ClocK_read_data[4]>>4];
       LCD[7]=Digit[ClocK_read_data[4]&0X0F];
       LCD[4] |=0X08;status1 &=0xF3;status1 |=0x04;
      break; 
    }
     case Year:
    {
       LCD[2]=0x00; LCD[3]=0x00;
       LCD[4]=Digit[2];
       LCD[5]=Digit[0];
       LCD[6]=Digit[ClocK_read_data[1]>>4];
       LCD[7]=Digit[ClocK_read_data[1]&0X0F]; 
       LCD[3] |=0X08;status1 &=0xF3;status1 |=0x0C;

⌨️ 快捷键说明

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