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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32智能遙控風扇程序源碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:309758 發表于 2018-8-2 21:06 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本程序使用的是普中stm32開發板外加一個電機驅動模塊,實習自動根據溫度調節風扇轉速, 和手動選擇模式,溫度的范圍可通過按鍵和紅外遙控進行調節。屏幕顯示當前溫度和模式。并且可通過串口查看溫度

單片機源程序如下:
  1. #include "system.h"
  2. #include "SysTick.h"
  3. #include "led.h"
  4. #include "usart.h"
  5. #include "tftlcd.h"
  6. #include "DS18B20.h"
  7. #include "key.h"
  8. #include "hwjs.h"


  9. /*******************************************************************************
  10. * 函 數 名         : main
  11. * 函數功能                   : 主函數
  12. * 輸    入         : 無
  13. * 輸    出         : 無
  14. *******************************************************************************/
  15. int main()
  16. {
  17.         u8 i=0,key,a=15,b=20,t=25,k=30;
  18.         int PWM,low,zhouqi;
  19.         float temper;
  20.         u8 temper_buf[6];
  21.         int temper1;
  22.        
  23.         zhouqi=250;
  24.         low=zhouqi-PWM;
  25.        
  26.         SysTick_Init(72);
  27.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  //中斷優先級分組 分2組
  28.         LED_Init();
  29.         KEY_Init();
  30.         USART1_Init(9600);
  31.         Hwjs_Init();
  32.         TFTLCD_Init();
  33.        
  34.        
  35.         FRONT_COLOR=YELLOW;
  36.        
  37.   LCD_ShowFontHZ(10,20,"當前溫度為");
  38.        
  39.         while(DS18B20_Init())
  40.         {  
  41.           printf("DS18B20檢測失敗,清插好!\r\n");
  42.                    
  43.         }
  44.         printf("DS18B20檢測成功!\r\n");
  45.        
  46.         while(1)
  47.         {
  48.           key=KEY_Scan(0);
  49.                 switch(key)
  50.                 {
  51.                   case KEY_UP:
  52.                         {
  53.                                 led2=0;
  54.                                 t+=1;
  55.                           break;
  56.                         }
  57.                   case KEY_DOWN:
  58.                         {
  59.                                 led2=1;
  60.                                 t-=1;
  61.                                 break;
  62.       }                               
  63.                   case KEY_LEFT:
  64.                         {
  65.                                 led3=0;
  66.                                 k+=1;
  67.                                 break;
  68.                         }       
  69.                   case KEY_RIGHT:
  70.                         {
  71.                                 led3=1;
  72.                                 k-=1;
  73.                                 break;
  74.                         }       
  75.                 }
  76.                 LCD_ShowFontHZ(10,60,"第一檔");
  77.                 LCD_ShowChar(10+100,70,'<',16,0);
  78.                 LCD_ShowNum(10+110,70,a,2,16);
  79.           LCD_ShowFontHZ(10,100,"第二檔");
  80.                 LCD_ShowNum(10+100,110,a,2,16);
  81.                 LCD_ShowChar(10+115,110,'-',16,0);
  82.                 LCD_ShowNum(10+125,110,b,2,16);
  83.                 LCD_ShowFontHZ(10,140,"第三檔");
  84.                 LCD_ShowNum(10+100,150,b,2,16);
  85.                 LCD_ShowChar(10+115,150,'-',16,0);
  86.                 LCD_ShowNum(10+125,150,t,2,16);
  87.                 LCD_ShowFontHZ(10,180,"第四檔");
  88.                 LCD_ShowNum(10+100,190,t,2,16);
  89.                 LCD_ShowChar(10+115,190,'-',16,0);
  90.                 LCD_ShowNum(10+125,190,k,2,16);
  91.                 LCD_ShowFontHZ(10,220,"第五檔");
  92.                 LCD_ShowChar(10+100,230,'>',16,0);
  93.                 LCD_ShowNum(10+110,230,k,2,16);
  94.                 LCD_ShowFontHZ(10,260,"風力為");
  95.                
  96.                 i++;
  97.                 if(i%5==0)
  98.                 {
  99.                   temper=DS18B20_GetTemperture();
  100.                         if(temper<0)
  101.                         {
  102.                           printf("檢測的溫度為:-");
  103.                         }
  104.                    else
  105.                          {
  106.                            printf("檢測的溫度為:");
  107.                          }
  108.                          printf("%.2f\r\n",temper);
  109.                          temper1=temper*100;
  110.                          temper_buf[0]=temper1/10000+0x30;
  111.                          temper_buf[1]=temper1%10000/1000+0x30;
  112.                          temper_buf[2]=temper1%1000/100+0x30;
  113.                          temper_buf[3]='.';
  114.                          temper_buf[4]=temper1%100/10+0x30;
  115.        temper_buf[5]=temper1%10+0x30;
  116.                          LCD_ShowString(10+20*8,30,tftlcd_data.width,tftlcd_data.height,16,(u8 *)temper_buf);

  117.                 }
  118.                
  119.                 if(hw_jsbz==1)
  120.                 {
  121.                        
  122.                         if(hw_jsm==0x00FF629D)
  123.                         {
  124.                                 if(temper>k)
  125.                                 {
  126.                                         LCD_ShowFontHZ(110,260,"第五檔");
  127.                                         low=0;
  128.                                         GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  129.                                         delay_ms(PWM);                       
  130.                                 }
  131.                                 if(temper<15)
  132.                                 {
  133.                                         LCD_ShowFontHZ(110,260,"第一檔");
  134.                                         low=400;
  135.                                         GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  136.                                         delay_ms(PWM);
  137.                                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  138.                                         delay_ms(low);       
  139.                                 }
  140.                                 if(temper>=15&temper<20)
  141.                                 {
  142.                                         LCD_ShowFontHZ(110,260,"第二檔");
  143.                                         low=300;
  144.                                         GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  145.                                         delay_ms(PWM);
  146.                                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  147.                                         delay_ms(low);                       
  148.                                 }
  149.                                 if(temper>=20&temper<t)
  150.                                 {
  151.                                         LCD_ShowFontHZ(110,260,"第三檔");
  152.                                         low=200;
  153.                                         GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  154.                                         delay_ms(PWM);
  155.                                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  156.                                         delay_ms(low);                       
  157.                                 }
  158.                                 if(temper>=t&temper<k)
  159.                                 {
  160.                                         LCD_ShowFontHZ(110,260,"第四檔");
  161.                                         low=100;
  162.                                         GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  163.                                         delay_ms(PWM);
  164.                                         GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  165.                                         delay_ms(low);                       
  166.                                 }       
  167.                         }
  168.                        
  169.                                 else if(hw_jsm==0x00FF30CF)
  170.                                         {
  171.                                                 LCD_ShowFontHZ(110,260,"第一檔");
  172.                                                 low=400;
  173.                                                 GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  174.                                                 delay_ms(PWM);
  175.             GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  176.                                                 delay_ms(low);                                                       
  177.                                         }
  178.                                         else if(hw_jsm==0x00FF18E7)
  179.                                         {
  180.                                                 LCD_ShowFontHZ(110,260,"第二檔");
  181.                                                 low=300;
  182.                                                 GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  183.                                                 delay_ms(PWM);
  184.                                                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  185.                                                 delay_ms(low);                       
  186.                                         }                                       
  187.                                         else if(hw_jsm==0x00FF7A85)
  188.                                         {
  189.                                                 LCD_ShowFontHZ(110,260,"第三檔");
  190.                                                 low=200;
  191.                                                 GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  192.                                                 delay_ms(PWM);
  193.                                                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  194.                                                 delay_ms(low);                       
  195.                                         }
  196.                                         else if(hw_jsm==0x00FF10EF)
  197.                                         {
  198.                                                 LCD_ShowFontHZ(110,260,"第四檔");
  199.                                                 low=100;
  200.                                                 GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  201.                                                 delay_ms(PWM);
  202.                                                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  203.                                                 delay_ms(low);                       
  204.                                         }               
  205.                                         else if(hw_jsm==0x00FF38C7)       
  206.                                         {
  207.                                                 LCD_ShowFontHZ(110,260,"第五檔");
  208.                                                 low=0;
  209.                                                 GPIO_SetBits(GPIOB,GPIO_Pin_0);                       
  210.                                                 delay_ms(PWM);
  211.                                         }       
  212.                                         else if(hw_jsm==0x00FFA25D)       
  213.                                         {
  214.                                                 LCD_ShowFontHZ(110,260,"關閉");
  215.                                                 GPIO_ResetBits(GPIOB,GPIO_Pin_0);                       
  216.                                         }       
  217.                                         else if(hw_jsm==0x00FF22DD)
  218.                                         {
  219.                                           a+=1;
  220.                                                 hw_jsm=0;
  221.                                         }
  222.                             else if(hw_jsm==0x00FFE01F)
  223.                                         {
  224.                                           a-=1;
  225.                                                 hw_jsm=0;
  226.                                         }
  227.                                         else if(hw_jsm==0x00FFC23D)
  228.                                         {
  229.                                           b+=1;
  230.                                                 hw_jsm=0;
  231.                                         }
  232.                                         else if(hw_jsm==0x00FF02FD)
  233.                                         {
  234.                                           b-=1;
  235.                                                 hw_jsm=0;
  236.                                         }
  237.                                         else if(hw_jsm==0x00FF906F)
  238.                                         {
  239.                                           t+=1;
  240.                                                 hw_jsm=0;
  241.                                         }
  242.                                         else if(hw_jsm==0x00FFA857)
  243.                                         {
  244.                                           t-=1;
  245.                                                 hw_jsm=0;
  246.                                         }
  247.                                         else if(hw_jsm==0x00FFB04F)
  248.                                         {
  249.                                           k+=1;
  250.                                                 hw_jsm=0;
  251.                                         }
  252.                                         else if(hw_jsm==0x00FF9867)
  253.                                         {
  254.                                           k-=1;
  255.                                                 hw_jsm=0;
  256.                                         }                       
  257.           }
  258.                 if(i%20==0)
  259.                 {
  260.                         led1=!led1;
  261.                 }
  262.                 delay_us(5);
  263.         }
  264. }

復制代碼

所有資料51hei提供下載:
智能遙控風扇.rar (333.5 KB, 下載次數: 69)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:461983 發表于 2019-1-4 17:58 | 只看該作者
很有幫助 最近正在進行這項設計,可以參考一下
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色片在线免费看 | 国产小u女发育末成年 | 日韩成人专区 | 国产二区精品视频 | 超碰8| 欧美一区二区三区在线观看 | 中文成人在线 | 国产成人在线一区二区 | av大全在线观看 | 蜜桃视频一区二区三区 | 亚洲精品视频免费 | 91麻豆精品国产91久久久更新资源速度超快 | 粉嫩一区二区三区四区公司1 | 91久久久久久久久久久 | 亚洲一区二区三区免费观看 | 精品无码久久久久久国产 | 免费国产一区二区视频 | 精品1区2区 | 亚洲天堂久久 | 拍真实国产伦偷精品 | 国产精品一二三区 | 国产特级毛片aaaaaa喷潮 | 免费成人在线网站 | 一级一级毛片免费看 | 亚洲精选一区二区 | 国产9久| 成人欧美一区二区三区在线观看 | 成人黄色在线 | 国产一在线观看 | 涩色视频在线观看 | 在线播放国产一区二区三区 | 国产乱码精品一区二区三区忘忧草 | 九九热在线视频免费观看 | 国内精品久久精品 | 久久久久久国产精品三区 | 国产精品一区二区在线 | 国产成在线观看免费视频 | 黄色网址免费在线观看 | 精品欧美一区二区精品久久 | 日韩综合在线 | 免费国产成人av |