📄 12864nine.c
字号:
#include<reg52.h>
#include<IIC.h>
#include<yinli.h>
#include<ds1302.h>
#include<keyscan.h>
#include<12864init.h>
#define uchar unsigned char
#define uint unsigned int
sbit key1=P3^3;
sbit key2=P3^4;
sbit key3=P3^5;
sbit key4=P1^3;
sbit feng=P3^6;
sbit kaiguan=P1^4;
int nian;
char shi,fen,miao,day,ri,yue,qian,bai,nqb,nsg,nshi,nfen,nmiao;
uchar num,shu,i,shsh,gege,flag,fs,fg,ss,sg,ys,ye,rqs,rqg,ns,ng,flag1,k;
uchar year_c,month_c,day_c;
uchar code table[]={"-"};
uchar code table1[]={"2009-04-13"};
uchar code table3[]={"MONTUEWEDTHUFRISATSUN"};
uchar code table4[]={"闹钟 "};
uchar code dis1[]={"甲乙丙丁戊己庚辛壬癸"};
uchar code dis2[]={"子丑寅卯辰巳午未申酉戌亥"};
uchar code dis3[13][7]={" ","一月","二月","三月","四月","五月",
"六月","七月","八月","九月","十月","十一月","十二月"};
uchar code dis4[32][7]={" ","初一","初二","初三","初四","初五","初六",
"初七","初八","初九","初十","十一","十二","十三","十四",
"十五","十六","十七","十八","十九","二十","二十一",
"廿二","廿三","廿四","廿五","廿六"
,"廿七","廿八","廿九","三十","三十一"};
/*uchar code table5[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89.0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99};*/
//sbit PSB=P2^4;
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 wfen(uchar x,uchar y,uchar date)
{
uchar sh,ge;
sh=date/10;
ge=date%10;
pos(x,y);
wdata(':');
wdata(table2[sh]);
wdata(table2[ge]);
pos(x,y+1);
}
void wnyr(int nian,uchar yue,uchar ri)
{
uchar num;
wadnian(1,0,nian);
pos(1,2);
while(table[num]!='\0')
{
wdata(table[num]);
num++;
}
wadda(1,3,yue);
num=0;
pos(1,4);
while(table[num]!='\0')
{
wdata(table[num]);
num++;
}
wadda(1,5,ri);
pos(1,6);
wdata(0x20);
for(i=0;i<3;i++)
{
wdata(table3[i+3*day]);
}
}
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);//日期
day_c=time;
rqs=(time&0x30)>>4;
rqg=(time&0x0f);
ri=rqs*10+rqg;
time=read1302(0x88);//月
month_c=time;
ys=(time&0x10)>>4;
ye=(time&0x0f);
yue=ys*10+ye;
time=read1302(0x8c);//年
year_c=time;
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 didi()
{
feng=0;
delay(50);
feng=1;
delay(50);
feng=0;
delay(50);
feng=1;
delay(50);
}
void keyscan()
{
if(flag==0)
{
if(key2==0)
{
delay(10);
if(key2==0)
while(!key2);
flag1=0;
pos(4,0);
wsfm(4,2,nshi,nfen,nmiao);
}
if(key3==0)
{
delay(10);
if(key3==0)
while(!key3);
flag1=0;
pos(4,0);
for(num=0;num<16;num++)
{
wdata(table4[num]);
}
}
}
if(key4==0)
{
delay(10);
{
if(key4==0)
{
wsfm(4,2,nshi,nfen,nmiao);
flag=1;
flag1=0;
k++;
pos(4,5);
wcom(0x0f);
}
switch(k)
{
case 2:pos(4,4);//fen
break;
case 3:pos(4,2);//shi
break;
case 4:
{
k=0;
flag=0;
wcom(0x0c);
pos(4,0);
pos(4,0);
for(num=0;num<16;num++)
{
wdata(table4[num]);
}
}
break;
}
}
while(!key4);
}
if(k==1)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
nmiao++;
if(nmiao==60)
nmiao=0;
}
while(!key2);
wadda(4,5,nmiao);
WIIC(3,nmiao);
}
}
if(k==2)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
nfen++;
if(nfen==60)
nfen=0;
}
while(!key2);
wfen(4,3,nfen);
WIIC(4,nfen);
}
}
if(k==3)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
nshi++;
if(nshi==24)
nshi=0;
}
while(!key2);
wadda(4,2,nshi);
WIIC(5,nshi);
}
}
if(k==1)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
nmiao--;
if(nmiao==-1)
nmiao=59;
}
while(!key3);
wadda(4,5,nmiao);
WIIC(3,nmiao);
}
}
if(k==2)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
nfen--;
if(nfen==-1)
nfen=59;
}
while(!key3);
wfen(4,3,nfen);
WIIC(4,nfen);
}
}
if(k==3)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
nshi--;
if(nshi==-1)
nshi=23;
}
while(!key3);
wadda(4,2,nshi);
WIIC(5,nshi);
}
}
if(key1==0)
{
delay(10);
if(key1==0)
{
flag=1;
flag1=0;
shu++;
pos(3,5);
wcom(0x0f);
}
switch(shu)
{
case 2:pos(3,4);//fen
break;
case 3:pos(3,2);//shi
break;
case 4:
{
wcom(0x0c);
pos(1,6);
wdata(0x20);
pos(1,7);
wcom(0x0f);
};
//xingqi
break;
case 5:pos(1,5);//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);
wfen(3,3,fen);
}
}
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);
wdata(0x20);
for(i=0;i<3;i++)
{
wdata(table3[i+3*day]);
}
pos(1,7);
}
}
if(shu==5)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
ri++;
if(ri==32)
ri=0;
}
while(!key2);
wadda(1,5,ri);
}
}
if(shu==6)
{
if(key2==0)
{
delay(10);
if(key2==0)
{
yue++;
if(yue==13)
yue=0;
}
while(!key2);
wadda(1,3,yue);
}
}
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);
WIIC(6,nqb);
}
}
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);
wfen(3,3,fen);
}
}
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);
wdata(0x20);
for(i=0;i<3;i++)
{
wdata(table3[i+3*day]);
}
pos(1,7);
}
}
if(shu==5)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
ri--;
if(ri==-1)
ri=31;
}
while(!key3);
wadda(1,5,ri);
}
}
if(shu==6)
{
if(key3==0)
{
delay(10);
if(key3==0)
{
yue--;
if(yue==-1)
yue=12;
}
while(!key3);
wadda(1,3,yue);
}
}
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);
WIIC(6,nqb);
}
}
}
void main()
{
uchar ysh,yge;
init();
in();
kaiguan=0;// 蜂鸣器控制
num=0;
pos(4,0);
while(table4[num]!='\0')
{
wdata(table4[num]);
num++;
}
nmiao=RIIC(3);
nfen=RIIC(4);
nshi=RIIC(5);
nqb=RIIC(6);
///initds();
while(1)
{
keyscan();
if(flag==0)
{
gettime();
transform(0,year_c,month_c,day_c);
year_l=2000+year_l-1864;
year_l=2000+year_l-1864;
ysh=year_l%10;
yge=year_l%12;
pos(2,0);
for(i=0;i<2;i++)
{
wdata(dis1[ysh*2+i]);
}
for(i=0;i<2;i++)
{
wdata(dis2[yge*2+i]);
}
i=0;
while(dis3[month_l][i]!='\0')
{
wdata(dis3[month_l][i]);
i++;
}
i=0;
while(dis4[day_l][i]!='\0')
{
wdata(dis4[day_l][i]);
i++;
}
if(shi==nshi)
{
if(fen==nfen)
{
if(miao==nmiao)
flag1=1;
}
}
if(flag1==1)
{
didi();
wsfm(4,2,nshi,nfen,nmiao);
}
wsfm(3,2,shi,fen,miao);//写时分秒
wnyr(nian,yue,ri);//写年月日
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -