基于单片机的万年历设计 联系客服

发布时间 : 星期日 文章基于单片机的万年历设计更新完毕开始阅读efac64e9b34e852458fb770bf78a6529647d35ea

else //进入闹钟设置。 {

s=dsread(readalarmsecond)/16*10+dsread(readalarmsecond); /*

读取DS1302 中保存的闹钟时分秒原始值,转化为十进制数存进 s,m,h 保存,用以后面判断闹钟时间是否到达。*/

m=dsread(readalarmminute)/16*10+dsread(readalarmminute); h=dsread(readalarmhour)/16*10+dsread(readalarmhour); second=s; //把闹钟时间的十进制数据传送给变量

second,minute,hour,用以调节其值。

}

if(kevent==0) // 检测事件提醒调节键是否按下,此条 if 语句与

}

}

minute=m; hour=h;

writecom(0x80+0x40);

writedata('R'); // 液晶显示闹钟调节标志。 writedata('i');

writetime(3,hour); // 送液晶显示闹钟时间。 writetime(6,minute); writetime(9,second);

if(kmenunum!=0)

编辑版word

{

// 在同一个层次。

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

flagsseta=~flagsseta; while(!kevent); di();

if(flagsseta==0) //此时,退出事件提醒设置,保存各相关数值。 {

flagset=0; //清除时间设置标志,在 if(kevent==0) 这个 if 语句 writecom(0x80+9);// 中,不用 flagset=1 这条语句来设置

//flagset 标志位,因为 ,如果进行了事件提醒时间的设

//,就会执行前面 if(kmenunum==0) 语句中的 flagset=1 这条语

句。

writedata(' '); writedata(' ');

writecom(0x0c); //取消光标闪烁 dswrite(0x8e,0x00); /* 允许写操作 */

dswrite(writeeventyear,year/10*16+year); // 往 DS1302 中保

writedata(' '); // 清除液晶上的 “ Ti 事件提醒调节标志。 ”

存事件提醒的年月日值。

编辑版word

}

dswrite(writeeventmonth,month/10*16+month); dswrite(writeeventday,day/10*16+day); dswrite(0x8e,0x80); /* 禁止写操作 */

else //进入事件提醒设置。 {

yy=dsread(readeventyear)/16*10+dsread(readeventyear); /* 读取

DS1302 中保存的事件提醒年月日原始值,转化为十进制数存进 yy,mm,dd 保存,用以后面判断事件提醒时间是否到达。*/

mm=dsread(readeventmonth)/16*10+dsread(readeventmonth); dd=dsread(readeventday)/16*10+dsread(readeventday); year=yy; //把事件提醒时间的十进制数据传送给变量

hour,day,month,week用以调节其值。

month=mm; day=dd;

writecom(0x80+9);

writedata('T'); // 液晶显示事件提醒设置标志。 writedata('i'); writedata(' ');

writenyr(0,year);// 送液晶显示事件提醒时间。 writenyr(3,month);

writenyr(6,day);

编辑版word

}

}

}

}

void dswritebyte(uchar d)// 往 DS1302 写入一个字节。 {

uchar i; ACC=d; for(i=8;i>0;i--) {

dsdata=ACC0;

dsclk=1; /*为什么这里时钟先为 1 后为 0,因为 dsclk 初始化为 0,而,

每次循环

最后 ,都将其置 0,这样就形成一个从 0 开始的上升沿 ,恰好满足 ds1302

写数据在上升沿, 但是 , }

uchar dsreadbyte() //从 DS1302 读出一个字节。 {

时钟必须从 0 开始的要求 */ dsclk=0; ACC=ACC>>1; }

编辑版word