#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint a,b,c,c1,d,x,y,xi,n,n0,
ke,ke0,kex,ke1,k1,ke2,ke3,ke4,
ry,ry0,ry1,hf,hf0,hf1,hf2,hf3,
bian,ge,shi,bai,qian,q1,q2,
q3,q4,t,f,f1,f2,f3,ke12;
uchar code table[]={
//0x12,0x7e,0x43,0x4a,0x2e,
//0x8a,0x82,0x5e,0x02,0x0a};
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
void into()
{
TMOD=0x22;
EA=1;
ET0=1;
TR0=1;
TH0=56;
TL0=56;
a=0;
b=0;
c=0;
d=0;
q1=0xef;
q2=0xf7;
q3=0xfb;
q4=0xfd;
f=0xff;
f1=0xff;
f2=0xff;
f3=0xff;
ke1=0;
ke2=0;
ke3=1;
ke4=1;
ry=187;
hf=123;
xi=0;
n=2008;
// P0=0x00;
}
void delay(uint b)
{
for(x=b;x>0;x--)
for(y=30;y>0;y--);
}
void display()
{
ge=xi%10;
P1=q1;
P2=table[ge];
delay(10);
shi=xi%100/10;
P1=q2;
P2=table[shi];
delay(10);
bai=xi/100%10;
P1=q3;
P2=table[bai];
delay(10);
qian=xi/1000;
P1=q4;
P2=table[qian];
delay(10);
P1=0xff;
}
void key()
{
uchar i,j;
ke=P3&0x3c;
if (a>3000)
i=c;
if (a<1500)
j=c;
if (ke==0x38||ke==0x34||ke==0x2c||ke==0x1c)
{
delay(10);
if (ke==0x38||ke==0x34||ke==0x2c||ke==0x1c)
{
kex=ke;
delay(500);
ke0=P3&0x3c;
}
}
switch(kex)
{
case 0x38: if (ke!=ke0)ke1++;break;
case 0x34: if (ke!=ke0)ke2++;break;
// case 0x2c: if (ke!=ke0)ke3++;break;
// case 0x1c: if (ke!=ke0)ke4++;break;
}
kex=0;
if (ke1>4)
ke1=0;
if (ke2>4)
ke2=0;
if (ke1==0)
{
k1=2;
if (c%60>20&&c%60<=40)
k1=3;
if (c%60>40&&c%60<=60)
k1=4;
switch(k1)
{
case 2:xi=hf1;break;
case 3:xi=ry1;break;
case 4:xi=n;break;
default : ;
}
}
else
switch(ke1)
{
case 1:xi=c1;break;
case 2:xi=hf1;break;
case 3:xi=ry1;break;
case 4:xi=n;break;
default : ;
}
if (ke2>0)
{
switch(ke2)
{
case 1: if (i!=j)t=f,f=q1,q1=t;
if (ke!=ke0&&ke==0x2c)ge++;
if (ke!=ke0&&ke==0x1c)ge--;break;
case 2: if(i!=j)t=f1,f1=q2,q2=t;
if (ke!=ke0&&ke==0x2c)shi++;
if (ke!=ke0&&ke==0x1c)shi--;break;
case 3: if (i!=j)t=f2,f2=q3,q3=t;
if (ke!=ke0&&ke==0x2c)bai++;
if (ke!=ke0&&ke==0x1c)bai--;break;
case 4: if (i!=j)t=f3,f3=q4,q4=t;
if (ke!=ke0&&ke==0x2c)qian++;
if (ke!=ke0&&ke==0x1c)qian--;break;
default : ;
}
d=ge+shi*10+bai*100+qian*1000;
xi=d;
if (ke1!=0)
ke12=ke1+5;
switch(ke12)
{
case 7:hf0=d;break;
case 8:ry0=d;break;
case 9:n0=d;break;
}
if (ke1!=0)
{
switch(ke12)
{
case 6:c=d;break;
case 7:hf=d;break;
case 8:ry=d;break;
case 9:n=d;break;
}
ke12=ke1-5;
}
// ke1=0;
}
}
void year()
{
if(c==3600)
{
c=0;
hf3++;
}
hf=hf3*60+c/60;
if(hf==24*60)
{
ry++;
hf=0;
}
if (ry==373)
n++,ry=31;
switch(ry/31)
{
//case 1: if (ry%60==32)ry=ry+28;break;
case 2: if (ry%31==29)ry=ry+2;break;
// case 3: if (ry%60==32)ry=ry+28;break;
case 4: if (ry%31==30)ry=ry+1;break;
// case 5: if (ry%60==32)ry=ry+28;break;
case 6: if (ry%31==30)ry=ry+1;break;
// case 7: if (ry%60==32)ry=ry+28;break;
// case 8: if (ry%60==32)ry=ry+28;break;
case 9: if (ry%31==30)ry=ry+1;break;
// case 10: if (ry%60==32)ry=ry+28;break;
case 11: if (ry%31==30)ry=ry+1;break;
// case 12: if (ry%60==32)ry=ry+28;break;
default : ;
}
}
void time()
{
if (n==n0&&ry1==ry0&&hf1==hf0)
{
P0=0x01;
}
if (hf1!=hf0)
P0=0x00;
}
void transfrom ()
{
hf1=hf%10+hf%60/10*10+hf/60%10*100+hf/60/10*1000;
c1=c%10+c%60/10*10+c/60%10*100+c/60/10*1000;
ry1=(ry/31+1)%10+(ry%31+1)/10*10+ry/31%10*100+ry/31/10*1000;
}
void main()
{
into();
while(1)
{
year();
key();
transfrom ();
display();
time();
}
}
void exter0() interrupt 1
{
a++;
if(a==4608)
{
c++;
a=0;
}
}
sqm.rar_电子温度计_电子表温度计
版权申诉
102 浏览量
2022-09-23
07:43:30
上传
评论
收藏 80KB RAR 举报
JonSco
- 粉丝: 77
- 资源: 1万+
最新资源
- 基于74LS161+ 74LS192芯片实现倒计时定时器Multisim仿真源文件,Multisim10以上版本可打开运行
- 科大讯飞语音引擎 jar包 demo,科大讯飞语音合成引擎3.0,支持4.0系统以上,文字转语音输出.zip
- Java架构面试笔试专题资料及经验(含答案)SpringBoot面试Linux面试专题及答案 合集.zip
- 头歌c语言实验答案tion-model-for-ne开发笔记
- docker配置使用-model-for-networK开发demo
- docker配置使用vaWeb-mas笔记
- c语言连接两个字符串-mas开发笔记
- 俄罗斯引擎yandex进入x-master 笔记
- 头歌c语言实验答案el-for-network-ids-ma笔记
- 一个delphi写的连连看
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈