找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 18641|回复: 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 单片机教程网

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