基于stc89c51单片机的1602液晶简易万年历.docx

上传人:b****7 文档编号:25287889 上传时间:2023-06-07 格式:DOCX 页数:14 大小:75.08KB
下载 相关 举报
基于stc89c51单片机的1602液晶简易万年历.docx_第1页
第1页 / 共14页
基于stc89c51单片机的1602液晶简易万年历.docx_第2页
第2页 / 共14页
基于stc89c51单片机的1602液晶简易万年历.docx_第3页
第3页 / 共14页
基于stc89c51单片机的1602液晶简易万年历.docx_第4页
第4页 / 共14页
基于stc89c51单片机的1602液晶简易万年历.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

基于stc89c51单片机的1602液晶简易万年历.docx

《基于stc89c51单片机的1602液晶简易万年历.docx》由会员分享,可在线阅读,更多相关《基于stc89c51单片机的1602液晶简易万年历.docx(14页珍藏版)》请在冰豆网上搜索。

基于stc89c51单片机的1602液晶简易万年历.docx

基于stc89c51单片机的1602液晶简易万年历

基于stc89c51单片机的1602液晶简易万年历

基于stc89c51单片机的简易万年历

//基于stc89c51单片机的简易万年历设计

//zzuli-wuzhipeng

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharshi=0,fen=0,miao=0,ri=7,yue=1,Z=1,Y=1,i,K1num;

uintnian=2015;

ucharcount_10ms,K1num;

sbitrs=P2^0;

sbitrw=P2^1;

sbitlcden=P2^2;

sbitK1=P3^0;

sbitK2=P3^1;

sbitK3=P3^2;

sbitBEEP=P3^7;

voiddelay(uintx)//简单延时程序

{

uinta,b;

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

for(b=10;b>0;b--);

}

 

bi(uintt)//控制响铃时间程序

{

intc,n;

for(c=0;c

{

for(n=0;n<50;n++);

BEEP=~BEEP;

}

return(t);

}

 

voidwrite_com(ucharcom)//1602液晶写指令

{

P0=com;

rs=0;

rw=0;

lcden=0;

delay(10);

lcden=1;

delay(10);

lcden=0;

}

 

voidwrite_date(uchardate)//1602液晶写数据

{

P0=date;

rs=1;

rw=0;

lcden=0;

delay(10);

lcden=1;

delay(10);

lcden=0;

}

 

voidbeep()//喇叭

{

BEEP=0;

delay(100);

BEEP=1;

delay(100);

}

 

voidnaozhong()//闹钟

{

if((Z==shi)&(Y==fen)&(miao<10))

{bi(500);}

}

 

voidshijian(uintt,add)

{

if(t>100)

{

uchara,b,c,d;

a=t/1000+0x30;

b=t/100%10+0x30;

c=t/10%10+0x30;

d=t%10+0x30;

write_com(add);

write_date(a);

write_date(b);

write_date(c);

write_date(d);

}

else

{

ucharm=0,n=0;

m=t/10+0x30;

n=t%10+0x30;

write_com(add);

write_date(m);

write_date(n);

}

}

 

voidLCD_disp()

{

shijian(shi,0x80+0);

write_com(0x80+2);

write_date(0x3a);

shijian(fen,0x80+3);

write_date(0x3a);

shijian(miao,0x80+6);

write_date(0x2d);

write_date(0x2d);

write_date(0x2d);

shijian(Z,0x80+11);

write_date(0x3a);

shijian(Y,0x80+14);

shijian(nian,0xc0+0);

write_date(0x2d);

shijian(yue,0xc0+5);

write_date(0x2d);

shijian(ri,0xc0+8);

}

 

voidinit()//1602液晶初始化

{

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

}

voidtimer1_init()//定时器初始化

{

TMOD=0x01;

TH0=0x4c;TL0=0x00;

EA=1;ET0=1;

TR0=1;

}

 

voidtimer0()interrupt1using0//中断程序

{

TH0=0x4c;TL0=0x00;

count_10ms++;

if(count_10ms==20)

{

count_10ms=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

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

{ri++;if(ri==32){ri=1;yue++;if(yue==13){nian++;yue=1;}}}

elseif(yue==4||yue==6||yue==9||yue==11)

{ri++;if(ri==31){ri=1;yue++;if(yue==13){nian++;yue=1;}}}

elseif(yue==2)

{

if((!

(nian%4)&&(nian%100))||!

(nian%400))

{ri++;if(ri==30){ri=1;yue++;if(yue==13){nian++;yue=1;}}}

else

{ri++;if(ri==29){ri=1;yue++;if(yue==13){nian++;yue=1;}}}

}

 

}

}

}

}

}

 

voidkeycan()//键盘处理程序

{

 

if(K1==0)//功能选择键

{

K1num++;delay

(1);

if(K1==0)

{

while(!

K1);

bi(200);

if(K1num==1){TR0=0;write_com(0x80+0);write_com(0x0f);}

if(K1num==2){write_com(0x80+3);write_com(0x0f);}

if(K1num==3){write_com(0x80+6);write_com(0x0f);}

if(K1num==4){write_com(0x80+11);write_com(0x0f);}

if(K1num==5){write_com(0x80+14);write_com(0x0f);}

if(K1num==6){write_com(0xc0+3);write_com(0x0f);}

if(K1num==7){write_com(0xc0+6);write_com(0x0f);}

if(K1num==8){write_com(0xc0+9);write_com(0x0f);}

if(K1num==9){K1num=0;write_com(0x0c);TR0=1;}

}

}

 

if(K1num!

=0)//功能加

{

if(K2==0)

{

delay

(1);

if(K2==0)

{

while(!

K2);

bi(200);

if(K1num==1){shi++;if(shi==24)shi=0;shijian(shi,0x80+0);write_com(0x80);}

if(K1num==2){fen++;if(fen==60)fen=0;shijian(fen,0x80+3);write_com(0x80+3);}

if(K1num==3){miao++;if(miao==60)miao=0;shijian(miao,0x80+6);write_com(0x80+60);}

if(K1num==4){Z++;if(Z==24)Z=0;shijian(Z,0x80+11);write_com(0x80+11);}

if(K1num==5){Y++;if(Y==60)Y=0;shijian(Y,0x80+14);write_com(0x80+14);}

if(K1num==6){nian++;if(nian==2999)nian=2015;shijian(nian,0xc0+0);write_com(0xc0+0);}

if(K1num==7){yue++;if(yue==13)yue=1;shijian(yue,0xc0+5);write_com(0xc0+5);}

if(K1num==8){ri++;

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

{if(ri==32){ri=1;}}

elseif(yue==4||yue==6||yue==9||yue==11)

{if(ri==31){ri=1;}}

elseif(yue==2)

{

if((!

(nian%4)&&(nian%100))||!

(nian%400))

{if(ri==30){ri=1;}}

else

{if(ri==29){ri=1;}}

}

shijian(ri,0xc0+8);write_com(0xc0+8);

}

}

}

}

if(K1num!

=0)//功能减

{

if(K3==0)

{

delay

(1);

if(K3==0)

{

while(!

K3);

bi(200);

if(K1num==1){shi--;if(shi==-1)shi=23;shijian(shi,0x80+0);write_com(0x80);}

if(K1num==2){fen--;if(fen==-1)fen=59;shijian(fen,0x80+3);write_com(0x80+3);}

if(K1num==3){miao--;if(miao==-1)miao=59;shijian(miao,0x80+6);write_com(0x80+6);}

if(K1num==4){Z--;if(Z==-1)Z=23;shijian(Z,0x80+11);write_com(0x80+11);

 

voidmain()

{

init();

timer1_init();

while

(1)

{

keycan();

naozhong();

}

}

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

当前位置:首页 > 小学教育 > 其它课程

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

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