}
{ }
count=0; miao++; if(miao==60) { }
//write_sfm(10,miao);
miao=0; fen++; if(fen==60) { // }
//write_sfm(7,fen);
fen=0; shi++; if(shi==24) { }
write_sfm(4,shi);
shi=0;
温感部分
#include
sbit ds=P1^1; //温度传感器信号线 //sbit beep=P2^3; //蜂鸣器 uint temp; float f_temp;
void dsreset(void) //18B20复位,初始化函数 { uint i; ds=0; i=103; while(i>0)i--; ds=1; i=4; while(i>0)i--; }
bit tempreadbit(void) { uint i; bit dat;
ds=0;i++; ds=1;i++;i++; dat=ds; i=8;while(i>0)i--; return (dat); }
uchar tempread(void) {
//读1位函数 //i++ 起延时作用 //读1个字节 uchar i,j,dat; dat=0;
for(i=1;i<=8;i++) {
j=tempreadbit();
dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DAT里 }
return(dat); }
void tempwritebyte(uchar dat) //向18B20写一个字节数据 { uint i; uchar j; bit testb; for(j=1;j<=8;j++) {
testb=dat&0x01; dat=dat>>1; if(testb) //写 1 { ds=0; i++;i++; ds=1;
i=8;while(i>0)i--; } else
{
ds=0; //写 0 i=8;while(i>0)i--; ds=1; i++;i++; } } }
void tempchange(void) //DS18B20 开始获取温度并转换 {
dsreset(); delay(1);
tempwritebyte(0xcc); // 写跳过读ROM指令 tempwritebyte(0x44); // 写温度转换指令 }
uint get_temp() //读取寄存器中存储的温度数据 {
uchar a,b; dsreset(); delay(1);
tempwritebyte(0xcc); tempwritebyte(0xbe);
a=tempread(); //读低8位 b=tempread(); //读高8位 temp=b;
temp<<=8; //两个字节组合为1个字 temp=temp|a;
f_temp=temp*0.0625; //温度在寄存器中为12位 分辨率位0.0625° temp=f_temp*10+0.5; //乘以10表示小数点后面只取1位,加0.5是四舍五入 f_temp=f_temp+0.05;
return temp; //temp是整型 }
////////////////////显示程序调用lcd中的write_sfm1 十位地址写4 void dis_temp(uint t) { uint i; i=t/100; write_sfm1(0,i); i=(t0)/10; write_sfm1(1,i); i=t; write_sfm1(3,i); }
void dis_temp1(uint t) //显示储存的温度
{ uint i; i=t/100; write_sfm1(11,i); i=(t0)/10; write_sfm1(12,i); i=t;
个位为5 小数为7//////////////////////////