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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2357|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕爱爱视频 | 99精品欧美一区二区三区 | 久久国产区 | 精品国产高清一区二区三区 | 亚洲国产成人精 | 婷婷色在线 | 午夜久久久 | 91精品久久久久久久久久 | 超碰97干 | 欧美一区二不卡视频 | 一级a爱片性色毛片免费 | 亚洲欧美日韩在线 | 久久精品色欧美aⅴ一区二区 | 91视频网址| 国产精品久久av | 国产成人网| 亚洲精品日韩一区二区电影 | 成年人在线播放 | 在线观看第一页 | 国产精品久久久久久久久免费软件 | 亚州综合一区 | 成人av激情 | 伊人久久精品 | 国产一区二区精品在线 | 中文字幕高清av | 亚洲高清在线 | 成人欧美一区二区三区色青冈 | 免费观看av网站 | 亚洲日日夜夜 | 亚洲综合日韩精品欧美综合区 | 日本超碰 | 日韩成人精品在线 | 国产综合在线视频 | 欧美日韩免费在线 | 亚洲 日本 欧美 中文幕 | 爱操影视 | 免费黄色a级毛片 | www.av7788.com| 亚洲国产成人精品女人久久久野战 | 中文字幕av亚洲精品一部二部 | www.操.com|