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

📄 main.c

📁 温湿度变送器的下位机代码
💻 C
字号:
#include "SysDef.h"

unsigned char  RcFlag,LoopFlag;
SHT11Data  envionment_variables; 

int main( void)
{ 
      SysInit();              
      LoopFlag = 1;      
      P4DIR |= 0x06;                            // P4.1 - P4.6 output
      P4SEL |= 0x06;                            // P4.1 - P4.6 TBx options
      TBCCR0 = 1000-1;                           // PWM Period
      TBCCTL1 = OUTMOD_7;                       // CCR1 reset/set
      //上电若为4mA 为990,若为20mA 为100
      TBCCR1 = 985; //75 ==20                            // CCR1 PWM duty cycle
      TBCCTL2 = OUTMOD_7;            
      TBCCR2 = 999;  
      envionment_variables.RHPWM_OUTNUM = 500;      
      TBCTL = TBSSEL_2 + MC_1;                  // SMCLK  TBSSEL_2 ,  ACLK  TBSSEL_1 up mode      
      _EINT();	
      //envionment_variables.temperature = 20.0;
      //envionment_variables.humidity = 40.0;      
      while(1) 
      {            
            TaskConfig(); 
           
            if(RcFlag > 5)
            {
                  MeasureSHT11Task();                   
                  if(LoopFlag == 1)
                  {
                        OutCurrentLoop();
                        TBCCR1 = envionment_variables.RHPWM_OUTNUM;
                        TBCCR2 = envionment_variables.TCPWM_OUTNUM;
                  }                                   
                  RcFlag = 0;                                
            } 
            
      } 
            
}
void OutCurrentLoop()
{
      float A,B,K,CurVar0;
      U16  CurVar;
      //温度输出
      if(envionment_variables.temperature <= envionment_variables.Mini_temperature)
      {
            envionment_variables.TCPWM_OUTNUM = envionment_variables.TCDATable[0]; 
      }
      else  if(envionment_variables.temperature >= envionment_variables.Max_temperature)
      {
            envionment_variables.TCPWM_OUTNUM = envionment_variables.TCDATable[8];   
      }
      else 
      {
        
            A = 16;
            B = envionment_variables.Max_temperature - envionment_variables.Mini_temperature;
            K = envionment_variables.temperature - envionment_variables.Mini_temperature;
            
            CurVar0 = 4 + K*A/B;  //输出的电流
            
            CurVar = CurVar0;
            CurVar -= 4;
            CurVar /= 2;
            A = envionment_variables.TCDATable[CurVar] - envionment_variables.TCDATable[CurVar  + 1];
            B = 2;
            K = CurVar0 - CurVar*2 - 4;
            
            envionment_variables.TCPWM_OUTNUM =  envionment_variables.TCDATable[CurVar] - K*A/B;
                  
      }
                  
      if(envionment_variables.humidity <= envionment_variables.Mini_humidity)
      {
            envionment_variables.RHPWM_OUTNUM = envionment_variables.RHDATable[0];  
      }
      else  if(envionment_variables.humidity >= envionment_variables.Max_humidity)
      {
            envionment_variables.RHPWM_OUTNUM = envionment_variables.RHDATable[0];  
      }
      else 
      {
        
        
            A = 16;
            B = envionment_variables.Max_humidity - envionment_variables.Mini_humidity;
            K = envionment_variables.humidity - envionment_variables.Mini_humidity;
            
            CurVar0 = 4 + K*A/B;  //输出的电流
            
            CurVar = CurVar0;
            CurVar -= 4;
            CurVar /= 2;
            A = envionment_variables.RHDATable[CurVar] - envionment_variables.RHDATable[CurVar  + 1];
            B = 2;
            K = CurVar0 - CurVar*2 - 4;
            
            envionment_variables.RHPWM_OUTNUM =  envionment_variables.RHDATable[CurVar] - K*A/B;
            
        /*
            envionment_variables.RHPWM_OUTNUM =  envionment_variables.RH_DA4mA - 
                  (envionment_variables.humidity - envionment_variables.Mini_humidity)*
                  (envionment_variables.RH_DA4mA - envionment_variables.RH_DA20mA)/
                  (envionment_variables.Max_humidity - envionment_variables.Mini_humidity);
            */
            
            
      }
      //计算出错的 处理
      /*
      if(envionment_variables.TCPWM_OUTNUM > TBCCR0)
      {
            envionment_variables.TCPWM_OUTNUM = TBCCR0 - 1;  
      }
      
       if(envionment_variables.RHPWM_OUTNUM > TBCCR0)
      {
            envionment_variables.RHPWM_OUTNUM = TBCCR0 - 1;  
      }
      */
      
}
#pragma vector=TIMERA0_VECTOR
__interrupt void timer_a(void)
{            
      RcFlag ++;                                    
}

⌨️ 快捷键说明

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