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

📄 main_function.c

📁 一个数码管与NTC的应用实例
💻 C
📖 第 1 页 / 共 2 页
字号:
		Split(temp,4,5,6,7);
		temp=eeprom_read(4)*256+eeprom_read(5);
		if(temp>999){temp=999;}
		Split(temp,15,16,17,18);
		temp=eeprom_read(6)*256+eeprom_read(7);
		if(temp>9999){temp=9999;}
		Split(temp,19,20,21,22);

		AD0_SettingValue=eeprom_read(8);
		if(AD0_SettingValue>99){AD0_SettingValue=99;}		
		Split_AD(AD0_SettingValue,8,9,10);
		AD1_SettingValue=eeprom_read(9);
		if(AD1_SettingValue>99){AD1_SettingValue=99;}
		Split_AD(AD1_SettingValue,11,12,13);

		Display_data[14]=0;		
		Display_data[14]=Display_data[14]|0x80;
		Flash=1;
		Setting_Obj=0;
		Flash_turn=Setting_Point=3;
	}
}

unsigned char Check_TopBottom(unsigned Data,unsigned char Position,unsigned char TopBottom)
{
	if(TopBottom==1)//加法
	{
		switch(Position)
		{
			case 0:
				if(Data%10==9)
					return 1;
				else
					return 0;
			case 1:
				if(Data%100>=90)
					return 1;
				else
					return 0;
			case 2:
				if(Data%1000>=900)
					return 1;
				else
					return 0;
			case 3:
				if(Data%10000>=9000)
					return 1;
				else
					return 0;
		}
	}
	else//减法
	{
		switch(Position)
		{
			case 0:
				if(Data%10==0)
					return 1;
				else
					return 0;
			case 1:
				if(Data%100<10)
					return 1;
				else
					return 0;
			case 2:
				if(Data%1000<100)
					return 1;
				else
					return 0;
			case 3:
				if(Data%100<1000)
					return 1;
				else
					return 0;
		}
	}
	return 0;	
}

void Setting_Mode(void)
{ 
	unsigned char temp;
	if((Key_Inf.Status==Press_Down)&&(Key_Inf.Response==1))
	{
		Key_Inf.Response=0;
		switch(Key_Inf.KeyCode)
		{
			case 8:
					Mode=Working;
					break;
			case 10:
					Display_data[14]=0;
					Display_data[14]=Display_data[14]|(0x80);
					Flash_turn=3;
					Setting_Obj=0;
					Setting_Point=3;
					break;
			case 5:	
					Display_data[14]=0;
					Display_data[14]=Display_data[14]|(0x40);
					Flash_turn=7;
					Setting_Obj=1;
					Setting_Point=7;
					break;
			case 2:
					Display_data[14]=0;
					Display_data[14]=Display_data[14]|(0x08);
					Flash_turn=18;
					Setting_Obj=4;
					Setting_Point=18;
					break;
			case 1:
					Display_data[14]=0;
					Display_data[14]=Display_data[14]|(0x04);
					Flash_turn=22;
					Setting_Obj=5;
					Setting_Point=22;
					break;
			case 4:
					Display_data[14]=0;
					Display_data[14]=Display_data[14]|(0x20);
					Flash_turn=9;
					Setting_Obj=2;
					Setting_Point=9;
					break;
			case 3:
					Display_data[14]=0;
					Display_data[14]=Display_data[14]|(0x10);
					Flash_turn=12;
					Setting_Obj=3;
					Setting_Point=12;
					break;
			case 7://确定光标闪烁位置
					switch(Setting_Obj)
					{
						case 0:
							Setting_Point--;
							if(Setting_Point>30){Setting_Point=3;}
							Flash_turn=Setting_Point;
							break;
						case 1:
							Setting_Point--;
							if(Setting_Point<4){Setting_Point=7;}
							Flash_turn=Setting_Point;
							break;
						case 4:
							Setting_Point--;
							if(Setting_Point<16){Setting_Point=18;}
							Flash_turn=Setting_Point;
							break;
						case 5:
							Setting_Point--;
							if(Setting_Point<19){Setting_Point=22;}
							Flash_turn=Setting_Point;
							break;
						case 2:
							Setting_Point--;
							if(Setting_Point<8){Setting_Point=9;}
							Flash_turn=Setting_Point;
							break;
						case 3:
							Setting_Point--;
							if(Setting_Point<11){Setting_Point=12;}
							Flash_turn=Setting_Point;
							break;
					}
					break;
			case 9:
				{
					switch(Setting_Obj)
					{
						case 0:
							if(Check_TopBottom(Timer1_Mirro,3-Setting_Point,1))
							{
								Timer1_Mirro=Timer1_Mirro-9*Pow(10,(3-Setting_Point));
							}
							else
							{
								Timer1_Mirro=Timer1_Mirro+Pow(10,(3-Setting_Point));
							}
							Split(Timer1_Mirro,0,1,2,3);
							Display_data[3]++;
							break;				
						case 1:
							if(Check_TopBottom(Timer2_Mirro,7-Setting_Point,1))
							{
								Timer2_Mirro=Timer2_Mirro-9*Pow(10,(7-Setting_Point));
							}
							else
							{
								Timer2_Mirro=Timer2_Mirro+Pow(10,(7-Setting_Point));
							}
							Split(Timer2_Mirro,4,5,6,7);
							break;
						case 4:
							if(Check_TopBottom(Timer3_Mirro,18-Setting_Point,1))
							{
								Timer3_Mirro=Timer3_Mirro-9*Pow(10,(18-Setting_Point));
							}
							else
							{
								Timer3_Mirro=Timer3_Mirro+Pow(10,(18-Setting_Point));
							}
							Split(Timer3_Mirro,15,16,17,18);
							break;
						case 5:
							if(Check_TopBottom(Timer4_Mirro,22-Setting_Point,1))
							{
								Timer4_Mirro=Timer4_Mirro-9*Pow(10,(22-Setting_Point));
							}
							else
							{
								Timer4_Mirro=Timer4_Mirro+Pow(10,(22-Setting_Point));
							}
							Split(Timer4_Mirro,19,20,21,22);
							break;
						case 2:
							if(Check_TopBottom(AD0_SettingValue,9-Setting_Point,1))
							{
								AD0_SettingValue=AD0_SettingValue-9*Pow(10,(9-Setting_Point));
							}
							else
							{
								AD0_SettingValue=AD0_SettingValue+Pow(10,(9-Setting_Point));
							}
							Split_AD(AD0_SettingValue,8,9,10);
							break;
						case 3:
							if(Check_TopBottom(AD1_SettingValue,12-Setting_Point,1))
							{
								AD1_SettingValue=AD1_SettingValue-9*Pow(10,(12-Setting_Point));
							}
							else
							{
								AD1_SettingValue=AD1_SettingValue+Pow(10,(12-Setting_Point));
							}
							Split_AD(AD1_SettingValue,11,12,13);
							break;
					}
					break;	
				}
			case 6:
				{
					switch(Setting_Obj)
					{
						case 0:
							if(Check_TopBottom(Timer1_Mirro,3-Setting_Point,0))
							{
								Timer1_Mirro=Timer1_Mirro+9*Pow(10,(3-Setting_Point));
							}
							else
							{
								Timer1_Mirro=Timer1_Mirro-Pow(10,(3-Setting_Point));
							}
							Split(Timer1_Mirro,0,1,2,3);
							Display_data[3]++;
							break;				
						case 1:
							if(Check_TopBottom(Timer2_Mirro,7-Setting_Point,0))
							{
								Timer2_Mirro=Timer2_Mirro+9*Pow(10,(7-Setting_Point));
							}
							else
							{
								Timer2_Mirro=Timer2_Mirro-Pow(10,(7-Setting_Point));
							}
							Split(Timer2_Mirro,4,5,6,7);
							break;
						case 4:
							if(Check_TopBottom(Timer3_Mirro,18-Setting_Point,0))
							{
								Timer3_Mirro=Timer3_Mirro+9*Pow(10,(18-Setting_Point));
							}
							else
							{
								Timer3_Mirro=Timer3_Mirro-Pow(10,(18-Setting_Point));
							}
							Split(Timer3_Mirro,15,16,17,18);
							break;
						case 5:
							if(Check_TopBottom(Timer4_Mirro,22-Setting_Point,0))
							{
								Timer4_Mirro=Timer4_Mirro+9*Pow(10,(22-Setting_Point));
							}
							else
							{
								Timer4_Mirro=Timer4_Mirro-Pow(10,(22-Setting_Point));
							}
							Split(Timer4_Mirro,19,20,21,22);
							break;
						case 2:
							if(Check_TopBottom(AD0_SettingValue,9-Setting_Point,0))
							{
								AD0_SettingValue=AD0_SettingValue+9*Pow(10,(9-Setting_Point));
							}
							else
							{
								AD0_SettingValue=AD0_SettingValue-Pow(10,(9-Setting_Point));
							}
							Split_AD(AD0_SettingValue,8,9,10);
							break;
						case 3:
							if(Check_TopBottom(AD1_SettingValue,12-Setting_Point,0))
							{
								AD1_SettingValue=AD1_SettingValue+9*Pow(10,(12-Setting_Point));
							}
							else
							{
								AD1_SettingValue=AD1_SettingValue-Pow(10,(12-Setting_Point));
							}
							Split_AD(AD1_SettingValue,11,12,13);
							break;
					}
					break;	
				}
	}
	}
	if(Task.Flag.timer1_Enlable==1)
	{
		//输出外部控制信号
		if(Timer1>9999)
		{
			Task.Flag.timer1_Enlable=0;
			Timer1_Control=1;
			Timer1=eeprom_read(0)*256+eeprom_read(1);
			if(Timer1>9999){Timer1=9999;}
			Beep_Counter=10;
		}
	}
	if(Task.Flag.timer2_Enlable==1)
	{
		//输出外部控制信号
		if(Timer2>9999)
		{
			Task.Flag.timer2_Enlable=0;
//			Timer2_Control=0;
			Timer2=eeprom_read(2)*256+eeprom_read(3);
	//		Timer2H=eeprom_read(2);
	//		Timer2L=eeprom_read(3);
			if(Timer2>9999){Timer2=9999;}
			Beep_Counter=20;
		}
	}
	if(Task.Flag.timer3_Enlable==1)
	{
		if(Timer3<1)
		{
			Task.Flag.timer3_Enlable=0;
			AD1_Enable=0;Display_data[14]=Display_data[14]&(~0x10);
			Timer3=eeprom_read(4)*256+eeprom_read(5);
			if(Timer3>999){Timer3=999;}
			Beep_Counter=20;
		}
	}
	if(Task.Flag.timer4_Enlable==1)
	{
		if(Timer4>9999)
		{
			Task.Flag.timer4_Enlable=0;
			Timer4_Control=1;
			Timer4=eeprom_read(6)*256+eeprom_read(7);

			if(Timer4>9999){Timer4=9999;}
			Beep_Counter=20;
		}
		//输出外部控制信号
	}
	temp=Find_Tempr(AD0_Value);
	if(AD0_Enable)
	{
		if(AD0_Status==1)
		{
			if(temp>=AD0_SettingValue){AD0_Status=0;AD0_Control=1;}
		}
		else
		{
			if(temp<AD0_SettingValue-2){AD0_Status=1;AD0_Control=0;}
		}
	}
	else
	{AD0_Status=0;AD0_Control=1;}
	temp=Find_Tempr(AD1_Value);
	if(AD1_Enable)
	{
		if(AD1_Status==1)
		{
			if(temp>=AD1_SettingValue){AD1_Status=0;AD1_Control=1;}
		}
		else
		{
			if(temp<AD1_SettingValue-10){AD1_Status=1;AD1_Control=0;}
		}
		RC3=0;//开启第6路
	}
	else
	{AD1_Status=0;AD1_Control=1;RC3=1;}

	if(Mode==Working)
	{
		eeprom_write(0,Timer1_Mirro/256);
		eeprom_write(1,Timer1_Mirro%256);	
	

		eeprom_write(2,Timer2_Mirro/256);
		eeprom_write(3,Timer2_Mirro%256);


		eeprom_write(4,Timer3_Mirro/256);
		eeprom_write(5,Timer3_Mirro%256);


		eeprom_write(6,Timer4_Mirro/256);
		eeprom_write(7,Timer4_Mirro%256);

		eeprom_write(8,AD0_SettingValue);
		eeprom_write(9,AD1_SettingValue);

		Flash=0;
		if(Pump_Enable==0)
		{
			Display_data[14]=Display_data[14]&(~0x02);
		}
		else
		{
			Display_data[14]=Display_data[14]|(0x02);
		}
		if(Task.Flag.timer1_Enlable==0)
		{
			//输出外部控制信号
			Display_data[14]=Display_data[14]&(~0x80);
			Timer1=Timer1_Mirro;
			if(Timer1>9999){Timer1=9999;}
			Split(Timer1,0,1,2,3);
			Display_data[3]++;
		}
		else
		{
			Display_data[14]=Display_data[14]|0x80;
		}
		if(Task.Flag.timer2_Enlable==0)
		{
			//输出外部控制信号
			Display_data[14]=Display_data[14]&(~0x40);
			Timer2=Timer2_Mirro;
			if(Timer2>9999){Timer2=9999;}
			Split(Timer2,4,5,6,7);
		}
		else
		{
			Display_data[14]=Display_data[14]|0x40;
		}
		if(Task.Flag.timer3_Enlable==0)
		{
			Display_data[14]=Display_data[14]&(~0x08);
			Timer3=Timer3_Mirro;
			if(Timer3>999){Timer3=999;}
			Split(Timer3,15,16,17,18);
		}
		else
		{
			Display_data[14]=Display_data[14]|0x08;
		}
		if(Task.Flag.timer4_Enlable==0)
		{
			Task.Flag.timer4_Enlable=0;
			Display_data[14]=Display_data[14]&(~0x04);
			Timer4=Timer4_Mirro;
			if(Timer4>9999){Timer4=9999;}
			Split(Timer4,19,20,21,22);
		}
		else
		{
			Display_data[14]=Display_data[14]|0x04;
		}


		if(AD1_Enable==0)
		{
			AD1_Enable=0;
			Display_data[14]=Display_data[14]&(~0x10);
		}
		else
		{
			AD1_Enable=1;
			//载入初始值
			Display_data[14]=Display_data[14]|0x10;
		}
		if(AD0_Enable==0)
		{
			AD0_Enable=0;
			Display_data[14]=Display_data[14]&(~0x20);
		}
		else
		{
			AD0_Enable=1;
			//载入初始值
			Display_data[14]=Display_data[14]|0x20;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -