电子钟+按键+12864.docx
《电子钟+按键+12864.docx》由会员分享,可在线阅读,更多相关《电子钟+按键+12864.docx(16页珍藏版)》请在冰豆网上搜索。
电子钟+按键+12864
#include
#include
//#include//rand();
#defineuintunsignedint
#defineucharunsignedchar
#defineLCD_dataP0;
ucharcodetable[]="2000年00月00日";
ucharcodetime[]="时间00:
00:
00";
ucharcodetime1[]="每天好心情!
!
!
!
";
ucharcodexi1[]="星期一monday";
ucharcodexi2[]="星期二tuesday";
ucharcodexi3[]="星期三wedesnday";
ucharcodexi4[]="星期四thursday";
ucharcodexi5[]="星期五friday";
ucharcodexi6[]="星期六saturday";
ucharcodexi7[]="星期天sunday";
sbitLCD_PSB=P2^3;
sbitLCD_RS=P2^0;
sbitLCD_RW=P2^1;
sbitLCD_EN=P2^2;
sbitk1=P1^0;
sbitk2=P1^1;
sbitk3=P1^2;
sbitk4=P1^3;
uinti,shi,fen,miao,nian,yue,ri,count,num,x;
voiddelay_1ms(uintx)/*******延时程序**********/
{
uinti,j;
for(j=0;jfor(i=0;i<110;i++);
}
voidwrite_cmd(ucharcmd)/*****写命令*******/
{
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
P0=cmd;
delay_1ms(5);
LCD_EN=1;
delay_1ms(5);
LCD_EN=0;
}
voidwrite_dat(uchardat)/******写数据*****/
{
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
delay_1ms(5);
LCD_EN=1;
delay_1ms(5);
LCD_EN=0;
}
voidlcd_pos(ucharX,ucharY)/*****光标显示位置******/
{
ucharpos;
if(X==0)
{X=0x80;}
elseif(X==1)
{X=0x90;}
elseif(X==2)
{X=0x88;}
elseif(X==3)
{X=0x98;}
pos=X+Y;
write_cmd(pos);
}
voidwritesfm(ucharadd,uchardat)/*********显示时间程序*******/
{
uchars,g;
s=dat/10;
g=dat%10;
lcd_pos(2,0+add);
write_dat(0x30+s);
write_dat(0x30+g);
}
voidwritenyr(ucharadd,uchardat)/*******显示**年**月**日****/
{
uchars,g;
s=dat/10;
g=dat%10;
lcd_pos(0,0+add);
write_dat(0x30+s);
write_dat(0x30+g);
}
/***********星期显示******************/
voidxi(uchara)
{
if(a==1)
{
lcd_pos(1,0);
for(i=0;i<14;i++)
{
write_dat(xi1[i]);
delay_1ms(5);
}
}
if(a==2)
{
lcd_pos(1,0);
for(i=0;i<16;i++)
{
write_dat(xi2[i]);
delay_1ms(5);
}
}
if(a==3)
{
lcd_pos(1,0);
for(i=0;i<16;i++)
{
write_dat(xi3[i]);
delay_1ms(5);
}
}
if(a==4)
{
lcd_pos(1,0);
for(i=0;i<16;i++)
{
write_dat(xi4[i]);
delay_1ms(5);
}
}
if(a==5)
{
lcd_pos(1,0);
for(i=0;i<16;i++)
{
write_dat(xi5[i]);
delay_1ms(5);
}
}
if(a==6)
{
lcd_pos(1,0);
for(i=0;i<16;i++)
{
write_dat(xi6[i]);
delay_1ms(5);
}
}
if(a==7)
{
lcd_pos(1,0);
for(i=0;i<16;i++)
{
write_dat(xi7[i]);
delay_1ms(5);
}
}
}
/*********************按键*****************/
voidkey()
{
if(k1==0)
{delay_1ms(10);
if(k1==0)
{
num++;
while(!
k1);
if(num==1)
{write_cmd(0x0f);
lcd_pos(2,6);
TR0=0;
}
if(num==2)
{
lcd_pos(2,4);
}
if(num==3)
{
lcd_pos(2,2);
}
if(num==4)
{
lcd_pos(0,5);
}
if(num==5)
{
lcd_pos(0,3);
}
if(num==6)
{
lcd_pos(0,1);
}
if(num==7)
{
lcd_pos(1,0);
}
if(num==8)
{
num=0;
write_cmd(0x0c);
TR0=1;
}
}
}
if(k2==0)
{
delay_1ms(10);
if(k2==0)
{
while(!
k2);
if(num==1)
{
miao++;
if(miao==60)
{
miao=0;
}
writesfm(6,miao);
lcd_pos(2,6);
}
if(num==2)
{
fen++;
if(fen==60)
{
fen=0;
}
writesfm(4,fen);
lcd_pos(2,4);
}
if(num==3)
{
shi++;
if(shi==24)
{
shi=0;
}
writesfm(2,shi);
lcd_pos(2,2);
}
if(num==4)
{
ri++;
if(ri==30)
{
ri=0;
}
writenyr(5,ri);
lcd_pos(0,5);
}
if(num==5)
{
yue++;
if(yue==13)
{
yue=1;
}
writenyr(3,yue);
lcd_pos(0,3);
}
if(num==6)
{
nian++;
if(nian==100)
{
nian=0;
}
writenyr(1,nian);
lcd_pos(0,1);
}
if(num==7)
{
x++;
xi(x);
if(x==7)
{
x=0;
}
}
}
}
if(k3==0)
{
delay_1ms(10);
if(k3==0)
{
while(!
k3);
if(num==1)
{
miao--;
if(miao==-1)
{
miao=59;
}
writesfm(6,miao);
lcd_pos(2,6);
}
if(num==2)
{
fen--;
if(fen==-1)
{
fen=59;
}
writesfm(4,fen);
lcd_pos(2,4);
}
if(num==3)
{
shi--;
if(shi==-1)
{
shi=23;
}
writesfm(2,shi);
lcd_pos(2,2);
}
if(num==4)
{
ri--;
if(ri==-1)
{
ri=30;
}
writenyr(5,ri);
lcd_pos(0,5);
}
if(num==5)
{
yue--;
if(yue==-1)
{
yue=12;
}
writenyr(3,yue);
lcd_pos(0,3);
}
if(num==6)
{
nian--;
if(nian==-1)
{
nian=99;
}
writenyr(1,nian);
lcd_pos(0,1);
}
if(num==7)
{
x--;
xi(x);
if(x==1)
{
x=8;
}
}
}
}
}
/*********************************************/
voidlcd_init()/********初始化********/
{
LCD_PSB=1;
write_cmd(0x30);
delay_1ms
(1);
write_cmd(0x0c);
delay_1ms
(1);
write_cmd(0x01);
delay_1ms
(1);
lcd_pos(0,0);
for(i=0;i<14;i++)
{
write_dat(table[i]);
delay_1ms
(1);
}
lcd_pos(1,0);
for(i=0;i<15;i++)
{
write_dat(xi7[i]);
delay_1ms
(1);
}
lcd_pos(2,0);
for(i=0;i<13;i++)
{
write_dat(time[i]);
delay_1ms
(1);
}
lcd_pos(3,0);
for(i=0;i<15;i++)
{
write_dat(time1[i]);
delay_1ms
(1);
}
}
voidmain()/********主函数*******/
{
lcd_init();
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while
(1)
{
key();
if(count==20)
{
count=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
ri++;
x++;
xi(x);
if(x==7)
{
x=0;
}
if(ri==31)
{
ri=0;
yue++;
if(yue==13)
{
yue=0;
nian++;
if(nian==100)
{
nian=0;
}
writenyr(1,nian);
}
writenyr(3,yue);
}
writenyr(5,ri);
}
writesfm(2,shi);
}
writesfm(4,fen);
}
writesfm(6,miao);
}
}
}
voidt()interrupt1/********中断子函数********/
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
}