}
void disp_strstowatch3(void) { LcdEn=0; LCD_Write(LCD_COMMAND,0x38); //8位数据端口,一般指令 LCD_Write(LCD_COMMAND,0x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 GotoXY(0,1); Print(\ GotoXY(0, 0); Print(stop_watch_temp3); GotoXY(1, 1); Print(stop_watch_value); stopwatch_flag=1; Delay1ms(200); }
void outkey() //跳出调整模式,返回默认显示 { uchar Second;
if(out==0) { mdelay(8); count=0; hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0; Second=Read1302(DS1302_SECOND); Write1302(0x8e,0x00); //写入允许 Write1302(0x80,Second&0x7f); Write1302(0x8E,0x80); //禁止写入 done=0; while(out==0); settime_flag=0; }
第 36 页 共 50 页
电子系统设计报告
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 GotoXY(0,1); Print(\GotoXY(0, 0);
Print(stop_watch_temp2); GotoXY(1, 1);
Print(stop_watch_value); stopwatch_flag=1; Delay1ms(200);
电子系统设计报告
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////// void Upkey()//升序按键 { Up=1; if(Up==0) { mdelay(8); switch(count) {case 1:
temp=((Read1302(DS1302_SECOND)&0x70)>>4)*10 + (Read1302(DS1302_SECOND)&0x0F); //读取秒数 temp=temp+1; //秒数加1
up_flag=1; //数据调整后更新标志 if(temp>59) //超过59秒,清零 temp=0; break; case 2:
temp=((Read1302(DS1302_MINUTE)&0x70)>>4)*10 + (Read1302(DS1302_MINUTE)&0x0F); //读取分数 temp=temp+1; //分数加1 up_flag=1; if(temp>59) //超过59分,清零 temp=0; break; case 3:
temp=((Read1302(DS1302_HOUR)&0x70)>>4)*10 + (Read1302(DS1302_HOUR)&0x0F); //读取小时数 temp=temp+1; //小时数加1 up_flag=1; if(temp>23) //超过23小时,清零 temp=0; break; case 5:
temp=((Read1302(DS1302_DAY)&0x70)>>4)*10 + (Read1302(DS1302_DAY)&0x0F); //读取日数 temp=temp+1; //日数加1 up_flag=1; if(((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==1||((Read1302(DS1302_MONTH)&0x70)>>4)*10
第 37 页 共 50 页
电子系统设计报告
+
(Read1302(DS1302_MONTH)&0x0F)==3||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==5||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==7||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==8||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==10||((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==12) { if(temp>31) temp=1; } if(((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==4||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==6||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==9||((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==11) { if(temp>30) temp=1; } if(((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==2) { if(temp>28) temp=1; } break; case 6:
temp=((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F); //读取月数 temp=temp+1; //月数加1 up_flag=1; if(temp>12) temp=1; break; case 7:
第 38 页 共 50 页
电子系统设计报告
temp=((Read1302(DS1302_YEAR)&0x70)>>4)*10 + (Read1302(DS1302_YEAR)&0x0F); //读取年数 temp=temp+1; //年数加1 up_flag=1; if(temp>99) temp=0; break; default:break; } while(Up==0); } }
//////////////////////////////////////////////////////////////////////////////////////////////////////////// void Downkey()//降序按键 { Down=1; if(Down==0) { mdelay(8); switch(count) {case 1:
temp=((Read1302(DS1302_SECOND)&0x70)>>4)*10 + (Read1302(DS1302_SECOND)&0x0F); //读取秒数 temp=temp-1; //秒数减1 down_flag=1; //数据调整后更新标志 if(temp==0x7f) //小于0秒,返回59秒 temp=59; break; case 2:
temp=((Read1302(DS1302_MINUTE)&0x70)>>4)*10 + (Read1302(DS1302_MINUTE)&0x0F); //读取分数 temp=temp-1; //分数减1 down_flag=1; if(temp<0) temp=59; //小于0秒,返回59秒 break; case 3:
temp=((Read1302(DS1302_HOUR)&0x70)>>4)*10 + (Read1302(DS1302_HOUR)&0x0F);
第 39 页 共 50 页
电子系统设计报告
//读取小时数 temp=temp-1; //小时数减1 down_flag=1; if(temp<0) temp=23; break; case 5:
temp=((Read1302(DS1302_DAY)&0x70)>>4)*10 + (Read1302(DS1302_DAY)&0x0F); //读取日数 temp=temp-1; //日数减1 down_flag=1; if(temp<1) { if(((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==1||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==3||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==5||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==7||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==8||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==10||((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==12) temp=31; if(((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==4||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==6||((Read1302(DS1302_MONTH)&0x70)>>4)*10 +
(Read1302(DS1302_MONTH)&0x0F)==9||((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==11) temp=30; if(((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F)==2) temp=28; } break; case 6:
temp=((Read1302(DS1302_MONTH)&0x70)>>4)*10 + (Read1302(DS1302_MONTH)&0x0F); //读取月数
第 40 页 共 50 页