基于C51单片机为主控芯片的电子表(内附完整程序源码) 联系客服

发布时间 : 星期四 文章基于C51单片机为主控芯片的电子表(内附完整程序源码)更新完毕开始阅读94fbcb40814d2b160b4e767f5acfa1c7aa0082a2

}

return iWeek;

函数采用泰勒公布,将年月日输入函数,函数会通过年月日计算出但天是星期几,方便进行星期显示。

5.2独立按键函数

按键交互是由独立按键构成的,此函数是独立按键的驱动函数。

共有三个独立按键,分别为:S1,数位选择按键;S2,数值加一按键;S3,数值减一按键。

5.2.1 S1数位选择按键 源代码如下

if(s1==0)

{

delay(5); if(s1==0) { }

if(s1num==2) { }

if(s1num==3) { }

if(s1num==4) { } {

write_com(0x80+6); write_com(0x80+9);

//调整月份

//调整日期

write_com(0x80+0x40+4);

//调整小时

write_com(0x80+0x40+7);

//调整分钟

s1num++; while(!s1); if(s1num==1) { }

TR0=0;

write_com(0x80+0x40+10); write_com(0x0f);

//光标闪烁

//调整秒钟

//调整选择

if(s1num==5)

}

}

if(s1num==6) { }

if(s1num==7) { }

s1num=0; write_com(0x0c); TR0=1;

//还原

write_com(0x80+3);

//调整年份

采用消抖延时来消除按键抖动,slnum用来记录数位,每按下按键一次,slnum自加一,方便数值调整获取数位,当按下7次按键时,恢复正常显示。

5.2.2 S2数值加一按键 源代码如下

if(s2==0) {

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

while(!s2); if(s1num==1) { }

if(s1num==2) { }

if(s1num==3)

//调整小时

fen++; if(fen==60)

fen=0; write_sfm(7,fen); write_com(0x80+0x40+7);

//调整分钟

miao++; if(miao==60)

miao=0;

//调整秒钟

//加数

write_sfm(10,miao); write_com(0x80+0x40+10);

}

}

{ }

if(s1num==4) { }

if(s1num==5) { }

if(s1num==6) { }

nian++; if(nian==100)

nian=0; write_nyr(3,nian);

write_xq(week(nian,yue,ri)); write_com(0x80+3);

//调整年份

yue++; if(yue==13)

yue=1; write_nyr(6,yue);

write_xq(week(nian,yue,ri)); write_com(0x80+6);

//调整月份

ri++;

if(delete_riqi(ri))

ri=1; write_nyr(9,ri);

write_xq(week(nian,yue,ri)); write_com(0x80+9);

//调整日期

shi++; if(shi==24)

shi=0; write_sfm(4,shi); write_com(0x80+0x40+4);

获取slnum数值来获取数位,对当前数位的数值进行加一处理,并对液晶屏进行显示处理。

引用日期清零函数和星期计算函数,日期计满将自动置一,自动获取星期。方使用者操作。

5.2.3 S3数值减一按键 源代码如下

if(s3==0)

{ delay(5); if(s3==0) { while(!s3); if(s1num==1)

{ miao--; if(miao==-1)

miao=59; write_sfm(10,miao); write_com(0x80+0x40+10);

}

if(s1num==2)

{ fen--; if(fen==-1)

fen=59; write_sfm(7,fen); write_com(0x80+0x40+7);

}

if(s1num==3)

{ shi--; if(shi==-1)

shi=23; write_sfm(4,shi); write_com(0x80+0x40+4);

}

if(s1num==4)

{ ri--; if(ri==0)

ri=28; write_nyr(9,ri);

write_xq(week(nian,yue,ri)); write_com(0x80+9);

}

if(s1num==5)

//减数

//调整秒钟

//调整分钟

//调整小时

//调整日期

//调整月份