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

標題: 基于stm32單片機的溫控風扇代碼 [打印本頁]

作者: 3039233296    時間: 2025-7-4 08:48
標題: 基于stm32單片機的溫控風扇代碼
按鍵1 用于切換模式
按鍵2 用于模式2調速
模式1 為溫控模式

單片機源程序如下:
  1. #include "stm32f10x.h"                 // Device header
  2. #include "OLED.h"
  3. #include "Delay.h"
  4. #include "Key.h"
  5. #include "dht11.h"
  6. #include "motor.h"
  7. #include "pwm.h"
  8. #include "encoder.h"
  9. #include "Timer.h"


  10. uint8_t Key_num,Key_down,Key_up,Key_old;//模式控制按鍵       PB1數為1,PB11數為2
  11. uint8_t jishu = 0;//按鍵控制電機
  12. u8 temp;//溫度
  13. u8 humi;//濕度
  14. u8 mode = 0;//模式 0-關機 1-溫控風扇 2-按鍵控制
  15. u8 check = 0;
  16. u8 i;
  17. u16 t;
  18. u16 Speed;


  19. //void TIM2_IRQHandler(void)
  20. //{
  21. //        if (TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
  22. //        {
  23. //                                Speed = Encoder3_Get();       
  24. //                TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  25. //        }
  26. //}

  27. //電機A4高A5低
  28. int main(void)
  29. {
  30. //        PWM2_Init();
  31.         Key_Init();//按鍵初始化
  32.         OLED_Init();//顯示屏初始化
  33.         Motor_Init();//電機初始化
  34.         Encoder_Init();
  35.         Encoder4_Init();
  36. //        Timer_Init();                       
  37.        
  38.         OLED_ShowString(1,1,"T:");
  39.         OLED_ShowString(2,1,"S:");
  40.         OLED_ShowString(3,1,"mode:");
  41.         OLED_ShowString(4,1,"Gear:");
  42.                 while(DHT11_Init())//初始化DHT11的IO口 DQ 同時檢測DHT11的存在
  43.         {
  44. //                Delay_ms(200);
  45.                 OLED_ShowString(3,5,"error");
  46.         }
  47.        
  48.         while(1)
  49.         {
  50.                 Key_num = Key_GetNum();
  51. //                Key_down = Key_num & (Key_old ^ Key_num);//下降沿輸出
  52. //                Key_up = Key_num & (Key_old ^ Key_num);//上升沿輸出
  53. //                Key_old = Key_num;//長按
  54. //               
  55.                

  56.                 check = DHT11_Read_Data(&temp,&humi);
  57.                
  58.                 if(check == 1)                
  59.                 {
  60.                         OLED_ShowString(2,5,"error");
  61.                        
  62.                 } //溫度范圍檢查
  63.                
  64. //                t = Encoder3_Get();
  65.                        
  66.                 Delay_ms(500);               
  67.                 OLED_ShowNum(1,3,temp,2);//溫度值顯示
  68.                 OLED_ShowNum(2,3,humi,2);//濕度值顯示
  69.                 OLED_ShowNum(3,6,mode,1);//模式顯示
  70.                 OLED_ShowNum(1,6,Encoder3_Get(),5);
  71.                 OLED_ShowNum(2,6,Encoder4_Get(),5);               
  72.                 if(Key_num == 1)
  73.                 {
  74.                         if(++mode == 3) mode = 0; //模式切換

  75.                 }
  76. //                if(mode == 1)
  77. //                        Motor_SetSpeed(humi);//溫控
  78. //                else if(mode == 2)
  79. //                {

  80. //                                Motor_SetSpeed(jishu*10);
  81. //                               
  82. //                        if(Key_num == 2)
  83. //                        {
  84. //                                if(++jishu == 11) jishu = 1;
  85. //                        }//按鍵控制
  86. ////                          OLED_ShowNum(4,6,jishu,2);//模式二檔位
  87. //                }
  88.                 switch(mode)
  89.                 {
  90.                         case 0:
  91.                                         jishu = 0;
  92.                                         Motor_SetSpeed(0);
  93.                                         OLED_ShowNum(4,6,jishu,2);
  94. //                                        PWM_SetCompare1(0);
  95.                                         for (i = 0; i <= Encoder3_Get()/10; i++)
  96.                                                 {
  97.                                                         PWM_SetCompare1(i);                        //依次將定時器的CCR寄存器設置為0~100,PWM占空比逐漸增大,LED逐漸變亮
  98.                                                         Delay_ms(10);
  99.                                                 }
  100.                                         for (i = 0; i <= Encoder3_Get()/10; i++)
  101.                                                 {
  102.                                                         PWM_SetCompare1(100 - i);        //依次將定時器的CCR寄存器設置為100~0,PWM占空比逐漸減小,LED逐漸變暗
  103.                                                         Delay_ms(10);
  104.                                                 }
  105.                         break; //模式0——關機
  106.                         case 1:
  107.                                                 if(humi<25)                        Motor_SetSpeed(0);
  108.                                                 else if(humi>=25 && humi<100)
  109.                                                 {
  110.                                                 Motor_SetSpeed(humi);
  111.                                                 PWM_SetCompare1(humi);
  112.                                                 for (i = 0; i <= (100-humi); i++)
  113.                                                 {
  114.                                                         PWM_SetCompare1(i);                        //依次將定時器的CCR寄存器設置為0~100,PWM占空比逐漸增大,LED逐漸變亮
  115.                                                         Delay_ms(10);                                //延時10ms
  116.                                                 }
  117.                                                 for (i = 0; i <= (100-humi); i++)
  118.                                                 {
  119.                                                         PWM_SetCompare1(100 - i);        //依次將定時器的CCR寄存器設置為100~0,PWM占空比逐漸減小,LED逐漸變暗
  120.                                                         Delay_ms(10);                                //延時10ms
  121.                                                 }                       
  122.                                                
  123.                                                 }
  124.                                                 else         OLED_ShowString(2,5,"error");
  125.                                                
  126.                         break;//模式1——溫控
  127.                         case 2:
  128.                                                 if(Key_num == 2)
  129.                                                 {
  130.                                                         if(++jishu == 11) jishu = 0;
  131.                                                 }
  132.                                                 OLED_ShowNum(4,6,jishu,2);
  133.                                                 Motor_SetSpeed(jishu*10);
  134.                                                         for (i = 0; i <= (100-jishu*10); i++)
  135.                                                 {
  136.                                                         PWM_SetCompare1(i);                        //依次將定時器的CCR寄存器設置為0~100,PWM占空比逐漸增大,LED逐漸變亮
  137.                                                         Delay_ms(10);                                //延時10ms
  138.                                                 }
  139.                                                 for (i = 0; i <= (100-jishu*10); i++)
  140.                                                 {
  141.                                                         PWM_SetCompare1(100 - i);        //依次將定時器的CCR寄存器設置為100~0,PWM占空比逐漸減小,LED逐漸變暗
  142.                                                         Delay_ms(10);                                //延時10ms
  143.                                                 }                       
  144.                                                        
  145.                         break;//模式2——
  146.                 }
  147.                
  148.                
  149.         }
  150. }               
復制代碼

原理圖: 無
仿真: 無
代碼: 按鍵完全實現.7z (187.04 KB, 下載次數: 0)





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 中文字幕免费在线看线人动作大片 | 欧美日韩精品在线 | 在线视频亚洲 | 亚洲青涩| 亚洲五码在线 | 欧美91 | 国产精品一级二级 | 亚洲精品黄色 | 国产三级在线看 | 官场少妇尤物雪白高耸 | 亚洲精品一区二区在线观看 | 三级网站在线 | 久久精品福利视频 | 精品免费国产 | 一区二区三区视频在线播放 | 婷婷激情综合网 | 蜜臀久久99精品久久久久宅男 | 久久中文字幕视频 | 成人免费福利视频 | 久热综合 | 亚洲一级特黄 | 国产精品一区av | 在线观看一区 | 黄色一级免费视频 | 一二三区视频 | 性视频网 | 手机成人在线视频 | 欧美性生活网站 | 亚洲高清免费 | 中文字幕一区二区在线播放 | 亚洲成人天堂 | 欧美福利在线 | 成人精品一区二区三区 | 久久一区二区视频 | 18视频在线观看男男 | 国产性色av | 久久人人视频 | 三级视频在线观看 | 久久视频免费在线观看 | 日韩精品视频免费播放 | 精品一区在线播放 |