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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的LCD1602+DS18B20溫度報警器Proteus仿真圖代碼

  [復制鏈接]
跳轉到指定樓層
樓主
需要的可以自行下載(包括原理圖文件)


單片機源程序如下:
  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;     //轉換上下限溫度設置

  11. main()
  12. {
  13.     int high=37,high1=37,low=0,low1=0;//警告溫度上下限,不能用unsigned
  14.         LCD_Init();                                   //lcd初始化
  15.         DS18B20_ConvertT();               //轉換溫度
  16.         delay(3000);               //等待轉換
  17.         
  18.         while(1)
  19.         {
  20. //===================非警告狀態顯示字符串、數字提示==============================
  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. //==================報警溫度上下限設置==============================
  30.         
  31.                 if(K1==0){delay(200);if(K1==0)flag++;}//上下限設置轉換
  32.                
  33.                 if(flag%2==0)                                                  //上限設置        
  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)                                                  //下限設置
  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();        //轉換溫度,保證溫度回歸正常值后跳出報警
  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();        //轉換溫度,保證溫度回歸正常值后跳出報警
  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();        //轉換溫度
  73.                 T=DS18B20_ReadT();        //讀取溫度
  74.                 delay(100);          //等待轉換,不能刪除
  75.                
  76.                 if(T<0)                                //如果溫度小于0
  77.                 {
  78.                         LCD_ShowChar(2,5,'-');        //顯示負號
  79.                         T=-T;                        //將溫度變為正數
  80.                 }
  81.                 else                                //如果溫度大于等于0
  82.                 {
  83.                         LCD_ShowChar(2,5,' ');        //顯示正號
  84.                 }
  85.                
  86.                 LCD_ShowNum(2,6,T,2);                //顯示溫度整數部分
  87.                 LCD_ShowChar(2,8,'.');                //顯示小數點
  88.                 LCD_ShowNum(2,9,(unsigned long)(T*10)%10,1);//顯示溫度小數部分        
  89.         }        
  90. }
復制代碼

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

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:245820 發表于 2023-4-10 08:58 | 只看該作者
18b20和1602的結合。值得學習
回復

使用道具 舉報

板凳
ID:1125696 發表于 2024-6-18 11:33 | 只看該作者
求帖代碼
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人一区二区三区 | 一区中文字幕 | 成人免费在线 | 精品av| 亚洲三区视频 | 国产精品久久久久久久久婷婷 | 人人九九精 | 日韩精品久久 | 三级在线免费观看 | av一区二区三区四区 | av福利网站 | 国产ts一区 | 成人福利网站 | 亚洲激情专区 | 亚洲精品视频一区二区三区 | 亚洲aⅴ| 91精品国产91久久久久久密臀 | 91久久久www播放日本观看 | 成人免费在线小视频 | 日韩a在线| www.日本三级| 国产精品美女www爽爽爽视频 | 日韩精品免费在线 | 国产精品成人一区二区三区 | 亚洲 欧美 日韩 在线 | 成人精品国产免费网站 | 国产电影一区 | 中文精品久久 | 隔壁老王国产在线精品 | av在线视| 在线视频日韩 | 亚洲一区二区视频 | 日韩中文字幕av | 北条麻妃一区二区三区在线视频 | 涩涩视频网 | 国产日韩一区二区三区 | 国产农村妇女毛片精品久久麻豆 | 久久婷婷av | 精精国产视频 | 久久av网 | 亚洲欧美精品久久 |