当前位置:首页 > 基于C51单片机为主控芯片的电子表(内附完整程序源码)
}
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)
//减数
//调整秒钟
//调整分钟
//调整小时
//调整日期
//调整月份
共分享92篇相关文档