基于51单片机的1602液晶显示时钟.docx

上传人:b****7 文档编号:10866516 上传时间:2023-02-23 格式:DOCX 页数:22 大小:16.49KB
下载 相关 举报
基于51单片机的1602液晶显示时钟.docx_第1页
第1页 / 共22页
基于51单片机的1602液晶显示时钟.docx_第2页
第2页 / 共22页
基于51单片机的1602液晶显示时钟.docx_第3页
第3页 / 共22页
基于51单片机的1602液晶显示时钟.docx_第4页
第4页 / 共22页
基于51单片机的1602液晶显示时钟.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

基于51单片机的1602液晶显示时钟.docx

《基于51单片机的1602液晶显示时钟.docx》由会员分享,可在线阅读,更多相关《基于51单片机的1602液晶显示时钟.docx(22页珍藏版)》请在冰豆网上搜索。

基于51单片机的1602液晶显示时钟.docx

基于51单片机的1602液晶显示时钟

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharcodetable1[]="0123456789-ab=";

sbitlcden=P2^7;

sbitlcdrs=P2^5;

sbitwr=P3^6;

sbitk1=P3^0;

sbitk2=P3^1;

sbitk3=P3^2;

sbitk4=P3^3;

sbitk5=P3^7;

charnum,num0,num1,num2,numh=19,numm=58,nums=0,month=12,day=27,count=0,cach[19],test=0,pstn=0,tset=0,pste=0;

uintyear=2013,a=45481,b=45481;

voidinit()

{

TMOD=0x01;

TH0=(65536-a)/256;

TL0=(65536-b)%256;

EA=1;

ET0=1;

TR0=1;

}

voidtimer0()interrupt1

{

TH0=(65536-a)/256;

TL0=(65536-b)%256;

count++;

if(count==20)

{

count=0;

nums++;

}

if(nums==60)

{

nums=0;

numm++;

}

if(numm==60)

{

numm=0;

numh++;

}

if(numh==24)

{

numh=0;

day++;

}

}

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidwrite_com(ucharcom)

{

lcdrs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidwrite_data(uchardate)

{

lcdrs=1;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidinit1()

{

wr=0;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

voidxianshi()

{

intc,y,m,t,w;

c=year/100;

y=year%100;

m=month;

t=day;

if(m==1)

{

y=y-1;

m=13;

}

elseif(m==2)

{

y=y-1;

m=14;

}

w=(c/4-2*c+y/4+y+(26*(m+1))/10+t-1)%7;

if(w<=0)w+=7;

cach[0]=table1[numh/10];

cach[1]=table1[numh%10];

cach[2]=table1[10];

cach[3]=table1[numm/10];

cach[4]=table1[numm%10];

cach[5]=table1[10];

cach[6]=table1[nums/10];

cach[7]=table1[nums%10];

cach[8]=table1[year/1000];

cach[9]=table1[year%1000/100];

cach[10]=table1[year%100/10];

cach[11]=table1[year%10];

cach[12]=table1[10];

cach[13]=table1[month/10];

cach[14]=table1[month%10];

cach[15]=table1[10];

cach[16]=table1[day/10];

cach[17]=table1[day%10];

cach[18]=table1[w];

write_com(0x80+4);

for(num=0;num<8;num++)

{

write_data(cach[num]);

delay

(1);

}

write_com(0x80+0x40+3);

for(num=8;num<18;num++)

{

write_data(cach[num]);

delay

(1);

}

write_com(0x80+0x40+15);

write_data(cach[18]);

delay

(1);

}

voidxianshi1()

{

intc,y,m,t,w;

uchard;

c=year/100;

y=year%100;

m=month;

t=day;

if(m==1)

{

y=y-1;

m=13;

}

elseif(m==2)

{

y=y-1;

m=14;

}

w=(c/4-2*c+y/4+y+(26*(m+1))/10+t-1)%7;

if(w<=0)w+=7;

cach[0]=table1[num0/10];

cach[1]=table1[num0%10];

cach[2]=table1[10];

cach[3]=table1[num1/10];

cach[4]=table1[num1%10];

cach[5]=table1[10];

cach[6]=table1[num2/10];

cach[7]=table1[num2%10];

cach[8]=table1[year/1000];

cach[9]=table1[year%1000/100];

cach[10]=table1[year%100/10];

cach[11]=table1[year%10];

cach[12]=table1[10];

cach[13]=table1[month/10];

cach[14]=table1[month%10];

cach[15]=table1[10];

cach[16]=table1[day/10];

cach[17]=table1[day%10];

cach[18]=table1[w];

if(pstn==0)

{

d++;

if(d<3)cach[0]=cach[1]=table1[14];

if(d>=7)d=0;

}

elseif(pstn==1)

{

d++;

if(d<3)cach[3]=cach[4]=table1[14];

if(d>=7)d=0;

}

elseif(pstn==2)

{

d++;

if(d<3)cach[6]=cach[7]=table1[14];

if(d>=7)d=0;

}

elseif(pstn==3)

{

d++;

if(d<3)cach[8]=cach[9]=cach[10]=cach[11]=table1[14];

if(d>=7)d=0;

}

elseif(pstn==4)

{

d++;

if(d<3)cach[13]=cach[14]=table1[14];

if(d>=7)d=0;

}

elseif(pstn==5)

{

d++;

if(d<3)cach[16]=cach[17]=table1[14];

if(d>=7)d=0;

}

write_com(0x80+4);

for(num=0;num<8;num++)

{

write_data(cach[num]);

delay

(1);

}

write_com(0x80+0x40+3);

for(num=8;num<18;num++)

{

write_data(cach[num]);

delay

(1);

}

write_com(0x80+0x40+15);

write_data(cach[18]);

delay

(1);

}

voidxianshi2()

{

uchard;

cach[0]=table1[11];

cach[1]=table1[13];

cach[2]=table1[a/10000];

cach[3]=table1[a%10000/1000];

cach[4]=table1[a%1000/100];

cach[5]=table1[a%100/10];

cach[6]=table1[a%10];

cach[7]=table1[12];

cach[8]=table1[13];

cach[9]=table1[b/10000];

cach[10]=table1[b%10000/1000];

cach[11]=table1[b%1000/100];

cach[12]=table1[b%100/10];

cach[13]=table1[b%10];

if(pste==0)

{

d++;

if(d<3)cach[2]=cach[3]=cach[4]=cach[5]=cach[6]=table1[14];

if(d>=7)d=0;

}

elseif(pste==1)

{

d++;

if(d<3)cach[9]=cach[10]=cach[11]=cach[12]=cach[13]=table1[14];

if(d>=7)d=0;

}

write_com(0x80+4);

for(num=0;num<7;num++)

{

write_data(cach[num]);

delay

(1);

}

write_com(0x80+0x40+4);

for(num=7;num<14;num++)

{

write_data(cach[num]);

delay

(1);

}

}

voidriqi()

{

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

{

if(day>=32)

{

day=1;

month++;

}

}

elseif(month==2)

{

if((year%4==0&&year%100!

=0)||year%400==0)

{

if(day>=30)

{

day=1;

month++;

}

}

else

{

if(day>=29)

{

day=1;

month++;

}

}

}

else

{

if(day>=31)

{

day=1;

month++;

}

}

if(month>=13)

{

month=1;

year++;

}

}

unsignedintshezhi()

{

chartemp0,temp1,temp2;

num0=temp0=numh;

num1=temp1=numm;

num2=temp2=nums;

while(test)

{

if(!

k2)

{

delay(5);

if(!

k2)

{

if(pstn==0)

{

num0++;

if(num0==24)num0=0;

}

elseif(pstn==1)

{

num1++;

if(num1==60)num1=0;

}

elseif(pstn==2)

{

num2++;

if(num2==60)num2=0;

}

elseif(pstn==3)

{

year++;

}

elseif(pstn==4)

{

month++;

if(month==13)month=1;

}

elseif(pstn==5)

{

day++;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

{

if(day>=32)day=1;

}

elseif(month==2)

{

if((year%4==0&&year%100!

=0)||year%400==0)

{

if(day>=30)day=1;

}

else

{

if(day>=29)day=1;

}

}

else

{

if(day>=31)day=1;

}

}

while(!

k2);

}

}

if(!

k3)

{

delay(5);

if(!

k3)

{

if(pstn==0)

{

num0--;

if(num0<0)num0=23;

}

elseif(pstn==1)

{

num1--;

if(num1<0)num1=59;

}

elseif(pstn==2)

{

num2--;

if(num2<0)num2=59;

}

elseif(pstn==3)

{

year--;

}

elseif(pstn==4)

{

month--;

if(month<1)month=12;

}

elseif(pstn==5)

{

day--;

if(day==0)

{

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)day=31;

elseif(month==2)

{

if((year%4==0&&year%100!

=0)||year%400==0)day=29;

elseday=28;

}

elseday=30;

}

}

while(!

k3);

}

}

if(!

k1)

{

delay(5);

if(!

k1)

{

pstn++;

if(pstn==6)

{

pstn=0;

test=0;

}

while(!

k1);

}

}

if(!

k4)

{

delay(5);

if(!

k4)

{

pstn=0;

test=0;

}

while(!

k4);

}

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

{

if(day>=32)

{

day=1;

}

}

elseif(month==2)

{

if((year%4==0&&year%100!

=0)||year%400==0)

{

if(day>=30)

{

day=1;

}

}

else

{

if(day>=29)

{

day=1;

}

}

}

else

{

if(day>=31)

{

day=1;

}

}

if(month>=13)

{

month=1;

}

xianshi1();

}

if(num0==temp0&&num1==temp1&&num2==temp2);

else

{

numh=num0;

numm=num1;

nums=num2;

}

return0;

}

unsignedintjiaozhun()

{

write_com(0x01);

while(tset)

{

if(!

k2)

{

delay(5);

if(!

k2)

{

if(pste==0)

{

a++;

if(a>65536)a=65536;

}

elseif(pste==1)

{

b++;

if(b>65536)b=65536;

}

}

while(!

k2);

}

if(!

k3)

{

delay(5);

if(!

k3)

{

if(pste==0)

{

a--;

}

elseif(pste==1)

{

b--;

}

}

while(!

k3);

}

if(!

k5)

{

delay(5);

if(!

k5)

{

pste++;

if(pste==2)

{

pste=0;

tset=0;

}

}

while(!

k5);

}

xianshi2();

}

return0;

}

main()

{

init();

wr=0;

init1();

while

(1)

{

riqi();

xianshi();

if(!

k1)

{

delay(5);

if(!

k1)

{

while(!

k1);

test=1;

shezhi();

}

}

if(!

k5)

{

delay(5);

if(!

k5)

{

while(!

k5);

tset=1;

jiaozhun();

}

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1