电子万年台历的设计制作(6)

2019-02-20 23:45

皖西学院 学生课程设计项目

break;

case 4:

temp=Read1302(DS1302_WEEK); //读取星期数

temp=temp+1; //星期数加1

up_flag=1;

if(temp>0x7) temp=1; break;

case 5:

temp=Read1302(DS1302_DAY); //读取日数

temp=temp+1; //日数加1

up_flag=1;

if(temp>0x31) temp=1; break;

case 6:

temp=Read1302(DS1302_MONTH); //读取月数

temp=temp+1; //月数加1

up_flag=1;

if(temp>0x12) temp=1; break;

case 7:

temp=Read1302(DS1302_YEAR); //读取年数

temp=temp+1; //年数加1

up_flag=1;

if(temp>0x85) temp=0; break;

default:break; }

26

皖西学院 学生课程设计项目

while(Up==0);

while(wireless_2==1);

}}

///////////////////////////////////////////////////////////////////////////////

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;

27

皖西学院 学生课程设计项目

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);

28

皖西学院 学生课程设计项目

while(wireless_3==1); }}

void Setkey()//模式选择按键 { Set=1;

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

{ mdelay(8);

count=count+1; //Setkey按一次,count就加1

done=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); //禁止写入 up_flag=0; down_flag=0; }

hide_sec++; //位闪计数

29

皖西学院 学生课程设计项目

if(hide_sec>3) hide_sec=0;

show_time(); //液晶显示数据

}while(count==2);break;

//count=2,调整分

case 2:do

{ hide_sec=0;

outkey(); Upkey(); Downkey(); if(temp>0x60) temp=0;

if(up_flag==1||down_flag==1) { Write1302(0x8e,0x00); //写入允许 Write1302(0x82,temp); //写入新的分数 Write1302(0x8e,0x80); //禁止写入 up_flag=0; down_flag=0; } hide_min++; if(hide_min>3) hide_min=0;

show_time();

}while(count==3);break;

//count=3,调整小时

case 3:do

{ hide_min=0;

outkey(); Upkey(); Downkey();

if(up_flag==1||down_flag==1) { Write1302(0x8e,0x00); //写入允许 Write1302(0x84,temp); //写入新的小时数

30


电子万年台历的设计制作(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:鲁班算量技巧培训教材

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

马上注册会员

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