久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2292|回復: 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

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 超碰520 | 九九久久久 | 日韩欧美一区二区三区免费观看 | 欧美一区二区三区在线播放 | 欧美精品成人影院 | 欧美h视频 | 久久精品免费一区二区三 | 成人免费在线播放视频 | 国产片网站 | 精品久久久久久久久久久久 | 精品欧美一区二区在线观看欧美熟 | 欧美国产日韩一区二区三区 | 黑人巨大精品欧美一区二区免费 | 在线免费观看成人 | 免费国产一区二区 | 国产福利观看 | 欧美精品一区二区在线观看 | 午夜久久久久久久久久一区二区 | 国产在线激情视频 | 国产精品99久久久久久大便 | 日韩视频中文字幕 | 色屁屁在线观看 | 99re免费| 国产精品久久久久久婷婷天堂 | www.中文字幕.com | 九色视频网站 | 一区二区三区中文字幕 | 亚洲精久 | 欧美久久精品一级黑人c片 91免费在线视频 | 成人啊啊啊 | 国产a视频 | 欧美高清视频 | 欧美亚洲综合久久 | 亚洲精品一二三 | www国产亚洲精品久久网站 | 久久高清 | 欧美理论片在线观看 | 成人精品一区二区三区中文字幕 | 久久精品小短片 | 91久久精品国产 | 91av视频|