整點溫度記錄裝置基于DS18B20,程序實現比較簡單,適于初學者
由于本設計是測溫電路,進而考慮到用溫度傳感器,在單片機電路設計中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易直接讀取被測溫度值,進行轉換,電路簡單,精度高,軟硬件都以實現,而且使用單片機的接口便于系統的再擴展,滿足設計要求。當溫度傳感器DS18B20把所測得的溫度發送到STC12C5A60S2單片機上,經單片機處理,將把溫度通過串口輸出。利用STC12C5A60S2芯片控制溫度傳感器DS18B20進行實時溫度檢測并顯示,能夠實現快速測量環境溫度。單片機從時鐘芯片DS12C887上讀取時間數據,并且在顯示電路上顯示和進行串口輸出。設計框圖如下:
0.png (32.26 KB, 下載次數: 29)
下載附件
2019-6-21 02:49 上傳
主程序的主要功能是負責溫度的實時顯示、讀出并串口輸出DS18B20的測量的當前溫度值,串口輸出DS12C887的時間。
0.png (31.98 KB, 下載次數: 35)
下載附件
2019-6-21 02:50 上傳
源程序如下:
#include "reg51.h"
#include"absacc.h"
#include"math.h"
#include"intrins.h"
void main()
{
SP=0x60;
DS_init();
//write_time(); //DS12C887時間設置
DS18B20_Init();
key5=0;
led_t=0xf7;
led_d=0xfb;
led_l=0xfd;
led_h=0xfe;
while(1)
{
readtime();
//讀取溫度
ReadTemp();
//1小時
if((time[1]==0)&&(time[0]==0)&&(bzcun==0)){bzcun=1;ti=time[2];temp[ti]=wendu1;/*ti=(ti+1)%24;*/weep();}
if((time[0]>1)&&(bzcun==1)){bzcun=0;}
//5s
//if((time[0]==5)&&(bzcun==0)){bzcun=1;temp[ti]=wendu1;ti=(ti+1)%24; weep();}
//if((time[0]>6)&&(bzcun==1)){bzcun=0;}
if(mode==0){crt_time();} //顯示時間
if(mode==1){crt_wendu();} //顯示溫度
if(mod==2){crt_time();}
if(mod==3){crt_zdwendu();}//顯示整點溫度記錄
if(moshi==0)
{
//切換
if(key1==0){mode=(mode+1)%2;mod=0;while(key1==0);}
if(key2==0){mod=((mod+1)%2)+2;mode=2;while(key2==0);}
//查詢
if(mod==3)
{
if(key3==0){ti=(ti+1)%24;while(key3==0);}
if(key4==0){ti=(ti-1)%24;while(key4==0);}
}
}
}
}
/*************完整源碼請下載附件*************************/
全部資料51hei下載地址:
整點溫度記錄設計.rar
(1.35 MB, 下載次數: 49)
2019-6-20 16:01 上傳
點擊文件名下載附件
完整程序下載 下載積分: 黑幣 -5
|