欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4621|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)DS18b20溫度檢測液晶顯示

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

實(shí)物圖如下:



單片機(jī)源程序如下:
  1. /*-----------------------------------------------
  2.   名稱:DS18b20 溫度檢測液晶顯示
  3.   修改:無
  4.   內(nèi)容:
  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;  //獨(dú)立按鍵
  12. sbit KEY1=P1^1;  //獨(dú)立按鍵
  13. sbit KEY2=P1^2;  //獨(dú)立按鍵
  14. sbit KEY3=P1^3;  //獨(dú)立按鍵

  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;//定義讀時間標(biāo)志

  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.                     主函數(shù)
  38. ------------------------------------------------*/
  39. void main (void)
  40. {         
  41. float chazhi=0;       
  42. int temp;
  43. float temperature;
  44. float settemperature=30;
  45. char displaytemp[16];//定義顯示區(qū)域臨時存儲數(shù)組
  46. int setdisplaytemp[16];
  47. LCD_Init();           //初始化液晶
  48. DelayMs(20);          //延時有助于穩(wěn)定
  49. LCD_Clear();          //清屏
  50. Init_Timer0();
  51. UART_Init();
  52. Lcd_User_Chr();       //寫入自定義字符
  53. LCD_Write_Char(12,0,0x01);//寫入溫度右上角點(diǎn)
  54. LCD_Write_Char(13,0,'C'); //寫入字符C
  55. LCD_Write_Char(14,1,0x01);//寫入溫度右上角點(diǎn)
  56. LCD_Write_Char(15,1,'C'); //寫入字符C

  57. while (1)         //主循環(huán)
  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;           //定時器開關(guān)打開
  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; //讀標(biāo)志位置1
  134.         }
  135. }


復(fù)制代碼

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




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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表