标题:
1602液晶万年历
[打印本页]
作者:
aaa123451111
时间:
2018-7-21 20:24
标题:
1602液晶万年历
#include"reg52.h"
sbit lcdrw=P2^5;
sbit lcdrs=P2^6;
sbit lcden=P2^7;
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
typedef unsigned char u8;
typedef unsigned int u16;
u16 a;
u16 a=0;
u16 p=7;
u16 p1=5;
u16 p2=9;
u16 p3=5;
u16 p4=3;
u16 p5=2;
u16 p6=0;
u16 p7=0;
u16 q=2;
u16 q1=0;
u16 q2=2;
u16 q3=0;
u16 q4=1;
u16 q5=2;
u16 q6=3;
u16 q7=1;
u16 q8=7;
u16 m;
u16 n;
u8 s[]="01234567890";
u8 ss[]="0123450";
u8 sss[]="112345671";
void delay(u16 i)
{
while(i--);
}
void writedat(u16 dat)
{
lcdrw=0;
lcdrs=1;
lcden=0;
P0=dat;
delay(100);
lcden=1;
delay(500);
lcden=0;
}
void writecom(u16 com)
{
lcdrw=0;
lcdrs=0;
lcden=0;
P0=com;
delay(100);
lcden=1;
delay(500);
lcden=0;
}
void Init()
{
writecom(0x06);
writecom(0x80);
writecom(0x01);
writecom(0x0c);
writecom(0x38);
writecom(0x80+0x40);
writedat(s[(p5)]);
writecom(0x80+0x41);
writedat(s[(p4)]);
writecom(0x80+0x42);
writedat('-');
writecom(0x80+0x43);
writedat(s[(p3)]);
writecom(0x80+0x44);
writedat(s[(p2)]);
writecom(0x80+0x45);
writedat('-');
writecom(0x80+0x46);
writedat(s[(p1)]);
writecom(0x80+0x47);
writedat(s[(p)]);
writecom(0x80+0x00);
writedat(s[(q)]);
writecom(0x80+0x01);
writedat(s[(q1)]);
writecom(0x80+0x02);
writedat(s[(q2)]);
writecom(0x80+0x03);
writedat(s[(q3)]);
writecom(0x80+0x05);
writedat(s[(q4)]);
writecom(0x80+0x06);
writedat(s[(q5)]);
writecom(0x80+0x08);
writedat(s[(q6)]);
writecom(0x80+0x09);
writedat(s[(q7)]);
writecom(0x80+0x0b);
writedat(s[(q8)]);
}
void zhongduan()
{
TMOD|=0x01;
TH0=0xfc;
TL0=0x18;
EA=1;
ET0=1;
TR0=1;
}
void keydown()
{
if(k1==0)
{
delay(1000);
if(k1==0)
{n=n+1;
if(n==1)
{
TR0=0;
writecom(0x80+0x47);
writecom(0x0f);
}
if(n==2)
{
TR0=0;
writecom(0x80+0x46);
writecom(0x0f);
}
if(n==3)
{
TR0=0;
writecom(0x80+0x44);
writecom(0x0f);
}
if(n==4)
{
TR0=0;
writecom(0x80+0x43);
writecom(0x0f);
}
if(n==5)
{
TR0=0;
writecom(0x80+0x41);
writecom(0x0f);
}
if(n==6)
{
TR0=0;
writecom(0x80+0x40);
writecom(0x0f);
}
if(n==7) //xingqi
{
TR0=0;
writecom(0x80+0x0b);
writecom(0x0f);
}
if(n==8)
{
TR0=0;
writecom(0x80+0x09);
writecom(0x0f);
}
if(n==9)
{
TR0=0;
writecom(0x80+0x08);
writecom(0x0f);
}
if(n==10)
{
TR0=0;
writecom(0x80+0x06);
writecom(0x0f);
}
if(n==11)//yue
{
TR0=0;
writecom(0x80+0x05);
writecom(0x0f);
}
if(n==12)
{
TR0=0;
writecom(0x80+0x03);
writecom(0x0f);
}
if(n==13)
{
TR0=0;
writecom(0x80+0x02);
writecom(0x0f);
}
if(n==14)
{
TR0=0;
writecom(0x80+0x01);
writecom(0x0f);
}
if(n==15)
{
TR0=0;
writecom(0x80+0x00);
writecom(0x0f);
}
if(n==16)
{
n=0;
TR0=1;
writecom(0x0c);
}
}
while(!k1);
}
if(k2==0)
{
delay(100);
if(k2==0)
{
switch(n)
{
case(1):
p=p+1;
if(p==10)
{
p=0;
}
writecom(0x80+0x47);
writedat(s[(p)]);
writecom(0x80+0x47);
writecom(0x0f);
break;
case(2):
p1=p1+1;
if(p1==6)
{
p1=0;
}
writecom(0x80+0x46);
writedat(s[(p1)]);
writecom(0x80+0x46);
writecom(0x0f);
break;
case(3):
p2=p2+1;
if(p2==10)
{
p2=0;
}
writecom(0x80+0x44);
writedat(s[(p2)]);
writecom(0x80+0x44);
writecom(0x0f);
break;
case(4):
p3=p3+1;
if(p3==6)
{
p3=0;
}
writecom(0x80+0x43);
writedat(s[(p3)]);
writecom(0x80+0x43);
writecom(0x0f);
break;
case(5):
p4=p4+1;
if(p4==10)
{
p4=0;
}
writecom(0x80+0x41);
writedat(s[(p4)]);
writecom(0x80+0x41);
writecom(0x0f);
break;
case(6):
p5=p5+1;
if(p5==3)
{
p5=0;
}
writecom(0x80+0x40);
writedat(s[(p5)]);
writecom(0x80+0x40);
writecom(0x0f);
break;
case(7):
q8=q8+1;
if(q8==8)
{
q8=1;
}
writecom(0x80+0x0b);
writedat(sss[(q8)]);
writecom(0x80+0x0b);
writecom(0x0f);
break;
case(8):
q7=q7+1;
if(q7==10)
{
q7=0;
}
writecom(0x80+0x09);
writedat(s[(q7)]);
writecom(0x80+0x09);
writecom(0x0f);
break;
case(9):
q6=q6+1;
if(q6==4)
{
q6=0;
}
writecom(0x80+0x08);
writedat(s[(q6)]);
writecom(0x80+0x08);
writecom(0x0f);
break;
case(10):
q5=q5+1;
if(q5==10)
{
q5=0;
}
writecom(0x80+0x06);
writedat(s[(q5)]);
writecom(0x80+0x06);
writecom(0x0f);
break;
case(11):
q4=q4+1;
if(q4==2)
{
q4=0;
}
writecom(0x80+0x05);
writedat(s[(q4)]);
writecom(0x80+0x05);
writecom(0x0f);
break;
case(12):
q3=q3+1;
if(q3==10)
{
q3=0;
}
writecom(0x80+0x03);
writedat(s[(q3)]);
writecom(0x80+0x03);
writecom(0x0f);
break;
case(13):
q2=q2+1;
if(q2==10)
{
q2=0;
}
writecom(0x80+0x02);
writedat(s[(q2)]);
writecom(0x80+0x02);
writecom(0x0f);
break;
case(14):
q1=q1+1;
if(q1==10)
{
q1=0;
}
writecom(0x80+0x01);
writedat(s[(q1)]);
writecom(0x80+0x01);
writecom(0x0f);
break;
case(15):
q=q+1;
if(q==10)
{
q=0;
}
writecom(0x80+0x00);
writedat(s[(q)]);
writecom(0x80+0x00);
writecom(0x0f);
break;
}
}
while(!k2);
}
if(k3==0)
{
delay(100);
if(k3==0)
{
switch(n)
{
case(1):
p=p-1;
if(p==0)
{
p=10;
}
writecom(0x80+0x47);
writedat(s[(p)]);
writecom(0x80+0x47);
writecom(0x0f);break;
case(2):
p1=p1-1;
if(p1==0)
{
p1=6;
}
writecom(0x80+0x46);
writedat(ss[(p1)]);
writecom(0x80+0x46);
writecom(0x0f);break;
case(3):
p2=p2-1;
if(p2==0)
{
p2=10;
}
writecom(0x80+0x44);
writedat(s[(p2)]);
writecom(0x80+0x44);
writecom(0x0f);break;
case(4):
p3=p3-1;
if(p3==0)
{
p3=6;
}
writecom(0x80+0x43);
writedat(ss[(p3)]);
writecom(0x80+0x43);
writecom(0x0f);break;
case(5):
p4=p4-1;
if(p4==0)
{
p4=10;
}
writecom(0x80+0x41);
writedat(s[(p4)]);
writecom(0x80+0x41);
writecom(0x0f);break;
case(6):
p5=p5-1;
if(p5==0)
{
p5=3;
}
writecom(0x80+0x40);
writedat(s[(p5)]);
writecom(0x80+0x40);
writecom(0x0f);break;
}
}
while(!k3);
}
}
void main()
{
Init();
zhongduan();
while(1)
{
keydown();
switch((q4)*10+(q5))
{
case(1):m=1;break;
case(2):
if((q*1000+(q1)*100+(q2)*10+q3)%4==0)
{
m=2;
}
else
m=5;
break;
case(3):m=1;break;
case(4):m=0;break;
case(5):m=1;break;
case(6):m=0;break;
case(7):m=1;break;
case(8):m=1;break;
case(9):m=4;break;
case(10):m=1;break;
case(11):m=0;break;
case(12):m=3;break;
}
if(a==1000)
{
a=0;
p=p+1;
writecom(0x80+0x47);
writedat(s[p]);
}
if(p==10)
{
p=0;
(p1)=(p1)+1;
writecom(0x80+0x46);
writedat(ss[(p1)]);
}
if((p1)==6)
{
(p2)=(p2)+1;
writecom(0x80+0x44);
writedat(s[(p2)]);
(p1)=0;
}
if(p2==10)
{
(p3)=(p3)+1;
writecom(0x80+0x43);
writedat(ss[(p3)]);
p2=0;
}
if(p3==6)
{
p3=0;
if(((p5)*10+(p4))==23&&(p3)==0)
{
p4=0;
p5=0;
writecom(0x80+0x41);
writedat(s[p4]);
writecom(0x80+0x40);
writedat(s[p5]);
q8=q8+1;
if(q8==8)
{
q8=1;
}
writecom(0x80+0x0b);
writedat(sss[(q8)]);
q7=q7+1;
if((q6)*10+(q7)<32&&m==1)
{
writecom(0x80+0x09);
writedat(s[q7]);
}
if((q6)*10+(q7)<32&&m==3)
{
writecom(0x80+0x09);
writedat(s[q7]);
}
if((q6)*10+(q7)<31&&m==0)
{
writecom(0x80+0x09);
writedat(s[q7]);
}
if((q6)*10+(q7)<30&&m==2)
{
writecom(0x80+0x09);
writedat(s[q7]);
}
if((q6)*10+(q7)<29&&m==5)
{
writecom(0x80+0x09);
writedat(s[q7]);
}
if(q7==10)
{
q7=0;
q6=q6+1;
writecom(0x80+0x08);
writedat(s[(q6)]);
}
if((q6)*10+(q7)==30&&m==2)
{
(q5)=(q5)+1;
writecom(0x80+0x06);
writedat(s[(q5)]);
q6=0;
q7=1;
writecom(0x80+0x08);
writedat(s[q6]);
writecom(0x80+0x09);
writedat(s[q7]);
}
else if((q6)*10+(q7)==29&&m==5)
{
(q5)=(q5)+1;
writecom(0x80+0x06);
writedat(s[(q5)]);
q6=0;
q7=1;
writecom(0x80+0x08);
writedat(s[q6]);
writecom(0x80+0x09);
writedat(s[q7]);
}
else if((q6)*10+(q7)==32&&m==3)
{
(q5)=1;
writecom(0x80+0x06);
writedat(s[(q5)]);
(q4)=0;
writecom(0x80+0x05);
writedat(s[(q4)]);
(q3)=(q3)+1;
writecom(0x80+0x03);
writedat(s[(q3)]);
if((q3)==10)
{
q3=0;
(q2)=(q2)+1;
writecom(0x80+0x02);
writedat(s[(q2)]);
if((q2)==10)
{
q2=0;
(q1)=(q1)+1;
writecom(0x80+0x01);
writedat(s[(q1)]);
if((q1)==10)
{
q1=0;
(q)=(q)+1;
writecom(0x80+0x00);
writedat(s[(q)]);
}
}
}
q6=0;
q7=1;
writecom(0x80+0x08);
writedat(s[q6]);
writecom(0x80+0x09);
writedat(s[q7]);
}
else if((q6)*10+(q7)==31&&m==4)
{
(q5)=0;
writecom(0x80+0x06);
writedat(s[(q5)]);
(q4)=1;
writecom(0x80+0x05);
writedat(s[(q4)]);
q6=0;
q7=1;
writecom(0x80+0x08);
writedat(s[q6]);
writecom(0x80+0x09);
writedat(s[q7]);
}
else if((q6)*10+(q7)==31&&m==0)
{
(q5)=(q5)+1;
writecom(0x80+0x06);
writedat(s[(q5)]);
q6=0;
q7=1;
writecom(0x80+0x08);
writedat(s[q6]);
writecom(0x80+0x09);
writedat(s[q7]);
}
else if((q6)*10+(q7)==32&&m==1)
{
(q5)=(q5)+1;
writecom(0x80+0x06);
writedat(s[(q5)]);
q6=0;
q7=1;
writecom(0x80+0x08);
writedat(s[q6]);
writecom(0x80+0x09);
writedat(s[q7]);
}
}
else
{
m=2;
(p4)=(p4)+1;
writecom(0x80+0x41);
writedat(s[(p4)]);
}
}
if(p4==10)
{
(p5)=(p5)+1;
writecom(0x80+0x40);
writedat(s[(p5)]);
p4=0;
}
}
}
void zhong() interrupt 1
{
TH0=0xfc;
TL0=0x18;
a=a+1;
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1