找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2001|回复: 0
收起左侧

我的这段程序怎么改才能实现根据温度不同来控制风扇的转速

[复制链接]
ID:299028 发表于 2018-3-29 20:21 | 显示全部楼层 |阅读模式
希望大佬能够解答!

  1.    2          #include <common.h>
  2.    3          #include <18b20.h>
  3.    4         
  4.    5          WORD    PwmVal[FAN_NUM];
  5.    6          bit     PwmRunFlag;
  6.    7         
  7.    8          void  PwmInit( void )
  8.    9          {
  9.   10   1        // PWM/CCP设置引脚在P35-P37
  10.   11   1        AUXR1 &= ~0x30;
  11.   12   1        AUXR1 |= 0x10;
  12.   13   1        
  13.   14   1        // PWM/CCP时钟为系统脉冲/6
  14.   15   1        // 即 24/6 = 4Mhz
  15.   16   1        CMOD = 0x0c;
  16.   17   1        CR = 1;
  17.   18   1      
  18.   19   1        // PWM1、PWM2工作于8位模式
  19.   20   1        PCA_PWM1 = 0x00;
  20.   21   1        PCA_PWM2 = 0x00;  
  21.   22   1      
  22.   23   1        // PWM1、PWM2停止工作
  23.   24   1        CCAPM1 = 0;
  24.   25   1        CCAPM2 = 0;
  25.   26   1      }
  26.   27         
  27.   28          // 温度低于40度,风扇不转,温蒂高于80度,风扇全速转动
  28.   29         
  29.   30          #define     TEMPLOW       400
  30.   31          #define     TEMPHIGH      850
  31.   32          #define     TEMPERR       5
  32.   33         
  33.   34          void TemperatureToPwm( void )
  34.   35          {
  35.   36   1          BYTE  i;
  36.   37   1          WORD  wtmp;
  37.   38   1        
  38.   39   1          wtmp = TempVale[0];
  39.   40   1          for( i = 1; i < TCH_NUM; i++ )
  40.   41   1          {
  41.   42   2              if ( wtmp <= TempVale[i] )
  42.   43   2                  wtmp = TempVale[i];
  43.   44   2          }
  44.   45   1          // 获取温度最大值
  45.   46   1         
  46.   47   1          // 风扇已打开,且温度低于最低温度
  47.   48   1          if ( wtmp <= (TEMPLOW - TEMPERR) && PwmRunFlag )
  48.   49   1          {
  49.   50   2                PwmRunFlag = 0;
  50.   51   2                PwmVal[0] = 0;
  51.   52   2                PwmVal[1] = 0;
  52.   53   2                return;
  53.   54   2          }   
  54.   55   1          if ( wtmp >= (TEMPLOW + TEMPERR) )
  55. C51 COMPILER V9.53.0.0   PWM                                                               03/23/2018 11:49:53 PAGE 2   

  56.   56   1          {
  57.   57   2              if ( wtmp >= TEMPHIGH )
  58.   58   2              {
  59.   59   3                  PwmVal[0] = 258;
  60.   60   3              }   
  61.   61   2              else
  62.   62   2              {
  63.   63   3                  PwmVal[0] = (((WORD)(wtmp - TEMPLOW)) * 256) / (TEMPHIGH - TEMPLOW);
  64.   64   3              }
  65.   65   2              PwmVal[1] = PwmVal[0];  
  66.   66   2          }   
  67.   67   1      }
  68.   68            
  69.   69          void PwmRefresh( void )
  70.   70          {
  71.   71   1          if ( !PwmVal[0] )
  72.   72   1          {
  73.   73   2              CCAPM1 = 0;
  74.   74   2          }
  75.   75   1          else
  76.   76   1          {
  77.   77   2              CCAP1H = PwmVal[0];
  78.   78   2              if ( PwmVal[0] >= 256 )
  79.   79   2                  PCA_PWM1 |= 0x02;
  80.   80   2              else
  81.   81   2                  PCA_PWM1 &= ~0x02;
  82.   82   2              
  83.   83   2              CCAPM1 = 0x42;
  84.   84   2              
  85.   85   2              PwmRunFlag = 1;
  86.   86   2          }   
  87.   87   1        
  88.   88   1          if ( !PwmVal[1] )
  89.   89   1          {
  90.   90   2              CCAPM2 = 0;
  91.   91   2          }
  92.   92   1          else
  93.   93   1          {
  94.   94   2              CCAP2H = PwmVal[1];
  95.   95   2              if ( PwmVal[1] >= 256 )
  96.   96   2                  PCA_PWM2 |= 0x02;
  97.   97   2              else
  98.   98   2                  PCA_PWM2 &= ~0x02;
  99.   99   2              
  100. 100   2              CCAPM2 = 0x42;
  101. 101   2              
  102. 102   2              PwmRunFlag = 1;
  103. 103   2          }     
  104. 104   1      }
复制代码


PWM.zip

1.2 KB, 下载次数: 2

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表