基于利用时钟芯片DS1302实现万年历,1602LCD显示电子表 - 图文(7)

2019-04-14 12:00

//////////////////////////////////////////////////////////////////////////////////////////////////////////// void Downkey()//降序按键 {

Down=1;

if(Down==0||wireless_3==1)

{

mdelay(8); switch(count) {case 1:

temp=Read1302(DS1302_SECOND); //读取秒数

temp=temp-1;

//秒数减1

down_flag=1; //数据调整后更新标志

if(temp==0x7f) //小于0秒,返回59秒 temp=0x59; break;

case 2:

temp=Read1302(DS1302_MINUTE); //读取分数

temp=temp-1; //分数减1

down_flag=1;

if(temp==-1)

temp=0x59; //小于0秒,返回59秒 break;

case 3:

读取小时数

读取星期数

temp=Read1302(DS1302_HOUR); //

temp=temp-1; //小时数减1

down_flag=1; if(temp==-1) temp=0x23;

break;

case 4:

temp=Read1302(DS1302_WEEK); //

temp=temp-1; //星期数减1

down_flag=1; if(temp==0) temp=0x7;;

break;

case 5:

temp=Read1302(DS1302_DAY); //读

取日数

temp=temp-1; //日数减1

down_flag=1;

//读取月数

读取年数

if(temp==0) temp=31;

break;

case 6:

temp=Read1302(DS1302_MONTH);

temp=temp-1; //月数减1

down_flag=1; if(temp==0) temp=12;

break;

case 7:

temp=Read1302(DS1302_YEAR);

temp=temp-1; //年数减1

down_flag=1; if(temp==-1) temp=0x85;

break;

// }

default:break;

}

while(Down==0); while(wireless_3==1); }

void Setkey()//模式选择按键 {

Set=1;

if(Set==0||wireless_4==1)

{

mdelay(8); count=count+1;

done=1;

//Setkey按一次,count就加1

//进入调整模式

while(Set==0); while(wireless_4==1); }

}

void keydone()//按键功能执行 { uchar Second;

if(flag==0) //关闭时钟,停止计时

{ Write1302(0x8e,0x00); //写入允许 temp=Read1302(0x80); Write1302(0x80,temp|0x80);

Write1302(0x8e,0x80); //禁止写入

flag=1; } Setkey();

switch(count) {case 1:do {

//扫描跳出按钮

//count=1,调整秒

//扫描模式切换按键

outkey(); 据

{

Upkey(); //扫描加按钮 Downkey(); //扫描减按钮

if(up_flag==1||down_flag==1) //数据更新,重新写入新的数

Write1302(0x8e,0x00); //写入允许

Write1302(0x80,temp|0x80); //写入新的秒数 Write1302(0x8e,0x80); //禁止写入


基于利用时钟芯片DS1302实现万年历,1602LCD显示电子表 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:遵义市畜牧渔业雪凝灾害情况调查报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: