⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time.c

📁 51edn开发板程序
💻 C
📖 第 1 页 / 共 2 页
字号:
					 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 + -