整点温度记录装置基于DS18B20,程序实现比较简单,适于初学者
由于本设计是测温电路,进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,电路简单,精度高,软硬件都以实现,而且使用单片机的接口便于系统的再扩展,满足设计要求。当温度传感器DS18B20把所测得的温度发送到STC12C5A60S2单片机上,经单片机处理,将把温度通过串口输出。利用STC12C5A60S2芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度。单片机从时钟芯片DS12C887上读取时间数据,并且在显示电路上显示和进行串口输出。设计框图如下:
主程序的主要功能是负责温度的实时显示、读出并串口输出DS18B20的测量的当前温度值,串口输出DS12C887的时间。
源程序如下:
#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)
|