|
- #include <reg51.h>
- #include <intrins.h>
- #include"1602.h"
- #include"DS1302.h"
- #define uchar unsigned char
- #define uint unsigned int
- sbit K1=P3^0;
- sbit K2=P3^1;
- sbit K3=P3^2;
- sbit K4=P3^3;
- sbit fenming=P2^3;
- bit stop=0,mode=0;
- char num=1;
- uchar a[8]={0x55,0x55,0x16,0x26,0x05,0x01,0x20,0x00}, b[8]={0,0,0,0,0,0,0,0}, dis1[8],dis2[8];
- uchar Tim[]="Time: ";
- uchar Dat[]="Date: ";
- char m=12,s=00,i,y,g[5]={0,0,0,0,0},e[11],f[5],c[3]={0,0,0},v[3]={0,0,0},h[5];
- void chai()
- {
- dis1[0]=b[0]%16+'0';
- dis1[1]=b[0]/16+'0';
- dis1[2]=':';
- dis1[3]=b[1]%16+'0';
- dis1[4]=b[1]/16+'0';
- dis1[5]=':';
- dis1[6]=b[2]%16+'0';
- dis1[7]=b[2]/16+'0';
- dis2[0]=b[3]%16+'0';
- dis2[1]=b[3]/16+'0';
- dis2[2]='-';
- dis2[3]=b[4]%16+'0';
- dis2[4]=b[4]/16+'0';
- dis2[5]='-';
- dis2[6]=b[6]%16+'0';
- dis2[7]=b[6]/16+'0';
- }
- void display_timer()
- {
- static char n;
- n++;
- if(n==5)
- {
- s--; n=0;
- }if(s==-1)
- {
- m--; s=59;
- }
- if(m==-1)
- {
- m=12;
- }
- g[0]=s%10+'0';
- g[1]=s/10+'0';
- g[2]=':';
- g[3]=m%10+'0';
- g[4]=m/10+'0';
- wcmd(0x85);
- for(i=0;i<5;i++)
- {
- wdat(g[4-i]);
- }
- }
- void display_fen()
- {
- e[0]='A';
- e[1]=':';
- e[2]=c[0]+'0';
- e[3]=c[1]+'0';
- e[4]=c[2]+'0';
- e[5]=' ';
- e[6]=' ';
- e[7]=' ';
- e[8]=' ';
- e[9]=' ';
- e[10]='B';
- e[11]=':';
- e[12]=v[0]+'0';
- e[13]=v[1]+'0';
- e[14]=v[2]+'0';
- wcmd(0xC0);
- for(y=0;y<15;y++)
- {
- wdat(e[y]);
- }
- }
- void display()
- {
- char i;
- wcmd(0x80);
- for(i=0;i<6;i++)
- {
- wdat(Dat[i]);
- }
- for(i=0;i<8;i++)
- {
- wdat(dis2[7-i]);
- delay(3);
- }
- wcmd(0xc0);
- for(i=0;i<6;i++)
- {
- wdat(Tim[i]);
- }
- for(i=0;i<8;i++)
- {
- wdat(dis1[7-i]);
- delay(3);
- }
- }
- void main()
- {
- bit stop=0;
- init_1302();
- init_1602();
- set(a);
- while(1)
- {
- if(stop==0)
- {
- read_all(b);
- chai();
- display();
- }
- if(stop==1)
- {
- if(K1==0)
- {
- delay(5);
- if(K1==0)
- {
- read_all(b);
- b[num]++;
- if((b[num]&0x0f)==0x0a)
- {
- b[num]+=6;
- }
- if((num==0)&&(b[num]>(0x59+0x80)))
- {
- b[num]=0x80;
- }
- if((num==1)&&(b[num]>0x59))
- {
- b[num]=0;
- }
- if((num==2)&&(b[num]>0x23))
- {
- b[num]=0;
- }
- if(num==3)
- {
- if(b[4]==1)
- {
- if(b[num]>0x31)
- {b[num]=1;}
- }
- if(b[4]==2)
- {
- if(b[6]%4==0)
- {
- if(b[num]>0x29)
- {b[num]=1;}
- }
- else
- {
- if(b[num]>0x28)
- {b[num]=1;}
- }
- }
- if(b[4]==3)
- {
- if(b[num]>0x31)
- {b[num]=1;}
- }
- if(b[4]==4)
- {
- if(b[num]>0x30)
- {b[num]=1;}
- }
- if(b[4]==5)
- {
- if(b[num]>0x31)
- {b[num]=1;}
- }
- if(b[4]==6)
- {
- if(b[num]>0x30)
- {b[num]=1;}
- }
- if(b[4]==7)
- {
- if(b[num]>0x31)
- {b[num]=1;}
- }
- if(b[4]==8)
- {
- if(b[num]>0x31)
- {b[num]=1;}
- }
- if(b[4]==9)
- {
- if(b[num]>0x30)
- {b[num]=1;}
- }
- if(b[4]==10)
- {
- if(b[num]>0x31)
- {b[num]=1;}
- }
- if(b[4]==11)
- {
- if(b[num]>0x30)
- {b[num]=1;}
- }
- if(b[4]==12)
- {
- if(b[num]>0x31)
- {b[num]=1;}
- }
- }
- if((num==4)&&(b[num]>0x12))
- {
- b[num]=1;
- }
- write(0x80+2*num,b[num]);
- if(b[0]>=0x80) b[0]-=0x80;
- chai();
- wcmd(0x0c);
- display();
- wcmd(0x0f);
- if(num<3)
- {
- wcmd(0xcd-num*3);
- }
- else
- {
- wcmd(0x8d-(num-3)*3);
- }
- while(!K1);
- }
- }
- if(K2==0)
- {
- delay(5);
- if(K2==0)
- {
- num++;
- if(num==5) num++;
- if(num==7) num=0;
- if(num<3)
- {
- wcmd(0xcd-num*3);
- }
- else
- {
- if(num==6)
- wcmd(0x8d-(num-4)*3);
- else
- wcmd(0x8d-(num-3)*3);
- }
- while(!K2);
- }
- }
- }
- if(K3==0)
- {
- delay(5);
- if(K3==0)
- {
- stop=!stop;
- if(stop==1)
- {
- b[0]|=0x80;
- write(0x80,b[0]); //??
- wcmd(0x0f);
- wcmd(0x0d);
- num=0;
- }
- if(stop==0)
- {
- write(0x80,b[0]&=0x7f);//??
- wcmd(0x0c);
- }
- while(!K3);
- }
- }
- if(K4==0)
- {
- delayms(10);
- if(K4==0)
- {
- init_1302();
- init_1602();
- TMOD=0x01;
- TH0=0x3c;
- TL0=0xb0;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
-
- display_timer();
- display_fen();
- if(K1==0)
- {
- delayms(10);
- if(K1==0)
- {
- c[2]++;
- if(c[2]==10)
- {
- c[1]++;
- c[2]=0;
- if(c[1]==10)
- {c[0]++;c[1]=0;}
- }
- }
- }
- if(K2==0)
- {
- delayms(10);
- if(K2==0)
- {
- v[2]++;
- if(v[2]==10)
- {
- v[1]++;
- v[2]=0;
- if(v[1]==10)
- {v[0]++;v[1]=0;}}
- }
- }
- if(K3==0)
- {
- delayms(10);
- if(K3==0)
- {
-
- m=12,s=00;
- }
- }
- }
- }
- }
- }
- }
復(fù)制代碼
|
|