📄 time.c
字号:
t=Time[1]&0x0F;
if(t<9)t++;
else t=0;
Time[1]&=0xF0;
Time[1]|=t;
break;
case 12: //秒高位
t=(Time[0]>>4)&0x07;
if(t<5)t++;
else t=0;
Time[0]&=0x0F;
Time[0]|=t<<4;
break;
case 13: //秒低位
t=Time[0]&0x0F;
if(t<9)t++;
else t=0;
Time[0]&=0xF0;
Time[0]|=t;
break;
}
KeyDown&=~KEY7;
}
}
if(SystemTick-OldTick>=70)
{
NeedRefresh=1;
OldTick=SystemTick;
}
if(NeedRefresh)
{
NeedRefresh=0;
DateToString();
on=!on;
if(!on)
{
switch(SetDigit)
{
case 1: DispBuffer[2]=' ';break;
case 2: DispBuffer[3]=' ';break;
case 3: DispBuffer[5]=' ';break;
case 4: DispBuffer[6]=' ';break;
case 5: DispBuffer[8]=' ';break;
case 6: DispBuffer[9]=' ';break;
case 7: DispBuffer[12]=' ';break;
default: break;
}
}
Prints(DispBuffer);
Prints(" ");
#ifdef LCD //如果有LCD,则同时显示到LCD上
if(DispStatus==DISP_SET_TIME)
{
LcdCls();
LcdSetPosition(0x02);
LcdPrints(DispBuffer);
}
#endif
TimeToString();
if(!on)
{
switch(SetDigit)
{
case 8: DispBuffer[0]=' ';break;
case 9: DispBuffer[1]=' ';break;
case 10: DispBuffer[3]=' ';break;
case 11: DispBuffer[4]=' ';break;
case 12: DispBuffer[6]=' ';break;
case 13: DispBuffer[7]=' ';break;
default: break;
}
}
Prints(DispBuffer);
Prints("\r\n");
#ifdef LCD //如果有LCD,则同时显示到LCD上
if(DispStatus==DISP_SET_TIME)
{
LcdSetPosition(0x44);
LcdPrints(DispBuffer);
}
#endif
}
}
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:保存闹钟时间和报警温度函数。
入口参数:无。
返 回:无。
备 注:无。
********************************************************************/
void SaveAlarmClock(void)
{
uint8 i;
for(i=0;i<4;i++)
{
EepromWriteByte(0xA0,i,AlarmTime[i]);
}
EepromWriteByte(0xA0,4,AlarmTemperature);
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:读闹钟时间和报警温度参数。
入口参数:无。
返 回:无。
备 注:无。
********************************************************************/
void ReadAlarmClock(void)
{
uint8 i;
for(i=0;i<4;i++)
{
AlarmTime[i]=EepromReadByte(0xA0,i);
}
AlarmTemperature=EepromReadByte(0xA0,4);
}
////////////////////////End of function//////////////////////////////
/********************************************************************
函数功能:设置闹钟时钟和报警温度函数。
入口参数:无。
返 回:无。
备 注:无。
********************************************************************/
void SetAlarmClock(void)
{
uint8 SetDigit=8;
uint8 on=0;
uint8 TimeModified=0;
uint8 t;
uint8 NeedRefresh;
uint16 OldTick;
Prints("Set alarm clock: ");
#ifdef LCD
LcdCls();
LcdPrints("Set alarm clock:");
#endif
while(1)
{
if(KeyDown) //有按键按下
{
if(KeyDown&(KEY1|KEY2|KEY3|KEY4))return; //按下这些键放弃设置闹钟,返回
if(KeyDown&KEY8)
{
if(TimeModified) //如果对闹钟时间做了修改
{
BeepOn(); //蜂鸣器响,提示正在保存设置
SaveAlarmClock(); //保存设置的时间
BeepOff();
}
DispStatus=DISP_TIME; //切换回时间显示状态
KeyDown&=~KEY8;
return;
}
if(KeyDown&KEY5) //切换调整位
{
SetDigit++; //切换到下一位
if(SetDigit>=17)SetDigit=8; //到最后一位,返回
KeyDown&=~KEY5;
NeedRefresh=1; //需要刷新显示
}
if(KeyDown&KEY6) //减1调整
{
TimeModified=1; //修改了时钟
NeedRefresh=1; //需要刷新显示
switch(SetDigit) //调整不同的位
{
case 8: //小时高位
t=(AlarmTime[2]>>4)&0x03;
if(t>0)t--;
else t=2;
AlarmTime[2]&=0x0F;
AlarmTime[2]|=t<<4;
break;
case 9: //小时低位
t=AlarmTime[2]&0x0F;
if(((AlarmTime[2]>>4)&0x03)==2)
{
if(t>0)t--;
else t=3;
}
else
{
if(t>0)t--;
else t=9;
}
AlarmTime[2]&=0xF0;
AlarmTime[2]|=t;
break;
case 10: //分高位
t=(AlarmTime[1]>>4)&0x07;
if(t>0)t--;
else t=5;
AlarmTime[1]&=0x0F;
AlarmTime[1]|=t<<4;
break;
case 11: //分低位
t=AlarmTime[1]&0x0F;
if(t>0)t--;
else t=9;
AlarmTime[1]&=0xF0;
AlarmTime[1]|=t;
break;
case 12: //秒高位
t=(AlarmTime[0]>>4)&0x07;
if(t>0)t--;
else t=5;
AlarmTime[0]&=0x0F;
AlarmTime[0]|=t<<4;
break;
case 13: //秒低位
t=AlarmTime[0]&0x0F;
if(t>0)t--;
else t=9;
AlarmTime[0]&=0xF0;
AlarmTime[0]|=t;
break;
case 14: //开关调节
if(AlarmTime[3]==0)
{
AlarmTime[3]=1;
}
else
{
AlarmTime[3]=0;
}
break;
case 15: //温度高位
t=(AlarmTemperature>>4)&0x0F;
if(t>0)t--;
else t=9;
AlarmTemperature&=0x0F;
AlarmTemperature|=t<<4;
break;
case 16: //温度低位
t=(AlarmTemperature)&0x0F;
if(t>0)t--;
else t=9;
AlarmTemperature&=0xF0;
AlarmTemperature|=t;
break;
default: SetDigit=8;
break;
}
KeyDown&=~KEY6;
}
if(KeyDown&KEY7) //加1调整
{
TimeModified=1; //修改了时钟
NeedRefresh=1; //需要刷新显示
switch(SetDigit) //调整不同的位
{
case 8: //小时高位
t=(AlarmTime[2]>>4)&0x03;
if(t<2)t++;
else t=0;
AlarmTime[2]&=0x0F;
AlarmTime[2]|=t<<4;
break;
case 9: //小时低位
t=AlarmTime[2]&0x0F;
if(((AlarmTime[2]>>4)&0x03)==2)
{
if(t<3)t++;
else t=0;
}
else
{
if(t<9)t++;
else t=0;
}
AlarmTime[2]&=0xF0;
AlarmTime[2]|=t;
break;
case 10: //分高位
t=(AlarmTime[1]>>4)&0x07;
if(t<5)t++;
else t=0;
AlarmTime[1]&=0x0F;
AlarmTime[1]|=t<<4;
break;
case 11: //分低位
t=AlarmTime[1]&0x0F;
if(t<9)t++;
else t=0;
AlarmTime[1]&=0xF0;
AlarmTime[1]|=t;
break;
case 12: //秒高位
t=(AlarmTime[0]>>4)&0x07;
if(t<5)t++;
else t=0;
AlarmTime[0]&=0x0F;
AlarmTime[0]|=t<<4;
break;
case 13: //秒低位
t=AlarmTime[0]&0x0F;
if(t<9)t++;
else t=0;
AlarmTime[0]&=0xF0;
AlarmTime[0]|=t;
break;
case 14: //开关调节
if(AlarmTime[3]==0)
{
AlarmTime[3]=1;
}
else
{
AlarmTime[3]=0;
}
break;
case 15: //温度高位
t=(AlarmTemperature>>4)&0x0F;
if(t<9)t++;
else t=0;
AlarmTemperature&=0x0F;
AlarmTemperature|=t<<4;
break;
case 16: //温度低位
t=(AlarmTemperature)&0x0F;
if(t<9)t++;
else t=0;
AlarmTemperature&=0xF0;
AlarmTemperature|=t;
break;
default: SetDigit=8;
break;
}
KeyDown&=~KEY7;
}
}
if(SystemTick-OldTick>=70)
{
NeedRefresh=1;
OldTick=SystemTick;
}
if(NeedRefresh)
{
NeedRefresh=0;
DispBuffer[0]='0'+(AlarmTime[2]>>4);
DispBuffer[1]='0'+(AlarmTime[2]&0x0F);
DispBuffer[2]=':';
DispBuffer[3]='0'+(AlarmTime[1]>>4);
DispBuffer[4]='0'+(AlarmTime[1]&0x0F);
DispBuffer[5]=':';
DispBuffer[6]='0'+(AlarmTime[0]>>4);
DispBuffer[7]='0'+(AlarmTime[0]&0x0F);
DispBuffer[8]=' ';
if(AlarmTime[3]==0)
{
DispBuffer[9]='O';
DispBuffer[10]='F';
DispBuffer[11]='F';
}
else
{
DispBuffer[9]='O';
DispBuffer[10]='N';
DispBuffer[11]=' ';
}
DispBuffer[12]='T';
DispBuffer[13]=':';
DispBuffer[14]='0'+(AlarmTemperature>>4);
DispBuffer[15]='0'+(AlarmTemperature&0x0F);
DispBuffer[16]=0;
on=!on;
if(!on)
{
switch(SetDigit)
{
case 8: DispBuffer[0]=' ';break;
case 9: DispBuffer[1]=' ';break;
case 10: DispBuffer[3]=' ';break;
case 11: DispBuffer[4]=' ';break;
case 12: DispBuffer[6]=' ';break;
case 13: DispBuffer[7]=' ';break;
case 14: DispBuffer[9]=' ';
DispBuffer[10]=' ';
DispBuffer[11]=' ';break;
case 15: DispBuffer[14]=' ';break;
case 16: DispBuffer[15]=' ';break;
default: SetDigit=8; break;
}
}
Prints(DispBuffer);
Prints("\r\n");
#ifdef LCD //如果有LCD,则同时显示到LCD上
if(DispStatus==DISP_SET_ALARM_TIME)
{
LcdSetPosition(0x40);
LcdPrints(DispBuffer);
}
#endif
}
}
}
////////////////////////End of function//////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -