搜档网
当前位置:搜档网 › lcd自己设置日期,显示时间

lcd自己设置日期,显示时间

#include
#define uchar unsigned char
#define uint unsigned int
#define dat P0
sbit rw = P1^1;
sbit rs = P1^0;
sbit en = P1^2;
sbit key = P3^2;
sbit key1 = P3^3;
sbit key2 = P3^4;
sbit key4 = P3^5;
uchar w,x,y,z,d,f,g,h,q,w,e,r,a,s,l,time,shi,day,yue,yue1,day1;
uchar wei,weiyi,weiyi1,weiyi2,shu;
void delay(uint num);
void write_cmd(uchar cmd);
void write_data(uchar da);
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0D8;
TL0 = 0x0F0;
EA = 1;
ET0 = 1;
TR0 = 1;
EX0=1;
IT0 = 0;
PX0=1;
}
void lcd_init(void);
uchar table[]={0x30,0x31,0x32,0x33,0x34,
0x35,0x36,0x37,0x38,0x39};//HD44780/KS0066的内部字符0-9//
uchar num[]={0x80,0x81,0x82,0x83,0x85,0x86,0x88,0x89,
0x88+0x40,0x89+0x40,0x8b+0x40,0x8c+0x40,0x8e+0x40,0x8f+0x40};
void main(void)
{
rw = 0;
rs = 0;
en = 0;
lcd_init();
InitTimer0();
while(1)
{
if(key==0)
{
delay(5);
if(key==0)
{
IE0 = 0;

}
while(!key);
}
write_cmd (0x80);
write_data (table[w]);
write_cmd (0x81);
write_data (table[x]);
write_cmd (0x82);
write_data (table[y]);
write_cmd (0x83);
write_data (table[z]);
write_cmd (0x84);
write_data (0x2f);
write_cmd (0x85);
write_data (table[d]);
write_cmd (0x86);
write_data (table[f]);
write_cmd (0x87);
write_data (0x2f);
write_cmd (0x88);
write_data (table[g]);
write_cmd (0x89);
write_data (table[h]);
///////////////////////////////////////////////////////
write_cmd (0x88+0x40);
write_data (table[q]);
write_cmd (0x89+0x40);
write_data (table[l]);
write_cmd (0x8a+0x40);
write_data (0x3a);
write_cmd (0x8b+0x40);
write_data (table[e]);
write_cmd (0x8c+0x40);
write_data (table[r]);
write_cmd (0x8d+0x40);
write_data (0x3a);
write_cmd (0x8e+0x40);
write_data (table[a]);
write_cmd (0x8f+0x40);
write_data (table[s]);
}
}
void delay(uint num)
{
uint x1,y1;
for(x1=num;x1>0;x1--)
{
for(y1=110;y1>0;y1--);//延时1毫秒
}
}
void write_cmd(uchar cmd)
{
rs = 0;
rw = 0;

dat = cmd;
delay(5);
en = 1;
delay(5);
en = 0;
}
void write_data(uchar da)
{
rs = 1;
rw = 0;
dat = da;
delay(5);
en = 1;
delay(5);
en = 0;
}
void lcd_init(void)
{
write_cmd(0x02);
write_cmd(0x06);
write_cmd(0x0c);
write_cmd(0x38);
write_cmd(0x03);
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x0D8;
TL0 = 0x0F0;
time++;
if(time==100)
{
time=0;
s++;
if(s==10)
{
s=0;
a++;
if(a==6)
{
a=0;
r++;
if(r==10)
{
r=0;
e++;
if(e==6)
{
e=0;
l++;
if(l==shi)
{
l=0;
q++;
}
if(q==3)
{
q=0;
h++;
/////////////////////////////////////////////////////////////////////
if(h==day)
{
h=0;
g++;
if(g==day1)
{
g=0;
f++;
if(f==yue)
{
f=yue1;
d++;
if(d==2)
{
d=0;
z++;
if(z==10)
{
z=0;
y++;
if(y==10)
{
y=0;
x++;
if(x==10)
{
x=0;
w++;
if(w==10)
{
w=0;
}
//////
}
//////
}
///
}
///
}
/////
}
///////
}
////////
}
/////////
}
//////////
}
///////
}
////////
}
///////
}
/////

//////////////
}
if(q==2)
{
shi=4;
}
else if(q<2)
{
shi = 10;
}
if(d>=1)
{
yue=3;
yue1=1;

}
else if(d<1)
{
yue=10;
yue1=0;
}
if(g<3&&f!=2)
{
day1=4;
if(f==1||f==3||f==5||f==7||f==8||f==0&&d==1||f==2&&d==1)
{
day=2;
}
else
{
day=10;
}
}
if(f==2&&z==0||z==2||z==4||z==6||z==8)
{
day1=3;
day=10;
}
else if(f==2&&z==1||z==3||z==5||z==7||z==9)
{
day=9;
}
}
void INT0_SERVE(void) interrupt 0
{
TR0 = 0;
write_cmd(0x02);
wei = 0;
shu = 0;
while(!TR0)
{
write_cmd(num[wei]);
write_cmd(0x0d);
write_data(table[shu]);
if(key2==0)
{
delay(5);
if(key2==0&&weiyi1==0)
{
shu = shu + 1;
if(wei==4)
{
if(shu==2)
{
shu=0;
}
}
if(wei==5&&d==0)
{
if(shu==10)
{
shu=0;
}
}
if(wei==5&&d==1)
{
if(shu==3)
{
shu=0;
}
}
if(wei==6&&d==0&&f==2)
{
if(shu==3)
{
shu=0;
}
}
if(wei==7&&d==0&&f==2&&z==0||z==2||z==4||z==6||z==8)
{
if(shu==10)
{
shu=0;
}
}
else if(wei==7&&d==0&&f==2&&z==1||z==3||z==5||z==7||z==9)
{
if(shu==9)
{
shu=0;
}
}
if(wei==7&&f==1||f==3||f==5||f==7||f==8||f==0&&d==1||f==2&&d==1)
{
if(shu==2)
{
shu=0;
}
else if(wei==7)
{
if(shu==1)
{
shu=0;
}
}
}
if(wei==8)
{
if(shu==3)
{
shu=0;
}
}
if(wei==9)
{
if(shu==4)
{
shu=0;
}
}
if(wei==10)
{
if(shu==6)
{
shu=0;
}
}
if(wei==12)
{
if(shu==6)
{
shu=0;
}
}
else if(shu==10)
{
shu=0;
}
weiyi1 = 1;
}
while(!key2);
}
else if(key2==1)
{
weiyi1=0;
}


if(key1==0)
{
delay(5);
if(key1==0&&weiyi==0)
{
wei = wei + 1;
weiyi = 1;
if(wei==1)
{
w=shu;
shu=x;
}
else if(wei==2)
{
x=shu;
shu = y;
}
else if(wei==3)
{
y=shu;
shu = z;
}
else if(wei==4)
{
z=shu;
shu = d;
}
else if(wei==5)
{
d=shu;
shu = f;
}
else if(wei==6)
{
f=shu;
shu = g;
}
else if(wei==7)
{
g=shu;
shu = h;
}
else if(wei==8)
{
h=shu;
shu = q;
}
else if(wei==9)
{
q=shu;
shu = l;
}
else if(wei==10)
{
l=shu;
shu = e;
}
else if(wei==11)
{
e=shu;
shu = r;
}
else if(wei==12)
{
r=shu;
shu = a;
}
else if(wei==13)
{
a=shu;
shu = s;
}
else if(wei==14)
{
s=shu;
shu = w;
}
if(wei==14)
{
wei=0;
}
}
while(!key1);
}
else if(key1==1)
{
weiyi=0;
}

if(key4==0)
{
delay(5);

if(key4==0)
{

ET0 = 1;
TR0 = 1;
write_cmd(0x0c);
}
while(!key4);
}
}
return;
}

相关主题