带温度的万年历文档格式.docx
《带温度的万年历文档格式.docx》由会员分享,可在线阅读,更多相关《带温度的万年历文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
ucharcodexq2[]="
星期二"
ucharcodexq3[]="
星期三"
ucharcodexq4[]="
星期四"
ucharcodexq5[]="
星期五"
ucharcodexq6[]="
星期六"
ucharcodexq7[]="
星期日"
ucharcodedu[]="
摄氏度"
ucharcodewen[]="
温度:
"
uintshi=23,fen=59,miao=50,nian=2011,yue=3,ri=21,num1,xq=1;
uintnian1,nian2,nian3,nian4,yue1,yue2,ri1,ri2,shi1,shi2,fen1,fen2,miao1,miao2;
voiddelayms(uintxms)
{
uinti,j;
for(i=xms;
i>
0;
i--)
for(j=110;
j>
j--);
}
voiddelay(uintx)
while(x--);
voidinit()//ds18b20的初始化
ucharn;
dq=1;
delay(8);
dq=0;
delay(80);
n=dq;
delay(4);
voidwrite_byte(uchardat)//ds18b20写入一个数据
uchari;
for(i=0;
i<
8;
i++)
{
dq=0;
dq=dat&
0x01;
delay(4);
dq=1;
dat=dat>
>
1;
}
ucharread_byte(void)//ds18b20读出一个数据
ucharvalue,i;
value=value>
if(dq)
value=value|0x80;
returnvalue;
ucharread_temperature(void)//ds18b20读出温度
uchara,b;
init();
write_byte(0xcc);
write_byte(0x44);
delay(300);
write_byte(0xbe);
a=read_byte();
b=read_byte();
b<
<
=4;
b+=(a&
0xf0)>
4;
returnb;
voidwrite_com(ucharcom)//12864液晶写命令
rs=0;
wr=0;
en=0;
P0=com;
delayms(5);
en=1;
voidwrite_date(uchardate)//12864液晶写数据
rs=1;
P0=date;
voidinit_12864()//12864液晶初始化
psb=0;
write_com(0x30);
write_com(0x0c);
write_com(0x01);
voidxssj()//显示时间
write_com(0x8f);
write_date(0x30+miao2);
write_com(0x8e);
write_date(0x30+miao1);
write_com(0x8d);
write_date('
:
'
);
write_com(0x8c);
write_date(0x30+fen2);
write_com(0x8b);
write_date(0x30+fen1);
write_com(0x8a);
write_com(0x89);
write_date(0x30+shi2);
write_com(0x88);
write_date(0x30+shi1);
voidxsxq()//显示星期
uchari=0;
write_com(0x92);
if(xq==1)
while(xq1[i]!
='
\0'
)
{
write_date(xq1[i]);
i++;
}
if(xq==2)
i=0;
while(xq2[i]!
write_date(xq2[i]);
}
if(xq==3)
while(xq3[i]!
write_date(xq3[i]);
if(xq==4)
while(xq4[i]!
write_date(xq4[i]);
if(xq==5)
i=0;
while(xq5[i]!
write_date(xq5[i]);
if(xq==6)
while(xq6[i]!
write_date(xq6[i]);
if(xq==7)
while(xq7[i]!
write_date(xq7[i]);
voidxsnyr()//显示年月日
write_com(0x87);
write_date(0x30+ri1);
write_date(0x30+ri2);
write_com(0x82);
-'
write_com(0x83);
write_com(0x84);
write_date(0x30+yue1);
write_date(0x30+yue2);
write_com(0x86);
write_com(0x85);
write_com(0x80);
write_date(0x30+nian1);
write_date(0x30+nian2);
write_date(0x30+nian3);
write_date(0x30+nian4);
voidxswd()//显示温度
uchari,j;
write_com(0x98);
j=0;
while(wen[j]!
write_date(wen[j]);
j++;
write_com(0x9b);
write_date(0x30+wd1);
write_date(0x30+wd2);
write_com(0x9c);
while(du[i]!
write_date(du[i]);
i++;
voidzdinit()//中断初始化
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
voidjianpan()//键盘扫描
if(key1==0)
delayms(10);
{
;
while(!
key1);
shi++;
if(shi==24)
shi=0;
if(key2==0)
key2);
fen++;
if(fen==60)
fen=0;
if(key3==0)
key3);
xq++;
if(xq==8)
xq=1;
if(key4==0)
delayms(10);
key4);
TR0=~TR0;
voidpd()//判断时间
if(num1==20)
num1=0;
miao++;
if(miao==60)
miao=0;
fen++;
fen=0;
shi=0;
ri++;
if(ri==32)
{
ri=1;
yue++;
if(yue==12)
{
yue=1;
nian++;
if(nian==9999)
nian=0;
}
}
}
}
if(nian%4==0||nian%400==0)
if(yue==2)
if(ri==30)
ri=1;
yue=3;
if(yue==4||yue==6||yue==9||yue==11)
if(ri==31)
ri=1;
yue++;
if(ri==29)
yue++;
}}
shi1=shi/10;
shi2=shi%10;
fen1=fen/10;
fen2=fen%10;
miao1=miao/10;
miao2=miao%10;
nian1=nian/1000;
nian2=nian%1000/100;
nian3=nian%1000%100/10;
nian4=nian%10;
yue1=yue/10;
yue2=yue%10;
ri1=ri/10;
ri2=ri%10;
wd1=t/10;
wd2=t%10;
xssj();
xsxq();
xsnyr();
jianpan();
xswd();
voidmain()//主函数
duan=0;
//关闭数码管
wei=0;
init_12864();
zdinit();
while
(1)
t=read_temperature();
pd();
voidT0_time()interrupt1
num1++;