|
需要的可以自行下載(包括原理圖文件)
51hei圖片20221122095925.png (54.57 KB, 下載次數(shù): 33)
下載附件
2022-11-22 09:59 上傳
單片機(jī)源程序如下:
- #include <REGX51.H>
- #include "18b20.h"
- #include "LCD1602.h"
- #include <INTRINS.H>
- #include "Buzzer.h"
- sbit K1=P3^0;
- sbit K2=P3^1;
- sbit K3=P3^2;
- float T;
- unsigned flag=0; //轉(zhuǎn)換上下限溫度設(shè)置
- main()
- {
- int high=37,high1=37,low=0,low1=0;//警告溫度上下限,不能用unsigned
- LCD_Init(); //lcd初始化
- DS18B20_ConvertT(); //轉(zhuǎn)換溫度
- delay(3000); //等待轉(zhuǎn)換
-
- while(1)
- {
- //===================非警告狀態(tài)顯示字符串、數(shù)字提示==============================
- LCD_ShowString(2,10,"'C");
- LCD_ShowString(1,1,"high");
- LCD_ShowString(1,9,"low");
- LCD_ShowString(2,1,"Temp");
- LCD_ShowNum(1,6,high1,2);
- LCD_ShowNum(1,13,low1,2);
- delay(400);
-
- //==================報(bào)警溫度上下限設(shè)置==============================
-
- if(K1==0){delay(200);if(K1==0)flag++;}//上下限設(shè)置轉(zhuǎn)換
-
- if(flag%2==0) //上限設(shè)置
- {
- if(K2==0){delay(400);if(K2==0)high++;}
- if(K3==0){delay(400);if(K3==0)high--;}
- }
- if(flag%2!=0) //下限設(shè)置
- {
- if(K2==0){delay(400);if(K2==0)low++;}
- if(K3==0){delay(400);if(K3==0)low--;}
- }
-
- //=================零下溫度處理=====================================
- if(high<0){high1=-high;LCD_ShowChar(1,5,'-');}
- else high1=high;
- if(low<0){low1=-low;LCD_ShowChar(1,12,'-');}
- else low1=low;
-
- //===================判斷報(bào)警======================================
- while(DS18B20_ReadT()<(float)low||DS18B20_ReadT()>(float)high)
- {
- DS18B20_ConvertT(); //轉(zhuǎn)換溫度,保證溫度回歸正常值后跳出報(bào)警
- Buzzer_Time(200);
- LCD_ShowString(2,3,"warning!!!");
- delay(400);
- LCD_WriteCommand(0x01);//清屏,一定要清屏
- }
-
- while(DS18B20_ReadT()<low||DS18B20_ReadT()>high)
- {
- DS18B20_ConvertT(); //轉(zhuǎn)換溫度,保證溫度回歸正常值后跳出報(bào)警
- Buzzer_Time(200);
- LCD_ShowString(2,3,"warning!!!");
- delay(400);
- LCD_WriteCommand(0x01);//清屏,一定要清屏
- }
-
-
- //=====================顯示溫度====================================
-
- DS18B20_ConvertT(); //轉(zhuǎn)換溫度
- T=DS18B20_ReadT(); //讀取溫度
- delay(100); //等待轉(zhuǎn)換,不能刪除
-
- if(T<0) //如果溫度小于0
- {
- LCD_ShowChar(2,5,'-'); //顯示負(fù)號(hào)
- T=-T; //將溫度變?yōu)檎龜?shù)
- }
- else //如果溫度大于等于0
- {
- LCD_ShowChar(2,5,' '); //顯示正號(hào)
- }
-
- LCD_ShowNum(2,6,T,2); //顯示溫度整數(shù)部分
- LCD_ShowChar(2,8,'.'); //顯示小數(shù)點(diǎn)
- LCD_ShowNum(2,9,(unsigned long)(T*10)%10,1);//顯示溫度小數(shù)部分
- }
- }
復(fù)制代碼
51hei.png (12.17 KB, 下載次數(shù): 27)
下載附件
2022-11-22 22:54 上傳
Keil代碼與Proteus仿真下載:
18b20ccc.rar
(183.14 KB, 下載次數(shù): 292)
2022-11-22 09:58 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|