📄 12864th.c
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS=P2^7;
sbit RW=P2^6;
sbit EN=P2^5;
sbit key1=P3^3;
sbit key2=P3^4;
sbit key3=P3^5;
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
sbit dsrs=P2^4;
sbit dscl=P3^7;
sbit IO=P3^2;
int nian;
char shi,fen,miao,day,ri,yue,qian,bai,nqb,nsg;
uchar num,sh,ge,shu,flag,i,shsh,gege,fs,fg,ss,sg,ys,ye,rqs,rqg,ns,ng;
//uchar code table[]={"2009-04-19"};
//uchar code table1[]={"22 :37: 15"};
uchar code table2[]={"0123456789"};
uchar code table3[]={"MONTUEWEDTHUFRISATSUN"};
//sbit PSB=P2^4;
void delay(uint x)
{
uint i,j;
for(j=0;j<x;j++)
for(i=0;i<110;i++);
}
void wcom(uchar com)
{
RS=0;
RW=0;
EN=0;
P0=com;
delay(5);
EN=1;
delay(5);
EN=0;
}
void wdata(uchar dat)
{
RS=1;
RW=0;
EN=0;
P0=dat;
delay(5);
EN=1;
delay(5);
EN=0;
}
void pos(uchar x,uchar y)
{
uchar pos;
if(x==1)
{x=0x80;}
else if(x==2)
{x=0x90;}
else if(x==3)
{x=0x88;}
else if(x==4)
{x=0x98;}
pos=x+y;
wcom(pos);
}
void wadda(uchar x,uchar y,uchar date)
{
sh=date/10;
ge=date%10;
pos(x,y);
wdata(table2[sh]);
wdata(table2[ge]);
pos(x,y);
}
void wadnian(uchar x,uchar y,int date)
{
uchar qian,bai,sh,ge;
qian=date/1000;
bai=date%1000/100;
sh=date%100/10;
ge=date%10;
pos(x,y);
wdata(table2[qian]);
wdata(table2[bai]);
wdata(table2[sh]);
wdata(table2[ge]);
}
void wsfm(uchar x,uchar y,uchar shi,uchar fen,uchar miao)
{
uchar ss,sg,fs,fg,ms,mg;
pos(x,y);
ss=shi/10;
sg=shi%10;
fs=fen/10;
fg=fen%10;
ms=miao/10;
mg=miao%10;
wdata(table2[ss]);
wdata(table2[sg]);
wdata(':');
wdata(table2[fs]);
wdata(table2[fg]);
wdata(':');
wdata(table2[ms]);
wdata(table2[mg]);
}
void wnyr(uchar x,uchar y,int nian,uchar yue,uchar ri)
{
pos(x,y);
qian=nian/1000;
bai=nian%1000/100;
sh=nian%100/10;
ge=nian%10;
wdata(table2[qian]);
wdata(table2[bai]);
wdata(table2[sh]);
wdata(table2[ge]);
wdata('-');
sh=yue/10;
ge=yue%10;
wdata(table2[sh]);
wdata(table2[ge]);
wdata('-');
sh=ri/10;
ge=ri%10;
wdata(table2[sh]);
wdata(table2[ge]);
pos(1,6);
for(i=0;i<3;i++)
{
wdata(table3[i+3*day]);
}
}
void writeds(uchar date)
{
uchar i;
ACC=date;
for(i=8;i>0;i--)
{
IO=ACC0;
dscl=1;
dscl=0;
ACC=ACC>>1;
}
}
uchar readds()
{
uchar i;
for(i=8;i>0;i--)
{
ACC=ACC>>1;
ACC7=IO;
dscl=1;
dscl=0;
}
return(ACC);
}
void write1302(uchar add,uchar date)
{
dsrs=0;
dscl=0;
dsrs=1;
writeds(add);
writeds(date);
dscl=1;
dsrs=0;
}
uchar read1302(uchar add)
{
uchar date;
dsrs=0;
dscl=0;
dsrs=1;
add++;
writeds(add);
date=readds();
dscl=1;
dsrs=0;
return (date);
}
void settime(uchar add,uchar date)
{
write1302(0x8e,0x00);
write1302(add,(date/10)<<4|(date%10));
write1302(0x8e,0x80);
}
void gettime()
{
uchar time;
time=read1302(0x80);
gege=time&0x0f;
shsh=(time&0x70)>>4;
miao=shsh*10+gege;
time=read1302(0x82);
fs=(time&0x70)>>4;
fg=time&0x0f;
fen=fs*10+fg;
time=read1302(0x84);
ss=(time&0x70)>>4;
sg=time&0x0f;
shi=ss*10+sg;
time=read1302(0x8a);
day=(time&0x07);
time=read1302(0x86);
rqs=(time&0x30)>>4;
rqg=(time&0x0f);
ri=rqs*10+rqg;
time=read1302(0x88);
ys=(time&0x10)>>4;
ye=(time&0x0f);
yue=ys*10+ye;
time=read1302(0x8c);
ns=(time&0xf0)>>4;
ng=(time&0x0f);
nsg=ns*10+ng;
nian=nsg+nqb*100;
}
void initds()
{
uchar second=read1302(0x80);
if(second&0x80)
settime(0x80,0);//设定几秒
settime(0x82,4);//设定几分
settime(0x84,8);//设定几时
settime(0x86,19);//设定几号
settime(0x88,4);//设定几月
nian=0;
settime(0x8c,88);//设定几年
settime(0x8a,6);//设定星期几
}
void init()
{
wcom(0x30);//基本指令操作
delay(5);
wcom(0x0c);//显示开关坐标
delay(5);
wcom(0x01);//清屏
delay(5);
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
flag=1;
shu++;
pos(3,5);
wcom(0x0f);
}
switch(shu)
{
case 2:pos(3,4);//fen
break;
case 3:pos(3,2);//shi
break;
case 4:pos(1,6);//xingqi
break;
case 5:pos(1,4);//ri
break;
case 6:pos(1,3);//yue
break;
case 7:pos(1,1);//nian1
break;
case 8:pos(1,0);//nian2
break;
case 9:
{
shu=0;
flag=0;
wcom(0x0c);
settime(0x80,miao);
settime(0x82,fen);
settime(0x84,shi);
settime(0x8a,day);
settime(0x86,ri);
settime(0x88,yue);
delay(5);
settime(0x8c,nian%100);
}
break;
}
while(!key1);
}
if(shu==1)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
miao++;
if(miao==60)
miao=0;
}
while(!key2);
wadda(3,5,miao);
}
}
if(shu==2)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
fen++;
if(fen==60)
fen=0;
}
while(!key2);
wsfm(3,2,shi,fen,miao);
pos(3,4);
}
}
if(shu==3)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
shi++;
if(shi==24)
shi=0;
}
while(!key2);
wadda(3,2,shi);
}
}
if(shu==4)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
day++;
if(day==7)
day=0;
}
while(!key2);
pos(1,6);
for(i=0;i<3;i++)
{
wdata(table3[i+3*day]);
}
pos(1,6);
}
}
if(shu==5)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
ri++;
if(ri==32)
ri=0;
}
while(!key2);
wadda(1,4,ri);
}
}
if(shu==6)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
yue++;
if(yue==13)
yue=0;
}
while(!key2);
wnyr(1,0,nian,yue,ri);
pos(1,3);
}
}
if(shu==7)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
nsg++;
if(nsg==100)
nsg=0;
}
while(!key2);
nian=nsg+nqb*100;
wadnian(1,0,nian);
pos(1,1);
}
}
if(shu==8)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
nqb++;
if(nqb==100)
nqb=0;
}
while(!key2);
nian=nsg+nqb*100;
wadnian(1,0,nian);
pos(1,0);
}
}
if(shu==1)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
miao--;
if(miao==-1)
miao=59;
}
while(!key3);
wadda(3,5,miao);
}
}
if(shu==2)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
fen--;
if(fen==-1)
fen=59;
}
while(!key3);
wsfm(3,2,shi,fen,miao);
pos(3,4);
}
}
if(shu==3)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
shi--;
if(shi==-1)
shi=23;
}
while(!key3);
wadda(3,2,shi);
}
}
if(shu==4)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
day--;
if(day==-1)
day=6;
}
while(!key3);
pos(1,6);
for(i=0;i<3;i++)
{
wdata(table3[i+3*day]);
}
pos(1,6);
}
}
if(shu==5)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
ri--;
if(ri==-1)
ri=31;
}
while(!key3);
wadda(1,4,ri);
}
}
if(shu==6)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
yue--;
if(yue==-1)
yue=12;
}
while(!key3);
wnyr(1,0,nian,yue,ri);
pos(1,3);
}
}
if(shu==7)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
nsg--;
if(nsg==-1)
nsg=99;
}
while(!key3);
nian=nsg+nqb*100;
wadnian(1,0,nian);
pos(1,1);
}
}
if(shu==8)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
nqb--;
if(nqb==-1)
nqb=99;
}
while(!key3);
nian=nsg+nqb*100;
wadnian(1,0,nian);
pos(1,0);
}
}
}
void main()
{
init();
// initds();
while(1)
{
keyscan();
if(flag==0)
{
gettime();
wsfm(3,2,shi,fen,miao);//写时分秒
wnyr(1,0,nian,yue,ri);//写年月日
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -