数字万年历温度控制器.docx
《数字万年历温度控制器.docx》由会员分享,可在线阅读,更多相关《数字万年历温度控制器.docx(23页珍藏版)》请在冰豆网上搜索。
数字万年历温度控制器
//Header:
DS18B20
//FileName:
tem.h
#include
#include"tem.h"
#defineuintunsignedint
#defineucharunsignedchar
ucharcodetable[]="2013-05-24FRI";
ucharcodetable1[]="23:
59:
55";
ucharcodeweek[]="MONTUEWEDTHUFRISTASUN";
ucharcodedis4[]={"0123456789-."};
sbitrs=P3^4;
sbitrw=P3^5;
sbitlcden=P3^6;
sbits1=P1^1;
sbits2=P1^2;
sbits3=P1^3;
sbitfeng=P3^7;
sbitled1=P2^0;
sbitled2=P2^1;
sbitled3=P2^2;
sbitled4=P2^3;
sbitled5=P2^4;
sbitled6=P2^5;
sbitled7=P2^6;
sbitled8=P2^7;
//uintset_higer=300;
uintyushezhi=8500;
uintw1=300;
uintw2=310;
uintw3=320;
uintw4=330;
uintw5=340;
uintw6=350;
uintw7=360;
uintw8=370;
ucharcount,s1num,k;
charshi,fen,miao,year1,year2,month,day,w,Y;
voiddelayms(ucharz)//延时函数
{
uchari,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
voidwrite_com(ucharcom)
{
rs=0;
rw=0;
lcden=0;
P0=com;
delayms(3);
lcden=1;
delayms(3);
lcden=0;
}
voidwrite_date(uchardate)
{
rs=1;
rw=0;
lcden=0;
P0=date;
delayms(3);
lcden=1;
delayms(3);
lcden=0;
}
voidinit()
{
ucharnum;
s1num=0;
lcden=0;
year1=20;
year2=13;
month=05;
day=24;
shi=23;
fen=59;
miao=55;
k=5;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;num<15;num++)
{
write_date(table[num]);
delayms(5);
}
write_com(0x80+0x40);
for(num=0;num<12;num++)
{
write_date(table1[num]);
delayms(5);
}
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
}
voidwrite_week(ucharadd,uchark)
{
uchari;
write_com(0x80+add);
switch(k)
{
case1:
for(i=0;i<3;i++)
{
write_date(week[i]);
}
break;
case2:
for(i=4;i<7;i++)
{
write_date(week[i]);
}
break;
case3:
for(i=8;i<11;i++)
{
write_date(week[i]);
}
break;
case4:
for(i=12;i<15;i++)
{
write_date(week[i]);
}
break;
case5:
for(i=16;i<19;i++)
{
write_date(week[i]);
}
break;
case6:
for(i=20;i<23;i++)
{
write_date(week[i]);
}
break;
case7:
for(i=24;i<27;i++)
{
write_date(week[i]);
}
break;
default:
break;
}
}
voidwrite_sfm(ucharadd,uchardate)
{
ucharshi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+0x3d+add);
write_date(0x30+shi);
write_date(0x30+ge);
}
voidwrite_tem(ucharadd,uchardate)
{
//ucharshi,ge;
//shi=date/10;
//ge=date%10;
write_com(0x80+0x4e+add);
write_date(0x30+date);
//write_date(0x30+ge);
}
voidwrite_nyr(ucharadd,uchardate)
{
ucharshi,ge;
shi=date/10;
ge=date%10;
write_com(0x80+add);
write_date(0x30+shi);
write_date(0x30+ge);
}
voidkeyscan()
{
//rd=0;
if(s1==0)
{
delayms(5);
if(s1==0)
{
s1num++;
while(!
s1);
if(s1num==1)
{
TR0=0;
write_com(0x80+0x3d+14);
write_com(0x0f);//显示光标
}
}
if(s1num==2)
{
write_com(0x80+0x3d+11);
}
if(s1num==3)
{
write_com(0x80+0x3d+8);
}
if(s1num==4)
{
write_com(0x80+10);
}
if(s1num==5)
{
write_com(0x80+7);
}
if(s1num==6)
{
write_com(0x80+4);
}
if(s1num==7)
{
write_com(0x80+12);
}
if(s1num==8)
{
s1num=0;
write_com(0x0c);
TR0=1;
}
/*if(s1num==4)
{
s1num=0;
write_com(0x0c);
TR0=1;
}*/
}
if(s1num!
=0)//changepluss
{
if(s2==0)
{
delayms(5);
if(s2==0)
{
while(!
s2);
if(s1num==1)
{
miao++;
if(miao==60)
miao=0;
write_sfm(13,miao);
write_com(0x80+0x3d+14);
}
if(s1num==2)
{
fen++;
if(fen==60)
fen=0;
write_sfm(10,fen);
write_com(0x80+0x3d+11);
}
if(s1num==3)
{
shi++;
if(shi==24)
shi=0;
write_sfm(7,shi);
write_com(0x80+0x3d+8);
}
if(s1num==4)
{
day++;
if(day==32)
day=1;
write_nyr(9,day);
write_com(0x80+10);
}
if(s1num==5)
{
month++;
if(month==13)
month=1;
write_nyr(6,month);
write_com(0x80+7);
}
if(s1num==6)
{
year2++;
if(year2==100)
{
year2=0;
year1++;
}
write_nyr(1,year1);
write_nyr(3,year2);
write_com(0x80+4);
}
if(s1num==7)
{
k++;
if(k==8)
k=1;
write_week(12,k);
write_com(0x80+12);
}
}
}
if(s3==0)//changeminuse
{
delayms(5);
if(s3==0);
{
while(!
s3);
if(s1num==1)
{
miao--;
if(miao==-1)
miao=59;
write_sfm(13,miao);
write_com(0x80+0x40+14);
}
if(s1num==2)
{
fen--;
if(fen==-1)
fen=59;
write_sfm(10,fen);
write_com(0x80+0x40+11);
}
if(s1num==3)
{
shi--;
if(shi==-1)
shi=23;
write_sfm(7,shi);
write_com(0x80+0x40+8);
}
if(s1num==4)
{
day--;
if(day==0)
day=31;
write_nyr(9,day);
write_com(0x80+10);
}
if(s1num==5)
{
month--;
if(month==0)
month=12;
write_nyr(6,month);
write_com(0x80+7);
}
if(s1num==6)
{
year2--;
if(year2==0)
{
year2=99;
year1--;
}
write_nyr(1,year1);
write_nyr(3,year2);
write_com(0x80+4);
}
if(s1num==7)
{
k--;
if(k==-1)
k=7;
write_week(12,k);
write_com(0x80+12);
}
}
}
}
}
voiddisplay_tem(uintz)//显示温度
{
ucharbai,shi,ge;
bai=z/100;
shi=z%100/10;
ge=z%10;
write_tem(0,bai);
write_tem(1,shi);
//write_tem(2,'.');
write_tem(3,ge);
}
voidmain()
{
init();
while
(1)
{
keyscan();
if(temp{led1=1;led2=1;led3=1;led4=1;led5=1;led6=1;led7=1;led8=1;feng=1;}
elseif(temp>=w1&&temp{led1=0;led2=1;led3=1;led4=1;led5=1;led6=1;led7=1;led8=1;feng=1;}
elseif(temp>=w2&&temp{led1=0;led2=0;led3=1;led4=1;led5=1;led6=1;led7=1;led8=1;feng=1;}
elseif(temp>=w3&&temp{led1=0;led2=0;led3=0;led4=1;led5=1;led6=1;led7=1;led8=1;feng=1;}
elseif(temp>=w4&&temp{led1=0;led2=0;led3=0;led4=0;led5=1;led6=1;led7=1;led8=1;feng=1;}
elseif(temp>=w5&&temp{led1=0;led2=0;led3=0;led4=0;led5=0;led6=1;led7=1;led8=1;feng=1;}
elseif(temp>=w6&&temp{led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=1;led8=1;feng=1;}
elseif(temp>=w7&&temp{led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=0;led8=1;feng=1;}
elseif(temp>=w8)
{led1=0;led2=0;led3=0;led4=0;led5=0;led6=0;led7=0;led8=0;feng=0;}
elseif(temp=yushezhi)
{led1=1;led2=1;led3=1;led4=1;led5=1;led6=1;led7=1;led8=1;feng=1;}
}
//while
(1);
}
voidtime0()interrupt1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
count++;
Y=year1*1000+year2;
if(count==20)
{
count=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
day++;
k++;
if(k==8)
k=1;
write_week(12,k);
switch(month)
{case1:
case3:
case5:
case7:
case8:
case10:
case12:
if(day==32)
{
day=1;
month++;
if(month==13)
{
month=1;
year2++;
if(year2==100)
{
year2=0;
year1++;
write_nyr(3,year2);
}
write_nyr(1,year1);
}
write_nyr(6,month);
}
break;
case4:
case6:
case9:
case11:
if(day==21)
{
day=1;
month++;
if(month==13)
{
month=1;
year2++;
if(year2==100)
{
year2=0;
year1++;
write_nyr(3,year2);
}
write_nyr(1,year1);
}
write_nyr(6,month);
}
break;
case2:
if(Y%100==0)
{
if(Y%400==0)
{
if(day==30)
{
day=1;
month++;
if(month==13)
{
month=1;
year2++;
if(year2==100)
{
year2=0;
year1++;
write_nyr(3,year2);
}
write_nyr(1,year1);
}
write_nyr(6,month);
}
}
else
{
if(day==99)
{
day=1;
month++;
if(month==13)
{
month=1;
year2++;
if(year2==100)
{
year2=0;
year1++;
write_nyr(3,year2);
}
write_nyr(1,year1);
}
write_nyr(6,month);
}
}
}
elseif(Y%4==0)
{
if(day==30)
{
day=1;
month++;
if(month==13)
{
month=1;
year2++;
if(year2==100)
{
year2=0;
year1++;
write_nyr(3,year2);
}
write_nyr(1,year1);
}
write_