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

標(biāo)題: 基于51單片機(jī)的LCD1602+DS18B20溫度報警器Proteus仿真圖代碼 [打印本頁]

作者: ihh湖北    時間: 2022-11-22 10:00
標(biāo)題: 基于51單片機(jī)的LCD1602+DS18B20溫度報警器Proteus仿真圖代碼
需要的可以自行下載(包括原理圖文件)


單片機(jī)源程序如下:
  1. #include <REGX51.H>

  2. #include "18b20.h"
  3. #include "LCD1602.h"
  4. #include <INTRINS.H>
  5. #include "Buzzer.h"

  6. sbit K1=P3^0;
  7. sbit K2=P3^1;
  8. sbit K3=P3^2;
  9. float T;
  10. unsigned flag=0;     //轉(zhuǎn)換上下限溫度設(shè)置

  11. main()
  12. {
  13.     int high=37,high1=37,low=0,low1=0;//警告溫度上下限,不能用unsigned
  14.         LCD_Init();                                   //lcd初始化
  15.         DS18B20_ConvertT();               //轉(zhuǎn)換溫度
  16.         delay(3000);               //等待轉(zhuǎn)換
  17.         
  18.         while(1)
  19.         {
  20. //===================非警告狀態(tài)顯示字符串、數(shù)字提示==============================
  21.      LCD_ShowString(2,10,"'C");
  22.          LCD_ShowString(1,1,"high");
  23.          LCD_ShowString(1,9,"low");
  24.          LCD_ShowString(2,1,"Temp");
  25.          LCD_ShowNum(1,6,high1,2);        
  26.          LCD_ShowNum(1,13,low1,2);               
  27.          delay(400);
  28.                
  29. //==================報警溫度上下限設(shè)置==============================
  30.         
  31.                 if(K1==0){delay(200);if(K1==0)flag++;}//上下限設(shè)置轉(zhuǎn)換
  32.                
  33.                 if(flag%2==0)                                                  //上限設(shè)置        
  34.                 {
  35.                 if(K2==0){delay(400);if(K2==0)high++;}
  36.                 if(K3==0){delay(400);if(K3==0)high--;}
  37.             }
  38.                 if(flag%2!=0)                                                  //下限設(shè)置
  39.                 {
  40.                 if(K2==0){delay(400);if(K2==0)low++;}
  41.                 if(K3==0){delay(400);if(K3==0)low--;}
  42.             }
  43.                
  44. //=================零下溫度處理=====================================
  45.                 if(high<0){high1=-high;LCD_ShowChar(1,5,'-');}
  46.           else high1=high;
  47.                 if(low<0){low1=-low;LCD_ShowChar(1,12,'-');}
  48.           else low1=low;
  49.                
  50. //===================判斷報警======================================               
  51.                 while(DS18B20_ReadT()<(float)low||DS18B20_ReadT()>(float)high)
  52.                 {
  53.                         DS18B20_ConvertT();        //轉(zhuǎn)換溫度,保證溫度回歸正常值后跳出報警
  54.                         Buzzer_Time(200);
  55.                         LCD_ShowString(2,3,"warning!!!");
  56.                         delay(400);
  57.                         LCD_WriteCommand(0x01);//清屏,一定要清屏                                
  58.                 }
  59.                
  60.             while(DS18B20_ReadT()<low||DS18B20_ReadT()>high)
  61.                 {
  62.                         DS18B20_ConvertT();        //轉(zhuǎn)換溫度,保證溫度回歸正常值后跳出報警
  63.                         Buzzer_Time(200);
  64.                         LCD_ShowString(2,3,"warning!!!");
  65.                         delay(400);
  66.                         LCD_WriteCommand(0x01);//清屏,一定要清屏                                
  67.                 }
  68.                
  69.                
  70. //=====================顯示溫度====================================
  71.                

  72.                 DS18B20_ConvertT();        //轉(zhuǎn)換溫度
  73.                 T=DS18B20_ReadT();        //讀取溫度
  74.                 delay(100);          //等待轉(zhuǎn)換,不能刪除
  75.                
  76.                 if(T<0)                                //如果溫度小于0
  77.                 {
  78.                         LCD_ShowChar(2,5,'-');        //顯示負(fù)號
  79.                         T=-T;                        //將溫度變?yōu)檎龜?shù)
  80.                 }
  81.                 else                                //如果溫度大于等于0
  82.                 {
  83.                         LCD_ShowChar(2,5,' ');        //顯示正號
  84.                 }
  85.                
  86.                 LCD_ShowNum(2,6,T,2);                //顯示溫度整數(shù)部分
  87.                 LCD_ShowChar(2,8,'.');                //顯示小數(shù)點
  88.                 LCD_ShowNum(2,9,(unsigned long)(T*10)%10,1);//顯示溫度小數(shù)部分        
  89.         }        
  90. }
復(fù)制代碼

Keil代碼與Proteus仿真下載:
18b20ccc.rar (183.14 KB, 下載次數(shù): 292)


作者: yangbulasi    時間: 2023-4-10 08:58
18b20和1602的結(jié)合。值得學(xué)習(xí)

作者: Revolution_2024    時間: 2024-6-18 11:33
求帖代碼




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1