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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機DS18b20溫度檢測液晶顯示

[復制鏈接]
跳轉到指定樓層
樓主
17年節能減排大賽作品,獲得校賽一等獎,控制簡單,主要是想法比較好,想做類似項目的可以參考一下

實物圖如下:



單片機源程序如下:
  1. /*-----------------------------------------------
  2.   名稱:DS18b20 溫度檢測液晶顯示
  3.   修改:無
  4.   內容:
  5. ------------------------------------------------*/
  6. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  7. #include<stdio.h>
  8. #include "18b20.h"
  9. #include "1602.h"
  10. #include "delay.h"


  11. sbit KEY0=P1^0;  //獨立按鍵
  12. sbit KEY1=P1^1;  //獨立按鍵
  13. sbit KEY2=P1^2;  //獨立按鍵
  14. sbit KEY3=P1^3;  //獨立按鍵

  15. sbit LED0=P1^4;  //指示燈
  16. sbit LED1=P1^5;  //指示燈
  17. sbit LED2=P1^6;  //指示燈
  18. sbit LED3=P1^7;  //指示燈

  19. sbit RELAY0=P3^3;  //繼電器
  20. sbit RELAY1=P3^4;  //繼電器

  21. bit ReadTempFlag;//定義讀時間標志

  22. void Init_Timer0(void);//定時器初始化
  23. /*------------------------------------------------
  24.               串口通訊初始化
  25. ------------------------------------------------*/
  26. void UART_Init(void)
  27. {
  28.     SCON  = 0x50;                        // SCON: 模式 1, 8-bit UART, 使能接收  
  29.     TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重裝
  30.     TH1   = 0xFD;               // TH1:  重裝值 9600 波特率 晶振 11.0592MHz  
  31.     TR1   = 1;                  // TR1:  timer 1 打開                        
  32.     //EA    = 1;                  //打開總中斷
  33.     //ES    = 1;                  //打開串口中斷
  34.         TI=1;
  35. }
  36. /*------------------------------------------------
  37.                     主函數
  38. ------------------------------------------------*/
  39. void main (void)
  40. {         
  41. float chazhi=0;       
  42. int temp;
  43. float temperature;
  44. float settemperature=30;
  45. char displaytemp[16];//定義顯示區域臨時存儲數組
  46. int setdisplaytemp[16];
  47. LCD_Init();           //初始化液晶
  48. DelayMs(20);          //延時有助于穩定
  49. LCD_Clear();          //清屏
  50. Init_Timer0();
  51. UART_Init();
  52. Lcd_User_Chr();       //寫入自定義字符
  53. LCD_Write_Char(12,0,0x01);//寫入溫度右上角點
  54. LCD_Write_Char(13,0,'C'); //寫入字符C
  55. LCD_Write_Char(14,1,0x01);//寫入溫度右上角點
  56. LCD_Write_Char(15,1,'C'); //寫入字符C

  57. while (1)         //主循環
  58. {
  59.         chazhi=settemperature-temperature;
  60.         if(!KEY0)  
  61.     {
  62.            DelayMs(10);  
  63.      if(!KEY0)     
  64.            {
  65.         while(!KEY0);
  66.                {
  67.                         settemperature++;
  68.                          }
  69.            }
  70.         }
  71. if(!KEY1)  
  72.     {
  73.            DelayMs(10);
  74.      if(!KEY1)      
  75.            {
  76.        while(!KEY1);
  77.                {
  78.                   settemperature--;
  79.                          }
  80.            }
  81.         }
  82.         if(settemperature>temperature)
  83.         {
  84.                 RELAY0=0;
  85.                 RELAY1=1;   
  86.         }
  87.         if(settemperature<temperature)
  88.         {
  89.                 RELAY0=1;
  90.                 RELAY1=0;   
  91.         }
  92.         if(chazhi<0.5&&chazhi>-0.5)
  93.         {
  94.                 RELAY0=0;
  95.                 RELAY1=0;   
  96.         }
  97.         sprintf(setdisplaytemp,"SET Temp %3.0f",settemperature);//打印溫度值
  98.   LCD_Write_String(0,0,setdisplaytemp);//顯示第一行
  99.         if(ReadTempFlag==1)
  100.   {
  101.                 ReadTempFlag=0;
  102.     temp=ReadTemperature();
  103.     temperature=(float)temp*0.0625;
  104.     sprintf(displaytemp,"RT Temp %6.2f",temperature);//打印溫度值
  105.     LCD_Write_String(0,1,displaytemp);//顯示第二行
  106.   }       
  107. }
  108. }

  109. /*------------------------------------------------
  110.                     定時器初始化子程序
  111. ------------------------------------------------*/
  112. void Init_Timer0(void)
  113. {
  114. TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
  115. //TH0=0x00;              //給定初值
  116. //TL0=0x00;
  117. EA=1;            //總中斷打開
  118. ET0=1;           //定時器中斷打開
  119. TR0=1;           //定時器開關打開
  120. }
  121. /*------------------------------------------------
  122.                  定時器中斷子程序
  123. ------------------------------------------------*/
  124. void Timer0_isr(void) interrupt 1
  125. {
  126. static unsigned int num;
  127. TH0=(65536-2000)/256;                  //重新賦值 2ms
  128. TL0=(65536-2000)%256;

  129. num++;
  130. if(num==300)        //
  131.    {
  132.     num=0;
  133.     ReadTempFlag=1; //讀標志位置1
  134.         }
  135. }


復制代碼

所有資料51hei提供下載:
三通混水閥.rar (52.94 KB, 下載次數: 47)




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

使用道具 舉報

無效樓層,該帖已經被刪除
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品成人一区二区 | 精品国产乱码久久久久久88av | 国产精品久久久久无码av | 久久精品无码一区二区三区 | 一区二区三区四区在线视频 | 人人天天操 | 九九伦理片 | 国产亚洲成av人在线观看导航 | 欧区一欧区二欧区三免费 | 亚洲精品在线观看视频 | 91精品国产综合久久精品 | 国产性生活一级片 | gogo肉体亚洲高清在线视 | 日韩视频中文字幕 | 亚洲激情在线观看 | 97国产精品视频人人做人人爱 | 亚洲国产69 | 国产欧美一区二区精品忘忧草 | 亚洲一区二区视频在线观看 | 国产资源视频 | 欧美久久影院 | 久久黄网| 国产乱码高清区二区三区在线 | 欧美成人免费在线视频 | 久草在线在线精品观看 | 日韩精品一区二区三区在线观看 | 国产一区二区不卡 | 国产精品特级毛片一区二区三区 | 国产精品美女久久久久aⅴ国产馆 | 欧美日韩视频 | 中文精品视频 | 欧美精品一区二区三区在线 | 精品国产乱码久久久久久丨区2区 | 99久久婷婷国产综合精品电影 | 久操伊人| 国产精品久久久久久久久久久久久久 | 精品国产乱码久久久久久蜜臀 | 性高朝久久久久久久3小时 av一区二区三区四区 | 国产精品视频一区二区三区 | 美女黄色在线观看 | 成人在线观看免费视频 |