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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32 18b20溫度控制代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:220603 發表于 2017-7-18 17:32 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
stm32溫度控制

單片機源程序如下:
  1. /*******************************************************************************
  2. // 斌超
  3. //2017/7/3
  4. *******************************************************************************/

  5. #include "config.h"
  6. #include "gui.h"

  7. int ch1=400,ch2=300,ch3=200,ch4=100;
  8. int Encoder_left;
  9. int Encoder_right;
  10. int stop_b;
  11. uint8_t showValue[7] = {0,0,0,0,0,0,0};
  12. uint8_t showTemp[2]={0,0};
  13. RTC_TimeTypeDef time;

  14. int temp_x=0,temp_g=0,temp_s=0,temp_shound=20;
  15. double temp;
  16. int temp_t,temp_pid_h,temp_pid_c,temp_pid;     //實際溫度的十倍

  17. void GUI_DisplayTemp(uint8_t num);
  18. void TEMP_Set(uint8_t num, uint8_t state);
  19. float PID_h(float temp_pid_h);
  20. float PID_c(float temp_pid_c);

  21. float kp_h=10    ,  kp_c=10     ;
  22. float ki_h=0.01  ,  ki_c=0.01   ;
  23. float kd_h=0.1   ,  kd_c=0.1    ;


  24. /********************************************************************************************************/
  25. /********************************************************************************************************/


  26. int main()
  27. {

  28.         uint8_t keyValue;
  29.         uint8_t setState, m;
  30.         
  31.         
  32. //顯示無高亮位置
  33.                
  34.         config();

  35.         

  36.     GUI_Show12Char(0, 105, "右鍵:進入或者退出設置模式", BLUE, BLACK  );
  37.                                  
  38.     GUI_Show12Char(0, 126, "左鍵:設置位置左移", BLUE, BLACK);

  39.     GUI_Show12Char(0, 147, "上鍵:設置位置數字加一", BLUE, BLACK);

  40.     GUI_Show12Char(0, 168, "下鍵:設置位置數字減一", BLUE, BLACK);


  41.                
  42.                            
  43.     setState = 0; //初始設置為普通模式,非設置模式
  44.     m = 0;        //顯示無高亮位置
  45.         


  46.   while(1)               //輪子速度
  47.         {
  48.     temp=readtemp();  //讀取溫度
  49.           temp_t=temp*10;
  50. //    printf("當前溫度為:%0.4lf ℃\r\n",temp);        
  51.                
  52.           keyValue = KEY_Scan();

  53.         /* 如果按鍵是右鍵,進入或者退出設置模式 */
  54.         if(keyValue == KEY_RIGHT)
  55.         {
  56.             if(setState == 0)
  57.             {
  58.                 setState = 1;     //進入設置模式
  59.             }
  60.             else                  //若先前已經為設置模式1則退出設置模式0
  61.             {
  62.                 setState = 0;     //退出設置模式
  63.             }
  64.             if(setState)  
  65.             {
  66.                 m = 1;     //進入設置模式則標志m為1位開始
  67.             }
  68.             else
  69.             {
  70.                 RTC_SetClock(&time);  //退出設置模式則更新時間
  71.                 m = 0;
  72.             }
  73.         }

  74.         /* 進入設置模式 */
  75.         if(setState == 1)
  76.         {
  77.             switch(keyValue)
  78.             {
  79.                 case(KEY_UP):      //上鍵高亮數字加1
  80.                     TEMP_Set(m, 1);
  81.                     break;
  82.                 case(KEY_DOWN):    //下鍵高亮數字減1
  83.                     TEMP_Set(m, 0);
  84.                     break;
  85.                 case(KEY_LEFT):    //左鍵高亮位置左移1位
  86.                     if(m == 3)
  87.                     {
  88.                         m = 1;
  89.                     }
  90.                     else
  91.                     {
  92.                         m++;
  93.                     }
  94.                     break;
  95.                 default:
  96.                     break;        
  97.             }
  98.         }
  99.         /* 普通模式顯示時鐘 */
  100.         else
  101.         {
  102.                                         //temp_shound=temp_t;//將當前溫度賦值給變量
  103.                                         temp_shound=temp_x+(temp_g*10)+(temp_s*100);  //將設置溫度的十倍賦值給變量
  104.         }
  105.                                 
  106.                                 
  107.     GUI_DisplayTemp(m);        //顯示函數
  108. //                                                                GPIO_ResetBits(GPIOC, GPIO_Pin_LED);
  109.      
  110. //                                temp_pid=temp_shound-temp_t;
  111. //                                if(temp_pid>0)
  112. //                                {
  113. //                                        temp_pid_h=temp_pid;
  114. //                                        ch1=PID_h(temp_pid_h);
  115. //                                  TIM_SetCompare1(TIM1,ch1);
  116. //                                }
  117. //                                else if(temp_pid<0)
  118. //                                {
  119. //                                        temp_pid_c=(-temp_pid);
  120. //                                  TIM_SetCompare1(TIM1,ch4);
  121. //                                }
  122.                        
  123. //GPIO_SetBits(GPIOC, GPIO_Pin_LED);
  124. //delay_ms(1000);                                

  125.                                 
  126. //                Senor_Using();//超聲波
  127. //                  end();
  128. // time = RTC_Time;       //讀取時鐘
  129. //GUI_DisplayTime(m);    //顯示時鐘               
  130. //Motor_Speed_L();
  131. //                if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)==0)
  132. //                {
  133. //                        stop();
  134. //                        delay_ms(2000);
  135. //                }
  136. //                //start();
  137.                 //stop();
  138. //   MoveQti();
  139. //    if(stop_b)        
  140. //                {
  141. //     end();
  142. //      while(1);
  143. //                }
  144. //    else ;
  145. //length_j();
  146. //printf("right:%d\n ",(int)Senor_Using());
  147.         }
  148. }        


  149. void GUI_DisplayTemp(uint8_t num)
  150. {
  151.    
  152.     /* 顯示實時溫度 */
  153.     showValue[0] = (temp_t /100) + '0';
  154.           //showValue[1] =  '';
  155.     showValue[1] = (temp_t % 100 / 10) + '0';
  156.           showValue[2] =  '.';
  157.     showValue[3] = (temp_t % 10) + '0';
  158.                 showValue[4] =  ' ';
  159.                 showValue[5] =  'C';
  160.     GUI_Show12Char(100, 50, showValue, YELLOW, BLACK);
  161.    
  162.     /* 顯示溫度十位 */
  163.     showTemp[0] = temp_s + '0';
  164.     if(num == 3)
  165.     {
  166.         GUI_Show12Char(100, 84, showTemp, GREEN, BLACK);
  167.     }
  168.     else
  169.     {
  170.         GUI_Show12Char(100, 84, showTemp, RED, BLACK);
  171.     }
  172.    
  173.     /* 顯示小數點個位 */
  174.     showTemp[0] = temp_g+ '0';
  175.     if(num == 2)
  176.     {
  177.         GUI_Show12Char(112, 84, showTemp, GREEN, BLACK);
  178.     }
  179.     else
  180.     {
  181.         GUI_Show12Char(112, 84, showTemp, RED, BLACK);
  182.     }
  183.                 showTemp[0] = '.' ;
  184.     GUI_Show12Char(124, 84, showTemp, RED, BLACK);
  185.                
  186.     /* 顯示小數點位 */
  187.     showTemp[0] =temp_x+ '0';
  188.     if(num == 1)
  189.     {
  190.         GUI_Show12Char(136, 84, showTemp, GREEN, BLACK);
  191.     }
  192.     else
  193.     {
  194.         GUI_Show12Char(136, 84, showTemp, RED, BLACK);        
  195.     }
  196.                 showTemp[0] = 'C' ;
  197.     GUI_Show12Char(148, 84, showTemp, RED, BLACK);
  198.                         showTemp[0] = ' ' ;
  199.     GUI_Show12Char(160, 84, showTemp, RED, BLACK);
  200.                
  201. }

  202. void TEMP_Set(uint8_t num, uint8_t state)
  203. {
  204.     switch(num)
  205.     {   
  206.         /* 高亮部分為小數點后一位*/
  207.         case(1):         
  208.             if(state)               
  209.             {
  210.                 if(temp_x == 9)
  211.                 {
  212.                     temp_x = 0;
  213.                 }
  214.                 else
  215.                 {
  216.                     temp_x++;
  217.                 }   
  218.             }
  219.             else
  220.             {
  221.                 if(temp_x == 0)
  222.                 {
  223.                     temp_x = 9;
  224.                 }
  225.                 else
  226.                 {
  227.                     temp_x--;
  228.                 }   
  229.             }
  230.             break;
  231.         /* 高亮部分為溫度個位數*/
  232.         case(2):        
  233.             if(state)
  234.             {
  235.                 if(temp_g == 9)
  236.                 {
  237.                     temp_g = 0;
  238.                 }
  239.                 else
  240.                 {
  241.                     temp_g++;
  242.                 }   
  243.             }
  244.             else
  245.             {
  246.                 if(temp_g == 0)
  247.                 {
  248.                     temp_g = 9;
  249.                 }
  250.                 else
  251.                 {
  252.                     temp_g--;
  253.                 }   
  254.             }
  255.             break;
  256.         /* 高亮部分為穩定十位*/
  257.         case(3):
  258.             if(state)
  259.             {
  260.                 if(temp_s == 9)
  261.                 {
  262.                     temp_s = 0;
  263.                 }
  264.                 else
  265.                 {
  266.                     temp_s++;
  267.                 }   
  268.             }
  269.             else
  270.             {
  271. ……………………

  272. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
STM32代碼.7z (245.19 KB, 下載次數: 19)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美性视频在线播放 | 99热首页| 国产精品免费在线 | 亚洲最大看片网站 | 午夜私人影院 | 婷婷国产一区二区三区 | 成人免费视频网站在线观看 | 亚洲成人久久久 | 精品国产91乱码一区二区三区 | 久久久99国产精品免费 | 色就干| 成人免费观看视频 | 中文字幕精品一区二区三区精品 | 午夜精品视频在线观看 | 国产精品99久久免费观看 | 国内自拍视频在线观看 | 在线色网| 日韩视频专区 | 欧美视频在线免费 | www.天堂av.com | 日日草天天干 | 国产精品免费观看 | 亚洲欧美中文字幕在线观看 | 国产精品99 | 日韩免费一区 | 亚洲精品日韩综合观看成人91 | 国产日产欧产精品精品推荐蛮挑 | 96久久久久久| 欧美高清视频一区 | 欧美日韩中文字幕在线 | 亚洲综合色网站 | 婷婷久久精品一区二区 | 97日韩精品 | 华丽的挑战在线观看 | 亚洲一区国产 | 精品国产网 | 一区二区视频在线观看 | 久草www| 日本a级大片| 国产在线成人 | 成人精品鲁一区一区二区 |