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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機實現DS18B20溫度檢測與TFT屏顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:634015 發表于 2020-10-2 23:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式


  1. //部分代碼:

  2. #include "public.h"  

  3. #include "uart.h"

  4. #include "tftlcd.h"

  5. #include "touch.h"

  6. #include "gui.h"

  7. #include "ds18b20.h"





  8. sbit LED1=P3^6;





  9. #define GRAPH_XSTART                                5

  10. #define GRAPH_YSTART                                40

  11. #define GRAPH_WIDTH                                        160

  12. #define GRAPH_HEIGHT                                130

  13. #define GRAPH_BACKCOLOR                                BLACK

  14. #define GRAPH_FRONTCOLOR                        GRAY

  15. #define GRAPH_RIM_LTOC                                 0XA535            //左上外線顏色

  16. #define GRAPH_RIM_LTIC                                 0X8431                //左上內線顏色

  17. #define GRAPH_RIM_RBOC                                 0XFFFF                //右下外線顏色

  18. #define GRAPH_RIM_RBIC                                 0XDEFC                //右下內線顏色





  19. #define VALID_AREA_SPACE_LEFT                30

  20. #define VALID_AREA_SPACE_RIGHT                5

  21. #define VALID_AREA_SPACE_TOP                5

  22. #define VALID_AREA_SPACE_BOTTOM                5

  23. #define VALID_AREA_GRID_XSTART                0

  24. #define VALID_AREA_GRID_YSTART                0        

  25. #define VALID_AREA_GRID_SPACE_X                20

  26. #define VALID_AREA_GRID_SPACE_Y                20

  27. #define VALID_AREA_GRID_LINE_COLOR        GRAY

  28. #define VAILD_AREA_GRID_WIDTH                (GRAPH_WIDTH-VALID_AREA_SPACE_LEFT-VALID_AREA_SPACE_RIGHT)

  29. #define VAILD_AREA_GRID_HEIGHT                (GRAPH_HEIGHT-VALID_AREA_SPACE_TOP-VALID_AREA_SPACE_BOTTOM)

  30. #define VAILD_AREA_GRID_XNUM                (VAILD_AREA_GRID_WIDTH/VALID_AREA_GRID_SPACE_X)

  31. #define VAILD_AREA_GRID_YNUM                (VAILD_AREA_GRID_HEIGHT/VALID_AREA_GRID_SPACE_Y)





  32. #define TEXT_XSTART                                        GRAPH_XSTART

  33. #define TEXT_YSTART                                        GRAPH_YSTART+VALID_AREA_SPACE_TOP

  34. #define TEXT_XSPACE                                        VALID_AREA_GRID_SPACE_X

  35. #define TEXT_YSPACE                                        VALID_AREA_GRID_SPACE_Y

  36. #define TEXT_WIDTH                                        GRAPH_WIDTH-VAILD_AREA_GRID_WIDTH

  37. #define TEXT_HEIGHT                                        GRAPH_HEIGHT-VAILD_AREA_GRID_HEIGHT

  38. #define TEXT_COLOR                                        BLUE

  39. #define TEXT_FONT                                        12



  40. #define GRAPH_OBJECT_XSTART                        GRAPH_XSTART+VALID_AREA_SPACE_LEFT+VALID_AREA_GRID_XSTART

  41. #define GRAPH_OBJECT_YSTART                        VAILD_AREA_GRID_HEIGHT+(GRAPH_YSTART+VALID_AREA_SPACE_TOP+VALID_AREA_GRID_YSTART)

  42. #define GRAPH_OBJECT_COLOR                        GREEN               



  43. const u16 text_value[]={120,100,80,60,40,20};



  44. //圖形繪制

  45. //x0,y0:圖形的左上角坐標

  46. //width,height:圖形的尺寸

  47. //backcolor:背景顏色

  48. //frontcolor:前景顏色

  49. void Graph_Create(u16 x0,u16 y0,u16 width,u16 height,u16 backcolor,u16 frontcolor)

  50. {

  51.         u8 i=0;



  52.         gui_draw_vline(x0,y0,height,GRAPH_RIM_LTOC);                                //左外線

  53.         gui_draw_hline(x0,y0,width,GRAPH_RIM_LTOC);                                        //上外線

  54.         gui_draw_vline(x0+1,y0+1,height-2,GRAPH_RIM_LTIC);                        //左內線

  55.         gui_draw_hline(x0+1,y0+1,width-2,GRAPH_RIM_LTIC);                        //上內線

  56.         gui_draw_vline(x0+width-1,y0,height,GRAPH_RIM_RBOC);                //右外線

  57.         gui_draw_hline(x0,y0+height-1,width,GRAPH_RIM_RBOC);                //下外線

  58.         gui_draw_vline(x0+width-2,y0+1,height-2,GRAPH_RIM_RBIC);        //右內線

  59.         gui_draw_hline(x0+1,y0+height-2,width-2,GRAPH_RIM_RBIC);        //下內線

  60.         gui_fill_rectangle(x0+2,y0+2,width-3,height-3,frontcolor);        //填充內部

  61.         gui_fill_rectangle(x0+VALID_AREA_SPACE_LEFT,y0+VALID_AREA_SPACE_TOP,width-VALID_AREA_SPACE_LEFT-VALID_AREA_SPACE_RIGHT,height-VALID_AREA_SPACE_TOP-VALID_AREA_SPACE_BOTTOM,backcolor);

  62.         

  63.         for(i=0;i<VAILD_AREA_GRID_XNUM;i++)

  64.         {

  65.                 gui_draw_vline(x0+VALID_AREA_SPACE_LEFT+VALID_AREA_GRID_XSTART+(VALID_AREA_GRID_SPACE_X*i),y0+VALID_AREA_SPACE_TOP,height-VALID_AREA_SPACE_TOP-VALID_AREA_SPACE_BOTTOM,VALID_AREA_GRID_LINE_COLOR);        

  66.         }

  67.         for(i=0;i<VAILD_AREA_GRID_YNUM;i++)

  68.         {

  69.                 gui_draw_hline(x0+VALID_AREA_SPACE_LEFT+VALID_AREA_GRID_XSTART,y0+VALID_AREA_SPACE_TOP+(VALID_AREA_GRID_SPACE_Y*i),width-VALID_AREA_SPACE_LEFT-VALID_AREA_SPACE_RIGHT,VALID_AREA_GRID_LINE_COLOR);        

  70.         }                        

  71. }



  72. void ReDraw_ValidAreaGird(u16 x0,u16 y0,u16 width,u16 height,u16 backcolor,u16 frontcolor)

  73. {

  74.         u8 i=0;



  75.         gui_fill_rectangle(x0+VALID_AREA_SPACE_LEFT,y0+VALID_AREA_SPACE_TOP,width-VALID_AREA_SPACE_LEFT-VALID_AREA_SPACE_RIGHT,height-VALID_AREA_SPACE_TOP-VALID_AREA_SPACE_BOTTOM,backcolor);

  76.         

  77.         for(i=0;i<VAILD_AREA_GRID_XNUM;i++)

  78.         {

  79.                 gui_draw_vline(x0+VALID_AREA_SPACE_LEFT+VALID_AREA_GRID_XSTART+(VALID_AREA_GRID_SPACE_X*i),y0+VALID_AREA_SPACE_TOP,height-VALID_AREA_SPACE_TOP-VALID_AREA_SPACE_BOTTOM,VALID_AREA_GRID_LINE_COLOR);        

  80.         }

  81.         for(i=0;i<VAILD_AREA_GRID_YNUM;i++)

  82.         {

  83.                 gui_draw_hline(x0+VALID_AREA_SPACE_LEFT+VALID_AREA_GRID_XSTART,y0+VALID_AREA_SPACE_TOP+(VALID_AREA_GRID_SPACE_Y*i),width-VALID_AREA_SPACE_LEFT-VALID_AREA_SPACE_RIGHT,VALID_AREA_GRID_LINE_COLOR);        

  84.         }               

  85. }







  86. void Graph_AddText(u16 *value)

  87. {

  88.         u8 i=0;

  89.         char text_str[VAILD_AREA_GRID_YNUM+1];



  90.         for(i=0;i<VAILD_AREA_GRID_YNUM;i++)

  91.         {        

  92.                 gui_num2strex(value[i], &text_str[i]);

  93.                 gui_show_strmid(TEXT_XSTART,TEXT_YSTART+(TEXT_YSPACE*i),TEXT_WIDTH,TEXT_HEIGHT,TEXT_COLOR,TEXT_FONT,&text_str[i]);        

  94.         }

  95. }



  96. void Graph_AddValue(u16 x0,u16 y0,u16 value,u16 color,u16 sampletime)

  97. {

  98.         static u16 xtemp=GRAPH_OBJECT_XSTART;

  99.         static u16 ytemp=GRAPH_OBJECT_YSTART;



  100.         gui_draw_bline1(xtemp,ytemp,x0+sampletime,y0-value,1,color);

  101.         xtemp=x0+sampletime;

  102.         ytemp=y0-value;



  103.         if((sampletime>VAILD_AREA_GRID_WIDTH) || (value>VAILD_AREA_GRID_HEIGHT))

  104.         {

  105.                 xtemp=GRAPH_OBJECT_XSTART;

  106.                 ytemp=GRAPH_OBJECT_YSTART-value;

  107.                 ReDraw_ValidAreaGird(GRAPH_XSTART,GRAPH_YSTART,GRAPH_WIDTH,GRAPH_HEIGHT,GRAPH_BACKCOLOR,GRAPH_FRONTCOLOR);                                                

  108.         }

  109. }













  110. #define EDIT_START_X                55                  //編輯框起始X坐標

  111. #define EDIT_START_Y                180                //編輯框起始Y坐標

  112. #define EDIT_WIDTH                        60                //編輯框長

  113. #define EDIT_HEIGHT                        20                //編輯框高



  114. #define EDIT_RIM_LTOC                 0XA535            //左上外線顏色

  115. #define EDIT_RIM_LTIC                 0X8431                //左上內線顏色

  116. #define EDIT_RIM_RBOC                 0XFFFF                //右下外線顏色

  117. #define EDIT_RIM_RBIC                 0XDEFC                //右下內線顏色



  118. #define EDIT_BACKCOLOR                WHITE          //背景色

  119. #define EDIT_FRONTCOLOR                BLUE   //前景色

  120. #define EDIT_FONTSIZE                16           //文本框內字體大小



  121. //編輯框創建

  122. //x0,y0:矩形的左上角坐標

  123. //width,height:文本框的尺寸

  124. //backcolor:背景顏色

  125. void Edit_Create(u16 x0,u16 y0,u16 width,u16 height,u16 backcolor)

  126. {

  127.         gui_draw_vline(x0,y0,height,EDIT_RIM_LTOC);                        //左外線

  128.         gui_draw_hline(x0,y0,width,EDIT_RIM_LTOC);                        //上外線

  129.         gui_draw_vline(x0+1,y0+1,height-2,EDIT_RIM_LTIC);        //左內線

  130.         gui_draw_hline(x0+1,y0+1,width-2,EDIT_RIM_LTIC);        //上內線

  131.         gui_draw_vline(x0+width-1,y0,height,EDIT_RIM_RBOC);                //右外線

  132.         gui_draw_hline(x0,y0+height-1,width,EDIT_RIM_RBOC);                //下外線

  133.         gui_draw_vline(x0+width-2,y0+1,height-2,EDIT_RIM_RBIC);        //右內線

  134.         gui_draw_hline(x0+1,y0+height-2,width-2,EDIT_RIM_RBIC);        //下內線

  135.         gui_fill_rectangle(x0+2,y0+2,width-3,height-3,backcolor);//填充內部        

  136. }



  137. //編輯框顯示字符串

  138. //x0,y0:矩形的左上角坐標

  139. //width,height:文本框的尺寸

  140. //backcolor:背景顏色

  141. //frontcolor:前景顏色

  142. //size:文字大小

  143. //str:字符串

  144. void Edit_ShowString(u16 x0,u16 y0,u16 width,u16 height,u16 backcolor,u16 frontcolor,u8 size,u8 *str)

  145. {

  146.         static u16 color_temp=0;



  147.         color_temp=BACK_COLOR;

  148.         BACK_COLOR=backcolor;

  149.         gui_show_strmidex(x0,y0,width,height,frontcolor,size,str,0);

  150.         BACK_COLOR=color_temp;        

  151. }



  152. //編輯框顯示數字

  153. //x0,y0:矩形的左上角坐標

  154. //len :數字的位數

  155. //backcolor:背景顏色

  156. //frontcolor:前景顏色

  157. //size:字體大小

  158. //num:數值(0~2^64);

  159. void Edit_ShowNum(u16 x0,u16 y0,u8 len,u16 backcolor,u16 frontcolor,u8 size,long num)

  160. {

  161.         static u16 color_temp=0;



  162.         color_temp=BACK_COLOR;

  163.         BACK_COLOR=backcolor;

  164.         gui_show_num(x0+4,y0+3,len,frontcolor,size,num,0);

  165.         BACK_COLOR=color_temp;        

  166. }





  167. //溫度監控系統測試

  168. void TempertureControlSystem_Test(void)

  169. {

  170.         u8 i=0;

  171.         float temper;

  172.         int value=0;

  173.         u8 buf[6];

  174.         u16 samptime=0;

  175.         u16 textvalue;



  176.         DS18B20_GetTemperture();



  177.         FRONT_COLOR=YELLOW;

  178.         LCD_ShowString(10,180,tftlcd_data.width,tftlcd_data.height,16,"Temp:");

  179.         LCD_ShowString(EDIT_START_X+EDIT_WIDTH+2,180,tftlcd_data.width,tftlcd_data.height,16,"^C");

  180.         Edit_Create(EDIT_START_X,EDIT_START_Y,EDIT_WIDTH,EDIT_HEIGHT,EDIT_BACKCOLOR);

  181.         

  182.         Graph_Create(GRAPH_XSTART,GRAPH_YSTART,GRAPH_WIDTH,GRAPH_HEIGHT,GRAPH_BACKCOLOR,GRAPH_FRONTCOLOR);

  183.         Graph_AddText(text_value);



  184.         while(1)

  185.         {

  186.                 i++;

  187.                 if(i%10==0)

  188.                 {

  189.                         LED1=!LED1;

  190.                         samptime++;

  191.                         temper=DS18B20_GetTemperture();

  192.                         if(temper<0)

  193.                         {

  194.                                 printf("檢測的溫度為:-");

  195.                         }

  196.                         else

  197.                         {

  198.                                 printf("檢測的溫度為: ");

  199.                         }

  200.                         printf("%.2f°C\r\n",temper);



  201.                         value=temper;



  202.                         Graph_AddValue(GRAPH_OBJECT_XSTART,GRAPH_OBJECT_YSTART,value,GRAPH_OBJECT_COLOR,samptime);

  203.                         if((samptime>VAILD_AREA_GRID_WIDTH))samptime=0;

  204. //                        Edit_ShowNum(EDIT_START_X,EDIT_START_Y,6,EDIT_BACKCOLOR,EDIT_FRONTCOLOR,EDIT_FONTSIZE,value);

  205.                         textvalue=temper*10;

  206.                         buf[0]=textvalue/1000+0x30;

  207.                         buf[1]=textvalue%1000/100+0x30;

  208.                         buf[2]=textvalue%1000%100/10+0x30;

  209.                         buf[3]='.';

  210.                         buf[4]=textvalue%1000%100%10+0x30;

  211.                         buf[5]='\0';

  212.                         Edit_ShowString(EDIT_START_X,EDIT_START_Y,EDIT_WIDTH,EDIT_HEIGHT,EDIT_BACKCOLOR,EDIT_FRONTCOLOR,EDIT_FONTSIZE,buf);

  213.                 }

  214.                 delay_ms(10);

  215.         }        

  216. }



  217. void main()

  218. {        

  219.         



  220.         UART_Init();

  221.         TFTLCD_Init();



  222.         FRONT_COLOR=RED;

  223.         LCD_ShowString(10,10,tftlcd_data.width,tftlcd_data.height,16,"Temperature Test");



  224.         while(DS18B20_Init())

  225.         {

  226.                 LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"DS18B20 Error!");        

  227.         }

  228.         LCD_ShowString(10,30,tftlcd_data.width,tftlcd_data.height,16,"                 ");

  229.         TempertureControlSystem_Test();

  230.         while(1)

  231.         {

  232.                

  233.                                 

  234.         }               

  235. }
復制代碼




溫度監控系統.zip

173.53 KB, 下載次數: 24, 下載積分: 黑幣 -5

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕av亚洲精品一部二部 | 玖玖玖在线 | www.五月天婷婷 | 国产精品免费一区二区三区四区 | 在线播放精品视频 | 成人美女免费网站视频 | a毛片| 久久久精品 | 午夜视频精品 | 一区视频 | 欧美在线精品一区 | 97色免费视频 | 精品久久国产 | 国产丝袜一区二区三区免费视频 | www.免费看片.com | 福利一区视频 | 91久久精品一区二区二区 | 欧美成人精品一区二区男人看 | 国产精品乱码一区二三区小蝌蚪 | 中文字幕日韩一区 | 台湾佬成人网 | 亚洲国产一区在线 | 欧美激情一区二区 | 国产精品揄拍一区二区 | 国产成人免费视频网站高清观看视频 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 久草视频在线看 | 亚洲日韩中文字幕一区 | 国产精品一区视频 | 午夜合集 | 国产亚洲高清视频 | 福利久久 | 蜜月va乱码一区二区三区 | 日韩国产一区二区三区 | 久久久精品国产 | 91麻豆产精品久久久久久夏晴子 | 国产乱码精品1区2区3区 | 91香蕉嫩草 | 成人在线a | 免费99视频 | 国产欧美精品一区二区色综合 |