这款高精度电子万年历仿真图以逼真的视觉效果展现了未来科技与日常生活的完美融合,其精确的日历功能跨越多个世纪,适用于钟表收藏家和科技爱好者。
```c
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[] = 2013-07-30 WED ;
uchar code table1[] = 21:14:55;
uchar code table2[] = 579259 ;
uchar code table3[] = Made by Lisongze;
uchar code table4[] = MONTUEWEDTHUFRISATSUN;
uint nian;
char miao, fen, shi, ri, yue;
sbit lcd_rs = P0^5;
sbit lcd_rw = P0^6;
sbit lcd_en = P0^7;
sbit s1 = P3^7;
sbit s2 = P3^6;
sbit s3 = P3^5;
sbit g = P3^0;
void delay(uint z) {
uint x, y;
for(x=z; x>0; x--)
for(y=110; y>0; y--)
;
}
void write_com(uchar com) {
lcd_rs = 0;
P2=com;
delay(5);
lcd_en=1;
delay(5);
lcd_en=0;
}
void write_date(uchar date) {
lcd_rs = 1;
P2=date;
delay(5);
lcd_en=1;
delay(5);
lcd_en=0;
}
void init() {
int num;
shi=21; fen=14; miao=55; ri=30; yue=7; nian=2013;
lcd_en = 0;
lcd_rw = 0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
for(num=0; num<16; num++) { //显示数字579259
write_date(table2[num]);
delay(300);
}
for(num=0;num<16;num++) {
write_date(table3[num]);
delay(300);
}
TMOD = 0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;
ET0=1;
}
void write_sfm(uchar add, uchar date) {
uchar shi, ge;
shi=date/10;
ge=date;
write_com(0x80+add);
write_date(0x30 + shi);
write_date(0x30 + ge);
}
void keyscan() {
int m,n;
g=0; //将矩阵键盘当做独立键盘使用
if(s1==0) {
delay(5);
if (s1 == 0) { //按键1光标移位扫描
s1num++;
while(!s1);
switch(s1num){
case 1: write_com(0x80+0x40+10); TR0=0; break;
case 2: write_com(0x80+0x40+7); break;
case 3: write_com(0x80+0x40+4); break;
case 4: write_com(0x80 + 3); break;
case 5: write_com(0x80 + 6); break;
case 6: write_com(0x80 + 9); break;
case 7: write_com(0x80+13);
s1num=0; TR0 = 1;
}
}
}
if(s2==0) { //按键2加功能
delay(5);
switch (s1num){
case 4: nian++; write_nyr(1,nian);
break;
case 5: yue++;
if(yue == 13){yue = 1; nian++;}
write_yr(6, yue);
break;
case 6:
ri++;
if((ri==29&&!(nian%400||!nian%100 && nian%4)) || (ri ==30 && !(yue <8 ? yue % 2 : !yue % 2