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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 20255|回復: 23
打印 上一主題 下一主題
收起左側

基于STM32的智能風扇的設計

  [復制鏈接]
跳轉到指定樓層
樓主
本設計以STM32F407ZGT6開發板為硬件基礎。制作了一個基于紅外遙控的多功能智能電風扇控制器,主要實現了以下功能:
1.實現電風扇的無極調速,并可以對電風扇的轉速進行設置和轉速的實時測試和顯示。
2. 電風扇至少產生三類風:“自然風”、“常風”和“睡眠風”。
  3. 能實現自帶定時開、關機。
4. 具備溫度測量功能和省電功能,可以根據溫度自動微調風速,當外界溫度低于設定溫度,電風扇停止轉動;外界溫度高于設定溫度,電風扇可恢復轉動測溫精度優于1攝氏度。
5. 具有LCD顯示功能,能顯示日期、時間、溫度、風扇轉速、運行模式等等信息。
6. 能實現全功能紅外遙控;通過紅外遙控板實現全部的參數設置與調節。
  7.可編程模式,可設置鬧鐘。


單片機源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"  
  3. #include "usart.h"  
  4. #include "led.h"
  5. #include "lcd.h"
  6. #include "usmart.h"
  7. #include "rtc.h"
  8. #include "key.h"
  9. #include "timer.h"
  10. #include "remote.h"
  11. #include "ds18b20.h"
  12. #include "fontupd.h"
  13. #include "text.h"       
  14. #include "w25qxx.h"
  15. #include "pwm.h"
  16. #include "mypid.h"
  17. #include "wkup.h"

  18. extern u8  TIM5CH1_CAPTURE_STA;                //輸入捕獲狀態                                                   
  19. extern u16        TIM5CH1_CAPTURE_VAL;        //輸入捕獲值       
  20. long long temp,now_ses;
  21. long long set_in=30;
  22. long  long  pwm_out0;
  23. int t1=31,t2=5,t3=5,t4=5,t5=30;//睡眠風初始時間
  24. int ton=30; //定時開機時間
  25. int toff=30; //定時關機時間

  26. int flag=0,flag0=0,flag1=0;//模式標志
  27. int flag2=0,flag3=0,flag4=0;//起始標志為0

  28. short temperature;  
  29. short temperature_set=25;

  30. int i=0,j=0;

  31. //RTC實時時鐘顯示
  32. void RTC_SHOW(void)
  33. {
  34.         RTC_TimeTypeDef RTC_TimeStruct;
  35.         RTC_DateTypeDef RTC_DateStruct;
  36.         u8 tbuf[40];
  37.         POINT_COLOR=BLUE;
  38.         RTC_GetTime(RTC_Format_BIN,&RTC_TimeStruct);

  39.         sprintf((char*)tbuf,"%02d:%02d:%02d",RTC_TimeStruct.RTC_Hours,RTC_TimeStruct.RTC_Minutes,RTC_TimeStruct.RTC_Seconds);
  40.         LCD_ShowString(180,120,210,16,24,tbuf);       
  41.        
  42.         RTC_GetDate(RTC_Format_BIN, &RTC_DateStruct);
  43.        
  44.         sprintf((char*)tbuf,"20%02d-%02d-%02d",RTC_DateStruct.RTC_Year,RTC_DateStruct.RTC_Month,RTC_DateStruct.RTC_Date);
  45.         LCD_ShowString(30,120,210,16,24,tbuf);       
  46.        
  47.        
  48.         sprintf((char*)tbuf,"%d",RTC_DateStruct.RTC_WeekDay);
  49.         LCD_ShowString(373,120,210,16,24,tbuf);
  50. }

  51. //LCD顯示
  52. void LCD_SHOW(void)
  53. {
  54. //        set_in=30;
  55.         POINT_COLOR=BLUE;
  56.         Show_Str(300,120,400,24,"星期: ",24,0);
  57.         POINT_COLOR=RED;       
  58.         Show_Str(100,50,400,24,"多功能智能風扇控制器",24,0);
  59.         POINT_COLOR= DARKBLUE  ;
  60.         Show_Str(75,200,120,24,"設定轉速: ",24,0);
  61.         LCD_ShowString(350,200,100,4,24,"r/s");       
  62.         LCD_ShowxNum(228,200,set_in,3,24,0);                       
  63.         Show_Str(75,280,200,24,"風扇轉速: ",24,0);
  64.         LCD_ShowString(350,280,100,4,24,"r/s");
  65.         LCD_ShowxNum(228,280,now_ses,3,24,0);               
  66.         Show_Str(75,360,400,24,"運行模式: ",24,0);
  67.         Show_Str(75,440,400,24,"設置的溫度: ",24,0);
  68.         LCD_ShowString(245,440,100,4,24,".  C");       
  69.         LCD_ShowxNum(228,440,temperature_set,3,24,0);       
  70.         Show_Str(75,520,400,24,"當前的溫度: ",24,0);
  71.         LCD_ShowString(250,520,100,4,24,".  C");       
  72.   LCD_ShowxNum(180,600,toff,3,24,0);
  73.   LCD_ShowxNum(335,600,ton,3,24,0);
  74.         Show_Str(75,600,400,24,"定時關機:",24,0);
  75.         Show_Str(230,600,400,24,"定時開機:",24,0);
  76.         Show_Str(350,680,400,24,"flag2= ",24,0);
  77.         LCD_ShowxNum(410,680,flag2,3,24,0);
  78.   Show_Str(75,660,400,24,"睡眠時間: ",24,0);       
  79.   Show_Str(75,700,120,24,"t1: ",24,0);
  80.   LCD_ShowxNum(120,700,t1,3,24,0);
  81.   Show_Str(195,700,45,24,"t5: ",24,0);
  82.   LCD_ShowxNum(240,700,t5,3,24,0);
  83.        
  84.         Show_Str(40,760,45,24,"t2:",24,0);
  85.         LCD_ShowxNum(85,760,t2,3,24,0);
  86.         Show_Str(160,760,45,24,"t3:",24,0);
  87.         LCD_ShowxNum(205,760,t3,3,24,0);
  88.         Show_Str(280,760,45,24,"t4: ",24,0);
  89.         LCD_ShowxNum(325,760,t4,3,24,0);
  90. //        Show_Str(75,600,400,24,"占空比:     /1000",24,0);
  91. //  LCD_ShowxNum(175,600,pwm_out0,3,24,0);
  92. }       

  93. //溫度顯示函數
  94. void Show_temperature(void)
  95. {
  96.         u8 t;
  97.         temperature=DS18B20_Get_Temp();       
  98.         if(temperature<0)
  99.         {
  100.                 LCD_ShowChar(30+40,520,'-',16,0);                        //顯示負號
  101.                 temperature=-temperature;                                        //轉為正數
  102.         }else LCD_ShowChar(30+40,520,' ',16,0);                        //去掉負號
  103.         LCD_ShowNum(150+70+8,520,temperature/10,2,24);        //顯示正數部分            
  104.         LCD_ShowNum(150+70+40,520,temperature%10,1,24);        //顯示小數部分                   
  105. }



  106. int main(void)
  107. {
  108.         u8 key;
  109.         u8 *str=0;
  110.   u8 t=0;       
  111.        
  112.        
  113.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置系統中斷優先級分組2
  114.         delay_init(168);      //初始化延時函數
  115.         uart_init(115200);                //初始化串口波特率為115200

  116.         usmart_dev.init(168);                //初始化USMART
  117.         LED_Init();                                          //初始化LED
  118.         LCD_Init();                                          //初始化LCD
  119.         My_RTC_Init();                                 //初始化RTC
  120.         Remote_Init();                                //紅外接收初始化
  121.         DS18B20_Init();
  122.         W25QXX_Init();                                //初始化W25Q128
  123.         exfuns_init();                                //為fatfs相關變量申請內存  
  124.         font_init();       
  125.         TIM2_Int_Init(4999,8399);        //計數0.5s發生一次中斷
  126.         TIM3_Int_Init(9999,8399);        //計數1s發生一次中斷
  127.         TIM7_Int_Init(4999,8399);        //計數0.5s發生一次中斷
  128.         TIM4_Int_Init(9999,8399); //計數1s發生一次中斷
  129.         TIM14_PWM_Init(1000-1,4-1);        //84M/4=21Mhz的計數頻率,重裝載值500,所以PWM頻率為 21M/1000=21Khz.
  130.        
  131.         TIM5_CH1_Cap_Init(0XFFFFFFFF,84-1); //以1Mhz的頻率計數

  132.        
  133.   RTC_Set_WakeUp(RTC_WakeUpClock_CK_SPRE_16bits,0);                //配置WAKE UP中斷,1秒鐘中斷一次


  134.   while(DS18B20_Init())        //DS18B20初始化       
  135.         {
  136.                 LCD_ShowString(30,130,200,16,16,"DS18B20 Error");
  137.                 delay_ms(200);
  138.         }
  139.   
  140.         TIM_SetCompare1(TIM14,550);               
  141.         while(1)
  142.         {
  143.                 RTC_Set_AlarmA(2,18,37,0);
  144.                 RTC_SHOW();
  145.                 LCD_SHOW();
  146.                 Show_temperature();
  147.           key=Remote_Scan();               
  148.                

  149. //                TIM_SetCompare1(TIM14,0);
  150.                 if(temperature_set<temperature/10||temperature_set==temperature/10)
  151.                 {
  152.                         if(j==0)
  153.                         {       
  154.                                 LCD_LED=1;
  155.                                 if(TIM5CH1_CAPTURE_STA&0X80)      
  156.                                 {
  157.                                         temp=TIM5CH1_CAPTURE_STA&0X3F;
  158.                                         temp*=0XFFFFFFFF;                                         
  159.                                         temp+=TIM5CH1_CAPTURE_VAL;                 
  160.                                        
  161.                                         printf("HIGH:%lld us\r\n",temp);
  162.                                         TIM5CH1_CAPTURE_STA=0x80;                             //關閉下一次捕獲
  163.                                         TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,DISABLE);       

  164.                                                 now_ses = 1000000 / (temp * 200);
  165.                                                 pwm_out0 = pid_function2(set_in,now_ses);
  166.                                                 TIM_SetCompare1(TIM14,pwm_out0);
  167.                                        
  168.                                         TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//允許更新中斷 ,允許CC1IE捕獲中斷       
  169.                                         TIM5CH1_CAPTURE_STA=0;                             //開啟下一次捕獲               
  170.                                 }
  171.                         }                               
  172.                 }       
  173.                 else if(temperature_set>temperature/10)
  174.                 {
  175.                         pwm_out0 =0;now_ses =0;
  176.                         TIM_SetCompare1(TIM14,pwm_out0);
  177.                         LCD_LED=0;
  178.                         j=0;
  179.                        
  180.                 }
  181.                
  182.                 if(key)
  183.                 {
  184.                         delay_ms(200);
  185.                         if(key == Remote_Scan())
  186.                         {
  187.                                 switch(key)
  188.                                 {                                       

  189.                                        
  190.                                         case 98:                             //調溫
  191.                                                                 str="UP";
  192.                                                     temperature_set++;
  193.                                               j=0;
  194.                                                                 break;

  195.                                         case 168:str="DOWN";
  196.                                                     temperature_set--;
  197.                                               j=0;
  198.                                                                 break;       
  199.          
  200.                                        
  201.                                        
  202.                                         case 152:str="2";           //調速
  203.                                               set_in++;
  204.                                               break;
  205.                                        
  206.                                         case 56:str="8";
  207.                                               set_in--;
  208.                                               break;
  209.                                        
  210.                                        
  211.                                         case 224:str="VOL-";       //睡眠時間
  212.                                               if(flag4==0)
  213.                                                                 {
  214.                                                  t1--;
  215.                                                                 }
  216.                                                                 if(flag4==1)
  217.                                                                 {
  218.                                                  t5--;
  219.                                                                 }
  220.                                               break;
  221.                                        
  222.                                         case 144:str="VOL+";
  223.                                               if(flag4==0)
  224.                                                                 {
  225.                                                  t1++;
  226.                                                                 }
  227.                                                                 if(flag4==1)
  228.                                                                 {
  229.                                                  t5++;
  230.                                                                 }
  231.                                                                 break;
  232.                                                                
  233.                                                                
  234.                                         case 162:str="POWER";
  235.                                              {
  236.                 TIM_Cmd(TIM5, DISABLE);       //失能TIM5
  237.                                                           TIM_SetCompare1(TIM14,0);   //PWM輸出高電平
  238.                                         TIM5CH1_CAPTURE_STA=1;
  239.                                         TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,DISABLE);
  240.                                                                 LCD_LED=0;
  241.                                                                 flag3=0;
  242.                 j=1;                                                                 
  243.                                                                 break;
  244.                                                          }
  245.                                         case 226:str="ALIENTEK";
  246.                                                          {
  247.                                                           TIM_Cmd(TIM5, ENABLE);       //使能TIM5  (捕獲模式)
  248.                                         TIM_SetCompare1(TIM14,550);
  249.                                         TIM5CH1_CAPTURE_STA=0;
  250.                                         TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);
  251.                                                                 LCD_LED=1;
  252.                 j=0;                                                                 
  253.                                                                 flag3=0;
  254.                                                          }
  255.                                                          break;                                               
  256.                                                          
  257.                                                          
  258.                                         case 176: str="3";          //定時關機
  259.                                                          ton++;
  260.                                                          flag2=1;
  261.                                                          break;
  262.                                         case 90: str="9";
  263.                                                          ton--;
  264.                                                          flag2=1;
  265.                                                          break;          
  266.                                                          
  267.                                                          
  268.                                         case 104:str="1";          //定時關機
  269.                                                          toff++;
  270.                                                          flag2=0;
  271.                                                          break;
  272.                                         case 16:str="7";
  273.                                                          toff--;
  274.                                                          flag2=0;
  275.                                                          break;
  276.                                                          
  277.                                                          
  278.                                         case 48:str="4";      //可編程模式時間設置
  279.                                                          t2++;
  280.                                                          break;
  281.                                         case 24:str="5";
  282.                                                          t3++;
  283.                                                          break;
  284.                                         case 122:str="6";
  285.                                                          t4++;
  286.                                                          break;
  287.                                                          
  288.                                                          
  289.                                         case 2:str="PLAY";   //確認開關機
  290.                                                          {
  291.                                                                  if(flag3==0)
  292.                                                                  {
  293.                                                                                 TIM_Cmd(TIM4, ENABLE);            //定時開/關機
  294.                                                                  }
  295.                                                                  if(flag3==1)
  296.                                                                  {
  297.                                                                          TIM_Cmd(TIM4, DISABLE);            //取消定時開/關機
  298.                                                                          flag3=0;
  299.                                                                  }
  300.                                                          }
  301.                break;
  302.                                                          
  303.                                                          
  304.                                                          
  305.                                         case 34:                    //模式調節
  306.                                                    i--;
  307.                                                          str="LEFT";
  308.                                             if(i==1)
  309.                                                          {
  310.                                                                 LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  311.                                                                 Show_Str(200,360,400,24,"常風",24,0);
  312.                                   TIM_Cmd(TIM7,DISABLE);
  313.                                                          }
  314.                                                          if(i==2)
  315.                                                          {
  316.                                                                  LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  317.                                                                  Show_Str(200,360,400,24,"睡眠風",24,0);
  318.                                    TIM_Cmd(TIM7,DISABLE);
  319.                                                                  flag1=0;
  320.                                                          }
  321.                                                          if(i==3)
  322.                                                          {
  323.                                                                         LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  324.                                                                         Show_Str(200,360,400,24,"自然風",24,0);
  325.                                                          }
  326.                                                          if(i==4)
  327.                                                          {
  328.                                                                         LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  329.                                                                         Show_Str(200,360,400,24,"可編程模式",24,0);
  330.                                     TIM_Cmd(TIM7,DISABLE);
  331.                                                          }
  332.                                                          if(i<=0)
  333.                                                          {
  334.                                                                  i=0;
  335.                                                            set_in=30;
  336.                                                          }
  337.                                                          break;
  338.                                        
  339.                                         case 194:
  340.                                                    i++;
  341.                                                          str="RIGHT";
  342.                                                          if(i==1)
  343.                                                          {
  344.                                                                 LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  345.                                                                 Show_Str(200,360,400,24,"常風",24,0);                                                                 
  346.                                                           TIM_SetCompare1(TIM14,pwm_out0);   //失能TIM14
  347.                                                           TIM_Cmd(TIM5, ENABLE);       //失能TIM5
  348.                                                           TIM5CH1_CAPTURE_STA=0;
  349.                                                           TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);       
  350.                                                          }
  351.                                                          if(i==2)
  352.                                                          {
  353.                                                                 LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  354.                                                                 Show_Str(200,360,400,24,"睡眠風",24,0);
  355.                                                                 flag1=0;
  356.                                                          }
  357.                                                          if(i==3)
  358.                                                          {
  359.                                                                         LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  360.                                                                         Show_Str(200,360,400,24,"自然風",24,0);
  361.                                                                   TIM_SetCompare1(TIM14,pwm_out0);   //失能TIM14
  362.                                                                   TIM_Cmd(TIM5, ENABLE);       //失能TIM5
  363.                                                                   TIM5CH1_CAPTURE_STA=0;
  364.                                                                   TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);       
  365.                                                          }
  366.                                                          if(i==4)
  367.                                                          {
  368.                                                                         LCD_Fill(180,350,600,420,WHITE);        //清除之前的顯示
  369.                                                                         Show_Str(200,360,400,24,"可編程模式",24,0);
  370.                                                          }
  371.                            if(i>=5)
  372.                                                          {
  373.                                                             i=0;
  374.                                                                   set_in=30;
  375.                                                          }
  376.                                              break;                               
  377.                                         }
  378.                         }
  379.                         if(i==1)                                             //常風
  380.                          {
  381.                                  TIM_Cmd(TIM3,DISABLE); //失能TIM3        (睡眠風計時)
  382.                                  TIM_Cmd(TIM7,DISABLE); //失能TIM7        (自然風計時)
  383.                                  TIM_Cmd(TIM2, DISABLE);                  
  384.                          }                          
  385.                          if(i==2)                                           //睡眠風
  386.                          {
  387.                                  TIM_Cmd(TIM7,DISABLE); //失能TIM7               
  388.                                  TIM_Cmd(TIM3,ENABLE); //使能定時器3
  389.                                  TIM_Cmd(TIM2, DISABLE);
  390.                          }                                  
  391.                          if(i==3)                                         //自然風
  392.                          {
  393.                                  TIM_Cmd(TIM3,DISABLE); //失能TIM3
  394.                                  TIM_Cmd(TIM7,ENABLE);  //使能TIM7
  395.                                  TIM_Cmd(TIM2, DISABLE);
  396.                          }
  397.                          if(i==4)                                        //可編程
  398.                          {
  399.                                  TIM_Cmd(TIM3,DISABLE); //失能TIM3
  400.                                  TIM_Cmd(TIM7,DISABLE);  //使能TIM7
  401.                                  TIM_Cmd(TIM2,ENABLE);  //使能TIM2
  402.                          }
  403.                 }          
  404.         }
  405. }

  406. //定時器3中斷服務函數     睡眠風定時
  407. void TIM3_IRQHandler(void)
  408. {
  409.         if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中斷
  410.         {
  411.                 if(flag1==0)           
  412.                 {                       
  413.                   t1--;                       
  414.                         if(t1==0)              //關機
  415.                         {
  416.                                 flag1=1;
  417.                                 TIM_SetCompare1(TIM14,0);   //失能TIM14
  418.                                 TIM_Cmd(TIM5, DISABLE);       //失能TIM5
  419.                                 TIM5CH1_CAPTURE_STA=1;
  420.                                 TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,DISABLE);
  421.                                 TIM_Cmd(TIM7,DISABLE);
  422.                                 LCD_LED=0;
  423.                                 j=1;
  424.                                 flag4=1;
  425.                         }
  426.                 }
  427.                 if(flag1==1)
  428.                 {
  429.       t1++;               
  430.                         if(t1==t5)             //開機
  431.                         {       
  432.         flag1=0;
  433.                                 TIM_SetCompare1(TIM14,pwm_out0);   //使能TIM14
  434.                                 TIM_Cmd(TIM5, ENABLE);       //使能TIM5
  435.                                 TIM5CH1_CAPTURE_STA=0;
  436.                                 TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);
  437.                                 TIM_Cmd(TIM7,ENABLE);
  438.         LCD_LED=1;
  439.         j=0;
  440.                                 flag4=0;
  441.                         }
  442.                 }
  443.         }
  444.         TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  //清除中斷標志位
  445. }

  446. //定時器7中斷服務函數                      自然風
  447. void TIM7_IRQHandler(void)
  448. {
  449.         if(TIM_GetITStatus(TIM7,TIM_IT_Update)==SET) //溢出中斷
  450.         {
  451.                 if(flag==0)               
  452.                 {
  453.                         set_in--;
  454.                         if(set_in<=1)
  455.                         {
  456.                                 flag=1;
  457.                         }
  458.                 }
  459.                 if(flag==1)               
  460.                 {
  461.                         set_in++;
  462.                         if(set_in>=55)
  463.                         {
  464.                                 flag=0;
  465.                         }
  466.                 }
  467.                 TIM_ClearITPendingBit(TIM7,TIM_IT_Update);  //清除中斷標志位       
  468.         }       
  469. }


  470. //定時器2中斷服務函數               可編程
  471. void TIM2_IRQHandler(void)
  472. {
  473.         if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET) //溢出中斷
  474.         {
  475.                 if(flag0==0)
  476.                 {
  477.                         t2--;
  478.                         set_in=50;
  479.                         if(t2==0)
  480.                         {
  481.                           TIM_Cmd(TIM7,DISABLE);
  482.                                 flag0=1;
  483.                                 t2=5;
  484.                         }
  485.                 }
  486.                
  487.                 if(flag0==1)
  488.                 {
  489.                         t3--;
  490.                         set_in=30;
  491.                         if(t3==0)
  492.                         {
  493.                           TIM_Cmd(TIM7,DISABLE);
  494.                                 flag0=2;
  495.                                 t3=5;
  496.                         }
  497.                 }
  498.                
  499.                 if(flag0==2)
  500.                 {
  501.                         t4--;
  502.                         TIM_Cmd(TIM7,ENABLE);
  503.                         if(t4==0)
  504.                         {
  505.                           TIM_Cmd(TIM7,DISABLE);
  506.                                 TIM_Cmd(TIM5, DISABLE);       //失能TIM5
  507.                                 TIM_SetCompare1(TIM14,0);   //PWM輸出高電平
  508.                                 TIM5CH1_CAPTURE_STA=1;
  509.                                 TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,DISABLE);
  510.                                 LCD_LED=0;
  511.         j=1;
  512.                                 flag0=0;
  513.                                 t4=5;
  514.                                 TIM_Cmd(TIM2, DISABLE);                                
  515.                         }
  516.                 }
  517.                 TIM_ClearITPendingBit(TIM2,TIM_IT_Update);  //清除中斷標志位       
  518.         }       
  519. }



  520. //定時器4中斷服務函數                定時開/關機
  521. void TIM4_IRQHandler(void)
  522. {
  523.         if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET) //溢出中斷
  524.         {
  525.                 if(flag2==0)
  526.                 {         
  527.                         toff--;
  528.                   flag3=1;
  529.                         if(toff==0)
  530.                         {
  531.                          TIM_Cmd(TIM4, DISABLE);
  532.                          TIM_SetCompare1(TIM14,0);   //失能TIM14
  533.                          TIM_Cmd(TIM5, DISABLE);       //失能TIM5
  534.                          TIM5CH1_CAPTURE_STA=1;
  535.                          TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,DISABLE);
  536.        LCD_LED=0;
  537.        j=1;                               
  538.                         }
  539.                 }       
  540.           if(flag2==1)
  541.     {
  542.       ton--;
  543.                   flag3=1;
  544.       if(ton==0)
  545.             {
  546.                                 TIM_Cmd(TIM4, DISABLE);
  547.                                 TIM_Cmd(TIM5, ENABLE);       //使能TIM5  (捕獲模式)
  548.                                 TIM5CH1_CAPTURE_STA=0;
  549.                                 TIM_SetCompare1(TIM14,550);
  550.                                 TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);
  551.         LCD_LED=1;
  552.                                 j=0;
  553.                         }
  554.     }
  555.     TIM_ClearITPendingBit(TIM4,TIM_IT_Update);  //清除中斷標志位
  556.   }       
  557. }
復制代碼

所有資料51hei提供下載:
智能風扇.rar (9.11 MB, 下載次數: 446)


評分

參與人數 2黑幣 +55 收起 理由
waerdeng + 5 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:400794 發表于 2018-9-21 00:27 | 只看該作者
有仿真圖紙嗎
回復

使用道具 舉報

板凳
ID:223688 發表于 2018-9-21 08:15 | 只看該作者
支持.....................................
回復

使用道具 舉報

地板
ID:400881 發表于 2018-9-21 10:25 | 只看該作者
支持.....................................
回復

使用道具 舉報

5#
ID:393586 發表于 2018-9-25 13:48 | 只看該作者

支持.....................................
學習了。。。。。
回復

使用道具 舉報

6#
ID:375272 發表于 2018-9-26 10:25 | 只看該作者
學習學習~
回復

使用道具 舉報

7#
ID:384722 發表于 2018-10-5 18:02 | 只看該作者
支持..................................... 學習
回復

使用道具 舉報

8#
ID:406408 發表于 2018-10-11 15:52 來自手機 | 只看該作者
學習學習
回復

使用道具 舉報

9#
ID:307935 發表于 2018-11-11 16:39 | 只看該作者


支持..感謝大佬,學習了哈哈。。。。
回復

使用道具 舉報

10#
ID:71535 發表于 2018-11-11 21:22 | 只看該作者
謝謝分享學習學習
回復

使用道具 舉報

11#
ID:512330 發表于 2019-4-15 08:32 | 只看該作者
謝謝 學習學習
回復

使用道具 舉報

12#
ID:58454 發表于 2019-4-15 13:12 | 只看該作者
僅僅是程序嗎?有圖嗎
回復

使用道具 舉報

13#
ID:581898 發表于 2019-7-10 21:11 | 只看該作者
居然沒有圖。。。。
回復

使用道具 舉報

14#
ID:582112 發表于 2019-7-11 10:19 | 只看該作者
學習了學習了
回復

使用道具 舉報

15#
ID:612885 發表于 2019-9-18 08:31 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

16#
ID:7944 發表于 2019-11-15 08:29 | 只看該作者
請問有原理圖嗎?
回復

使用道具 舉報

17#
ID:600469 發表于 2019-11-15 09:15 | 只看該作者
優秀 贊
回復

使用道具 舉報

18#
ID:511209 發表于 2019-12-9 14:12 來自手機 | 只看該作者
為什么編譯是顯示開頭有個錯誤?
回復

使用道具 舉報

19#
ID:670517 發表于 2019-12-22 16:25 | 只看該作者
壓縮包里面包含什么?
回復

使用道具 舉報

20#
ID:672717 發表于 2019-12-25 16:19 | 只看該作者
這個東西挺好的,很喜歡,挺適合我的
回復

使用道具 舉報

21#
ID:483329 發表于 2020-2-22 17:14 | 只看該作者
請問樓主有原理圖嗎?
回復

使用道具 舉報

22#
ID:927106 發表于 2021-5-25 17:28 | 只看該作者
請問有實驗電路圖么
回復

使用道具 舉報

23#
ID:720398 發表于 2021-8-5 13:55 | 只看該作者
先下載了,看看消化一下控制邏輯,多謝!
回復

使用道具 舉報

24#
ID:584195 發表于 2021-8-5 18:51 | 只看該作者
樓主分享這么好的資料,感謝了!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 视频一区二区在线观看 | 亚洲视频在线一区 | 一级毛片视频 | 99久久婷婷国产精品综合 | 人人草天天草 | 国产精品欧美一区喷水 | 久在线 | 久久91av| 国产精品欧美精品日韩精品 | 欧美国产在线一区 | 成人av网站在线观看 | 97视频成人 | 亚洲国产区 | 国产 欧美 日韩 一区 | 爱综合 | 亚洲精品4| 美女张开腿露出尿口 | 国产视频1| 国产精品久久网 | 美国黄色毛片 | 九色91视频 | .国产精品成人自产拍在线观看6 | 亚洲国产精品第一区二区 | 欧美精品一区二区三区蜜臀 | 国精品一区 | 日本粉嫩一区二区三区视频 | 欧美国产视频一区二区 | 99成人在线视频 | 欧美一级黄色片免费观看 | 亚洲一区有码 | 在线观看av网站永久 | 国产婷婷精品av在线 | 91在线最新| 免费看av大片 | 夜夜爽99久久国产综合精品女不卡 | 影音先锋中文字幕在线观看 | 亚洲免费av一区 | 精品久久久久久久久久久久久久 | 久久91精品国产一区二区 | 高清一区二区 | 亚洲女人的天堂 |