皖西学院 学生课程设计项目
Write1302(0x8e,0x80); //禁止写入 up_flag=0; down_flag=0; } hide_hour++; if(hide_hour>3) hide_hour=0;
show_time();
}while(count==4);break;
//count=4,调整星期
case 4:do
{ hide_hour=0;
outkey(); Upkey(); Downkey();
if(up_flag==1||down_flag==1) { Write1302(0x8e,0x00); //写入允许 Write1302(0x8a,temp); //写入新的星期数 Write1302(0x8e,0x80); //禁止写入 up_flag=0; down_flag=0; } hide_week++; if(hide_week>3) hide_week=0;
show_time();
}while(count==5);break;
//count=5,调整日
case 5:do
{ hide_week=0;
outkey(); Upkey(); Downkey();
if(up_flag==1||down_flag==1)
31
皖西学院 学生课程设计项目
{ Write1302(0x8e,0x00); //写入允许 Write1302(0x86,temp); //写入新的日数 Write1302(0x8e,0x80); //禁止写入 up_flag=0; down_flag=0; } hide_day++; if(hide_day>3) hide_day=0;
show_time();
}while(count==6);break;
//count=6,调整月
case 6:do
{ hide_day=0;
outkey(); Upkey(); Downkey();
if(up_flag==1||down_flag==1) { Write1302(0x8e,0x00); //写入允许 Write1302(0x88,temp); //写入新的月数 Write1302(0x8e,0x80); //禁止写入 up_flag=0; down_flag=0; } hide_month++; if(hide_month>3) hide_month=0;
show_time();
}while(count==7);break;
//count=7,调整年
case 7:do
{ hide_month=0;
outkey(); Upkey();
32
皖西学院 学生课程设计项目
Downkey();
if(up_flag==1||down_flag==1) {Write1302(0x8e,0x00); //写入允许 Write1302(0x8c,temp); //写入新的年数 Write1302(0x8e,0x80); //禁止写入 up_flag=0; down_flag=0; } hide_year++; if(hide_year>3) hide_year=0;
show_time(); }
while(count==8);break;
case 8: count=0;hide_year=0; //count8, 跳出调整模式,返回默认显示状态 Second=Read1302(DS1302_SECOND); Write1302(0x8e,0x00); //写入允许 Write1302(0x80,Second&0x7f);
Write1302(0x8E,0x80); //禁止写入
done=0;
break; //count=7,开启中断,标志位置0并退出 default:break;}}
void show_time() //液晶显示程序
{ DS1302_GetTime(&CurrentTime); //获取时钟芯片的时间数据 TimeToStr(&CurrentTime); //时间数据转换液晶字符 DateToStr(&CurrentTime); //日期数据转换液晶字符 ReadTemp(); //开启温度采集程序 temp_to_str(); //温度数据转换成液晶字符 GotoXY(12,1); //液晶字符显示位置 Print(TempBuffer); //显示温度 GotoXY(0,1);
Print(CurrentTime.TimeString); //显示时间
33
皖西学院 学生课程设计项目
GotoXY(0,0);
Print(CurrentTime.DateString); //显示日期 GotoXY(15,0);
Print(week_value); //显示星期 GotoXY(11,0);
Print(\//在液晶上显示 字母 week Delay1ms(400); //扫描延时 } main()
{ flag=1; //时钟停止标志 LCD_Initial(); //液晶初始化 Init_DS18B20( ) ; //DS18B20初始化 Initial_DS1302(); //时钟芯片初始化 up_flag=0; down_flag=0;
done=0; //进入默认液晶显示 wireless_1=0; wireless_2=0; wireless_3=0; wireless_4=0; while(1)
{ while(done==1)
keydone(); //进入调整模式
while(done==0)
{ show_time(); //液晶显示数据 flag=0;
Setkey();
//扫描各功能键 } 34
}}